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

  * bin/forbanctl: forbanctl : stopping Forban services on win32 added

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

  * lib/fetch.py, lib/index.py, lib/loot.py, lib/tools.py: tools.rename used
  instead of os.rename (win32 support)

  * lib/tmpname.py: tmpname() : custom suffix added as a parameter

  * bin/forban_share.py: forban_share: don't show temporary files when browsing
  the index

  * lib/tools.py: tools.rename() added to support specific platform like
  Windows

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

  * cfg/forban.cfg-sample: Forban 0.0.17

  * lib/loot.py: Fix bug if loot is not existing and trying to update hmac
  value in the loot directory.

  * cfg/forban.cfg-sample: Forban 0.0.16

  * lib/index.py: fixing index not existing

  * lib/announce.py: avoid hmac announcing value if not calculated

  * lib/index.py: HMAC support cleanup

  * lib/index.py: if hmac path doesn't not exist, don't try to go further

  * bin/forban_announce.py, lib/announce.py, lib/index.py: hmac support added
  to fetch index only on update

  * lib/loot.py: use luuid instead of the non-existing self.uuid

  * lib/loot.py: loot: HMAC support added

  * lib/loot.py: announce protocol - name and uuid are REQUIRED while hmac is
  RECOMMENDED in the announce message. order of key-value is not required. 
  name and uuid are REQUIRED but the hmac is RECOMMENDED as this helps to limit
  the fetching of the index.

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

  * bin/forban_opportunistic.py: forban_opportunistic: logging for filter

  * bin/forban_share.py: forban_share: logging to file (instead of stdout)

  * bin/forban_opportunistic.py: forban_opportunistic: logging added for info
  level

  * bin/forban_announce.py: forban_announce : create log directory if missing

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

  * bin/forban_announce.py, cfg/forban.cfg-sample: forban_announce : logging
  added in DEBUG or INFO level

  * bin/build/build-forban.sh: First Forban build script with Pyinstaller  The
  purpose is to build binary packages of Forban. Now we are able to build Linux
  packages that won't need Python to run.

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

  * cfg/forban.cfg-sample: Forban 0.0.15

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

  * README: Forban Protocol : added the use of HMAC for index update
  notification

  * README: README: remove CherryPy as requirements (as now included by
  default)

  * bin/forban_announce.py, bin/forban_opportunistic.py, bin/forban_share.py,
  lib/index.py: index: option for index now used by all forban processes

  * bin/forban_opportunistic.py, bin/forban_share.py, cfg/forban.cfg-sample:
  share directory is now based on default path  the share directory was an
  option by default but it seems to be confusing for users. Now the default
  directory is built on the default forban global directory :
  forbanglobalpath+"/var/share/" An alternate share directory is still an
  option but commented in the sample configuration file.

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

  * lib/index.py: some more directory creation cleanup

  * bin/forban_share.py: more path cleanup creation

  * bin/forbanctl: cleanup path creation

  * bin/forban_announce.py, bin/forban_discover.py,
  bin/forban_opportunistic.py, bin/forban_share.py: cleanup path lib building
  to allow directory without a trailing slash.  (following test done during
  Breizh Entropy Congress)

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

  * cfg/forban.cfg-sample: Forban 0.0.14

  * lib/index.py: index : exclude temporary/dot files

  * lib/index.py: index: exclude temporary files of diff index

  * lib/fetch.py: fetch: don't try to rename unexisting files

  * lib/loot.py: setlastseen is now atomic

  * lib/loot.py: Make add a discovered loot atomic

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

  * doc/NOTES: NOTES updated to reflect past changes + new open points/ideas

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

  * cfg/forban.cfg-sample: Forban 0.0.13

  * lib/discover.py: forban_discover : IPv6/IPv4 detection improved (N900 test)

  * lib/discover.py: forban_discover : Improved IPv6 detection and IPv4
  fallback.

  * bin/forban_share.py: python_share : before binding in IPv6, test
  effectively IPv6 socket. (N900 test)

  * lib/announce.py: Added IPv4 binding fallback (N900 test). Even if Python is
  compiled with IPv6, it doesn't mean that the os is supporting IPv6. (like the
  Nokia N900)

  * bin/forban_share.py: Show when an index is missing.  This often means that
  the announce is there but we are not able to get the index from that
  announced Forban. This can be an issue with the remote forban (forban_share
  is not started) or the impossibility to fetch the index file (can be a
  firewall blocking to access port TCP 12555).

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

  * cfg/forban.cfg-sample: Forban 0.0.12

  * bin/forban_share.py: Use system available CherryPy if available, if not use
  internal CherryPy.

  * lib/ext/cherrypy/LICENSE.txt, lib/ext/cherrypy/__init__.py,
  lib/ext/cherrypy/__init__.pyc, lib/ext/cherrypy/_cpcgifs.py,
  lib/ext/cherrypy/_cpcgifs.pyc, lib/ext/cherrypy/_cpchecker.py,
  lib/ext/cherrypy/_cpchecker.pyc, lib/ext/cherrypy/_cpconfig.py,
  lib/ext/cherrypy/_cpconfig.pyc, lib/ext/cherrypy/_cpdispatch.py,
  lib/ext/cherrypy/_cpdispatch.pyc, lib/ext/cherrypy/_cperror.py,
  lib/ext/cherrypy/_cperror.pyc, lib/ext/cherrypy/_cplogging.py,
  lib/ext/cherrypy/_cplogging.pyc, lib/ext/cherrypy/_cpmodpy.py,
  lib/ext/cherrypy/_cprequest.py, lib/ext/cherrypy/_cprequest.pyc,
  lib/ext/cherrypy/_cpserver.py, lib/ext/cherrypy/_cpserver.pyc,
  lib/ext/cherrypy/_cpthreadinglocal.py, lib/ext/cherrypy/_cptools.py,
  lib/ext/cherrypy/_cptools.pyc, lib/ext/cherrypy/_cptree.py,
  lib/ext/cherrypy/_cptree.pyc, lib/ext/cherrypy/_cpwsgi.py,
  lib/ext/cherrypy/_cpwsgi.pyc, lib/ext/cherrypy/_cpwsgi_server.py,
  lib/ext/cherrypy/_cpwsgi_server.pyc, lib/ext/cherrypy/cherryd,
  lib/ext/cherrypy/favicon.ico, lib/ext/cherrypy/lib/__init__.py,
  lib/ext/cherrypy/lib/__init__.pyc, lib/ext/cherrypy/lib/auth.py,
  lib/ext/cherrypy/lib/auth.pyc, lib/ext/cherrypy/lib/caching.py,
  lib/ext/cherrypy/lib/caching.pyc, lib/ext/cherrypy/lib/covercp.py,
  lib/ext/cherrypy/lib/cptools.py, lib/ext/cherrypy/lib/cptools.pyc,
  lib/ext/cherrypy/lib/encoding.py, lib/ext/cherrypy/lib/encoding.pyc,
  lib/ext/cherrypy/lib/http.py, lib/ext/cherrypy/lib/http.pyc,
  lib/ext/cherrypy/lib/httpauth.py, lib/ext/cherrypy/lib/httpauth.pyc,
  lib/ext/cherrypy/lib/profiler.py, lib/ext/cherrypy/lib/safemime.py,
  lib/ext/cherrypy/lib/sessions.py, lib/ext/cherrypy/lib/sessions.pyc,
  lib/ext/cherrypy/lib/static.py, lib/ext/cherrypy/lib/static.pyc,
  lib/ext/cherrypy/lib/tidy.py, lib/ext/cherrypy/lib/tidy.pyc,
  lib/ext/cherrypy/lib/wsgiapp.py, lib/ext/cherrypy/lib/wsgiapp.pyc,
  lib/ext/cherrypy/lib/xmlrpc.py, lib/ext/cherrypy/lib/xmlrpc.pyc,
  lib/ext/cherrypy/process/__init__.py, lib/ext/cherrypy/process/__init__.pyc,
  lib/ext/cherrypy/process/plugins.py, lib/ext/cherrypy/process/plugins.pyc,
  lib/ext/cherrypy/process/servers.py, lib/ext/cherrypy/process/servers.pyc,
  lib/ext/cherrypy/process/win32.py, lib/ext/cherrypy/process/win32.pyc,
  lib/ext/cherrypy/process/wspbus.py, lib/ext/cherrypy/process/wspbus.pyc,
  lib/ext/cherrypy/scaffold/__init__.py,
  lib/ext/cherrypy/scaffold/example.conf, lib/ext/cherrypy/scaffold/site.conf,
  .../scaffold/static/made_with_cherrypy_small.png,
  lib/ext/cherrypy/test/__init__.py, lib/ext/cherrypy/test/benchmark.py,
  lib/ext/cherrypy/test/checkerdemo.py, lib/ext/cherrypy/test/helper.py,
  lib/ext/cherrypy/test/logtest.py, lib/ext/cherrypy/test/modfcgid.py,
  lib/ext/cherrypy/test/modpy.py, lib/ext/cherrypy/test/modwsgi.py,
  lib/ext/cherrypy/test/py25.py, lib/ext/cherrypy/test/static/dirback.jpg,
  lib/ext/cherrypy/test/static/index.html, lib/ext/cherrypy/test/style.css,
  lib/ext/cherrypy/test/test.pem, lib/ext/cherrypy/test/test.py,
  lib/ext/cherrypy/test/test_caching.py, lib/ext/cherrypy/test/test_config.py,
  lib/ext/cherrypy/test/test_conn.py, lib/ext/cherrypy/test/test_core.py,
  lib/ext/cherrypy/test/test_encoding.py, lib/ext/cherrypy/test/test_etags.py,
  lib/ext/cherrypy/test/test_http.py, lib/ext/cherrypy/test/test_httpauth.py,
  lib/ext/cherrypy/test/test_httplib.py, lib/ext/cherrypy/test/test_logging.py,
  lib/ext/cherrypy/test/test_misc_tools.py,
  lib/ext/cherrypy/test/test_objectmapping.py,
  lib/ext/cherrypy/test/test_proxy.py, lib/ext/cherrypy/test/test_refleaks.py,
  lib/ext/cherrypy/test/test_routes.py,
  lib/ext/cherrypy/test/test_safe_multipart.py,
  lib/ext/cherrypy/test/test_session.py,
  lib/ext/cherrypy/test/test_sessionauthenticate.py,
  lib/ext/cherrypy/test/test_states.py,
  lib/ext/cherrypy/test/test_states_demo.py,
  lib/ext/cherrypy/test/test_static.py, lib/ext/cherrypy/test/test_tidy.py,
  lib/ext/cherrypy/test/test_tools.py, lib/ext/cherrypy/test/test_tutorials.py,
  lib/ext/cherrypy/test/test_virtualhost.py,
  lib/ext/cherrypy/test/test_wsgi_ns.py,
  lib/ext/cherrypy/test/test_wsgi_vhost.py,
  lib/ext/cherrypy/test/test_wsgiapps.py, lib/ext/cherrypy/test/test_xmlrpc.py,
  lib/ext/cherrypy/test/webtest.py, lib/ext/cherrypy/tutorial/README.txt,
  lib/ext/cherrypy/tutorial/__init__.py,
  lib/ext/cherrypy/tutorial/bonus-sqlobject.py,
  lib/ext/cherrypy/tutorial/custom_error.html,
  lib/ext/cherrypy/tutorial/pdf_file.pdf,
  lib/ext/cherrypy/tutorial/tut01_helloworld.py,
  lib/ext/cherrypy/tutorial/tut02_expose_methods.py,
  lib/ext/cherrypy/tutorial/tut03_get_and_post.py,
  lib/ext/cherrypy/tutorial/tut04_complex_site.py,
  lib/ext/cherrypy/tutorial/tut05_derived_objects.py,
  lib/ext/cherrypy/tutorial/tut06_default_method.py,
  lib/ext/cherrypy/tutorial/tut07_sessions.py,
  .../tutorial/tut08_generators_and_yield.py,
  lib/ext/cherrypy/tutorial/tut09_files.py,
  lib/ext/cherrypy/tutorial/tut10_http_errors.py,
  lib/ext/cherrypy/tutorial/tutorial.conf,
  lib/ext/cherrypy/wsgiserver/__init__.py,
  lib/ext/cherrypy/wsgiserver/__init__.pyc: CherryPy 3.1.2 package is now part
  of Forban (to limit external dependencies).  When testing out Forban on the
  OLPC XO-1,the missing part is always CherryPy that is not installed by
  default. So I have imported the package inside Forban libraries. The license
  are compatible : BSD-like for CherryPy and AGPL for Forban itself.

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

  * cfg/forban.cfg-sample: Forban 0.0.11

  * lib/index.py: removed HEAD support while caching index for remote Forban 
  The HEAD was introduced to permit the comparison between a cached index and a
  remote index. The comparison was done only on the size of the file. But this
  is a bad idea, as the size of a index could give the impression that the
  index didn't change but some values where inversed (especially the size value
  after each line). This was introducing a bug where a large download is taking
  place and files were growing in size. So the fetching of the files was based
  on the wrong data in the index...  A new scheme for checking index change
  need to be done (especially if the indexes are quite large among the Forban).
  Maybe the HMAC value of the announce could be used to announce an updated
  index...

  * lib/fetch.py: make HTTP GET atomic while writing files

  * lib/tmpname.py: temporary name function for files has been added

  * lib/fetch.py: typo fixed

  * FAQ: FAQ updated to include operation question over wireless networks

  * lib/announce.py, lib/base64e.py, lib/discover.py, lib/fetch.py, lib/fid.py,
  lib/index.py, lib/loot.py: License header added

  * bin/forban_announce.py, bin/forban_discover.py,
  bin/forban_opportunistic.py, bin/forban_share.py, bin/forbanctl: License
  header added

  * doc/COPYING: add the full-text of GNU Affero General Public License version
  3 in the default Forban package.

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

  * cfg/forban.cfg-sample: Forban 0.0.10

  * README, bin/forban_opportunistic.py, bin/forban_share.py, lib/base64e.py:
  Encoding of filename moved from Base64 to safe URL Base64 encoding.  Protocol
  description updated to include the information about the replacement of +,/
  and = character. A simple base64e library added. This is introduced to avoid
  issue with non-Forban client getting the HTTP files via the GET method.

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

  * bin/forban_opportunistic.py, lib/index.py: Fixing non matching index or
  where size cannot be get for local file

  * bin/forban_share.py: fixed a bug on web interface when the index can't be
  already built

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

  * cfg/forban.cfg-sample: Forban 0.0.9

  * lib/fetch.py: url fetch - default timeout set to 10 seconds

  * bin/forban_opportunistic.py: opportunistic fetching bug fixed for unseen
  forban services.  opportunistic protocol is not trying to compare or fetch
  files for not recently seen forban services.

  * bin/forban_opportunistic.py, doc/NOTES: opportunistic wake-up is now
  function of the announce time.  As the speed of getting the files depends on
  the stability or mobility of the link. It was more logical to use the
  announce time as a basis for the wake-up of the opportunistic function. The
  wake-up depends of the announce time multiply by a small decreasing factor.

  * bin/forban_announce.py, cfg/forban.cfg-sample: announce interval is now a
  configurable parameter and the default value is to 10 seconds.  The announce
  parameter defines the interval time between two announces sent. The parameter
  is important if you have a high mobility or instability in the connectivity.
  The announce interval recommended is 10 seconds, based on current user
  experience.

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

  * doc/NOTES: NOTES added regarding open points and next dev. steps

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

  * lib/announce.py: add old sha module support fallback if hashlib module is
  not present

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

  * cfg/forban.cfg-sample: Forban 0.0.8

  * bin/forban_share.py: Show mode in the user web interface

  * bin/forbanctl: cleanup pid files after stopping forban processes

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

  * cfg/forban.cfg-sample: Forban 0.0.7

  * FAQ: FAQ added to answer questions around Forban and its protocol or mode
  of operation.

  * FAQ: FAQ added to answer questions around Forban and its protocol or mode
  of operationg.

  * bin/forban_opportunistic.py, lib/index.py: opportunistic : if local file in
  local loot is larger than the remote loot, we don't try to fetch it. Added a
  function in the index to get file size locally or from the cached index.

  * lib/fetch.py: lib url fetch : use shutil.copyfileobj instead of reading
  directly from memory. Avoid high memory usage while fetching large files.

  * bin/forban_opportunistic.py: opportunistic : rebuild local index after each
  HTTP fetch Useful when the distance of a cache is far away and files are
  quite large.

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)
