2010-01-23  Alexandre Dulaunoy <a@foo.be>

  * cfg/forban.cfg-sample: Forban 0.0.6

  * bin/forban_share.py: forban-share : add url builder function and url get
  for search output

  * bin/forban_share.py: forban_share : search added to the main web interface.

  * README: Forban protocols: modification of the search interface and added
  more information about the gossip protocol approach in the Forban
  opportunistic mode.

  * bin/forban_share.py, lib/index.py: index - missingfiles : return None if no
  files are missing between Forban

  * bin/forban_share.py: forban-share : refresh parameter added to permit
  continuous search

  * bin/forban_share.py: forban-share : search implemented to search all
  indexes of last seen Forban/loots.

2010-01-17  Alexandre Dulaunoy <a@foo.be>

  * bin/forban_share.py: view diff index : URL fixed

  * bin/forban_opportunistic.py: opportunistic : only get index if the Forban
  has been recently seen (to avoid trying to fetch shutdown Forban/loots)

  * bin/forban_share.py: index/diff index: add link to get files in IPv6 too
  (if IPv6 is present)

2010-01-16  Alexandre Dulaunoy <a@foo.be>

  * bin/forban_opportunistic.py: opportunistic : avoid fetching files from not
  recently seen Forban/loot

2010-01-13  Alexandre Dulaunoy <a@foo.be>

  * bin/forban_share.py, cfg/forban.cfg-sample: bug fix in forban_share : do
  not try to fetch index if the loot was not seen in the past 300 seconds. This
  is to avoid locking of the web interface for non available forban but still
  in the cache.

2010-01-10  Alexandre Dulaunoy <a@foo.be>

  * bin/forbanctl: start the discover before the announce. useful to avoid a
  gap when displaying your own announced forban.

  * bin/forbanctl, cfg/forban.cfg-sample: shared mode added in addition to the
  opportunistic mode.  shared mode is the same mode as opportunistic without
  the automatic fetching of files. The shared mode is usually used when you are
  proposing content (e.g. a large and organized library) but you don't fetch
  any files proposed by the other loots.  opportunistic mode is sharing plus
  doing the automatic download.

2010-01-06  Alexandre Dulaunoy <a@foo.be>

  * lib/index.py: index (bug fix): if index not present and HEAD successful,
  fetch and save it.

2010-01-05  Alexandre Dulaunoy <a@foo.be>

  * bin/forban_discover.py, bin/forban_share.py: discover and share : binding
  address cleaner (especially for host not supporting IPv6 like the iphone)

2010-01-04  Alexandre Dulaunoy <a@foo.be>

  * lib/index.py: bug fix : ensure that index already exists

2010-01-03  Alexandre Dulaunoy <a@foo.be>

  * bin/forban_opportunistic.py: opportunistic : don't fetch your own files and
  avoid duplicate fetch.  The duplicate fetch was due to the cache not being
  updated.

  * lib/index.py: index: renaming file at index creation to ensure atomicity 
  The purpose is to allow other processes to update the local index when this
  is required.

  * lib/fetch.py: cache option removed as this is now part of the index
  handling

  * lib/index.py: index cache: we HEAD before GETting the index of each
  discovered Forban. This is useful to speed up cache gathering while the index
  are pretty large and remains constant over time.

  * lib/fetch.py: add caching option

2010-01-02  Alexandre Dulaunoy <a@foo.be>

  * lib/fetch.py: fetch: add a HEAD function to get last-modified and
  content-length

  * bin/forban_opportunistic.py: opportunistic : filter support added to limit
  fetching to the specified matching patterns (case-insensitive)

  * bin/forban_share.py: web interface : add a link on the logo to ease
  navigation

2009-12-31  Alexandre Dulaunoy <a@foo.be>

  * lib/loot.py: keep the %interface in the source IPv6 address.

  * bin/forban_share.py: add a view of loot indexes from the web interface.
  (v/uuid)  The <ip>:12555/v/uuid url is not required in the Forban protocols
  but this is handy for the users to see what's inside the current indexes. The
  user can also directly grab a file from the index too.

  * lib/index.py: index.search : add the ability to search in non-local
  indexes.

  * bin/forbanctl: test

  * bin/forbanctl: don't assume location of Python

  * bin/forbanctl: forbanctl added to start and stop Forban services  All the
  logging is done on stdout with the current version this may change in the
  future.

2009-12-29  Alexandre Dulaunoy <a@foo.be>

  * lib/index.py: index: if we want to compare an index line-by-line. The line
  must be sorted before hand.

  * bin/forban_opportunistic.py: first opportunistic client added.  The
  opportunistic client is looking at the missing files between the local index
  and the discovered loot runnning on other Forban. If files are missing from
  the local index, they are automatically fetched and saved in the local share
  directory.

  * bin/forban_announce.py, bin/forban_share.py: forban index rebuild move from
  share process to announce process.  The rebuild of the local index needs to
  be performed regularly and in link with the announce. That's why we moved the
  index rebuild to the the announce process. This also ensures that a single
  process is in charge of the local index rebuild.

  * README, bin/forban_share.py: get file from the file index with filename
  encoded in Base64 to allow any format of filename in the index.

  * bin/forban_share.py: web interface : add a visual interface of file missed
  in the cache and a link to download the file. Useful if you are using the
  opportunistic mode and still want to download files from the discovered loot.

  * bin/forban_share.py, var/share/forban/css/x.css,
  var/share/forban/img/forban-small.png: web interface : forban logo added

2009-12-25  Alexandre Dulaunoy <a@foo.be>

  * cfg/forban.cfg-sample: sample configuration : mode opportunistic and shared
  added with an explanation for each mode. The mode opportunistic is the
  default mode.

  * README: Python 2.5 is required due to the uuid library

  * lib/index.py: index: added a basic search function taking a regular
  expression as input and returns a list of matched lines in the local index.

2009-12-23  Alexandre Dulaunoy <a@foo.be>

  * bin/forban_share.py, lib/index.py: added a function to compare the files
  missing between index caches in each loot discovered. This function is used
  by the opportunistic file fetching to know which files need to be get.

  * lib/fetch.py: be more liberal in exception handling when trying to fetch a
  Forban HTTP URL. As the link-local connectivity can be unstable, we just go
  on when fetching a file.

  * bin/forban_share.py, lib/fetch.py, lib/index.py: caching mechanism
  introducted for each loot  The caching mechanism of Forban indexes is the
  base for checking the differences of indexes among the Forban on a same
  link-local. The caches are compared (and filtered if the user wants that) and
  difference are collected on the each Forban.

  * lib/loot.py: force IPv4 when building URL (especially that urllib2 has
  still some major issues with IPv6 URLs, TBF)

  * lib/loot.py: check for the existence of the UUID (in some rare case, the
  UUID can be created while the lastseen has not been created)

  * cfg/forban.cfg, lib/loot.py: exclude cache directory from loot uid

  * lib/loot.py: getindexurl added to get Forban a list of index url for a
  specific loot

  * lib/loot.py: make exist function public

  * bin/forban_share.py, lib/loot.py: list all the discovered loot is now
  function

  * bin/forban_share.py, lib/loot.py: lastseen function added to discard unseen
  services for a specify time

2009-12-22  Alexandre Dulaunoy <a@foo.be>

  * README: About the flooding of the announce in broadcast and link-local all
  nodes address

  * README: README: added some clarity in message format

  * bin/forban_share.py, lib/loot.py: Added a view listing the discovered
  services and minimal loot interface to get the requested parameters to build
  URLs.

  * README: README: add more information about the required Python and CherryPy

  * lib/loot.py: self information added in the directory of discovered loots. 
  This is used for avoiding getting files from the same Forban doing the
  announce and the discovery. Quite important for the future opportunistic
  sharing.

  * README, bin/forban_share.py, cfg/forban.cfg-sample,
  var/share/forban/css/x.css: Forban minimal HTTP service added using CherryPy 
  The service is used to get the index : http://<link-local
  ip>:12555/s/?g=forban/index and to get a specific file from the index using :
  http://<link-local ip>:12555/s/?g=<file index name>

  * lib/index.py: forban : simple index builder for the shared loot  The format
  of the index is the filename (with the subdirectory of loot) and the size of
  the file. The index is located in shared fixed location on the HTTP Forban
  service. The index is in text format (UTF encoded).

2009-12-20  Alexandre Dulaunoy <a@foo.be>

  * bin/forban_discover.py: added a starter script for the Forban discovery
  service

  * cfg/forban.cfg-sample: forban.cfg -> forban.cfg-sample (to avoid overwrite
  issue)

  * bin/forban_announce.py, cfg/forban.cfg: added a starter script for the
  Forban announce service

  * lib/discover.py: a typo in debug message

  * lib/discover.py, lib/loot.py: Forban : minimal discovery functionnalities
  added and loot storage  loot is used to save each uuid discovered along with
  their source ip when they were seen the first and last time. loots are used
  to build the table of reachable Forban service on a local network. The
  storage is done on the file system with a subdirectory per uuid.  uuid/first
  -> epoch value for first time uuid/last  -> epoch value for last time
  uuid/name  -> string value of the common name used uuid/sourcev6>string value
  of the IPv6 address seen uuid/sourvev4>string value of the IPv4 address seen 
  minimal but it works.

  * README: clarification regarding the port used in Forban.  Port 12555 in UDP
  protocol is used for announcing the Forban service. Port 12555 in TCP
  protocol is used for the HTTP service of Forban.

2009-10-11  Alexandre Dulaunoy <a@foo.be>

  * README, lib/announce.py: first implementation of forban announce message
  broadcast flooding in IPv4 and multicast flooding in IPv6.

  * lib/fid.py: Forban UUID init, creation and regen added

2009-10-05  Alexandre Dulaunoy <a@foo.be>

  * README, lib/announce.py, lib/fid.py: first structure and message format (in
  README)
