gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r687 - GNUnet-docs/WWW/test


From: durner
Subject: [GNUnet-SVN] r687 - GNUnet-docs/WWW/test
Date: Mon, 25 Apr 2005 11:49:42 -0700 (PDT)

Author: durner
Date: 2005-04-25 11:48:28 -0700 (Mon, 25 Apr 2005)
New Revision: 687

Modified:
   GNUnet-docs/WWW/test/commitMassTranslation.php
   GNUnet-docs/WWW/test/commitTranslation.php
   GNUnet-docs/WWW/test/documentation.php3
   GNUnet-docs/WWW/test/download.php3
   GNUnet-docs/WWW/test/editor.php
   GNUnet-docs/WWW/test/encoding.php3
   GNUnet-docs/WWW/test/faq.php3
   GNUnet-docs/WWW/test/gnunet-design.fig
   GNUnet-docs/WWW/test/gnunet-design.png
   GNUnet-docs/WWW/test/hacking.php3
   GNUnet-docs/WWW/test/hacking_afs.php3
   GNUnet-docs/WWW/test/hacking_application.php3
   GNUnet-docs/WWW/test/hacking_future.php3
   GNUnet-docs/WWW/test/hacking_organization.php3
   GNUnet-docs/WWW/test/hacking_rpc.php3
   GNUnet-docs/WWW/test/hacking_server.php3
   GNUnet-docs/WWW/test/hacking_ui.php3
   GNUnet-docs/WWW/test/hacking_util.php3
   GNUnet-docs/WWW/test/hacking_win32_build.php3
   GNUnet-docs/WWW/test/html_footer.php3
   GNUnet-docs/WWW/test/html_header.php3
   GNUnet-docs/WWW/test/i18nhtml.inc
   GNUnet-docs/WWW/test/links.php3
   GNUnet-docs/WWW/test/mailinglist.php3
   GNUnet-docs/WWW/test/menu.php3
   GNUnet-docs/WWW/test/namespace.php3
   GNUnet-docs/WWW/test/papers.php3
   GNUnet-docs/WWW/test/philosophy.php3
   GNUnet-docs/WWW/test/protocol_cs.php3
   GNUnet-docs/WWW/test/protocol_p2p_afs.php3
   GNUnet-docs/WWW/test/protocol_p2p_core.php3
   GNUnet-docs/WWW/test/protocol_p2p_rpc.php3
   GNUnet-docs/WWW/test/protocol_p2p_tracekit.php3
   GNUnet-docs/WWW/test/scripts.php3
   GNUnet-docs/WWW/test/states.fig
   GNUnet-docs/WWW/test/states.png
   GNUnet-docs/WWW/test/translate.php
   GNUnet-docs/WWW/test/user_afs.php3
   GNUnet-docs/WWW/test/user_gnunet.php3
   GNUnet-docs/WWW/test/vote.php
Log:
update test site

Modified: GNUnet-docs/WWW/test/commitMassTranslation.php
===================================================================
--- GNUnet-docs/WWW/test/commitMassTranslation.php      2005-04-24 13:12:51 UTC 
(rev 686)
+++ GNUnet-docs/WWW/test/commitMassTranslation.php      2005-04-25 18:48:28 UTC 
(rev 687)
@@ -61,7 +61,8 @@
   $query = "DELETE FROM pending WHERE lang=\"$lang\" AND c=\"$enc\"";
   mysql_query($query, $connection); 
   //$t = urlencode($val);
-  $t = urlencode(htmlentities($val, ENT_QUOTES, $charset));
+  $t = urlencode($val);
+  //  $t = urlencode(htmlentities($val, ENT_QUOTES, $charset));
   $query = "SELECT ranking FROM map WHERE name=\"$enc\" AND lang=\"$lang\" AND 
translation=\"$t\"";
   $result = mysql_query($query, $connection);
   $num = 0;

Modified: GNUnet-docs/WWW/test/commitTranslation.php
===================================================================
--- GNUnet-docs/WWW/test/commitTranslation.php  2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/commitTranslation.php  2005-04-25 18:48:28 UTC (rev 
687)
@@ -18,25 +18,24 @@
      Boston, MA 02111-1307, USA.
 */
 include("i18nhtml.inc");
-echo "<html><head><title>GNUnet WWW translation: commit</title></head><body>";
-
+$text = $_REQUEST['text'];
+$translation = $_REQUEST['translation'];
+$back = $_REQUEST['back'];
 if (!$connection) {
   echo "Database is down. Cannot edit translations.";
-  echo "</body></html>";
   die();
 }
 if ($xlang == "English") {
-  W("Translating to English currently not allowed.\n");
-  echo "</body></html>";
+  W("Translating to English is not allowed.\n");
   die();
 }
 
 // note: $text is already urlencoded (by submitting via form) and html 
compatible
 // ensure translation is stored in encoded form and html compatible
-if (get_magic_quotes_gpc()) $translation = stripslashes($translation);
-echo "translation originally = [" . $translation . "]<br>\n";
-$t = urlencode(htmlentities($translation, ENT_QUOTES, $charset));
+// if (get_magic_quotes_gpc()) $translation = stripslashes($translation);
 
+// $t = urlencode(htmlentities($translation, ENT_QUOTES, $charset));
+$t = urlencode($translation);
 // check for identical translation
 $query = "SELECT ranking FROM map WHERE name=\"$text\" AND lang=\"$lang\" AND 
translation=\"$t\"";
 $result = mysql_query($query, $connection);
@@ -45,26 +44,22 @@
   $num = mysql_numrows($result);
 }
 if ($num > 0) {
-  echo "<html><head><title>WWW translation: commit</title></head><body>";
+  echo "<html><body>";
   W("Translation exists.");   
   extlink($back, "Back...");
+  generateFooter();
   echo "</body></html>";
 } else {
-  if (!get_magic_quotes_gpc()) $t = addslashes($t); // ensure escaped before 
adding to DB
+  //  if (!get_magic_quotes_gpc()) $t = addslashes($t); // ensure escaped 
before adding to DB
   $query = "INSERT INTO map VALUES(\"$text\", \"$lang\", \"$t\", 1, \"" . 
$_SERVER['REMOTE_ADDR'] . "\");";
   $result = mysql_query($query, $connection);
   if ($result) {
-    echo "Commit successful.<br>text=\"" . $text . "\"<br>translation=\"" . $t 
. "\"<br>";
-    echo "ie: text=\"" . urldecode($text) . "\"<br>translation=\"" . 
urldecode($t) . "\"<br>";
-  }
-  else {
-    echo "Commit failed!<br>text=\"" . $text . "\"<br>translation=\"" . $t . 
"\"<br>";
-  }
-  extlink($back, "Back...");
-  echo "</body></html>";
-
-//  header("Location: " . $back); /* Redirect browser */
-//  exit;                 /* Make sure that code below does 
-//                         not get executed when we redirect. */
+    header("Location: " . $back); /* Redirect browser */
+  } else {
+    echo "<html><body>";
+    W("Commit ('%s') failed: ", $query);
+    echo mysql_error();
+    echo "</body></html>";
+  } 
 }
 ?>

Modified: GNUnet-docs/WWW/test/documentation.php3
===================================================================
--- GNUnet-docs/WWW/test/documentation.php3     2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/documentation.php3     2005-04-25 18:48:28 UTC (rev 
687)
@@ -5,7 +5,15 @@
 include("html_header.php3");
 
 H2("Documentation");
-W("This is an attempt to reorganize the GNUnet documentation.");
+W("Documentation is always work in progress.");
+W("The documentation is currently undergoing a major revision to reflect the 
changes in the upcoming 0.7.0 release.");
+W("Some parts are identical between both releases, others reflect how things 
will be in 0.7.0 and others still document how GNUnet 0.6.x works.");
+W("At this point, most of the text describes GNUnet 0.7.0.");
+W("So if you are using 0.6.x take everything with a grain of salt.");
+P();
+H3("i18nHTML");
+W("The GNUnet webpage uses %s to internationalize the documentation.",
+  extlink_("/i18nHTML/", "i18nHTML"));
 W("Please feel encouraged to help, for example by translating some of the 
pages to your native language.");
 W("Just view the pages in your language and click on the &quot;*&quot; after a 
sentence to translate it.");
 W("You can start a new language by adding <tt>lang=LANGUAGE</tt> after the 
<tt>.php3</tt> in the URL.");
@@ -25,7 +33,7 @@
 P();
 W("You can access the sourcecode of the documentation using CVS:");
 P();
-PRE("# cvs -d :pserver:address@hidden:/var/cvs/GNUnet checkout GNUnet-docs");
+PRE("$ svn checkout https://gnunet.org/svn/GNUnet-docs/";);
 P();
 W("Generated doxygen documentation can be found %s.",
   extlink_("doxygen/html", "here"));
@@ -52,7 +60,7 @@
    <li><?php intlink("encoding.php3","Content encoding"); ?></li>
   </ol>
 </ol>
-<p>
 <?php
+P();
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/download.php3
===================================================================
--- GNUnet-docs/WWW/test/download.php3  2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/download.php3  2005-04-25 18:48:28 UTC (rev 687)
@@ -9,45 +9,38 @@
 ?>
  <li>Pentium 100 Mhz, 32 MB RAM</li>
  <li><a href="http://www.gnu.org/";>GNU</a>/<a 
href="http://www.kernel.org/";>Linux</a>,
-     <a href="http://www.sun.com/software/solaris/";>Solaris (&gt;= 8)</a>,
+     <a href="http://www.sun.com/software/solaris/";>Solaris (&gt;= 8)</a>, OS 
X &gt; 10.3, Win32,
      <a href="http://www.freebsd.org/";>FreeBSD (&gt;= 5 recommended)</a>,
      <a href="http://www.openbsd.org/";>OpenBSD</a> <?php W("or"); ?>
      <a href="http://www.netbsd.org/";>NetBSD</a>.</li>
  <li><strong><?php W("Required:"); ?></strong>
      <a href="http://www.gnu.org/software/gmp/";>GNU MP Bignum Library</a> 
(&gt;= 4.0.0)</li>
  <li><strong><?php W("Required:"); ?></strong>
-     <a href="http://www.openssl.org/";>OpenSSL</a> (&gt;= 0.95)  <?php 
W("or"); ?>
      <a href="http://www.gnu.org/directory/security/libgcrypt.html";>libgcrypt 
(&gt;= 1.2.0)</a></li>
+ <li><strong><?php W("Required:"); ?></strong>
+     <a href="/libextractor/">libextractor (&gt;= 0.4.2)</a></li>
+ <li><strong><?php W("Required:"); ?></strong>
+     <a href="http://www.sqlite.com/";>sqlite</a> (&gt;= 3.0.0) <?php W("or"); 
?>
+     <a href="http://www.mysql.com/";>mysql</a> (&gt;= 4.1)</li>
  <li><strong><?php W("Recommended:"); ?></strong>
      <a href="http://www.gtk.org/";>gtk+ &gt;= 2.4</a></li>
- <li><strong><?php W("Recommended:"); ?></strong>
-     <a href="http://ovmj.org/libextractor/";>libextractor (&gt;= 
0.3.10)</a></li>
  <li><strong><?php W("Optional:"); ?></strong>
-     <a href="http://www.gnu.org/software/gettext/";>GNU gettext (&gt;= 
0.14)</a></li>
- <li><strong><?php W("Optional:"); ?></strong>
-     <a href="http://www.gnu.org/software/gdbm/";>gdbm</a>,
-     <a href="http://sourceforge.net/projects/tdb";>tdb</a>,
-     <a href="http://www.sqlite.com/";>sqlite</a> (&gt;= 3.0.0),
-     <a href="http://www.mysql.com/";>mysql</a> (&gt;= 3.23.56) <?php W("or"); 
?>
-     <a href="http://www.sleepycat.com/download/index.shtml";>Berkeley 
DB</a></li>
+     <a href="http://www.gnu.org/software/gettext/";>GNU gettext (&gt;= 
0.14.1)</a></li>
  <li><strong><?php W("for CVS:");?></strong>
-     <a href="http://www.gnu.org/software/autoconf/";>autoconf (&gt;= 2.57)</a> 
<?php W("and"); ?>
+     <a href="http://www.gnu.org/software/autoconf/";>autoconf (&gt;= 2.59)</a> 
<?php W("and"); ?>
      <a href="http://www.gnu.org/software/automake/";>automake (&gt;= 
1.7.6)</a> <?php W("and"); ?>
-     <a href="http://www.gnu.org/software/libtool/";>libtool (&gt;= 1.5)</a> 
<?php W("and"); ?>
-     <a href="http://www.gnu.org/software/gettext/";>GNU gettext (&gt;= 
0.14)</a></li>
+     <a href="http://www.gnu.org/software/libtool/";>libtool (&gt;= 1.5.6)</a> 
<?php W("and"); ?>
+     <a href="http://www.gnu.org/software/gettext/";>GNU gettext (&gt;= 
0.14.1)</a></li>
 <?php
 echo "</ul>\n";
 P();
 H2("CVS access");
 W("You can access the current CVS version of GNUnet using");
-PRE("# cvs -d :pserver:address@hidden:/var/cvs/GNUnet login");
-W("When CVS asks for the password, just press enter.");
-W("Then get the sources:");
-PRE("# cvs -d :pserver:address@hidden:/var/cvs/GNUnet checkout GNUnet");
+PRE("$ svn checkout https://gnunet.org/svn/GNUnet/";);
+W("For access to the GNUnet 0.6.x branch use:");
+PRE("$ svn checkout https://gnunet.org/svn/branches/GNUnet06/";);
 W("For access to the freeway code use:");
-PRE("# cvs -d :pserver:address@hidden:/var/cvs/GNUnet checkout freeway");
-W("Developers with CVS <strong>write</strong> access must use a different way 
to access the repository, please contact %s for instructions.",
-  extlink_("mailto:address@hidden","address@hidden";));
+PRE("$ svn checkout https://gnunet.org/svn/freeway/";);
 BR();
 P();
 H2("Download");
@@ -66,25 +59,35 @@
 BR();
 
 W("A subscription to GNUnet mailinglists might be a good idea, use 
<tt>help-gnunet</tt> or %s to report problems.",
-  extlink_("http://ovmj.org/~mantis/","Mantis";));
+  extlink_("https://gnunet.org/mantis/","Mantis";));
 P();
 
+W("RPM binaries for GNUnet and %s (x86 only) can be found %s.",
+  ARRAY(intlink_("/libextractor/index.php", "libextractor"),
+       extlink_("http://ovmj.org/~rpm/";, "here"))); 
+W("OS X binaries are %s.",
+  extlink_("http://www.chem.jyu.fi/~eloranta/GNUnet.html";, "here"));
+W("The installer for Win32 Systems is %s (9 MB).",
+  extlink_("download/win/Setup-0.6.6b.exe", "here"));
 P();
+W("If you want to build GNUnet from source, use these links:");
+echo "<ul>\n";
+LIV(extlink_("download/GNUnet-0.6.6b.tar.bz2","GNUnet-0.6.6b.tar.bz2 (1291 
kb)"));
+LIV(extlink_("download/GNUnet-0.6.6b.tar.gz","GNUnet-0.6.6b.tar.gz (1737 
kb)"));
+LIV(extlink_("/libextractor/download/libextractor-0.4.2.tar.bz2",
+             "libextractor-0.4.2.tar.bz2 (6245 kb)"));
+LIV(extlink_("/libextractor/download/libextractor-0.4.2.tar.gz",
+             "libextractor-0.4.2.tar.gz (5868 kb)"));
+echo "</ul>\n";
+P();
 W("The next major release will be %s and is expected %s.",
-  ARRAY("0.7.0", "2005"));
-/* Too outdated:
-  W("RPM binaries for GNUnet and %s (x86 only) can be found %s.",
-  ARRAY(extlink_("http://ovmj.org/libextractor/";, "libextractor"),
-       extlink_("http://ovmj.org/~rpm/";, "here"))); */
-P();
+  ARRAY("0.7.0", "07-2005"));
+W("A pre-release (alpha-quality) is available:");
 echo "<ul>\n";
-LIV(extlink_("download/GNUnet-0.6.5.tar.bz2","GNUnet-0.6.5.tar.bz2 (1268 
kb)"));
-LIV(extlink_("download/GNUnet-0.6.5.tar.gz","GNUnet-0.6.5.tar.gz (1710 kb)"));
-LIV(extlink_("http://ovmj.org/libextractor/download/libextractor-0.3.11.tar.bz2";,
-             "libextractor-0.3.11.tar.bz2 (6212 kb)"));
-LIV(extlink_("http://ovmj.org/libextractor/download/libextractor-0.3.11.tar.gz";,
-             "libextractor-0.3.11.tar.gz (5766 kb)"));
+LIV(extlink_("download/GNUnet-0.7.0pre0.tar.bz2","GNUnet-0.7.0pre0.tar.bz2 
(1142 kb)"));
+LIV(extlink_("download/GNUnet-0.7.0pre0.tar.gz","GNUnet-0.7.0pre0.tar.gz (1626 
kb)"));
 echo "</ul>\n";
 
+
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/editor.php
===================================================================
--- GNUnet-docs/WWW/test/editor.php     2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/editor.php     2005-04-25 18:48:28 UTC (rev 687)
@@ -30,7 +30,7 @@
   echo "Cannot translate to English.";
   die();
  } 
-
+$start = $_REQUEST['start']; 
 H2("Mass translation to %s", $xlang);
 W("This page is for translating lots of sentences at once.");
 W("The sentences are ordered by the frequency that they are requested by 
users.");

Modified: GNUnet-docs/WWW/test/encoding.php3
===================================================================
--- GNUnet-docs/WWW/test/encoding.php3  2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/encoding.php3  2005-04-25 18:48:28 UTC (rev 687)
@@ -5,7 +5,7 @@
 include("html_header.php3");
 
 H2("The GNUnet AFS Encoding");
-
+// FIXME: update for 0.7.0
 W("This page is intended to describe the revised GNUnet content encoding which 
was implemented in version 0.5.0.");
 
 P();

Modified: GNUnet-docs/WWW/test/faq.php3
===================================================================
--- GNUnet-docs/WWW/test/faq.php3       2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/faq.php3       2005-04-25 18:48:28 UTC (rev 687)
@@ -18,6 +18,7 @@
 LIV(extlink_("#anonymity","What do you mean by &#8220;anonymity&#8221;?"));
 LIV(extlink_("#accounting","How does &#8220;accounting&#8221; work?"));
 LIV(extlink_("#shapers","Why should I not use an external traffic shaper?"));
+LIV(extlink_("#firewall","How do I have to configure my firewall?"));
 LIV(extlink_("#speed","Isn&#8217;t all this encryption going to make things 
totally slow?"));
 LIV(extlink_("#lastblocks", "Why is downloading the last few blocks so 
slow?"));
 LIV(extlink_("#attacks","Are there any known attacks?"));
@@ -29,7 +30,6 @@
 LIV(extlink_("#knownbugs","Are there any known bugs?"));
 LIV(extlink_("#bugs","How do I report a bug?"));
 LIV(extlink_("#keywords","Is it possible to automatically enter keywords for 
files?"));
-LIV(extlink_("#1k","Isn&#8217;t a block size of 1 KiB really bad?"));
 LIV(extlink_("#framework","Why did you change the project description from an 
anonymous file-sharing network to a peer-to-peer framework?"));
 echo "</ul>\n";
 P();
@@ -98,8 +98,8 @@
 W("How can I test if it works?");
 W("Searches can return no results if no matching content is found.");
 W("For a simple test, it is suggested to search for <tt>GPL</tt>.");
-W("The GNU Public License was inserted under that keyword on the permanent 
node on <tt>ovmj.org</tt>.");
-W("This test may of course fail if <tt>ovmj.org</tt> is temporarily not 
available.");
+W("The GNU Public License was inserted under that keyword on the permanent 
node on <tt>gnunet.org</tt>.");
+W("This test may of course fail if <tt>gnunet.org</tt> is temporarily not 
available.");
 W("Common other problems are:");
 echo "<ul>\n";
 LI("firewall (UDP and TCP ports 2086 should be open)");
@@ -328,6 +328,14 @@
 W("It&#8217;s much better to have the limits tight inside GNUnet than outside 
it.");
 P();
 
+ANCHOR("firewall");H3("How do I have to configure my firewall?");
+W("GNUnet uses port 2086 by default.");
+W("Configure your packet filter to accept packets to port 2086 if the GNUnet 
background process gnunetd is running on the same machine.");
+W("If your firewall is a NAT box, forward packets to port 2086 to your GNUnet 
machine and tweak the configuration file gnunet.conf (Sections NETWORK, LOAD, 
UDP, TCP and NAT).");
+W("Port 2087 is used for communication between gnunetd and the client tools as 
gnunet-gtk, gnunet-search etc.");
+W("It must not be exposed to the internet.");
+P();
+
 ANCHOR("speed"); H3("Isn&#8217;t all this encryption going to make things 
totally slow?");
 
 W("The answer to this is, that encryption is incredibly fast.");
@@ -415,7 +423,7 @@
 P();
 
 W("Since this is a project in development, you can find a list of problems or 
report them using the %s system.",
-  extlink_("http://www.ovmj.org/~mantis/","Mantis";));
+  extlink_("https://gnunet.org/mantis/","Mantis";));
 
 P();
 
@@ -424,8 +432,9 @@
 W("GNUnet is being developed and tested under GNU/Linux for i386.");
 W("The current CVS version and version 0.3.2 and higher have been reported to 
work under Solaris, FreeBSD, NetBSD and OpenBSD.");
 W("Since 0.4.1, GNUnet should also work on big-endian architectures, 0.4.2 has 
been reported to work on Linux/PPC and Solaris.");
+W("GNUnet 0.6.5 has been reported to run successfully on Win32.");
+W("People have reported interest in porting GNUnet to OS X, but we have no 
reports of completely successful efforts for this platform (yet).");
 W("Patches to make it work on other platforms are always appreciated.");
-W("People have reported interest in porting GNUnet to OS X and Win32, but we 
have no reports of successful efforts for these proprietary platforms.");
 W("If you had success running GNUnet on any other platform, please report!");
 
 P();
@@ -461,22 +470,14 @@
 
 BR();
 
-W("You may also receive messages that will print CRC errors from clients that 
run versions of GNUnet before 0.5.0.");
+W("You may also receive messages that will print CRC errors from clients that 
run versions of GNUnet before 0.7.0 (version mismatch).");
 W("Finally, if two nodes simultaneously perform a sessionkey exchange (A sends 
a new key to B and B at the same time sends a new key to A), there might be a 
short period of time where the nodes disagree on which key is the correct one, 
also causing CRC errors (the probability of this happening is very low, and we 
do use a timestamp in the SKEY message and use it to see which key is more 
recent, but there is still a very small probability that both nodes really send 
it at the same point in time).");
 
 P();
 ANCHOR("database"); H3("What is the right database for me?");
-W("If you are not experienced with databases or GNUnet and have gdbm, tdb or 
bdb installed, pick whatever <tt>configure</tt> found, giving preference to 
<tt>gdbm</tt> and <tt>bdb</tt> (in this order).");
-W("<tt>gdbm</tt> is the default and it should be the right choice for most 
people, especially if they have gdbm installed.");
-P();
-
-W("<tt>directory</tt> has horrible performance but will work fine if you just 
want to test GNUnet and don&#8217;t want to install any of the other three 
simple databases (gdbm, tdb, bdb).");
-W("Note that if you can do &#8220;configure; make; make install&#8221;, you 
can install these databases.");
-P();
-
-W("As of GNUnet v0.6.1, <tt>mysql</tt> database is fully usable and has no 
known problems.");
+W("If you are not experienced with databases or GNUnet, you should stick to 
the default which is <tt>sqlite</tt>.");
 W("The <tt>mysql</tt> module requires manual setup, which is described %s.",
-  extlink_("http://www.ovmj.org/GNUnet/user_afs.php3#mysql","here";));
+  extlink_("user_afs.php3#mysql","here"));
 W("<tt>mysql</tt> has good performance and the database can be repaired from 
internal failures, but its more difficult to install than any of the 
alternatives.");
 
 P();
@@ -496,8 +497,7 @@
 W("For highly structured content it is possible in practice that two blocks 
are identical.");
 W("GNUnet will then share the stoarge space for these two blocks.");
 W("When deleteing a file that contains such shared blocks, GNUnet can 
currently not recognize the sharing and will remove the block even if it is 
still used in another context.");
-W("The resulting inconsistencies can result in warnings from 
<tt>gnunet-delete</tt> or <tt>gnunet-check</tt> as well as in downloads that do 
not complete.");
-W("<tt>gnunet-check</tt> can be used to find and resolve such problems (by 
re-inserting such missing blocks).");
+W("The resulting inconsistencies can result in warnings from 
<tt>gnunet-delete</tt>, as well as in downloads that do not complete.");
 W("In general, <tt>gnunet-delete</tt> should be used with caution at this 
point.");
 
 
@@ -505,9 +505,9 @@
 P();
 ANCHOR("spam"); H3("How does GNUnet handle spam? or: what are namespaces and 
directories good for?");
 
-W("GNUnet&prime;s ESED2 encoding/query strategy doesn&prime;t allow peers to 
benefit from false replies.");
-W("Even 1 KiB of incorrect response data can be detected instantly, resulting 
in no trust gain for the malicious node.");
-W("If you know the correct AFS URI for the file you want, no intermediate node 
can cheat by false replies.");
+W("GNUnet&prime;s ECRS encoding/query strategy doesn&prime;t allow peers to 
benefit from false replies.");
+W("Even small blocks of incorrect response data can be detected instantly, 
resulting in no trust gain for the malicious node.");
+W("If you know the correct ECRS URI for the file you want, no intermediate 
node can cheat by false replies.");
 W("However, this leaves the problem of obtaining the URIs in the first place, 
and unfortunately if anyone can insert files under common keywords, false data 
can be inserted as well.");
 W("There doesn&prime;t seem to be any easy solution to this problem.");
 W("Ranking search results by trust could be one answer in the future.");
@@ -551,7 +551,7 @@
 DT("Use our bug-tracking system");
 echo "<dd>";
 W("You should use the %s system for any bug reporting.",
-  extlink_("http://www.ovmj.org/~mantis/","Mantis";));
+  extlink_("https://gnunet.org/mantis/","Mantis";));
 W("Also, please check first if a bug has already been reported.");
 W("If the bug has been reported, you may want to add comments to the report, 
even if it just a statement that tells the developers that you encountered the 
same problem.");
 P();
@@ -596,6 +596,7 @@
 W("Please include this information in the bugreport.");
 W("A simple way to do this is to add a platform to your user profile and 
select that platform when reporting bugs.");
 W("You can also post the report.sh output in a comment, especially if you 
reproduced the bug on a different system or are not the original reporter.");
+W("Just reporting that you reproduced a bug can be helpful since it may narrow 
down the list of possible causes and will give us an idea of how frequent a 
particular problem is.");
 echo "</dd>";
 DT("Include log messages");
 echo "<dd>";
@@ -642,9 +643,6 @@
 W("If <tt>gnunetd</tt> is still running, always try to also run the 
<tt>gnunet-stats</tt> tool.");
 W("If the tool still works, report the output.");
 W("If it does not work anymore, this can also be an important hint towards 
where the problem is.");
-P();
-W("Some development versions of <tt>gnunetd</tt> print the connection table, a 
central internal datastructure of every GNUnet peer, whenever 
<tt>gnunet-stats</tt> is run.");
-W("This information can also sometimes be helpful.");
 echo "</dd>";
 DT("Reporting Problems with Mantis");
 echo "<dd>";
@@ -656,12 +654,13 @@
 ANCHOR("knownbugs"); H3("Are there any known bugs?");
 
 W("The list of currently known bugs is available in the %s system.",
-       extlink_("http://www.ovmj.org/~mantis/","Mantis";));
+  extlink_("https://gnunet.org/mantis/","Mantis";));
 P();
 
 W("Some bugs are occasionally reported directly to developers or the developer 
mailing list.");
-W("While this is discouraged, developers often do not have the time to feed 
these bugs back into the Mantis database.");
+W("This is discouraged since developers often do not have the time to feed 
these bugs back into the Mantis database.");
 W("Please report bugs directly to the bug tracking system.");
+W("If you believe a bug is sensitive, you can set its view status to private 
(this should be the exception).");
 
 P();
 ANCHOR("keywords"); H3("Is it possible to automatically enter keywords for 
files?");
@@ -675,7 +674,7 @@
 
 W("GNUnet uses a better approach, which is <strong>keyword 
extraction</strong>.");
 W("The library %s was developed for the purpose of extracting keywords from 
arbitrary files. If keywords can easily be extracted from your files, you 
don&#8217;t have to supply keywords by hand.",
-  extlink_("http://www.ovmj.org/libextractor/","libextractor";));
+  extlink_("/libextractor/","libextractor"));
 W("libextractor can also use the filename as a source for keywords.");
 
 BR();
@@ -685,56 +684,6 @@
 
 P();
 
-ANCHOR("1k"); H3("Isn&#8217;t a block size of 1 KiB really bad?");
-
-W("If you have to transfer 4 KiB, you have to transfer 4 KiB.");
-W("It does not matter if the 4 KiB are transfered as 1 KiB four times or 4 KiB 
once.");
-W("As you can parallelize requests, you don&#8217;t get a significant slowdown 
even if network latency (and not capacity) is the only delay you have.");
-W("Also, using 1 KiB, it is possible to have packets be of the size of 
Ethernet frames.");
-W("This way, the transport layer doesn&#8217;t have to reassemble fragments 
(not to mention retransmissions of the entire packet due to lost pieces of 
fragments).");
-
-BR();
-
-W("More important, a uniform packet size makes traffic analysis much harder.");
-W("If we went to say 4k, we would either have to increase the size of all 
packets (including queries), making the queues even slower (GNUnet must wait 
for more queries before it can send a bunch of them out).");
-W("If we do not want to wait to fill the queue, we may fill the packet up with 
garbage.");
-W("Both options reduce the effectivity of the system.");
-W("Thus for uniform traffic with respect to queries, the smaller the blocksize 
the better.");
-
-BR();
-
-W("Of course, larger block sizes reduce the number of queries that must be 
performed.");
-W("Anyway, the size of a query for a large file is only %% of the filesize, an 
insignificant amount.");
-W("The real problem here is, that if a query takes a long time to hit the node 
that stores the answer, it may be send many times more often than the 
content.");
-W("Certain existing designs reduce the number of times that a query must be 
forwarded to.");
-W("Sadly, these schemes usually have other problems, mostly with security.");
-W("For GNUnet, we try to find ways to be nearly as fast and still not suffer 
from the problems the other schemes have.");
-W("While the developers would not claim success at the moment, improving the 
routing scheme for queries is still the better answer compared to increasing 
the blocksize.");
-
-P();
-
-W("Another possible problem related to 1 KiB blocks is that the hard disk must 
function as a random access device.");
-W("If not done properly, this might stress the disk a bit too much.");
-W("For example, requests for a 10 KiB file cause 10 seek-reads or more.");
-W("However, in GNUnet the actual number of seeks and reads are limited by
-memory-resident probabilistic structures called Bloom filters, which <i>almost 
always</i> prevent read attempts for blocks that are not available locally.");
-W("Also, the reads/seeks are limited by the upstream bandwidth allocated.");
-W("If you allocate e.g. 5kb/sec, it is unlikely that more than 5 reads
-are done per second, and for larger bandwidths, the amount can be much less 
than your bandwidth, depending on the popularity of the content in your node 
cache.");
-W("You can measure the reads/sec value of your node by dividing the amount of 
lookups reported by <em>gnunet-stats</em> by the reported uptime.");
-
-P();
-
-W("We conclude that the choice of a 1 KiB block size is known to be 
controversial, but there are a number of good reasons for it.");
-W("There are benefits for any blocksize, no matter if 4 KiB, 64 KiB or 1 
MiB.");
-W("But the <em>as small as possible</em> approach has unique benefits, from 
security to distribution of load.");
-W("Furthermore, the current code is written in a way that would allow changing 
the blocksize by updating a single constant.");
-W("But so far, nobody was able to convince the developers to do so.");
-W("Any formal proof that 42 byte blocks would be optimal would be 
appreciated.");
-echo ":-)";
-
-P();
-
 ANCHOR("framework");
 H3("Why did you change the project description from an anonymous file-sharing 
network to a peer-to-peer framework?");
 P();

Modified: GNUnet-docs/WWW/test/gnunet-design.fig
===================================================================
--- GNUnet-docs/WWW/test/gnunet-design.fig      2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/gnunet-design.fig      2005-04-25 18:48:28 UTC (rev 
687)
@@ -37,20 +37,19 @@
 4 0 0 50 0 4 20 0.0000 0 270 2250 3450 4800 Transport Service\001
 4 0 0 50 0 4 20 0.0000 0 210 480 6000 4800 API\001
 4 0 0 50 0 4 20 0.0000 0 210 990 5850 900 Chat UI\001
-4 0 0 50 0 4 20 0.0000 0 210 945 3450 900 AFS UI\001
-4 0 0 50 0 4 10 1.5708 0 150 840 7500 1200 gnunet-chat\001
-4 0 0 50 0 4 10 1.5708 0 150 765 2850 1200 gnunet-gtk\001
+4 0 0 50 0 4 10 1.5708 0 150 885 7500 1200 gnunet-chat\001
+4 0 0 50 0 4 10 1.5708 0 150 810 2850 1200 gnunet-gtk\001
 4 0 0 50 0 4 10 1.5708 0 150 570 8175 4200 gnunetd\001
 4 0 8 50 0 4 20 0.0000 0 210 585 2580 5700 TCP\001
 4 0 8 50 0 4 20 0.0000 0 210 615 3600 5700 UDP\001
 4 0 8 50 0 4 20 0.0000 0 210 810 4650 5700 SMTP\001
 4 0 8 50 0 4 20 0.0000 0 210 765 5850 5700 HTTP\001
 4 0 8 50 0 4 20 0.0000 0 210 585 7050 5700 IPv6\001
-4 0 8 50 0 4 20 0.0000 0 210 930 3450 2400 AFS lib\001
 4 0 8 50 0 4 20 0.0000 0 210 975 5850 2400 Chat lib\001
 4 0 8 50 0 4 20 0.0000 0 210 975 3450 1605 TCP IO\001
 4 0 8 50 0 4 20 0.0000 0 210 975 5850 1605 TCP IO\001
-4 0 8 50 0 4 20 0.0000 0 270 2640 5250 6450 Blue: dynamic library\001
-4 0 0 50 0 4 20 0.0000 0 270 2250 5250 6750 Black: application\001
 4 0 0 50 0 4 20 0.0000 0 210 1950 4125 3750 GNUnet CORE\001
 4 0 0 50 0 4 20 0.0000 0 270 2685 3750 4200 encryption, discovery\001
+4 0 8 50 0 4 20 0.0000 0 210 735 3525 2400 FS lib\001
+4 0 0 50 0 4 20 0.0000 0 210 750 3525 900 FS UI\001
+4 0 8 50 0 4 20 0.0000 0 270 3735 4425 6450 Blue: optional dynamic library\001

Modified: GNUnet-docs/WWW/test/gnunet-design.png
===================================================================
(Binary files differ)

Modified: GNUnet-docs/WWW/test/hacking.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking.php3   2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/hacking.php3   2005-04-25 18:48:28 UTC (rev 687)
@@ -12,7 +12,7 @@
 W("GNUnet has a layered design.");
 W("The basic goal for the layering is this:");
 
-img("gnunet-design.png", "GNUnet layering", "CENTER", 339, 441, 0, 10, 10);
+img("gnunet-design.png", "GNUnet layering", "CENTER", 401, 421, 0, 10, 10);
 P();
 ?>
 <table border=5>
@@ -22,13 +22,13 @@
 <th><?php W("code in"); ?></th>
 <tr>
 <th><?php W("User Interface(s)"); ?></th>
-<td><?php W("gnunet-gtk"); ?></td>
-<td>apps/afs/tools/, apps/afs/gtkui/</td>
+<td><?php W("gnunet-search"); ?></td>
+<td>applications/fs/tools/</td>
 </tr>
 <tr>
 <th><?php W("Application Logic"); ?></th>
-<td><?php W("anonymous file sharing"); echo ", "; W("statistics"); ?></td>
-<td>apps/afs/esed2/, apps/afs/module/</td>
+<td><?php W("file sharing"); echo ", "; W("statistics"); ?></td>
+<td>applications/fs/module/, applications/stats/</td>
 </tr>
 <tr>
 <th><?php W("Core"); ?></th>
@@ -44,9 +44,36 @@
 <br clear=all>
 <?php
 P();
+W("The GNUnet core is structured into a complex set of smaller modules.");
+W("These modules are responsible for specific aspects of the system, like 
sessionkey exchange, peer advertisements, topology management or the 
transports.");
+W("The following picture illustrates the dependencies between these 
fundamental modules in the GNUnet core:");
+P();
+img("overview.png", "GNUnet Core Overview", "CENTER", 746, 598, 0, 10, 10);
+P();
+W("The responsibilities of the individual modules are split as follows:");
+echo "<dl>";
+DT("identity");
+DD("Keeping track of known peers, how much we trust them and what their 
current addresses are");
+DT("advertising");
+DD("Telling other peers about our addresses and forwarding advertisements");
+DT("pingpong");
+DD("Sending PING messages to confirm that another peer is alive and 
notifications if other peers respond to our PINGs.");
+DT("session");
+DD("Establishing encrypted sessions with other peers");
+DT("transport");
+DD("Hanlding of multiple low-level transports for direct communication with 
other peers (with UDP-like semantics)");
+DT("topology");
+DD("Maintaining a diverse set of connections with other peers, that is 
deciding with which peers to establish connections at what time");
+DT("bootstrap");
+DD("Using external means to learn about other peers to initially connect to 
the network (i.e. HTTP download of the hostlist)");
+DT("fragmentation");
+DD("Breaking of large (up to 64k) messages into smaller messages that fit the 
constraints of the MTU of the transport");
+DT("core");
+DD("Loading of modules, registering of handlers, event loops.");
+echo "</dl>";
+P();
 W("The following sections describe various aspects of the GNUnet code in more 
detail:");
 include("hacking_index.inc");
 
 include("html_footer.php3");
-?>
-
+?>
\ No newline at end of file

Modified: GNUnet-docs/WWW/test/hacking_afs.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_afs.php3       2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/hacking_afs.php3       2005-04-25 18:48:28 UTC (rev 
687)
@@ -1,51 +1,67 @@
 <?php
 include("scripts.php3");
-$title = "GNUnet Documentation: Hacking AFS";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring 
anonymous file sharing with an excess based trust-economy";
+$title = "GNUnet Documentation: Hacking GNUnet File-Sharing";
+$description="Overview of the File-sharing code in GNUnet";
 include("html_header.php3");
 
-H2("The AFS code");
+H2("The File-Sharing code in GNUnet");
+afslogo();
 P();
-
-W("The AFS code falls roughly into three main groups: the ESED2 encoding, the 
AFS module and the user interface.");
-W("The ESED2 code is responsible for breaking the file into blocks, 
encryption, decryption, requesting blocks, retransmission of requests and other 
fundamental functions.");
-W("The AFS module primarily processes AFS related requests from other peers 
and injects requests from local clients into the peer-to-peer network.");
-W("The user interface consists of a bunch of command line interfaces and a 
graphical user interface.");
-W("The user interface code consists mostly of straight-forward wrappers around 
the ESED2 library and is thus not documented any further.");
+W("The file-sharing code falls roughly into five main groups: the ECRS 
encoding, the SQSTORE database, the FS module, GAP and DHT routing and the user 
interface(s).");
+W("The ECRS code is responsible for breaking the file into blocks, encoding, 
decoding and verification of these blocks, inserting and requesting blocks and 
other fundamental functions.");
+W("The SQSTORE database services are responsible for storing the blocks.");
+W("The user interface consists of a shared library (FSUI) that does the actual 
work and several user interfaces (gnunet-insert, gnunet-gtk) which provide a 
way for the user to access the functionality provided by FSUI.");
+W("The GAP and DHT routing services are responsible for deciding which peers 
should receive which queries (and where to send replies back to).");
+W("The major difference between GAP and DHT is that GAP is expected to achieve 
anonymity whereas DHT is mostly concerned with performance.");
+W("The user interface code consists mostly of straight-forward wrappers around 
the FSUI and ECRS libraries.");
 W("For a description of the user interface from the point of the user, see the 
%s.",
   intlink_("user_afs.php3", "AFS user documentation"));
+W("The FS module is what holds the file-sharing system together, connecting 
ECRS, the SQSTORE, the local clients and the routing services.");
+W("The FS module selects between the GAP and DHT routing services depending on 
the desired level of anonymity.");
 P();
 
-H3("libgnunet_afs_esed2");
-
-W("The primary reference for the ESED2 library is the %s.",
-  extlink_("download/esed2.ps", "ESED2 paper"));
+H3("libgnunet_ecrs");
+W("The primary reference for the ECRS library is the %s.",
+  extlink_("download/ecrs.ps", "ECRS paper"));
 W("The paper describes how files are encoded, searched-for, requested and 
assembled.");
-W("The bulk of the encoding related code is in %s (splitting of the file into 
blocks), %s (retransmission of requests), %s (handling of SBlocks) and %s 
(handling of directories).",
-  ARRAY(extlink_("doxygen/html/block_8c.html", "block.c"),
-        extlink_("doxygen/html/requestmanager_8c.html", "requestmanager.c"),
-        extlink_("doxygen/html/sblock_8c.html", "sblock.c"),
+W("The bulk of the encoding related code is in %s (splitting of the file into 
blocks), %s (retransmission of requests), %s (handling of namespaces) and %s 
(handling of directories).",
+  ARRAY(extlink_("doxygen/html/upload_8c.html", "upload.c"),
+        extlink_("doxygen/html/download_8c.html", "download.c"),
+        extlink_("doxygen/html/namespace_8c.html", "namespace.c"),
         extlink_("doxygen/html/directory_8c.html", "directory.c")));
-W("For each of the four fundamental modes of operation (insert, search, 
download and delete) a corresponding helper module exists which can be used to 
drive the process (%s, %s, %s and %s).",
-  ARRAY(extlink_("doxygen/html/insertutil_8c.html", "insertutil.c"),
-        extlink_("doxygen/html/searchutil_8c.html", "searchutil.c"),
-        extlink_("doxygen/html/downloadutil_8c.html", "downloadutil.c"),
-        extlink_("doxygen/html/deleteutil_8c.html", "deleteutil.c")));
 
 P();
-H3("The AFS Module");
+H3("The GAP Module");
+W("The %s provides the code for anonymous routing of file-sharing requests.");
+  extlink_("doxygen/html/gap_8c.html", "gap module"));
+W("GAP queues requests and keeps track of the previous node on the path for 
sending replies.");
+W("GAP uses the blockstore provided by the file-sharing module to communicate 
replies to local clients, to migrate content and to verify that replies match 
the queries (ECRS verification).");
 
-W("While the primary entry point for loading the module is defined in %s, 
during the actual operation of the module all requests enter the module via the 
functions defined in %s.",
-  ARRAY(extlink_("doxygen/html/afs_8c.html", "afs.c"),
-        extlink_("doxygen/html/applications_2afs_2module_2handler_8c.html", 
"handler.c")));
-W("From there, queries are added to the %s and then queued for transmission by 
the %s.",
-  ARRAY(extlink_("doxygen/html/routing_8c.html", "routing table"),
-        extlink_("doxygen/html/querymanager_8c.html", "query manager.")));
-W("The local storage of the node is controlled by the %s.",
-  extlink_("doxygen/html/manager_8c.html", "database manager"));
-W("Two %s are used to reduce the number of accesses to the database.",
-  extlink_("download/bloomfilter.ps", "bloomfilters"));
+P();
+H3("The SQStore Module");
+W("The local storage of the node is provided by the %s.",
+  extlink_("doxygen/html/gnunet__sqstore_8h.html", "SQstore modules"));
+W("Currently, two SQStore implementations are available, one using mysql and 
one using sqlite for the database.");
 
+
+ANCHOR("fs");H3("FS application module");
+W("The code in this directory contains the shared library (or plugin) that 
gnunetd loads in order to participate in (anonymous) file sharing.");
+W("It uses GAP or RPC for routing requests and the SQStore to store 
information about shared files.");
+W("The FS module itself is responsible for deciding which content should be 
stored locally.");
+W("The decision is based on the frequency and priority of requests for the 
content and the available diskspace.");
+W("A %s is used to reduce the number of accesses to the database.",
+  extlink_("download/bloomfilter.ps", "bloomfilter"));
+W("Content migration is also controlled by the FS module.");
+P();
+
+ANCHOR("FSUI");H3("libgnunet_fsui");
+W("The FSUI library is a high-level library for writing user interfaces.");
+W("The client is expected to be event-driven.");
+W("When the FSUI library is initialized, the user-interface code must provide 
a callback function.");
+W("This function is called for all FSUI events, such as progress (downloading, 
inserting), search results or completed actions (download complete, upload 
complete).");
+W("After initializing FSUI, clients can initiate various actions, such as 
searching, downloading or uploading data.");
+W("Note that many FSUI operations are asynchronous, that is the client calls a 
function to initiate a transaction, and the function will return instantly 
while using additional threads to continue the operation.");
+W("Some of these asynchronous operations can be aborted early, but not all.");
+
 include("html_footer.php3");
-
 ?>

Modified: GNUnet-docs/WWW/test/hacking_application.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_application.php3       2005-04-24 13:12:51 UTC 
(rev 686)
+++ GNUnet-docs/WWW/test/hacking_application.php3       2005-04-25 18:48:28 UTC 
(rev 687)
@@ -38,7 +38,7 @@
        extlink_("doxygen/html/printhelp_8c-source.html","parsing the command 
line options")));
 echo "</li></ol>";
 P();
-H4("Portability");
+ANCHOR("portability");H4("Portability");
 W("The official GNUnet source maintained by the GNUnet developers supports the 
platforms listed on the downloads page.");
 W("These ports require some guidelines to be obeyed:");
 echo "<ul>";
@@ -71,6 +71,7 @@
 W("GTK functions may only be called from the main thread. Use gtkSaveCall().");
 echo "</li>";
 echo "</ul>";
+P();
 
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/hacking_future.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_future.php3    2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/hacking_future.php3    2005-04-25 18:48:28 UTC (rev 
687)
@@ -9,37 +9,24 @@
 W("Before writing a larger patch, you may want to discuss the idea on the 
developer mailinglist first.");
 BR();
 W("Some ideas (in random order, contacts listed are people that seem to have 
given the idea some thought and/or may even have some code):");
-echo "<ul><li>";
-W("improve performance (create simulator/testbed, improve heuristics)");
-echo "</li><li>";
-W("improve documentation");
-echo "</li><li>";
-W("translate (documentation, user interface, messages, man-pages)");
-echo "</li><li>";
-W("more powerful user-interfaces (preferences, non-gtk+).");
-echo "</li><li>";
-W("write more extractors for %s (%s)",
-  ARRAY(extlink_("http://ovmj.org/libextractor/","libextractor";),
-       extlink_("mailto:address@hidden","contact";)));
-echo "</li><li>";
-W("How about pseudonym based E-mail with accounting to fight Spam?");
-W("E-mail without a central server at some ISP would also get rid of the pain 
with changing the address ever again.");
-echo "</li><li>";
-W("port to win32",
-  extlink_("mailto:address@hidden","contact";));
-echo "</li><li>";
-W("fix %s",
-  extlink_("http://ovmj.org/~mantis/","bugs";));
-echo "</li><li>";
-W("port to OS X");
-echo "</li><li>";
-W("improve HTTP compatibility of HTTP transport service");
-echo "</li></ul>";
+echo "<ul>";
+LI("improve performance (create simulator/testbed, improve heuristics)");
+LI("improve documentation");
+LI("translate (documentation, user interface, messages, man-pages)");
+LI("more powerful user-interfaces (preferences, non-gtk+).");
+LI("write more extractors for %s (%s)",
+   ARRAY(extlink_("/libextractor/","libextractor"),
+        extlink_("mailto:address@hidden","contact";)));
+LI("How about pseudonym based E-mail with accounting to fight Spam? E-mail 
without a central server at some ISP would also get rid of the pain with 
changing the address ever again.");
+LI("fix %s",
+   extlink_("https://gnunet.org/mantis/","bugs";));
+LI("port to OS X");
+LI("improve HTTP compatibility of HTTP transport service");
+echo "</ul>";
 W("And if you want to go totally crazy:");
-echo "<ul><li>";
-W("distributed computation (sandboxing!?)");
-echo "</li><li>";
-W("add steganography to existing transport protocols");
-echo "</li></ul>";
+echo "<ul>";
+LI("distributed computation (sandboxing!?)");
+LI("add steganography to existing transport protocols");
+echo "</ul>";
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/hacking_organization.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_organization.php3      2005-04-24 13:12:51 UTC 
(rev 686)
+++ GNUnet-docs/WWW/test/hacking_organization.php3      2005-04-25 18:48:28 UTC 
(rev 687)
@@ -1,140 +1,90 @@
 <?php
 include("scripts.php3");
 $title = "GNUnet Documentation: Code Organization";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring 
anonymous file sharing with an excess based trust-economy";
+$description="Overview over the GNUnet source code for developers";
 include("html_header.php3");
 
-ANCHOR("modules");H3("Code Modules");
+ANCHOR("libraries");H3("GNUnet libraries");
+
+W("GNUnet is divided into several libraries.");
+W("Some libraries are statically linked (rare), some are shared libraries and 
many are plugins into the GNUnet core.");
+BR();
+W("Static libraries are used for more internal re-use of code.");
+W("For example, the static gnunet-core library is used by the GNUnet deaemon 
and by various testcases and diagnostic tools.");
+BR();
+W("Shared libraries are used whenever multiple tools share code.");
+W("The general OS abstraction library, gnunet-util as well as libraries like 
libgnunet-ecrs that are used by multiple user interfaces belong into this 
category.");
+BR();
+W("Finally, plugins are used for all of the code that is dynamically loaded by 
the gnunet daemon when needed.");
+W("This keeps the code for gnunetd small and modular.");
+W("Modules fall into two subcategories, services and applications.");
+W("Services are useless by themselves and only provide functionality for 
applications.");
+W("A simple example for a service is message fragmentation, which is a module 
that breaks larger messages into smaller messages and re-assembles them at the 
destination.");
+W("Some services are required by the GNUnet core, others are purely 
optional.");
+W("By convention, the names for header files for service plugins end in 
<tt>_service.h</tt>.");
+W("Application modules provide useful services that are exposed to the user 
via user interfaces.");
+W("Examples for application modules are the file-sharing or the chat 
application modules.");
+W("Application modules typically also provide one or more shared libraries to 
make it easier to write user interfaces for these applications.");
+W("By convention, the names of the header files for these convenience 
libraries end in <tt>_lib.h</tt>.");
+W("Note that the application modules themselves do not define a header file 
since they are accessed using a set of client-server messages exchanged using 
code from gnunet-util and the GNUnet core.");
+P();
+
+ANCHOR("overview");H3("Important header files and libraries");
+
 W("The most important modules in GNUnet are:");
-?>
-<ul>
- <li><?php extlink("#configuration","util/configuration");?></li>
- <li><?php extlink("#handler","server/handler");?></li>
- <li><?php extlink("#tcpserver","server/tcpserver");?></li>
- <li><?php extlink("#heloexchange","server/heloexchange");?></li>
- <li><?php extlink("#trustservice","server/trustservice");?></li>
- <li><?php extlink("#connection","server/connection");?></li>
- <li><?php extlink("#keyservice","server/keyservice");?></li>
- <li><?php extlink("#pingpong","server/pingpong");?></li>
- <li><?php extlink("#knownhosts","server/knownhosts");?></li>
- <li><?php extlink("#module","afs/module/");?></li>
- <li><?php extlink("#esed2","afs/esed2/");?></li>
-</ul>
-<?php
-W("There are two typical flows for data.");
-W("Note that this is the flow of the data, several threads are involved in 
this.");
+echo "<ul>\n";
+LI(extlink_("#protocols","gnunet_protocols.h"));
+LI(intlink_("hacking_util.php3","gnunet_util.h"));
+LI(extlink_("#transport","gnunet_transport.h"));
+LI(extlink_("#core","gnunet_core.h"));
+echo "</ul>\n";
+
+
+ANCHOR("protocols");H4("gnunet_protocols.h");
+W("The <tt>gnunet_protocols.h</tt> include file also defines all GNUnet 
message ID numbers.");
+W("While these ID numbers belong to individual modules, defining them all in 
one place makes it trivial to avoid conflicting assignments.");
+W("Thus, whenever a new type of message is defined, it should be given a 
globally unique number in <tt>gnunet_protocols.h</tt> as soon as possible.");
+W("The most important sets of constants are the client-server protocol message 
types, the peer-to-peer protocol message types, the transport service 
identifiers and the ECRS block types.");
+
+P();
+ANCHOR("transport");H4("gnunet_transport.h");
+W("This header primarily defines the functions that any GNUnet transport 
service must implement.");
+W("The semantic of the transport service are essentially those of UDP:");
+W("out-of-order, unreliable, unencrypted delivery of bounded-size messages.");
+W("Each transport type can also define its own addressing scheme.");
+P();
+ANCHOR("core");H4("gnunet_core.h");
+W("This header defines the API that can be used by GNUnet modules.");
+W("It provides functions to register listeners for certain events (like 
messages from peers and local user interface clients), to load additional 
services, and to send messages to other peers.");
+
+P();
+ANCHOR("flow");H3("Global data-flow in GNUnet");
+
+W("There are two typical flows for data in GNUnet.");
+W("Note that this text describes the flow of the data, several threads and 
processes are involved in this.");
 BR();
 W("First, a client such as %s or %s connects (via a secure TCP connection, 
typically
-loopback) to the %s module.",
+loopback) to the %s.",
   ARRAY(extlink_("doxygen/html/gnunetsearch_8c.html","gnunet-search"),
-       extlink_("doxygen/html/insertmain_8c.html","gnunet-insert"),
-       extlink_("#tcpserver","tcpserver")));
-W("The most common request is a %s which is handed by the CORE to the AFS 
service and remembered in %s.",
+       extlink_("doxygen/html/gnunetinsert_8c.html","gnunet-insert"),
+       extlink_("doxygen/html/tcpserver_8c.html","tcpserver")));
+W("A common request is a %s which is handed by the TCPSERVER in the GNUnet 
CORE to the FS service, which then passes the query to the %s for routing.",
   ARRAY(extlink_("doxygen/html/structTCP__Query__Request.html","query"),
-       extlink_("#routing","routing")));
-W("The AFS service then produces a query which is enqueued in the %s module.",
+       extlink_("doxygen/html/gnunet__gap__service_8h.html","GAP service")));
+W("The GAP service then produces a query which is enqueued in the %s module of 
the CORE for transmission to other peers.",
   extlink_("#connection","connection"));
-W("After a while, the entire buffer is flushed and send to the destination(s) 
with a little help from the %s module.",
-  extlink_("#knownhosts","knownhosts"));
-W("This transaction goes over the untrusted (but authenticated and encrypted) 
UDP channel.");
+W("After a while, the entire buffer is flushed and send to the destination(s) 
with a help from the %s and %s modules.",
+  ARRAY(extlink_("doxygen/html/gnunet__identity__service_8h.html","identity"),
+       
extlink_("doxygen/html/gnunet__transport__service_8h.html","transport")));
+W("The peer-to-peer message is then transmitted via a transport service, such 
as the %s transport.",
+  extlink_("doxygen/html/udp_8c.html","udp"));
 BR();
-W("The second path comes into play after gnunetd %s a message on any transport 
mechanism.",
-  extlink_("doxygen/html/udp_8c.html","receives"));
-W("The message is %s.",
+W("The second path comes into play after gnunetd receives a message on any 
transport mechanism.");
+W("The message is %s according to its message type.",
   extlink_("doxygen/html/handler_8c.html#a14","demultiplexed"));
-W("If it is a %s the %s module performs a lookup and eventually sends a 
reply.",
-  ARRAY(extlink_("doxygen/html/structQUERY__Message.html","query"),
-       extlink_("#lookup","lookup")));
-W("If the %s of the query is not expired, the query is remembered in the %s 
module and forwarded using the %s module.",
-  ARRAY(extlink_("doxygen/html/structQUERY__Message.html#a2","time-to-live"),
-       extlink_("#routing","routing"),
-       extlink_("#connection","connection")));
-W("If the message is a reply, the %s module is considered for where to send 
the reply to (local client(s) and/or other nodes).",
-  extlink_("#routing","routing"));
+W("If it is a query the GAP and FS modules perform a lookup and eventually 
send a reply.");
+W("The reply goes the same path back, eventually reaching the other peer where 
it is then passed to the user interface.");
 P();
-ANCHOR("configuration");H4("util/configuration");
-W("The %s module reads the configuration and provides configuration 
information to the rest of GNUnet.",
-  extlink_("doxygen/html/configuration_8c.html","configuration"));
-P();
-ANCHOR("handler");H4("server/handler");
-W("This %s %s the integrity of incoming node-to-node traffic and %s the 
traffic to the appropriate handlers.",
-  ARRAY(extlink_("doxygen/html/handler_8c.html","module"),
-       extlink_("doxygen/html/handler_8c.html#a6","verifies"),
-       extlink_("doxygen/html/handler_8c.html#a14","demultiplexes")));
-W("The verification process decrypts encrypted packets and performs a CRC 
check.");
-P();
-ANCHOR("tcpserver");H4("server/tcpserver");
-W("This module performs the appropriate operations for incoming CS traffic.");
-W("Since the connection is trusted, there is only a limited amount of 
verification taking place.");
-W("The %s starts one %s per TCP connection.",
-  ARRAY(extlink_("doxygen/html/tcpserver_8c.html","tcpserver module"),
-       extlink_("doxygen/html/tcpserver_8c.html#a7","thread")));
-P();
-ANCHOR("heloexchange");H4("server/heloexchange");
-W("This %s is responsible for %s the presence of the current node to others.",
-  ARRAY(extlink_("doxygen/html/heloexchange_8c.html","module"),
-       extlink_("doxygen/html/heloexchange_8c.html#a3","advertising")));
-W("It also occasionally %s foreign HELOs.",
-  extlink_("doxygen/html/heloexchange_8c.html#a4","forwards"));
-W("HELO messages that have expired are deleted by heloexchange.");
-P();
-ANCHOR("trustservice");H4("server/trustservice");
-W("The %s provides access to information about how much the local node trusts 
another node.",
-  extlink_("doxygen/html/trustservice_8c.html","trustservice"));
-P();
-ANCHOR("connection");H4("server/connection");
-W("The %s stores information about to which other nodes the local node is 
connected.",
-  extlink_("doxygen/html/connection_8c.html","connection module"));
-W("It buffers outgoing traffic and keeps %s, like the sequence number and the 
session key.",
-  extlink_("doxygen/html/structBufferEntry.html","session information"));
-W("The connection API provides means to unicast a message to a specific node, 
to forward a query to a subset of the nodes or to broadcast a message to all 
other nodes.");
-P();
-ANCHOR("keyservice");H4("server/keyservice");
-W("The %s module manages the private key of the local node and is used for 
signing, encrypting and decrypting messages with the RSA key.",
-  extlink_("doxygen/html/keyservice_8c.html","keyservice"));
-P();
-ANCHOR("pingpong");H4("server/pingpong");
-W("The %s module is responsible to record which ping messages were sent and to 
trigger actions after a corresponding pong is received.",
-  extlink_("doxygen/html/pingpong_8c.html","ping-pong"));
-P();
-ANCHOR("knownhosts");H4("server/knownhosts");
-W("The %s module keeps track of the known GNUnet nodes and provides an API to 
operate on that list.",
-  extlink_("doxygen/html/knownhosts_8c.html","knownhosts"));
-W("This module maps node %s (the hash of the public key of the node) to all 
the information that can be obtained from the %s including the current address 
and the full %s.",
-  ARRAY(extlink_("doxygen/html/structPeerIdentity.html","identities"),
-       extlink_("doxygen/html/structHELO__Message.html","HELO"),
-       extlink_("doxygen/html/structPublicKey.html","public key")));
-P();
-afslogo();
 
-ANCHOR("module");H4("afs/module/");
-
-W("The code in this directory contains the shared library (or plugin) that 
gnunetd loads in order to participate in anonymous file sharing.");
-W("It provides both database functionality (for storing or indexing the shared 
files) and routing code.");
-W("The database %s module is responsible to check if content matching an 
incoming query is available locally.",
-  extlink_("doxygen/html/manager_8c.html","manager"));
-W("The manager code is responsible for performing the lookup and building the 
response.");
-W("It is also there to decide which content to store locally (manages the 
resource disk space).");
-W("Content migration is also controlled by the database manager module.");
-W("The content storage is abstracted into a high-level special purpose 
database abstraction, the %s.",
-  extlink_("doxygen/html/high__backend_8h.html","high backend"));
-W("There are two implementations of the high backend.");
-W("The %s uses %s.",
-  ARRAY(extlink_("doxygen/html/high__mysql_8c.html","first one"),
-       extlink_("http://www.mysql.com/","mysql";)));
-W("The %s maps the high backend interface to a %s (&quot;low backend&quot;) 
that matches the interface provided by standard trivial databases such as %s or 
%s or %s.",
-  ARRAY(extlink_("doxygen/html/high__simple_8c.html","second implementation"),
-       extlink_("doxygen/html/low__backend_8h.html","simpler API"),
-       extlink_("http://www.gnu.org/software/gdbm/","gdbm";),
-       extlink_("http://sourceforge.net/projects/tdb/","tdb";),
-       extlink_("http://www.sleepycat.com/download/index.shtml","bdb";)));
-
-P();
-
-ANCHOR("esed2");H4("afs/module/esed2/");
-W("The code in this directory is responsible for encoding files.");
-W("It contains code for the block encoding, pseudonyms, namespaces and 
directories.");
-W("In essence, the ESED2 library is the shared code (the part that does the 
actual work) for all AFS user interfaces.");
-
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/hacking_rpc.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_rpc.php3       2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/hacking_rpc.php3       2005-04-25 18:48:28 UTC (rev 
687)
@@ -32,7 +32,7 @@
 W("RPC_Param also assigns each parameter an index.");
 W("This is useful if multiple values of the same kind need to be passed.");
 W("The %s header file defines various helper functions to access RPC_Param 
datastructures.",
-  extlink_("http://ovmj.org/GNUnet/doxygen/html/gnunet__rpc__service_8h.html";,
+  extlink_("doxygen/html/gnunet__rpc__service_8h.html",
           "gnunet_rpc_service.h"));
 
 H3("Using the RPC service");

Modified: GNUnet-docs/WWW/test/hacking_server.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_server.php3    2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/hacking_server.php3    2005-04-25 18:48:28 UTC (rev 
687)
@@ -7,19 +7,21 @@
 H2("Understanding gnunetd");
 P();
 
-W("In GNUnet, the server <tt>gnunetd</tt> is responsible for accounting, 
routing and link-to-link encryption.");
+W("In GNUnet, the server <tt>gnunetd</tt> is responsible for loading modules, 
demultiplexing messages from clients and other peers and queueing (encrypted) 
messages for other peers.");
+W("The core also performs bandwidth allocation and scheduling.");
 W("The core relies on implementations of the %s for the actual transport of 
packets.",
   extlink_("doxygen/html/structTransportAPI.html","TransportAPI"));
-W("The transport layer has, like the internet protocol (IP), best-effort 
semantics.");
+W("The transport layer has, like the internet protocol (IP) and UDP, 
best-effort semantics.");
 W("There is no guarantee that a message will be delivered.");
 BR();
-W("Services (like anonymous file-sharing) are build on top of GNUnet.");
-W("Services use the %s to access the GNUnet core.",
+W("Applications (like file-sharing) are build on top of GNUnet.");
+W("Applications may consist of multiple services and use the %s to access the 
GNUnet core.",
   
extlink_("doxygen/html/structCoreAPIForApplication.html","CoreAPIForApplication"));
-W("Services are responsible for adding reliability (through retransmission) to 
the networking layer.");
-W("The service is also responsible for avoiding congestion (see TCP).");
+W("If necessary, applications are responsible for adding reliability (through 
retransmission) to the networking layer.");
+W("A common way to do this is by using the RPC service.");
+W("The applications are also responsible for avoiding congestion (see TCP).");
 W("While the core will enforce bandwidth limitations set by the user, services 
should implement better strategies.");
-W("Services communicate these strategies to the core by giving their message a 
priority.");
+W("Applications communicate these strategies to the core by giving their 
message a priority and a desired time for transmission.");
 W("The core then considers the available bandwidth, deadlines and priorities, 
solves the resulting knapsack problem and schedules the messages.");
 W("The following picture shows that the knapsack solver actually works to 
reduce noise.");
 W("It was obtained by first runnung GNUnet with very high CPU load (knapsack 
disabled).");
@@ -27,13 +29,17 @@
 IMG("knapsack_works.png", "Traffic percentages with and without knapsack", 
"CENTER", 653, 841);
 
 BR();
-W("In order to ease the implementation of a service, GNUnet splits services in 
two parts.");
-W("The first part resides in the process space of <tt>gnunetd</tt> and is 
always available to the GNUnet core.");
+W("In order to ease the implementation, GNUnet splits applications in two main 
parts.");
+W("The first part resides in the process space of <tt>gnunetd</tt>.");
+W("This part is implemented as a plugin.");
 W("The core will notify this lowest layer of the service of messages that have 
arrived for the service.");
-W("This layer of the service is responsible for all node-to-node interactions 
(for AFS, this layer provides routing, content lookup and handles QUERY/CONTENT 
messages).");
-W("The second part of every service is an application which is invoked by the 
user.");
+W("This layer of the application is responsible for all node-to-node 
interactions.");
+W("Typically, the layer consists of multiple service modules.");
+W("For example, the file-sharing application (FS) uses the GAP service for 
routing and the sqstore service for the database.");
+W("The second part of every service is a user-interface which is invoked by 
the user.");
 W("The idea is that the user starts a sepearate program (like gnunet-search, 
gnunet-download or gnunet-gtk) which provides a user interface to the 
service.");
-W("This user interface uses a trusted (local) TCP connection to talk to the 
in-process part of the service.");
+W("Typically, the user interface is split into a shared library that provides 
the actual implementation and a concrete client.");
+W("The idea is that the shared library focuses on performing the interaction 
with <tt>gnunetd</tt> via the trusted (local) TCP connection to talk to the 
in-process part of the service, whereas the concrete client handles the actual 
user interaction (i.e. performs GTK+ calls).");
 BR();
 W("The GNUnet core provides an easy way for services to %s for certain types 
of messages from the application.",
   extlink_("doxygen/html/structCoreAPIForApplication.html#m21","register"));
@@ -43,5 +49,4 @@
 W("You can specify the list of trusted IP addresses (i.e. the LAN) that are 
allowed to connect as clients to GNUnetd.");
 
 include("html_footer.php3");
-
 ?>

Modified: GNUnet-docs/WWW/test/hacking_ui.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_ui.php3        2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/hacking_ui.php3        2005-04-25 18:48:28 UTC (rev 
687)
@@ -1,16 +1,16 @@
 <?php
 include("scripts.php3");
 $title = "GNUnet Documentation: Writing a User-Interface";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring 
anonymous file sharing with an excess based trust-economy";
+$description="How to write user interfaces for GNUnet";
 include("html_header.php3");
 
 H4("How do I write a new user interface for GNUnet?");
 W("Typically, you will not want to write a user interface for the gnunetd 
peer-to-peer deamon but for some specific GNUnet application.");
 W("The first step is typically to factor the application code into a library 
that implements the core functionality (like talking to gnunetd via tcpio) and 
a simple shell application.");
-W("For anonymous file-sharing, the primary libraries for the user interface 
are in <tt>src/applications/encoding/</tt>.");
+W("For file-sharing, the primary libraries for the user interfaces are in 
<tt>src/applications/fs/fsui/</tt> and <tt>src/applications/fs/ecrs/</tt>.");
 P();
 W("The next step is to examine the small shell-tools to get an idea how the 
application specific libraries work and to evolve the shell-tools into a user 
interface.");
 W("You may also decide to just invoke the shell-tools as separate processes 
that do the real work, though this is much less efficient and less powerful 
(thus this is not the recommended approach).");
 P();
 include("html_footer.php3");
-?>
+?>
\ No newline at end of file

Modified: GNUnet-docs/WWW/test/hacking_util.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_util.php3      2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/hacking_util.php3      2005-04-25 18:48:28 UTC (rev 
687)
@@ -49,15 +49,26 @@
 </ul>
 <?php
 
-W("The <tt>gnunet_util.h</tt> include file also defines all GNUnet message ID 
numbers.");
-W("While, technically speaking, these ID numbers belong to individual modules, 
defining them all in one place makes it trivial to avoid conflicting 
assignments.");
-W("Thus, whenever a new type of message is defined, it should be given a 
globally unique number in <tt>gnunet_util.h</tt> as soon as possible.");
 
-P();
 
 W("Ideally, porting GNUnet should only require porting the gnunet_util 
library.");
 W("More testcases for the gnunet-util APIs are therefore a great way to make 
porting of GNUnet easier.");
 
 
+BR();
+ANCHOR("crypto");
+H3("Cryptography");
+
+W("The gnunet-util APIs also provide the cryptographic primitives used in 
GNUnet.");
+W("GNUnet uses 2048 bit RSA keys for the session key exchange and for signing 
messages by peers.");
+W("Most researchers in cryptography consider 2048 bit RSA keys as very secure 
and practically unbreakable for a very long time unless extraordinary advances 
in cryptography are made.");
+W("For the encryption of the files and the symmetric peer-to-peer 
communication GNUnet uses 128 bit keys with blowfish.");
+W("Fresh session keys are negotiated for every new connection.");
+W("Again, there is no published technique to break this cipher in any 
realistic amount of time.");
+W("Note that GNUnet does not use RSA to encrypt files or ordinary individual 
peer-to-peer messages.");
+W("No sane protocol uses public key cryptography for the bulk of the messages 
since public key encryption is extremely expensive compared to symmetric 
ciphers.");
+W("GNUnet follows the well-established practice to use public key cryptography 
to exchange an initial pair of symmetric keys that is then used for the rest of 
the communication).");
+
+
 include("html_footer.php3");
 ?>
\ No newline at end of file

Modified: GNUnet-docs/WWW/test/hacking_win32_build.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_win32_build.php3       2005-04-24 13:12:51 UTC 
(rev 686)
+++ GNUnet-docs/WWW/test/hacking_win32_build.php3       2005-04-25 18:48:28 UTC 
(rev 687)
@@ -1,7 +1,7 @@
 <?php
 include("scripts.php3");
 $title = "GNUnet Documentation: Building on Microsoft Windows 32-bit 
Platforms";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring 
anonymous file sharing with an excess based trust-economy";
+$description="A step-by-step guide on how to build and run GNUnet on Win32 
platforms.";
 include("html_header.php3");
 
 H3("Building GNUnet and libextractor on Microsoft Windows 32-bit Platforms");
@@ -16,14 +16,13 @@
 W("We regret any inconvenience, and if you have problems, please %s or ask the 
%s for assistance.",
   ARRAY(extlink_("faq.php3#bugs", "report them"), extlink_("mailinglist.php3", 
"mailinglist")));
 H4("Hardware and OS requirements");
-?>
-<ul>
-  <li><?php W("Pentium II or equivalent processor, 350 MHz or better"); ?></li>
-  <li><?php W("128 MB RAM"); ?></li>
-  <li><?php W("600 MB free disk space"); ?></li>
-  <li><?php W("Windows 2000 or Windows XP are recommended"); ?></li>
-</ul>
-<?php H4("Software installation"); ?>
+echo "<ul>";
+LI("Pentium II or equivalent processor, 350 MHz or better");
+LI("128 MB RAM");
+LI("600 MB free disk space"); 
+LI("Windows 2000 or Windows XP are recommended"); 
+echo "</ul>";
+H4("Software installation"); ?>
 <ol>
   <li>
     <b><?php W("Compression software");?></b>
@@ -98,44 +97,7 @@
        extlink_("http://sourceforge.net/projects/mingwrep/";, "MinGW 
repository"));
     ?>
   </li>
-<!--
   <li>
-    <b><?php W("GNU dbm"); ?></b>
-    <?php BR();
-    W("One of the supported database systems is GDBM.");
-    BR();
-    W("If you want to use GDBM, get it from the %s and unpack it to the MinGW 
directory (c:\mingw\mingw)",
-       extlink_("http://sourceforge.net/projects/mingwrep/";, "MinGW 
repository"));
-    BR();
-    W("Please note that GDBM is not recommended and does not run on Windows 
2000 and XP.");
-    ?>
-  </li>
-  <li>
-    <b><?php W("Berkeley DB"); ?></b>
-    <?php BR();
-    W("Another supported database is the Berkeley DB.");
-    BR();
-    W("If you want to use BDB, get the source from %s and build &amp; install 
it with:",
-      extlink_("http://www.sleepycat.com/download/db/index.shtml";, "Sleepycat 
Software"));
-    BR();
-    PRE("# cd build_unix &amp;&amp; ../dist/configure --prefix= --enable-mingw 
&amp;&amp; make install");
-    W("The static lib built in this way is known to corrupt databases under 
Windows 98.");
-    BR();
-    W("To create executables that are compatible with Windows 98, create a 
dynamic
-    library (DLL) using Microsoft Visual C, rename it to libdb.dll and copy
-    it to /usr/local/lib (c:\mingw\mingw\lib)");
-    BR();
-    W("You can get a prebuilt DLL from %s (%s)",
-      
ARRAY(extlink_("http://www.ovmj.org/GNUnet/download/win/libdb-4.2.52-win32.zip";,
-      "here"), 
extlink_("http://www.ovmj.org/GNUnet/download/win/libdb-4.2.52-win32.zip.asc";, 
"Signature")));
-    BR();
-    W("It requires the Microsoft C Runtime library which can be obtained from 
%s",
-      
extlink_("http://support.microsoft.com/default.aspx?scid=kb;en-us;259403";,
-      "Microsoft"));
-    ?>
-  </li>
--->
-  <li>
     <b><?php W("SQLite");?></b>
     <?php BR();W("GNUnet uses the SQLite database to store content.");BR();
     W("Get the source from the %s (version 3, \"complete source code\" 
package) and
@@ -146,6 +108,46 @@
     ?>
   </li>
   <li>
+    <b><?php W("MySQL");?></b>
+    <?php BR();W("As an alternative to SQLite, GNUnet also supports MySQL."); 
?>
+    <ol>
+           <li>
+               <?php W("Get the binary installer from the %s (version 4.1),
+               install it and follow the instructions in %s.",
+               
ARRAY(extlink_("http://dev.mysql.com/downloads/mysql/4.1.html#Windows";, "MySQL 
project"),
+                       
extlink_("https://gnunet.org/svn/GNUnet/doc/README.mysql";, "README.mysql"))); ?>
+           </li>
+           <li>
+               <?php W("Create a temporary build directory (c:\mysql)"); ?>
+           </li>
+           <li>
+               <?php W("Copy the directories include\ and lib\ from the MySQL 
directory to the new directory"); ?>
+           </li>
+           <li>
+               <?php W("Get the patches from %s and %s and apply them: ",
+                               
ARRAY(extlink_("http://bugs.mysql.com/bug.php?id=8906&files=1";, "Bug #8906"),
+                       
extlink_("http://bugs.mysql.com/bug.php?id=8872&files=1";, "Bug #8872")));
+               BR();
+               PRE("patch -p 0 < mysql01.diff
+patch -p 0 < mysql_def03.diff"); ?>
+           </li>
+           <li>
+               <?php W("Move lib\opt\libmysql.dll to lib\libmysql.dll"); ?>
+           </li>
+           <li>
+               <?php W("Change to lib\ and create an import library:");
+               BR();
+               PRE("dlltool --input-def ../include/libmySQL.def --dllname 
libmysql.dll --output-lib libmysqlclient.a -k"); ?>
+           </li>
+           <li>
+               <?php W("Copy include\* to include\mysql\\"); ?>
+           </li>
+           <li>
+               <?php W("Pass \"--with-mysql=/c/mysql\" to ./configure and copy 
libmysql.dll to your PATH or GNUnet's bin\ directory"); ?>
+           </li>
+    </ol>
+  </li>
+  <li>
     <b><?php W("GTK+"); ?></b>
     <?php BR();
     W("GTK+ is a portable library for GUIs.");
@@ -157,8 +159,8 @@
     W("Do <em>not</em> overwrite gettext files that are already present (use 
the 7-Zip option \"Skip existing files\").");
     BR();
     W("The GTK binaries require the Microsoft Visual C 7 runtime library which 
can be obtained from %s (%s).",
-       ARRAY(extlink_("http://www.ovmj.org/GNUnet/download/win/msvcr70.zip";, 
"here"),
-        extlink_("http://www.ovmj.org/GNUnet/download/win/msvcr70.zip.asc";, 
"Signature")));
+       ARRAY(extlink_("download/win/msvcr70.zip", "here"),
+        extlink_("download/win/msvcr70.zip.asc", "Signature")));
     ?>
   </li>
   <li>
@@ -182,22 +184,18 @@
     ?>
   </li>
   <li>
-    <b><?php W("OpenSSL");?></b>
-    <?php BR();W("OpenSSL provides the cryptographic functions used by 
GNUnet");BR();
-    W("Get the source from the %s and build &amp; install it with:",
-      extlink_("http://www.openssl.org/source/";, "OpenSSL project"));
-    BR();
-    PRE("./Configure mingw &amp;&amp; make install");
-    BR();
-    W("If the build fails, you can get OpenSSL precompiled from %s (%s).",
-       
ARRAY(extlink_("http://www.ovmj.org/GNUnet/download/win/openssl-0.9.7e-win32.zip";,
 "here"),
-       
extlink_("http://www.ovmj.org/GNUnet/download/win/openssl-0.9.7e-win32.zip.asc";,
 "Signature")));
+    <b><?php W("Libgcrypt");?></b>
+    <?php BR();W("Libgcrypt provides the cryptographic functions used by 
GNUnet");BR();
+    W("Get Libgcrypt from %s (%s) and unpack it to the MinGW directory 
(c:\mingw\mingw)",
+       ARRAY(extlink_("download/win/libgcrypt-1.2.1.zip", "here"),
+        extlink_("download/win/libgcrypt-1.2.1.zip.asc", "Signature")));
     ?>
   </li>
 </ol>
 <?php H4("Building libextractor and GNUnet");
-W("See %s for basic instructions on building libextractor and GNUnet.", 
extlink_("user_gnunet.php3",
-       "Installation"));
+W("See %s for basic instructions on building libextractor and GNUnet.", 
+   extlink_("user_gnunet.php3",
+           "Installation"));
 BR();
 W("By default, all modules that are created in this way contain debug 
information and are quite large.");
 W("To compile release versions (small and fast) set the variable CFLAGS:");

Modified: GNUnet-docs/WWW/test/html_footer.php3
===================================================================
--- GNUnet-docs/WWW/test/html_footer.php3       2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/html_footer.php3       2005-04-25 18:48:28 UTC (rev 
687)
@@ -7,7 +7,7 @@
     include("menu.php3");
   }
   HR();
-  PRE("Copyright (C) 2002, 2003, 2004 Christian Grothoff.\n" .
+  PRE("Copyright (C) 2002, 2003, 2004, 2005 Christian Grothoff.\n" .
       "Verbatim copying and distribution of this entire article\n" .
       "is permitted in any medium, provided this notice is preserved.");
   BR();

Modified: GNUnet-docs/WWW/test/html_header.php3
===================================================================
--- GNUnet-docs/WWW/test/html_header.php3       2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/html_header.php3       2005-04-25 18:48:28 UTC (rev 
687)
@@ -32,7 +32,7 @@
 <meta http-equiv="expires" content="43200">
 <meta http-equiv="content-type" content="text/html">
 <meta http-equiv="Content-Style-Type" content="text/css">
-<link rel=stylesheet type="text/css" href="http://ovmj.org/GNUnet/gnunet.css";>
+<link rel=stylesheet type="text/css" href="gnunet.css">
 </head>
 <body>
 <?php

Modified: GNUnet-docs/WWW/test/i18nhtml.inc
===================================================================
--- GNUnet-docs/WWW/test/i18nhtml.inc   2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/i18nhtml.inc   2005-04-25 18:48:28 UTC (rev 687)
@@ -115,6 +115,7 @@
 // If no language is specified, use english.
 if ( (! $lang) || ($lang=="") )
   $lang = "English";
+$xlang = $_REQUEST['xlang'];
 if ($xlang)
   $lang = $xlang;
 $lang = ucfirst(strtolower($lang));
@@ -192,12 +193,11 @@
 
   if ($hasTranslation == "") 
     $hasTranslation = $i18nHTMLhasTranslation;
-
-  if ( ($editor) && ($i18nHTMLallowedits || ($i18nHTMLhasTranslation == 0)) ) {
+  if ( ($editor) || ($i18nHTMLhasTranslation == 0) ) {
     $back = "http://"; . $HTTP_SERVER_VARS["HTTP_HOST"] . 
$HTTP_SERVER_VARS["REQUEST_URI"];
     return "<a href=\"" . $i18nHTMLbase . "translate.php?xlang=" 
       . $lang 
-      . "&amp;text=" . urlencode(htmlentities($a, ENT_QUOTES, $charset))
+      . "&amp;text=" . urlencode($a)
       . "&amp;back=" . urlencode($back) 
       . "\">" . $i18nHTMLmarker . "</a>\n";
   } else
@@ -225,6 +225,11 @@
 
   $query = "SELECT translation FROM map WHERE name=\"$u\" AND lang=\"$lang\" 
ORDER BY ranking DESC";
   $result = mysql_query($query, $connection);
+  if (!$result) {
+    if ($i18nHTMLdebug != 0)
+      echo 'Unable to execute query $query: ' . mysql_error();
+  }
+
   $num = 0;
   if ($result)
     $num = mysql_numrows($result);
@@ -347,7 +352,7 @@
 
   if ($a == "")
     return 0;
-  echo W_($a, $args);
+  echo W_($a, $args) . "\n";
   return $i18nHTMLhasTranslation;
 }
 
@@ -363,6 +368,9 @@
 function DT($a,$b="") {
   echo "<dt>" . W_($a,$b) . "</dt>\n";
 }
+function DD($a,$b="") {
+  echo "<dd>" . W_($a,$b) . "</dd>\n";
+}
 function H1($a,$b="") {
   echo "<h1>" . W_($a,$b) . "</h1>\n";
 }
@@ -428,7 +436,10 @@
 function HR() {
   echo "<hr>\n";
 }
-
+function DTDD($a,$b) {
+  DT($a);
+  DD($b);
+}
 function IMG($src, $alt, $align="CENTER", $width, $height, $border=0, 
$hspace=0, $vspace=0) {
   echo IMG_($src, $alt, $align, $width, $height, $border, $hspace, $vspace);
 }
@@ -529,7 +540,7 @@
   global $HTTP_SERVER_VARS;
 
   P();
-  echo "Translation engine based on <a 
href=\"http://ovmj.org/i18nHTML/\";>i18nHTML</a> (C) 2003, 2004 Christian 
Grothoff.<br />\n";
+  echo "Translation engine based on <a 
href=\"http://gnunet.org/i18nHTML/\";>i18nHTML</a> (C) 2003, 2004, 2005 
Christian Grothoff.<br />\n";
   if ( ($xlang) && ($xlang != "English") ) {
     $back = "http://"; . $HTTP_SERVER_VARS["HTTP_HOST"] . 
$HTTP_SERVER_VARS["REQUEST_URI"];
     // echo "<span align=\"center\"><small>";

Modified: GNUnet-docs/WWW/test/links.php3
===================================================================
--- GNUnet-docs/WWW/test/links.php3     2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/links.php3     2005-04-25 18:48:28 UTC (rev 687)
@@ -9,10 +9,9 @@
 ?>
 <ul>
  <li><a href="http://freshmeat.net/projects/gnunet/";>GNUnet on 
freshmeat</a></li>
- <li><a href="http://www.ovmj.org/GNUnet/freeway/";>freeway (GNUnet port to 
Java)</a></li>
+ <li><a href="/freeway/">freeway (GNUnet port to Java)</a></li>
  <li><a href="http://xnap.org/";>xnap (GNUnet-freeway plugin is under 
development)</a></li>
- <li><a href="http://www.ovmj.org/libextractor/";>libextractor</a></li>
- <li><a href="http://www.boardy.de/forumdisplay.php?forumid=104104";>GNUnet 
forum</a></li>
+ <li><a href="/libextractor/">libextractor</a></li>
  <li><a href="http://shell.franken.de/~dg1nsw/gnunet/faq/";>Another GNUnet 
FAQ</a></li>
  <li><a href="http://www.angelfire.com/super2/duologue/gnunet/";>Tom 
Barnes-Lewrence&rsquo;s GNUnet page with FAQ and informal keyword 
standard</a></li>
  <li><a href="http://gnunet.wensley.org.uk/";>GNUnet hostlist and various 
tips</a></li>
@@ -73,6 +72,7 @@
  <li><a href="http://www.gnu.org/brave-gnu-world/issue-40.en.html";>Brave GNU 
World</a></li>
  <li><a href="http://www.heise.de/newsticker/data/jk-28.03.03-003/";>Heise 
reporting</a> about <a href="http://petworkshop.org/";>PET</a></li>
  <li><a href="http://lwn.net/Articles/61329/";>LWN</a></li>
+ <li><a href="http://www.root.cz/clanek/2551";>Article about GNUnet on 
root.cz</a></li>
 </ul>
 
 <?php

Modified: GNUnet-docs/WWW/test/mailinglist.php3
===================================================================
--- GNUnet-docs/WWW/test/mailinglist.php3       2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/mailinglist.php3       2005-04-25 18:48:28 UTC (rev 
687)
@@ -4,10 +4,17 @@
 $description="Ways to get in contact with the GNUnet developers and to keep in 
touch with the development.";
 include("html_header.php3");
 
+H2("Blogs, Forum, Stories and Polls");
+W("GNUnet uses %s as a community content management system.",
+  extlink_("http://gnunet.org/drupal/";, "drupal"));
+W("There, you can read the latest stories, participate in the forums and polls 
and even start your own blogs.");
+W("Everything related to GNUnet is welcome, as long as it is respectful and 
legal.");
+P();
+
 H2("Bugtrack");
 W("GNUnet uses Mantis for bugtracking.");
 W("Visit %s to report bugs.",
-  extlink_("http://www.ovmj.org/~mantis/","http://www.ovmj.org/~mantis/";));
+  extlink_("https://gnunet.org/mantis/","https://gnunet.org/mantis/";));
 W("You need to sign up for a reporter account.");
 W("Please make sure you report bugs under <strong>GNUnet</strong> and not 
under any of the other projects.");
 P();
@@ -39,24 +46,32 @@
 echo "<center>";
 extlink("http://mail.gnu.org/mailman/listinfo/info-gnunet","Announcements";);
 echo "</center>";
+
+P();H2("GNUnet Diffs");
+W("This mailinglist is used to instantly publish all commits to the %s.",
+  extlink_("/svn/", "GNUnet subversion repository"));
+W("So if you want to be notified about any change to the GNUnet codebase, you 
can subscribe to this mailinglist.");
+W("Only subversion-diffs should (and hopefully can) be posted on this list.");
+W("All other mail will be discareded.");
+echo "<center>";
+extlink("http://mail.gnu.org/mailman/listinfo/gnunet-sv","Diffs";);
+echo "</center>";
 P();
 
-H2("Discussion Forum");
+H2("Other Discussion Forums");
 W("The %s is a webpage for discussions of GNUnet and related topics.",
   extlink_("http://www.boardy.de/forumdisplay.php?forumid=104104","GNUnet 
Forum"));
 W("The forum was started by German GNUnet users and hence many postings are in 
German, but contributions in English are welcome.");
 W("Note that the forum is not the place for reporting bugs, please use 
Mantis.");
-W("");
+W("Also, the main forum for GNUnet is now %s.",
+  extlink_("/drupal/", "here"));
 W("%s is an international P2P board with GNUnet related subcategories.",
   extlink_("http://board.planetpeer.de/";, "Planet Peer"));
 
-/* // down? unused? dead?
 H2("Chat");
-W("The official GNUnet chat server is <tt>daemon.ecn.purdue.edu</tt>.");
-W("The server is running SILC which you can access using the %s software.",
-  extlink_("http://silcnet.org/","silc";));
-W("Use <tt>/server daemon.ecn.purdue.edu</tt> and <tt>/join #GNUnet</tt>.");
-*/
+W("Various GNUnet people are regularly hanging out on the %s.",
+  extlink_("http://www.freenode.net/","Freenode IRC Network"));
+W("The channel name is <tt>#GNUnet</tt>.");
 
 P();
 include("html_footer.php3");

Modified: GNUnet-docs/WWW/test/menu.php3
===================================================================
--- GNUnet-docs/WWW/test/menu.php3      2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/menu.php3      2005-04-25 18:48:28 UTC (rev 687)
@@ -5,8 +5,9 @@
 <center>
 <table border=0 rules=none width="90%">
  <tr>
-  <th><?php intlink("index.php3","Welcome") ?></th>
+  <th><?php intlink("index.php","Welcome") ?></th>
   <th><?php intlink("mailinglist.php3","Contact"); ?></th>
+  <th><?php extlink("https://gnunet.org/drupal/";, "Community"); ?></th>
   <th><?php intlink("faq.php3","FAQ"); ?></th>
   <th><?php intlink("download.php3","Download"); ?></th>
   <th><?php intlink("documentation.php3","Documentation"); ?></th>
@@ -17,4 +18,4 @@
 </center>
 <?php
  }
-?>                         
\ No newline at end of file
+?>                         

Modified: GNUnet-docs/WWW/test/namespace.php3
===================================================================
--- GNUnet-docs/WWW/test/namespace.php3 2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/namespace.php3 2005-04-25 18:48:28 UTC (rev 687)
@@ -3,7 +3,7 @@
 $title = "GNUnet Subspaces and Directories";
 $description = "Page for the discussion of how to implement private subspaces 
and directories in GNUnet.";
 include("html_header.php3");
-
+// FIXME: update for 0.7.0?
 H2("Subspaces and Directories in GNUnet");
 
 P();

Modified: GNUnet-docs/WWW/test/papers.php3
===================================================================
--- GNUnet-docs/WWW/test/papers.php3    2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/papers.php3    2005-04-25 18:48:28 UTC (rev 687)
@@ -107,6 +107,19 @@
 W("Given such an adversary that legally enforces content filtering on a 
per-block level, GNUnet can be censored.");
 echo "</font>\n";
 echo "</dd>\n";
+
+DT("Enhancing Web privacy and anonymity in the digital era (%s), %s.",
+   ARRAY(extlink_("papers/p255.pdf", "pdf"),
+        "Information Management &amp; Computer Security, 12-3 2004"));
+echo "<dd>"; echo "Stefanos Gritzalis";
+BR();
+echo "<font class=desc>\n";
+W("This paper presents a review of various privacy and anonymity enhancing 
systems, including GNUnet (GAP).");
+W("The review highlights the advantages and disadvantages of the various 
systems.");
+W("This paper is probably a good introduction for people interested in 
anonymity and privacy in general and can be used as a guide towards which 
systems maybe the right choice for a particular application.");
+echo "</font>\n";
+echo "</dd>\n";
+
 DT("Efficient Sharing of Encrypted Data (%s), %s",
    ARRAY(extlink_("download/esed.ps","PS"),
         extlink_("http://www.cm.deakin.edu.au/ACISP&rsquo;02/","ACISP 2002")));
@@ -169,6 +182,10 @@
          "Towards an Information Theoretic Metric for Anonymity",
          ARRAY("Andrei Serjantov", "George Danezis"),
          "This paper proposes a metric that is essentially equivalent to 
<em>Towards measuring anonymity</em> but focuses on the analysis of mixes.");
+bibEntry("papers/borisov_waddle.pdf",
+        "Anonymity in Structured Peer-to-Peer Networks",
+        ARRAY("Nikita Borisov", "Jason Waddle"),
+        "This paper discusses how much anonymity structured peer-to-peer 
networks (based on Chord) can achieve.  It uses the entropy metric for 
anonymity and discusses attacker placement and various variations on the 
routing algorithms.  Well written.");
 bibEntry("papers/shields_degration.ps",
          "An Analysis of the Degradation of Anonymous Protocols",
          ARRAY("Matthew Wrigt", "Micah Adler", "Brian Levine", "Clay Shields"),
@@ -237,6 +254,10 @@
         "Anonymity, Unobservability, Pseudonymity, and Identity Management - A 
Proposal for Terminology v0.18",
         ARRAY("Andreas Pfitzmann", "Marit Hansen"),
         "");
+bibEntry("papers/flash-mix.pdf",
+        "Flash Mixing",
+        ARRAY("Markus Jakobsson"),
+         "");
 echo "</dl>";
 
 
@@ -286,14 +307,10 @@
         "Sloppy hashing and self-organizing clusters",
         ARRAY("Michael J. Freedman", "David Mazieres"),
          "");
-bibEntry("papers/flash-mix.pdf",
-        "Flash Mixing",
-        ARRAY("Markus Jakobsson"),
-         "");
-bibEntry("papers/introducing-morphmix-peer-to.pdf",
-        "Introducing MorphMix: Peer-to-Peer based Anonymous Internet Usage 
with Collsion Detection",
-        ARRAY("Marc Rennhard", "Bernhard Plattner"),
-         "The paper describes the design of a peer-to-peer based mix network.  
The authors attempt to solve the problem of an adversary joining the network 
and collecting data using probabilistic assumptions about the behavior of the 
adversary.  The problem with this approach of detecting malicious nodes is that 
a good adversary can always just adapt to the detection scheme and thereby 
avoid detection.");
+bibEntry("papers/p207-damiani.pdf",
+        "A Reputation-Based Approach for Choosing Reliable Resources in 
Peer-to-Peer Networks",
+        ARRAY("Ernesto Damiani", "Sabrina De Capitani di Vimercati", "Stefano 
Paraboschi", "Pierangela Samarati", "Fabio Violante"),
+        "");
 echo "</dl>";
 
 H3("Replication and Migration");
@@ -394,6 +411,10 @@
         "Incentives for Cooperation in Peer-to-Peer Networks",
          ARRAY("Kevin Lai", "Michael Feldman", "Ion Stoica", "John Chuang"),
          "This paper discusses distributed incentive systems for peer-to-peer 
networks with zero-cost identities.  It compares decision making based on 
private histories (like in GNUnet) with shared histories and concludes that 
private histories do not scale to larger networks (since a given pair of peers 
is unlikely to interact repeatedly as the size of the network grows).  They 
note that shared histories also have problems (such as solving maximum-flow 
problems to establish reputation transitively in a secure fashion).  Note that 
they ignore properties like locality, which, in particular in an anonymizing 
network like GNUnet where interactions are hardly ever end-to-end, increases 
the chances that peers will interact repeatedly even in very large networks.");
+bibEntry("papers/when-can-autonomous.pdf",
+        "When Can an Autonomous Reputation Scheme Discourage Free-riding in a 
Peer-to-Peer System?",
+        ARRAY("Nazareno Andrade", "Miranda Mowbray", "Walfredo Cirne", 
"Francisco Brasilerio"),
+        "This work describes a scheme that is remarkably similar to the 
economic model used by GNUnet to discourage free-riding and enocurage 
contribution.  The major difference to GNUnet seems to be that resource 
consumption does not seem to result in penalizing the requester: all peers only 
total up the contributions received and allocate their resources to the highest 
donor, irrespective of the resources requested by that peer previously.  The 
discussion of related work in this paper is severely lacking.");
 echo "</dl>";
 
 H3("Legal issues");
@@ -442,6 +463,10 @@
          "A New Generation of File Sharing Tools",
          ARRAY("Dan Klinedinst"),
          "Discussion of the advantages of Freenet and GNUnet over more 
traditional peer-to-peer networks.");
+bibEntry("papers/introducing-morphmix-peer-to.pdf",
+        "Introducing MorphMix: Peer-to-Peer based Anonymous Internet Usage 
with Collsion Detection",
+        ARRAY("Marc Rennhard", "Bernhard Plattner"),
+         "The paper describes the design of a peer-to-peer based mix network.  
The authors attempt to solve the problem of an adversary joining the network 
and collecting data using probabilistic assumptions about the behavior of the 
adversary.  The problem with this approach of detecting malicious nodes is that 
a good adversary can always just adapt to the detection scheme and thereby 
avoid detection.");
 // coral-iptps-03
 echo "</dl>";
 
@@ -451,6 +476,10 @@
          "Infranet: Circumventing Web Censorship and Surveillance",
          ARRAY("Nick Feamster", "Magdalena Baazinska", "Greg Harfst", "Hari 
Balakrishnan", "David Karger"),
          "How to steganographically hide prohibited accesses to the WWW in 
&quot;legitimate&quot; HTTP traffic.");
+bibEntry("papers/nat.pdf",
+        "Peer-to-Peer Communication Across Network Address Translators",
+        ARRAY("Bryan Ford", "Pyda Srisuresh", "Dan Kegel"),
+        "How to establish connections in a peer-to-peer network in the 
presence of NAT, with an empirical study of various NAT implementations.  Good 
stuff.  And Ian, with a bit of native code it can even be done in Java.");
 echo "</dl>";
 
 H3("Publish-Subscribe");

Modified: GNUnet-docs/WWW/test/philosophy.php3
===================================================================
--- GNUnet-docs/WWW/test/philosophy.php3        2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/philosophy.php3        2005-04-25 18:48:28 UTC (rev 
687)
@@ -22,33 +22,49 @@
 
 BR();
 
-
 ANCHOR("goals");
 H3("Design Goals and Philosophy");
 
-W("The goal of the GNUnet project is to become the ultimate system for free 
information exchange in a world hostile toward uncontrolled communication.");
+W("The foremost goal of the GNUnet project is to become a widely used, 
reliable, open, nondiscriminating, egalitarian, unfettered and 
censorship-resistant system of free information exchange.");
 W("We value free speech above state secrets, law-enforcement or intellectual 
property.");
 W("GNUnet is supposed to be an anarchistic network, where the only limitation 
for peers is that they must contribute enough back to the network such that 
their resource consumption does not have a significant impact on other users.");
 P();
+
+ANCHOR("Privacy");
+H4("Privacy");
 W("GNUnet&rsquo;s primary design goals are to protect the privacy of its users 
and to guard itself against attacks or abuse.");
 W("GNUnet does not have any mechanisms to control, track or censor users.");
 W("Instead, the GNUnet protocols aim to make it as hard as possible to find 
out what is happening on the network or to disrupt operations.");
 P();
-W("We call GNUnet a network because we want to support any operation that is 
typically performed on a network.");
-W("While the first versions only support anonymous file-sharing, other 
applications such as mail, news or distributed computation will hopefully 
follow in the future.");
-W("Running additional applications over the link-to-link encrypted 
peer-to-peer infrastructure increases the anonymity of the peers as the set of 
users and the amount of encrypted traffic grows.");
-W("Increasing privacy is the primary reason why GNUnet is developed to become 
a peer-to-peer framework.");
-W("A rudimentary chat client has been implemented as reference code for how to 
implement other applications
-on top of the GNUnet peer-to-peer infrastructure.");
+
+ANCHOR("Versatility");
+H4("Versatility");
+W("We call GNUnet a network because we want to support many different forms of 
peer-to-peer applications.");
+W("GNUnet uses a plugin architecture to make the system extensible and to 
encourage code reuse.");
+W("While the first versions of the system only supported anonymous 
file-sharing, other applications are being worked on and more will hopefully 
follow in the future.");
+W("A powerful synergy regarding anonymity services is created by a large 
community utilizing many diverse applications over the same software 
infrastructure.");
+W("The reason is that link encryption hides the specifics of the traffic for 
non-participating observers.");
+W("This way, anonymity can get stronger with additional (GNUnet) traffic, even 
if the additional traffic is not related to anonymous communication.");
+W("Increasing anonymity is the primary reason why GNUnet is developed to 
become a peer-to-peer framework.");
 P();
+
+
+ANCHOR("Practicality");
+H4("Pracicality");
+
+W("GNUnet allows participants to trade various amounts of security in exchange 
for increased efficiency.");
+W("However, it is not possible for any user's security and efficiency 
requirements to compromise the security and efficiency of any other user.");
+
 W("For GNUnet, efficiency is not paramount.");
 W("If there is a more secure and still practical approach, we would choose to 
take the more secure alternative.");
 W("<tt>telnet</tt> is more efficient than <tt>ssh</tt>, yet it is obsolete.");
 W("Hardware gets faster, and code can be optimized.");
 W("Fixing security issues as an afterthought is much harder.");
-P();
+BR();
 W("While security is paramount, practicability is still a requirement.");
 W("The most secure system is always the one that nobody can use.");
+W("Similarly, any anonymous system that is extremely inefficient will only 
find few users.");
+W("However, good anonymity requires a large and diverse userbase.");
 W("Since individual security requirements may vary, the only good solution 
here is to allow individuals to trade-off security and efficiency.");
 W("The primary challenge in allowing this is to ensure that the economic 
incentives work properly.");
 W("In particular, this means that it must be impossible for a user to gain 
security at the expense of other users.");
@@ -56,51 +72,109 @@
 W("GNUnet should avoid whereever possible to rely on protocols that will only 
work if the participants are benevolent.");
 W("While some designs have had widespread success while relying on parties to 
observe a protocol that may be sub-optimal for the individuals (e.g.  TCP 
Nagle), a protocol that ensures that individual goals never conflict with the 
goals of the group is always preferable.");
 P();
-W("Anonymity can always only be achieved with large numbers of participants.");
-W("Thus it is important that we make GNUnet easy to use and well-documented.");
 
-
-
 ANCHOR("concepts");
 H3("Concepts");
 
 W("In this section, the fundamental concepts of GNUnet are explained.");
 W("Most of them are also described in our research papers.");
+W("First, some of the concepts used in the GNUnet framework are detailed.");
+W("The second part describes concepts specific to anonymous file-sharing.");
 
+gnunetlogo();
+H4("Authentication");
+
+W("Almost all peer-to-peer communications in GNUnet are between mutually 
authenticated peers.");
+W("The authentication works by having each peer sign a secret session key with 
its RSA key.");
+W("Furthermore, the session key is encrypted with the public key of the other 
peer.");
+W("That session key is then used to encrypt the communication between the two 
peers using Blowfish.");
+W("As only the two participating hosts know the session key, this 
authenticates each packet without requiring signatures each time.");
+
+BR();
+W("In GNUnet, the identity of a host is the hash of its public key.");
+W("For that reason, man-in-the-middle attacks will not break the 
authentication or accounting goals.");
+W("Essentially, for GNUnet, the IP of the host does not matter.");
+W("As the public key is the only thing that truly matters, faking an IP, a 
port or any other property of the underlying transport protocol is 
irrelevant.");
+
+BR();
+
+W("GNUnet uses a special type of message to communicate a binding between 
public (RSA) keys to their current network address.");
+W("For the UDP and TCP transport layers, a network address is an IP and a 
port.");
+W("GNUnet can also use other transport mechanisms (HTTP, SMTP, etc.) which use 
various other forms of addresses.");
+W("Note that any node can have multiple addresses at the same time for the 
various transport mechanisms.");
+W("Binding messages expire after at most a week (the timeout can be shorter if 
the user configures the node appropriately).");
+
 P();
+H4("Accounting to Encourage Resource Sharing");
 
+W("Most distributed P2P networks suffer from a lack of defenses or precautions 
against attacks in the form of freeloading.");
+W("While the intentions of an attacker and a freeloader are different, their 
effect on the network is the same; they both render it useless.");
+W("Most simple attacks on networks such as Gnutella involve flooding the 
network with traffic, particularly with queries that are, in the worst case, 
multiplied by the network.");
+
+BR();
+
+W("In order to ensure that freeloaders or attackers have a minimal impact on 
the network, GNUnet tries to distinguish good (contributing) nodes from 
malicious (freeloading) nodes.");
+W("In GNUnet, every node keeps track of the behavior of every other node it 
has been in contact with.");
+W("Many requests (depending on the application) are transmitted with a 
priority (or importance) level.");
+W("That priority is used to establish how important the sender believes this 
request is.");
+W("If a peer responds to an important request, the recipient will increase its 
trust in the responder: the responder contributed resources.");
+W("If a peer is too busy to answer all requests, it needs to prioritize.");
+W("For that, peers to not take the priorities of the requests received at face 
value.");
+W("First, they check how much they trust the sender, and depending on that 
amount of trust they assign the request a (possibly lower) effective 
priority.");
+W("Then, they drop the requests with the lowest effective priority to satisfy 
their resource constraints.");
+W("This way, GNUnet&rsquo;s economic model ensures that nodes that are not 
currently considered to have a surplus in contributions will not be served if 
the network load is high.");
+W("More details can be found in %s.",
+  extlink_("download/ebe.ps", "this paper"));
+
+P();
+H4("Confidentiality");
+
+W("Adversaries outside of GNUnet are not supposed to know what kind of actions 
a peer is involved in.");
+W("Only the specific neighbor of a peer that is the corresponding sender or 
recipient of a message may know its contents, and even then application 
protocols may place further restrictions on that knowledge.");
+W("In order to ensure confidentiality, GNUnet uses link encryption, that is 
each message exchanged between two peers is encrypted using a key only known to 
these two peers.");
+W("Encrypting traffic like this makes any kind of traffic analysis much 
harder.");
+W("Naturally, for some applications, it may still be desirable if even 
neighbors cannot determine the concrete contents of a message.");
+W("In GNUnet, this problem is addressed by the specific application-level 
protocols (see for example, %s and %s in anonymous file sharing).",
+  ARRAY(extlink_("#deniability", "deniability"),
+        extlink_("#anonymity", "anonymity")));
+
+
+P();
+afslogo();
+ANCHOR("anonymity");
 H4("Anonymity");
 
-W("Providing anonymity for users is a central goal behind the GNUnet system.");
+W("Providing anonymity for users is the central goal for the anonymous 
file-sharing application.");
 W("Many other design decisions follow in the footsteps of this requirement.");
 //W("(Nevertheless, it is possible to forego anonymity when this is not 
required.)");
 
+// some more about anonymity in general here!
 P();
 
-W("Anonymity in GNUnet is achieved even when facing powerful adversaries.");
 W("Contrary to other designs, we do not believe that users achieve strong 
anonymity just because their requests are obfuscated by a couple of 
indirections.");
 W("This is not sufficient if the adversary uses traffic analysis.");
-W("In our model, the adversary is very powerful.");
-W("We assume that the adversary can see all the traffic on the Internet.");
+W("The thread model used for anonymous file sharing in GNUnet assumes that the 
adversary is quite powerful.");
+W("In particular, we assume that the adversary can see all the traffic on the 
Internet.");
 W("And while we assume that the adversary can not break our encryption, we 
assume that the adversary has many participating nodes in the network and that 
it can thus see many of the node-to-node interactions since it controls some of 
the nodes.");
 
 BR();
 
-W("GNUnet is build on the idea that users can be anonymous if they can hide 
their actions in the traffic created by other users.");
+W("The system tries to achieve anonymity based on the idea that users can be 
anonymous if they can hide their actions in the traffic created by other 
users.");
 W("Hiding actions in the traffic of other users requires participating in the 
traffic, bringing back the traditional technique of using indirection and 
source rewriting.");
 W("Source rewriting is required to gain anonymity since otherwise an adversary 
could tell if a message originated from a host by looking at the source 
address.");
 W("If all packets look like they originate from a node, the adversary can not 
tell which ones originate from that node and which ones were routed.");
-W("Note that in this midset, any node can decide to break the source-rewriting 
paradigm without violating the protocol, as this only reduces the amount of 
traffic that a node can hide its own traffic in.");
+W("Note that in this mindset, any node can decide to break the 
source-rewriting paradigm without violating the protocol, as this only reduces 
the amount of traffic that a node can hide its own traffic in.");
 
 P();
 
 W("If we want to hide our actions in the traffic of other nodes, we must make 
our traffic indistinguishable from the traffic that we route for others.");
 W("As our queries must have us as the receiver of the reply (otherwise they 
would be useless), we must put ourselves as the receiver of replies that 
actually go to other hosts; in other words, we must indirect replies.");
-W("Unlike other systems, with GNUnet we do not have to indirect the replies if 
we don&rsquo;t think we need more traffic to hide our own actions.");
+W("Unlike other systems, in anonymous file-sharing as implemented on top of 
GNUnet we do not have to indirect the replies if we don&rsquo;t think we need 
more traffic to hide our own actions.");
 W("This increases the efficiency of the network as we can indirect less under 
higher load.");
 
+
 P();
-
+ANCHOR("deniability");
 H4("Deniability");
 
 W("Even if the user that downloads data and the server that provides data are 
anonymous, the intermediaries may still be targets.");
@@ -108,70 +182,12 @@
 
 BR();
 
-W("With GNUnet, this problem does not arise because queries and content are 
transmitted in an encrypted format such that intermediaries cannot tell what 
the query is for or what the content is about.");
+W("With the file-encoding used by GNUnet's anonymous file-sharing, this 
problem does not arise.");
+W("The reason is that queries and replies are transmitted in an encrypted 
format such that intermediaries cannot tell what the query is for or what the 
content is about.");
 W("Mind that this is not the same encryption as the link-encryption between 
the nodes.");
-W("In GNUnet, the traffic between the nodes is encrypted on each link to 
provide authentication and confidentiality (see below).");
-W("But the queries and the content that the nodes transport over these links 
are also encrypted.");
 W("GNUnet has encryption on the network layer (link encryption, 
confidentiality, authentication) and again on the application layer (provided 
by <tt>gnunet-insert</tt>, <tt>gnunet-download</tt>, <tt>gnunet-search</tt> and 
<tt>gnunet-gtk</tt>).");
 
-P();
-H4("Authentication");
 
-W("As GNUnet requires accounting (see next section), we need to authenticate 
all communications.");
-W("This is achieved using an RSA-based exchange of a secret session-key.");
-W("That session-key is then used to encrypt the communication between the two 
hosts using Blowfish.");
-W("As only the two participating hosts know the session-key, this 
authenticates each packet without requiring signatures.");
-W("Furthermore, encrypted traffic makes any kind of traffic analysis much 
harder.");
 
-BR();
-
-W("In GNUnet, the identity of a host is the hash of its public key.");
-W("For that reason, man-in-the-middle attacks will not break the 
authentication or accounting goals.");
-W("Essentially, for GNUnet, the IP of the host does not matter.");
-W("As the public key is the only thing that truly matters, faking an IP, a 
port or any other property of the underlying transport protocol is 
irrelevant.");
-
-BR();
-
-W("GNUnet uses a special type of message to bind public keys to their current 
address.");
-W("For the UDP and TCP transport layers, an address is an IP and a port.");
-W("GNUnet can also use other transport mechanisms (HTTP, SMTP, etc.) which use 
various other forms of addresses.");
-W("Note that any node can have multiple addresses for the various transport 
mechanisms.");
-
-BR();
-ANCHOR("crypto");
-H4("Cryptography");
-
-W("GNUnet uses 2048 bit RSA keys for the session key exchange and for signing 
messages by peers.");
-W("Most researchers in cryptography consider 2048 bit RSA keys as very secure 
and practically unbreakable for a very long time unless extraordinary advances 
in cryptography are made.");
-W("For the encryption of the files and the symmetric peer-to-peer 
communication GNUnet uses 128 bit keys with blowfish.");
-W("Fresh session keys are negotiated for every new connection.");
-W("Again, there is no published technique to break this cipher in any 
realistic amount of time.");
-W("Note that GNUnet does not use RSA to encrypt files or ordinary individual 
peer-to-peer messages (no sane protocol uses public key cryptography for the 
bulk of the messages since public key encryption is extremely expensive 
compared to symmetric ciphers; GNUnet follows the well-established practice to 
use public key cryptography to exchange an initial symmetric key that is then 
used for the rest of the messages).");
-
-
-P();
-H4("Accounting");
-
-W("Most distributed P2P networks suffer from a lack of defenses or precautions 
against attacks in the form of freeloading.");
-W("While the intentions of an attacker and a freeloader are different, their 
effect on the network is the same; they both render it useless.");
-W("Most simple attacks on networks such as Gnutella involve flooding the 
network with traffic, particularly with queries that are, in the worst case, 
multiplied by the network.");
-
-BR();
-
-W("In order to ensure that freeloaders or attackers have a minimal impact on 
the network, GNUnet must between distinguish good (contributing) nodes from 
malicious (freeloading) nodes.");
-W("In GNUnet, every node keeps track of the behavior of every other node it 
has been in contact with.");
-W("GNUnet&rsquo;s economic model ensures that nodes that are not currently 
considered to have a surplus in contributions will not be served if the network 
load is high.");
-
-P();
-H4("Confidentiality");
-
-W("Adversaries outside of GNUnet are not supposed to know what kind of action 
a node is performing, and even participating nodes can never tell what an 
action is about (which data is transferred or what the query is for) nor who 
initiated the action.");
-W("This helps GNUnet to be hard to compromise even with attacks that use 
traffic analysis and malicious nodes in combination.");
-W("Of course, the fact that a node is performing a request will still be 
revealed if all other nodes in the network collaborate aganist it.");
-W("In this situation, the only recourse the node has is that the other nodes 
may not be able to determine the contents of the action.");
-W("As far as we know, this determination is only possible if the adversary can 
guess the contents or break cryptographic primitives.");
-
-P();
-
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/protocol_cs.php3
===================================================================
--- GNUnet-docs/WWW/test/protocol_cs.php3       2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/protocol_cs.php3       2005-04-25 18:48:28 UTC (rev 
687)
@@ -15,10 +15,9 @@
 rowIntEntry("(size - 4) bytes of data");
 echo "</table>\n";
 P();
-W("The message type constants are defined in <tt>gnunet_util.h</tt> and all 
have names starting with <tt>CS_PROTO_</tt>.");
+W("The message type constants are defined in <tt>gnunet_protocols.h</tt> and 
all have names starting with <tt>CS_PROTO_</tt>.");
 W("The suffix <tt>REQUEST</tt> is used for messages from the client to 
<tt>gnunetd</tt>.");
 W("<tt>REPLY</tt> is used for messages from <tt>gnunetd</tt> to the client.");
-W("While <tt>gnunetd</tt> should not send data without being asked first, the 
client must silently ignore REPLY messages that were not requested.");
 W("If <tt>gnunetd</tt> receives a REQUEST that it does not understand, it 
closes the connection (to prevent the client from blocking on a reply that may 
never come).");
 BR();
 W("See also %s.",

Modified: GNUnet-docs/WWW/test/protocol_p2p_afs.php3
===================================================================
--- GNUnet-docs/WWW/test/protocol_p2p_afs.php3  2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/protocol_p2p_afs.php3  2005-04-25 18:48:28 UTC (rev 
687)
@@ -6,8 +6,8 @@
 
 afslogo();
 P();
-ANCHOR("ROUTING");H4("Anonymous Routing");
-W("First, a &quot;correct&quot; implementation of the GNUnet protocol does not 
have to implement routing exactly as described henceforth.");
+ANCHOR("ROUTING");H4("Anonymous Routing: GAP");
+W("First, a &quot;correct&quot; implementation of the GAP protocol does not 
have to implement routing exactly as described henceforth.");
 W("The described algorithm is the best we could come up with so far (while 
achieving good anonymity).");
 W("Peers can implement a different algorithm and still be protocol 
compatible.");
 BR();
@@ -16,15 +16,15 @@
 W("First, it may decide to just ignore the query.");
 W("This is done if the local load is far too high, if the query is expired or 
if the query has already been processed recently.");
 W("This first question is among the most difficult.");
-W("GNUnet uses a time-to-live per query, which is a relative, possibly 
negative lifetime in milliseconds.");
-W("From this timestamp GNUnet computes an absolute time and compares it with 
its (finite) routing table.");
+W("GAP uses a time-to-live per query, which is a relative, possibly negative 
lifetime in milliseconds.");
+W("From this timestamp GAP computes an absolute time and compares it with its 
(finite) routing table.");
 W("If the query has less time to live than an existing query in the table, it 
is dropped.");
 W("Note that this is only an approximative description (lacking aspects like 
economics, queries with seen replies, multi-queries, and so on), for details 
see the %s.\n",
   extlink_("doxygen/html/routing_8c.html#a31",
            "code (routing.c, needsForwarding)"));
 BR();
 
-W("Once GNUnet has decided that a query will be processed, it decides on 
performing a local lookup.");
+W("Once GAP has decided that a query will be processed, it decides on 
performing a local lookup.");
 W("Potential replies are send back (with a random delay) if the bandwidth 
allocation code permits it.");
 W("The code then decides on forwarding the query (with decremented 
time-to-live) to a subset of the connected peers.");
 W("At most four peers are selected based on a biased random selection.");
@@ -40,7 +40,7 @@
 W("The query management then selects suitable recent queries that were so far 
not forwarded to the peer in question.");
 BR();
 
-W("If GNUnet receives a reply, it checks its routing table for a matching 
entry.");
+W("If GAP receives a reply, it checks its routing table for a matching 
entry.");
 W("It is possible that there is no corresponding query in the routing table 
(anymore), in which case the reply is dropped (or, given enough space, 
replicated in the local datastore anyway).");
 W("If there is a routing table entry, it is used to evaluate the economic 
importance of the reply, which again may or may not lead to replicating the 
reply in the local datastore.");
 W("Furthermore, the reply is scheduled for delivery to all peers (and local 
client processes) waiting for the response.");
@@ -56,154 +56,57 @@
   extlink_("download/ecrs.ps", "content encoding"));
 
 P();
-W("The anonymous file-sharing service (AFS) defines the following messages:");
-?>
-<ul>
- <li><a href="#QUERY">P2P_QUERY</a></li>
- <li><a href="#3HASH">P2P_RESULT_3HASH</a></li>
- <li><a href="#CHK">P2P_RESULT_CHK</a></li>
- <li><a href="#NSQUERY">P2P_NSQUERY</a></li>
- <li><a href="#SBLOCK">P2P_RESULT_SBLOCK</a></li>
-</ul>
-<?php
-
-
+W("The GAP protocol defines the following messages:");
+echo "<ul>";
+LI(intlink_("#QUERY","GAP_QUERY"));
+LI(intlink_("#RESULT","GAP_RESULT"));
+echo "</ul>";
 ANCHOR("QUERY");H4("QUERY");
-W("GNUnet&rsquo;s anonymous file sharing uses two basic types of queries, 
queries that search unknown content and queries for downloading.");
-W("The search queries contain the triple-hash of the keyword and the response 
is a %s message.",
-  extlink_("#3HASH","3HASH"));
-W("The download queries contain the hash of the encrypted block, the response 
is a %s message.",
-  extlink_("#CHK","CHK"));
-W("In their simple form, both types of queries can not be distinguished, only 
after a reply was found, the responder can tell which form of query was 
encountered.");
-BR();
-W("The download-query has a variant, the multi-query with super-hash.");
-W("In this form, a single query message contains multiple hash-code requesting 
multiple blocks of the same file.");
-W("A multi-query message does not have a different protocol number but can be 
identified by looking at the size-field of the query message, which is 32+n*20 
bytes.");
-W("If n is greater than 1, the query must be a multi-query.");
-W("A multi-query groups multiple hash codes from the same IBlock.");
-W("The first hash code of a multi-query is called the &quot;super&quot; 
hash.");
-W("It is the hash of the concatenation of all hash-codes of the IBlock.");
-W("It is followed by up to 25 hash codes from that IBlock.");
-W("The super-hash can be used to speed-up the lookup process since it can be 
treated as a summary of the other hash codes that follow.");
-W("Note that even if the IBlock had 25 hash codes, not all must be included in 
the multi-query.");
-W("Thus the super-hash can typically not be obtained from the following 
queries.");
-P();
-W("Multi-queries can not be used for queries that search for content.");
+W("GAP queries consists of several GAP specific fields, a hash which is used 
for routing and for the database lookup, and possibly additional hash codes.");
+W("The semantics of these additional hash codes depend on the query type.");
+W("As far as GAP is concerend, the query type and those additional hash codes 
are merely passed along.");
+W("Peers that receive a GAP QUERY can respond with one or more GAP REPLY 
messages.");
+W("The GAP protocol uses the ECRS-core to verify that a response matches a 
query.");
+W("The details of how replies are verified are discussed in the %s paper.",
+  extlink_("download/ecrs.ps","ECRS"));
 
 echo "<table border=3>\n";
 include("bittable.inc");
-rowSizeType("32+20*n","16");
+rowSizeType("36+20*n","16");
+rowIntEntryNBO("type");
 rowIntEntryNBO("priority");
 rowIntEntryNBO("time-to-live");
 fiveRowIntEntries("return to");
-fiveRowIntEntries("query [n]");
+fiveRowIntEntries("query [n &gt; 1]");
 echo "</table>\n";
 
-W("Note that a query with only one hash code can be both the triple-hash for a 
search or the hash of the encrypted block for a download.");
-W("The receiver can not tell the difference until a reply is found.");
-W("Depending on if the query matches a triple-hash or a CHK query, the 
receiver sends back a %s or a %s reply.",
-  ARRAY(extlink_("#CHK","CHK"),
-       extlink_("#3HASH","3HASH")));
+W("The priority is used to determine the value of the query.");
+W("Queries with lower priorities are more likely to be dropped.");
+W("For details see the paper on the %s for GNUnet.",
+  extlink_("download/ebe.ps", "economic model"));
+W("The time-to-live determines how long the peer is going to route replies.");
+W("Replies are transmitted to the peer that is specified in the <tt>return 
to</tt> field.");
+W("For details see the %s paper.",
+  extlink_("download/gap.ps", "GAP"));
+W("The type field and all hash codes after the first query are only passed 
along and used by the %s.",
+  extlink_("download/ecrs.ps", "ECRS encoding"));
 
 P();
-ANCHOR("3HASH");H4("3HASH");
-W("A 3HASH content message is a reply of a GNUnet node to a %s that is a 
search.",
+ANCHOR("RESULT");H4("RESULT");
+W("A GAP RESULT message is a reply of a GNUnet node to a %s that was used to 
request a specific block of a file.",
   extlink_("#QUERY","QUERY"));
-W("The difference between a search and a download is that there can be 
multiple results to a search, whereas there can only be one, unique result for 
a download.");
-W("The 3HASH reply contains the encrypted data E<sub>K</sub>D and the  
double-hash H<sup>2</sup> = H(K).");
-W("The encrypted data is always 1k in size.");
-W("The receiver computes the double-hash and verifies that it matches the 
triple-hash of the %s that was originally sent.",
-  extlink_("#QUERY","QUERY"));
-W("If that is the case, the receiver trusts that the content matches the query 
(the sender was able to invert the hash) and forwards it to the next 
destination.");
-BR();
-
-W("%s may only be exchanged via an encrypted channel (to make traffic analysis 
harder).",
-  extlink_("doxygen/html/structAFS__p2p__3HASH__RESULT.html","3HASH 
messages"));
+W("The GAP RESULT message contains the type and first hash code from the 
respective QUERY.");
+W("Note that the type is necessary since the QUERY may specify <em>any</em> 
for the type.");
+W("The data portion of the result depends on the query type and is again 
defined by ECRS.");
 W("See also the %s and the %s for the way data is transmitted in GNUnet.",
   ARRAY(extlink_("download/esed.ps","GNUnet encoding paper"),
        extlink_("encoding.php3","encoding page")));
 
 echo "<table border=3>\n";
 include("bittable.inc");
-rowSizeType("1048","17");
-fiveRowIntEntries("proof (double hash)");
-rowIntEntry("1024 octets of encrypted content");
+rowSizeType("28+N","17");
+rowIntEntry("N bytes content");
 echo "</table>\n";
 
-P();
-ANCHOR("CHK");H4("CHK");
-W("A CHK content message is a reply of a GNUnet node to a %s that was used to 
download a specific block of a file.",
-  extlink_("#QUERY","QUERY"));
-W("It contains the encrypted data E<sub>H(D)</sub>(D).");
-W("The hash of the encrypted data must match the original query, 
H(E<sub>H(D)</sub>(D)).");
-W("The encrypted data is always 1k in size.");
-W("The plaintext was padded with zeros if necessary.");
-W("The receiver computes the hash of the content and verifies that it matches 
the query of the %s that was originally sent.",
-  extlink_("#QUERY","QUERY"));
-W("If that is the case, the receiver forwards the reply to the next 
destination.");
-BR();
-W("%s may only be exchanged via an encrypted channel (to make traffic analysis 
harder).",
-  extlink_("doxygen/html/structAFS__p2p__CHK__RESULT.html","CHK messages"));
-
-W("See also the %s and the %s for the way data is transmitted in GNUnet.",
-  ARRAY(extlink_("download/esed.ps","GNUnet encoding paper"),
-       extlink_("encoding.php3","encoding page")));
-
-echo "<table border=3>\n";
-include("bittable.inc");
-rowSizeType("1048","18");
-rowIntEntry("1024 octets of encrypted content");
-echo "</table>\n";
-
-
-P();
-ANCHOR("NSQUERY");H4("NS-QUERY");
-W("An NSQuery is a query for content in a specific namespace.");
-W("It differs from ordinary queries in that it also contains the identifier of 
the namespace N.");
-W("Furthermore, an NSQUERY can only contain one identifier that is 
requested.");
-W("The SBlock identifier R that is used in an NSQUERY is derived from the 
namespace identifier N and the key K that is used to encrypt the corresponding 
SBlock by the following formula:");
-P();
-PRE("R := H(K) XOR N");
-P();
-W("The format of an NSQUERY is:");
-echo "<table border=3>\n";
-include("bittable.inc");
-rowSizeType("52","19");
-rowIntEntryNBO("priority");
-rowIntEntryNBO("time-to-live");
-fiveRowIntEntries("N (namespace id)");
-fiveRowIntEntries("R (SBlock identifier)");
-echo "</table>\n";
-
-P();
-ANCHOR("SBLOCK");H4("SBLOCK");
-W("An SBLOCK message is the response to a prior %s.",
-  extlink_("#NSQUERY","NSQUERY."));
-W("The basic format of an SBLOCK message is:");
-
-echo "<table border=3>\n";
-include("bittable.inc");
-rowSizeType("1028","20");
-rowIntEntry("encrypted data (484 bytes)");
-fiveRowIntEntries("R (routing identifier)");
-rowIntEntryVerbatim(extlink_("doxygen/html/structSignature.html",
-                             "RSA signature (256 octets)"));
-row(shortEntryVerbatim_(extlink_("doxygen/html/structPublicKey.html","Public 
Key") .
-                       " " . W_("length of N + E + 2 (256+2+2 = 260)") . 
NBO_()),
-    shortEntryVerbatim_(W_("Public Key, length of N (256)") . NBO_()));
-rowIntEntry("Public Key, N (256 octets)");
-row(shortEntry_("Public Key, E"),
-    shortEntry_("padding (must be 0)"));
-echo "</table>\n";
-
-W("The receiver of an SBLOCK first verifies that the signature correctly signs 
the first 504 bytes following the header (encrypted data plus routing 
identifier).");
-W("Then the receiver can compute the namespace identifier N which is the hash 
of the public key.");
-W("Finally, now knowing R and N, the peer checks the routing table if it 
contains a matching NSQUERY and possibly forwards the response to the next 
hop.");
-W("Note that intermediaries learn nothing about the contents of the encrypted 
portion of the %s.",
-   extlink_("doxygen/html/structSBlock.html",
-            "SBlock"));
-W("In particular, only the end-points can decide about the semantics of the 
SBlock with respect to expiration or updates.");
-
 include("html_footer.php3");
-?>
-
+?>
\ No newline at end of file

Modified: GNUnet-docs/WWW/test/protocol_p2p_core.php3
===================================================================
--- GNUnet-docs/WWW/test/protocol_p2p_core.php3 2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/protocol_p2p_core.php3 2005-04-25 18:48:28 UTC (rev 
687)
@@ -6,17 +6,15 @@
 
 ANCHOR("protocol");H3("GNUnet Protocol: node-to-node: core messages");
 
-W("The GNUnet node-to-node (peer-to-peer) procotol currently defines eight 
different messages that must be supported by all peers:");
+W("The GNUnet node-to-node (peer-to-peer) procotol currently defines seven 
different messages that must be supported by all peers:");
 echo "<ul>\n";
 LIV(extlink_("#HELO","HELO"));
 LIV(extlink_("#SKEY","SKEY"));
 LIV(extlink_("#PING","PING"));
 LIV(extlink_("#PONG","PONG"));
-LIV(extlink_("#TIMESTAMP","TIMESTAMP"));
-LIV(extlink_("#SEQUENCE","SEQUENCE"));
-LIV(extlink_("#NOISE","NOISE"));
 LIV(extlink_("#HANGUP","HANGUP"));
-LIV(extlink_("#CAPABILITY","CAPABILITY"));
+LIV(extlink_("#FRAGMENT","FRAGMENT"));
+LIV(extlink_("#NOISE","NOISE"));
 echo "</ul>\n";
 W("The most basic sequence is that a host sends a %s to any other host to 
notify it of its existance on the network.",
   extlink_("#HELO","HELO"));
@@ -25,14 +23,15 @@
 W("The receiver of the PING always sends back a %s to confirm receit.",
   extlink_("#PONG","PONG"));
 BR();
-W("Later, either of the hosts sends the other host a %s message to initiate a 
connection.",
-  extlink_("#SKEY","SKEY"));
-W("The receiver acknowledges this with a %s, just this time using the 
encrypted channel that was established with the session key.",
-  extlink_("#PING","PING"));
-W("Again, the PING is answered with a %s, which is also encrypted.",
+W("Later, either of the hosts sends the other host an %s message with an 
encrypted %s to initiate a connection.",
+  ARRAY(extlink_("#SKEY","SKEY"),
+        extlink_("#PING", "PING")));
+W("The receiver acknowledges this with another SKEY, which also contains a new 
PING and a %s that corresponds to the PING that was received earlier.",
   extlink_("#PONG","PONG"));
-W("If no PING is received, the initiator can send another SKEY.");
-W("If no PONG is received, the responder can send another PING.");
+W("Again, the PING is answered with an encrypted %s.",
+  extlink_("#PONG","PONG"));
+W("If no PONG is received, either side can send another SKEY and PING.");
+W("If an SKEY is repeated after a short period of time, the secret key should 
not be changed.");
 W("This sequence is pretty much equivalent to the initial three-way handshake 
in TCP.");
 P();
 W("The following diagram illustrates a possible sequence of messages:");
@@ -45,9 +44,6 @@
 
 P();
 W("Nodes then exchange application specific mesages.");
-W("%s and %s messages can be used to prevent a malicious adversary to replay 
packets.",
-  ARRAY(extlink_("#TIMESTAMP","TIMESTAMP"),
-       extlink_("#SEQUENCE","SEQUENCE")));
 W("%s must be used to make packets look uniform in size.",
   extlink_("#NOISE","NOISE"));
 W("The MTU is determined by the transport layer and advertised in the HELO 
message.");
@@ -59,16 +55,26 @@
 P();
 W("A packet exchanged between GNUnet hosts can contain any number of messages 
(only limited by the MTU of the transport layer).");
 P();
+
+W("In addition to the message itself, the transport mechanism must communicate 
the identity of the sender.");
 W("The transport layer implementation is responsible for encapsulating the 
message appropriately.");
-W("In addition to the message itself, the transport mechanism must 
communicate:");
-echo "<ul>\n";
-LI("The sender identity (hash of public key)");
-LI("If the message is in plaintext or encrypted");
-LI("The CRC of the (plaintext) message");
-LI("The size of the message");
-echo "</ul>\n";
-W("Depending on the implementation of the transport mechanism, not all of 
these must be transmitted for each message, for example, a stateful transport 
such as TCP may only transmit the sender identity once and use special messages 
to switch between plaintext and encrypted messages.");
+W("Depending on the implementation of the transport mechanism, the sender 
identity may not be transmitted for each message.");
+W("For example, a stateful transport such as TCP may only transmit the sender 
identity once at the beginning of the exchange.");
 P();
+W("In addition to encrypting the message, the GNUnet core also extends each 
message with additional information.");
+W("The GNUnet core adds a checksum, information about bandwidth limitations 
and sequencing information to prevent processing messages twice.");
+W("The encryption, decryption and verification is done by the GNUnet core and 
neither the application nor the transport code need to worry about it.");
+W("The format of the header that is added by the GNUnet core to each message 
is the following:");
+echo "<table border=3>\n";
+include("bittable.inc");
+fiveRowIntEntries("hash of the plaintext (RipeMD160)");
+rowIntEntryNBO("sequence number, 0 for plaintext");
+rowIntEntryNBO("timestamp (seconds), 0 for plaintext");
+rowIntEntryNBO("desired bandwidth (bytes per minute), 0 for plaintext");
+echo "</table>\n";
+P();
+W("This header is followed by individual messages.");
+W("Note again that the identity of the sender must also be communicated, but 
how this is done depends on the specific transport.");
 
 P();
 ANCHOR("HELO");H4("HELO");
@@ -111,7 +117,8 @@
 echo "<table border=3>\n";
 include("bittable.inc");
 rowSizeType("556 + " . W_("sender address size"),"0");
-rowIntEntryVerbatim(extlink_("doxygen/html/structSignature.html","RSA 
signature (256 octets)"));
+rowIntEntryVerbatim(extlink_("doxygen/html/structSignature.html",
+                             "RSA signature (256 octets)"));
 row(shortEntryVerbatim_(extlink_("doxygen/html/structPublicKey.html","Public 
Key") .
                        " " . W_("length of N + E + 2 (256+2+2 = 260)") . 
NBO_()),
     shortEntryVerbatim_(W_("Public Key, length of N (256)") . NBO_()));
@@ -120,9 +127,9 @@
     shortEntry_("padding (must be 0)"));
 fiveRowIntEntries("sender identity");
 rowIntEntryNBO("expiration time");
+rowIntEntryNBO("MTU");
 row(shortEntry_("sender address size (octets)", NBO_()),
     shortEntry_("transport protocol number", NBO_()));
-rowIntEntryNBO("MTU");
 rowIntEntryNBO("sender address (sender address size bytes)");
 echo "</table>\n";
 P();
@@ -131,16 +138,25 @@
 W("Sessionkeys are 128 bit keys for blowfish, a symmetric cipher that is used 
for all communication between GNUnet nodes except %ss and SKEYs themselves (for 
those, RSA with 2048 bit keys is used).",
   extlink_("#HELO","HELO"));
 BR();
-W("A session between two GNUnet nodes is the existance of a common, active 
sessionkey between the two nodes.");
+W("A session between two GNUnet nodes is the existance of a pair of 
sessionkeys between the two nodes that have been confirmed by receiving an 
encrypted PONG response to an encrypted PING challenge.");
 W("Even if the underlying protocol may be connectionless, the notion of a 
session is still meaningful for GNUnet.");
 BR();
 W("A session key exchange may be initiated by either node.");
 W("SKEYS are always encrypted with the public key of the receiving node.");
-W("They are usually not send through an encrypted channel (if nodes that 
already have an SKEY pair decide to exchange a fresh sessionkey, that key may 
be send via the encrypted channel; even in that case, the key must also be 
encrypted with the public key of the receiving node).");
-P();
 W("The sender of a session key not only encrypts the key with the public key 
of the receiver but also signs it (together with an creation time) with its own 
private key.");
-W("The sender must remember the sessionkey and can start using it after 
receiving an acknowledgement (in the form of a %s from the receiver.",
-  extlink_("#PING","PING"));
+W("The transmitted key is the key that the sender will use in the future.");
+W("An SKEY always contains an encrypted PING message.");
+W("An SKEY may furthermore contain an encrypted PONG message, in particular if 
the SKEY is transmitted in response to an SKEY+PING message.");
+W("The encrypted portion is part of the SKEY message since the overall message 
is still in plaintext.");
+W("While the symmetric key is encrypted and signed using RSA, the PING (and 
PONG) are encrypted with the symmetric cipher.");
+W("SKEY messages are usually not send through an encrypted channel.");
+W("If nodes that already have an SKEY pair decide to exchange a fresh 
sessionkey, that key may be send via the encrypted channel.");
+W("However, even in that case, the key must also be encrypted with the public 
key of the receiving node.");
+P();
+
+W("The sender must remember the sessionkey and can start using it after 
receiving an acknowledgement in the form of a %s from the receiver.",
+  extlink_("#PONG","PONG"));
+W("The PONG must be encrypted and can be transmitted either as part of the 
symmetrically encrpyted portion of another SKEY or as an ordinary encrypted 
message.");
 BR();
 W("The format of an %s is the following:",
   extlink_("doxygen/html/structSKEY__Message.html","SKEY message"));
@@ -148,19 +164,22 @@
 
 echo "<table border=3>\n";
 include("bittable.inc");
-rowSizeType("520","1");
+rowSizeType("520+N","1");
 rowIntEntryNBO("creation time (not expiration!)");
 rowIntEntry("RSA Encrypted data (256 octets)");
 rowIntEntry("Signature (256 octets)");
+rowIntEntry("N bytes symmetrically encrypted PING (and possibly PONG)");
 echo "</table>\n";
+W("Note that N is always either 28 or 56 bytes.");
 
-W("Notice that while SKEY is not aligned, there should be nothing following an 
SKEY Message in a packet since afterwards the new sessionkey is used.");
 P();
 
 ANCHOR("PING");H4("PING");
 W("PINGs are used to test if a node receives messages correctly.");
-W("PINGs are exchanged in encrypted form and in plaintext.");
+W("PINGs are exchanged in encrypted messages, as part of SKEYs and in 
plaintext.");
 W("The receit of a PING must be answered by a PONG with identical body (the 
receiver just changes the type).");
+W("An encrypted PING must be answered by an encrypted PONG.");
+W("It does not matter if the encrypted PONG is encrypted as part of an SKEY or 
part of an ordinary encrypted message.");
 W("The challenge number in a PING is a random number that is used to make it 
impractical for an adversary to guess the contents of the PING and thus hard to 
fake a PONG response.");
 BR();
 W("The identity stored in the PING is the identity of the receiver.");
@@ -168,7 +187,7 @@
 
 echo "<table border=3>\n";
 include("bittable.inc");
-rowSizeType("24","2");
+rowSizeType("28","2");
 fiveRowIntEntries("receiver identity");
 rowIntEntryNBO("challenge");
 echo "</table>\n";
@@ -180,50 +199,49 @@
 
 echo "<table border=3>\n";
 include("bittable.inc");
-rowSizeType("24","3");
+rowSizeType("28","3");
 fiveRowIntEntries("receiver identity");
 rowIntEntryNBO("challenge");
 echo "</table>\n";
-
 P();
 
-ANCHOR("TIMESTAMP");H4("TIMESTAMP");
-W("TIMESTAMPs can be used by GNUnet nodes to make replay attacks harder.");
-W("If a message contains a TIMESTAMP, the receiver checks that the current 
time is before the given time.");
-W("If that is not the case, the rest of the message is discarded silently.");
-BR();
-W("Senders are advised to use rather generous timespans for the timestamps 
because GNUnet nodes may not be perfectly synchronized in time.");
-W("The current implementation honors timestamps but does not generate them 
itself.");
-W("%s numbes are used to guard against replay attacks instead.",
-    extlink_("#SEQUENCE","SEQUENCE"));
-W("For UDP with a low chance of reordered messages, this is appropriate.");
-W("Other transport protocols (like E-Mail) may work better with TIMESTAMPs.");
-BR();
-W("The format of a timestamp message is:");
+
+ANCHOR("HANGUP");H4("HANGUP");
+W("The format of the HANGUP message is:");
+
 echo "<table border=3>\n";
 include("bittable.inc");
-rowSizeType("8","4");
-rowIntEntryNBO("expiration time (seconds after 1970)");
+rowSizeType("24","4");
+fiveRowIntEntries("sender identity");
 echo "</table>\n";
 
-W("Timestamps numbers may only be used in encrypted traffic (HELOs and SKEYS 
have another form of timestamps integrated into the signed part of the 
message).");
-
+W("When a HANGUP message is received, the node must stop using the current 
sessionkey (assuming the receiver is the other node involved in the 
corresponding session with the sender).");
+W("If the receiving node desires further communication with the sender, a new 
sessionkey must be exchanged.");
 P();
-ANCHOR("SEQUENCE");H4("SEQUENCE");
-W("The format of a sequence number message is:");
+
+
+ANCHOR("FRAGMENT");H4("FRAGMENT");
+W("Fragments are used to communicate messages that are larger than the MTU of 
the transport.");
+W("The peer sending fragments should make sure to transmit all fragments in 
sequence.");
+W("No peer is expected to reassemble multiple fragments for the same sender at 
any time.");
+W("If the receiving peer does not receive all parts of a fragment, the entire 
message has to be discarded.");
+W("The messages constructed from fragments cannot be larger than 64k.");
+W("The format for fragments is:");
+
 echo "<table border=3>\n";
 include("bittable.inc");
-rowSizeType("8","5");
-rowIntEntryNBO("sequence number");
+rowSizeType("12 + N","5");
+rowIntEntryNBO("fragment id");
+row(shortEntry_("offset"),
+    shortEntry_("total size"));
+rowIntEntry("N bytes of data");
 echo "</table>\n";
-
-W("A node may keep track of the last sequence number that another node was 
using.");
-W("If it receives a packet with a lower sequence number, that packet must be 
discarded.");
-W("Whenever a sessionkey exchange takes place, this last sequence number must 
be reset to 0.");
-W("A sequence number of 0 is invalid.");
-W("Sequence numbers are unsigned 32 bit integers.");
-W("Sequence numbers may only be used in encrypted traffic.");
+W("The N bytes of data from the fragment belong to a larger message of the 
given total size and are to be placed at the given offset.");
+W("Unlike IP fragmentation, GNUnet fragments should never be overlapping.");
 P();
+
+
+
 ANCHOR("NOISE");H4("NOISE");
 W("Noise is used to make it harder for adversaries to perform traffic 
analysis.");
 W("A node receiving noise should just silently ignore it.");
@@ -237,45 +255,10 @@
 rowIntEntry("noise");
 echo "</table>\n";
 
-W("The number of bytes of noise should be a multiple of 4 to preserve 
alignment, except at the end of a packet where perfectly identical packet sizes 
are more important.");
+W("The number of bytes of noise should be a multiple of 4 to preserve 
alignment.");
 W("The noise in the packet should be (pseudo) random.");
 
 P();
-ANCHOR("HANGUP");H4("HANGUP");
 
-W("The format of the HANGUP message is:");
-
-echo "<table border=3>\n";
-include("bittable.inc");
-rowSizeType("24","7");
-fiveRowIntEntries("sender identity");
-echo "</table>\n";
-
-W("When a HANGUP message is received, the node must stop using the current 
sessionkey (assuming the receiver is the other node involved in the 
corresponding session with the sender).");
-W("If the receiving node desires further communication with the sender, a new 
sessionkey must be exchanged.");
-
-
-P();
-ANCHOR("CAPABILITY");H4("CAPABILITY");
-
-W("With a CAPABILITY message a peer notifies another peer about its message 
processing capabilities.");
-W("The only capability type currently defined is the amount of bandwidth (per 
minute) available for receiving.");
-W("It is used to notify another peer to not send more traffic than a certain 
amount.");
-W("Initially peers severely limit the amount of traffic they transmit on each 
connection, thus this message is used in practice to raise that limit.");
-W("The limit for any given connection is asymmetric and can be changed 
(increased or lowered) at any time.");
-W("Since messages can be lost, CAPABILITY messages cannot be expected to go 
into full effect always or instantly.");
-W("Nevertheless, peers that fail to honor restrictions imposed by CAPABILITY 
messages on a continuous basis are likely to have their connections dropped by 
the other side.");
-W("The format of the CAPABILITY message is:");
-
-echo "<table border=3>\n";
-include("bittable.inc");
-rowSizeType("12","8");
-rowIntEntry("capability type (CAP_ constants)");
-rowIntEntry("value");
-echo "</table>\n";
-
-W("When a HANGUP message is received, the node must stop using the current 
sessionkey (assuming the sender that is given in the message matches the sender 
of the message).");
-W("If further communication is desired, a new sessionkey may be exchanged.");
-
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/protocol_p2p_rpc.php3
===================================================================
--- GNUnet-docs/WWW/test/protocol_p2p_rpc.php3  2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/protocol_p2p_rpc.php3  2005-04-25 18:48:28 UTC (rev 
687)
@@ -61,7 +61,7 @@
 echo "</table>\n";
 W("The format of the arguments is first a zero-terminated parameter name, 
followed by the size of the parameter (as an unsigned int in network byte 
order) followed by the actual argument.");
 W("The helper functions defined in %s should be used to serialize and 
deserialize the arguments.",
-  extlink_("http://ovmj.org/GNUnet/doxygen/html/gnunet__rpc__service_8h.html";,
+  extlink_("doxygen/html/gnunet__rpc__service_8h.html",
           "gnunet_rpc_service.h"));
 W("Each peer is expected to use strictly monotonically increasing sequence 
numbers.");
 W("There are currently no provisions to handle the integer overflow at 
2<sup>32</sup>-1.");
@@ -89,7 +89,7 @@
 W("The sequence number must be identical to the number from the REQ message.");
 W("The format of the return values is first a zero-terminated return value 
identifier, followed by the size of the return value (as an unsigned int in 
network byte order) followed by the actual value.");
 W("The helper functions defined in %s should be used to serialize and 
deserialize the return values.",
-  extlink_("http://ovmj.org/GNUnet/doxygen/html/gnunet__rpc__service_8h.html";,
+  extlink_("doxygen/html/gnunet__rpc__service_8h.html",
           "gnunet_rpc_service.h"));
 W("Note that GNUnet RPCs can have multiple return values.");
 W("The most common error code returned by the RPC service is to indicate that 
no function under the given name has been registered at this peer.");
@@ -108,4 +108,4 @@
 P();
 
 include("html_footer.php3");
-?>
\ No newline at end of file
+?>

Modified: GNUnet-docs/WWW/test/protocol_p2p_tracekit.php3
===================================================================
--- GNUnet-docs/WWW/test/protocol_p2p_tracekit.php3     2005-04-24 13:12:51 UTC 
(rev 686)
+++ GNUnet-docs/WWW/test/protocol_p2p_tracekit.php3     2005-04-25 18:48:28 UTC 
(rev 687)
@@ -25,7 +25,7 @@
 ANCHOR("PROBE");H4("PROBE");
 
 W("The format of the %s is:",
-  
extlink_("http://ovmj.org/GNUnet/doxygen/html/structTRACEKIT__p2p__PROBE.html";, 
"PROBE message"));
+  extlink_("doxygen/html/structTRACEKIT__p2p__PROBE.html", "PROBE message"));
 echo "<table border=3>\n";
 include("bittable.inc");
 rowSizeType("40","36");
@@ -50,7 +50,7 @@
 ANCHOR("REPLY");H4("REPLY");
 
 W("The format of the %s is:",
-  
extlink("http://ovmj.org/GNUnet/doxygen/html/structTRACEKIT__p2p__REPLY.html";, 
"REPLY message"));
+  extlink("doxygen/html/structTRACEKIT__p2p__REPLY.html", "REPLY message"));
 echo "<table border=3>\n";
 include("bittable.inc");
 rowSizeType("size","37");
@@ -68,4 +68,4 @@
 P();
 
 include("html_footer.php3");
-?>
\ No newline at end of file
+?>

Modified: GNUnet-docs/WWW/test/scripts.php3
===================================================================
--- GNUnet-docs/WWW/test/scripts.php3   2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/scripts.php3   2005-04-25 18:48:28 UTC (rev 687)
@@ -4,4 +4,3 @@
   include("scripts.inc");
  }
 ?>
-

Modified: GNUnet-docs/WWW/test/states.fig
===================================================================
--- GNUnet-docs/WWW/test/states.fig     2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/states.fig     2005-04-25 18:48:28 UTC (rev 687)
@@ -39,13 +39,13 @@
 4 0 0 50 0 0 20 0.0000 4 195 795 3600 3600 PONG\001
 4 0 0 50 0 0 20 0.0000 4 195 675 3600 3000 PING\001
 4 0 0 50 0 0 20 0.0000 4 195 1215 3600 8100 HANGUP\001
-4 0 0 50 0 0 20 0.0000 4 195 765 3600 5100 SKEY\001
-4 0 0 50 0 0 20 0.0000 4 195 675 3600 5700 PING\001
 4 0 0 50 0 0 20 0.0000 4 195 1065 6300 9150 AWARE\001
 4 0 0 50 0 0 20 0.0000 4 195 1065 975 9300 AWARE\001
 4 0 0 50 0 0 20 0.0000 4 195 930 1050 1875 START\001
 4 0 0 50 0 0 20 0.0000 4 195 1065 6375 1875 AWARE\001
 4 0 0 50 0 0 20 0.0000 4 195 1065 900 4575 AWARE\001
 4 0 0 50 0 0 20 0.0000 4 195 525 1200 7650 EST\001
+4 0 0 50 0 0 20 0.0000 4 195 525 6600 6675 EST\001
+4 0 0 50 0 0 20 0.0000 4 195 1590 3600 5100 SKEY+PING\001
 4 0 0 50 0 0 20 0.0000 4 195 795 3675 7050 PONG\001
-4 0 0 50 0 0 20 0.0000 4 195 525 6600 6675 EST\001
+4 0 0 50 0 0 20 0.0000 4 195 2535 3075 5700 SKEY+PING+PONG\001

Modified: GNUnet-docs/WWW/test/states.png
===================================================================
(Binary files differ)

Modified: GNUnet-docs/WWW/test/translate.php
===================================================================
--- GNUnet-docs/WWW/test/translate.php  2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/translate.php  2005-04-25 18:48:28 UTC (rev 687)
@@ -22,16 +22,24 @@
   echo "Database is down. Cannot edit translations.";
   die();
 }
-$title = "WWW translation";
-$description = "Help translating this webpage.";
-generateLanguageBar();
+$text = $_REQUEST['text'];
+$back = $_REQUEST['back'];
+
+DOCTYPE("HTML", "Transitional");
+echo "<html><head>\n";
+echo "<title>";
+TRANSLATE("WWW translation");
+echo "</title>";
+echo "<meta name=\"description\" content=\"";
+TRANSLATE("Help translating this webpage.");
+echo "\">";
+echo "</head><body>";
 if ($lang == "English") {
   echo "Cannot translate to English.";
   die();
  } 
-
 H2("Original Text");
-if (get_magic_quotes_gpc()) $text = stripslashes($text);
+// if (get_magic_quotes_gpc()) $text = stripslashes($text);
 echo $text;
 H2("Translation");
 W("Destination language: ");
@@ -41,8 +49,10 @@
 echo "<input type=hidden name=\"text\" value=\"" . urlencode($text) . "\">\n";
 echo "<input type=hidden name=\"xlang\" value=\"$xlang\">\n";
 echo "<input type=hidden name=\"back\" value=\"$back\">\n";
-?>
-charset:<select size="1" name="charset">
+/* 
+P();
+W("Character set:");
+<select size="1" name="charset">
   <option value="UTF-8">Unicode UTF-8 encoding</option>
   <option selected value="ISO-8859-1">ISO-8859-1 Western European, 
Latin-1</option>
   <option value="ISO-8859-15">ISO-8859-15 Extended Western European</option>
@@ -54,8 +64,10 @@
   <option value="GB2312">GB2312 Simplified Chinese</option>
   <option value="Shift-JIS">Shift-JIS Japanese</option>
   <option value="EUC-JP">EUC-JP Japanese</option>
-</select><br>
-Translated text:<input size="80" maxlength="65535" name="translation">
+</select><br> */
+W("Translated text:");
+?>
+<input size="80" maxlength="65535" name="translation">
 <input type=submit value="I hereby give this translation into the Public 
Domain (commit)">
 </form>
 <?php
@@ -109,4 +121,4 @@
 generateFooter();
 echo "</body></html>";
 
-?>
+?>
\ No newline at end of file

Modified: GNUnet-docs/WWW/test/user_afs.php3
===================================================================
--- GNUnet-docs/WWW/test/user_afs.php3  2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/user_afs.php3  2005-04-25 18:48:28 UTC (rev 687)
@@ -8,38 +8,38 @@
 <ul>
  <li><?php extlink("#concepts","Concepts"); ?>
   <ul>
-   <li><?php extlink("#files","Files"); ?></li>
-   <li><?php extlink("#keywords","Keywords"); ?></li>
-   <li><?php extlink("#directories","Directories"); ?></li>
-   <li><?php extlink("#namespaces","Namespaces"); ?></li>
-   <li><?php extlink("#advertisements","Advertisements"); ?></li>
-   <li><?php extlink("#collections","Collections"); ?></li>
-   <li><?php extlink("#example","Example"); ?></li>
-  </ul></li>
-
- <li><?php extlink("#configuration","Configuration"); ?>
+<?php
+ LI(extlink_("#files","Files"));
+ LI(extlink_("#keywords","Keywords"));
+ LI(extlink_("#directories","Directories"));
+ LI(extlink_("#namespaces","Namespaces"));
+ LI(extlink_("#advertisements","Advertisements"));
+ LI(extlink_("#collections","Collections"));
+ LI(extlink_("#example","Example"));
+?>
+</ul></li>
+<li><?php extlink("#configuration","Configuration"); ?>
   <ul>
    <li><?php extlink("#mysql","Setting up the mysql database"); ?></li>
   </ul></li>
 
  <li><?php extlink("#afscommands","Commands for Anonymous File Sharing"); ?>
   <ul>
-   <li><?php extlink("#gnunetinsert","gnunet-insert"); ?></li>
-   <li><?php extlink("#gnunetsearch","gnunet-search"); ?></li>
-   <li><?php extlink("#gnunetdownload","gnunet-download"); ?></li>
-   <li><?php extlink("#gnunetdelete","gnunet-delete"); ?></li>
-   <li><?php extlink("#gnunetdirectory","gnunet-directory"); ?></li>
-   <li><?php extlink("#gnunetpseudonym","gnunet-pseudonym"); ?></li>
-   <li><?php extlink("#GUI","gnunet-gtk"); ?></li>
-  </ul>
- </li>
-</ul>
 <?php
+ LI(extlink_("#gnunetinsert","gnunet-insert"));
+ LI(extlink_("#gnunetsearch","gnunet-search"));
+ LI(extlink_("#gnunetdownload","gnunet-download"));
+ LI(extlink_("#gnunetdelete","gnunet-delete"));
+ LI(extlink_("#gnunetdirectory","gnunet-directory"));
+ LI(extlink_("#gnunetpseudonym","gnunet-pseudonym"));
+ LI(extlink_("#GUI","gnunet-gtk"));
+echo "</ul></li></ul>\n";
 
-
+P();
 ANCHOR("concepts"); H3("Concepts");
 
 W("Sharing files in GNUnet is not quite as simple as in traditional file 
sharing systems.");
+W("For example, it is not sufficient to just place files into a specific 
directory to share them.");
 W("In addition to anonymous routing GNUnet attempts to give users a better 
experience in searching for content.");
 W("GNUnet uses cryptography to safely break content into smaller pieces that 
can be obtained from different sources without allowing participants to corrupt 
files.");
 W("GNUnet makes it difficult for an adversary to send back bogus search 
results.");
@@ -49,8 +49,9 @@
 
 ANCHOR("files"); H4("Files");
 W("A file in GNUnet is just a sequence of bytes.");
-W("Any file-format is allowed, but GNUnet is currently limited to files that 
are smaller than 4 GB.");
-W("GNUnet itself never interprets the contents of shared files, except when 
using <tt>libextractor</tt> to obtain keywords.");
+W("Any file-format is allowed and the maximum file size is theoretically 
2<sup>64</sup> bytes, except that it would take an impractical amount of time 
to share such a file.");
+W("GNUnet itself never interprets the contents of shared files, except when 
using %s to obtain keywords.",
+  intlink_("/libextractor/index.php", "libextractor"));
 
 ANCHOR("keywords"); H4("Keywords");
 W("Keywords are the most simple mechanism to find files on GNUnet.");
@@ -58,10 +59,11 @@
 W("Keywords are never transmitted in plaintext, for details see the %s paper.",
   extlink_("download/ecrs.ps", "ECRS"));
 W("Since providing keywords by hand for each shared file is tedious, GNUnet 
uses %s to help automate this process.",
-  intlink_("http://ovmj.org/libextractor/index.php3";, "libextractor"));
+  intlink_("/libextractor/index.php", "libextractor"));
+W("Starting a keyword search on a slow machine can take a while since the 
keyword search involves computing a fresh RSA key to fomulate the request.");
 
 ANCHOR("directories"); H4("Directories");
-W("A directory in GNUnet is a list of file identifiers.");
+W("A directory in GNUnet is a list of file identifiers with meta-data.");
 W("The file identifiers provide sufficient information about the files to 
allow downloading the contents.");
 W("Once a directory has been created, it cannot be changed since it is treated 
just like an ordinary file by the network.");
 
@@ -70,7 +72,7 @@
 W("A pseudonym is essentially a public-private RSA key.");
 W("Note that a pseudonym is NOT bound to a GNUnet peer.");
 W("There can be multiple pseudonyms for a single user, and users could share 
pseudonym keys (out-of-band).");
-W("Files that have been signed and placed into a namespace can be updated.");
+W("Files (or directories) that have been signed and placed into a namespace 
can be updated.");
 W("Updates are identified as authentic if the same secret key was used to sign 
the update.");
 W("Namespaces are also useful to establish a reputation, since all of the 
content in the namespace comes from the same entity (which does not have to be 
the same person).");
 
@@ -241,30 +243,6 @@
   <td><?php W("300 kb/s"); ?></td>
   <td><?php W("113 MB"); ?></td>
  </tr>
- <tr>
-  <td><?php W("gdbm"); ?></td>
-  <td><?php W("500 kb/s"); ?></td>
-  <td><?php W("400 kb/s"); ?></td>
-  <td><?php W("148 MB"); ?></td>
- </tr>
- <tr>
-  <td><?php W("tdb"); ?></td>
-  <td><?php W("27 kb/s"); ?></td>
-  <td><?php W("12 kb/s"); ?></td>
-  <td><?php W("118 MB"); ?></td>
- </tr>
- <tr>
-  <td><?php W("bdb"); ?></td>
-  <td><?php W("340 kb/s"); ?></td>
-  <td><?php W("260 kb/s"); ?></td>
-  <td><?php W("435 MB"); ?></td>
- </tr>
- <tr>
-  <td><?php W("directory"); ?></td>
-  <td><?php W("100 kb/s"); ?></td>
-  <td><?php W("300 kb/s"); ?></td>
-  <td><?php W("450 MB"); ?></td>
- </tr>
 </table>
 </center>
 <?php
@@ -280,13 +258,6 @@
   <th><?php W("Space used (279 MB file)"); ?></th>
  </tr>
  <tr>
-  <td><?php W("bdb"); ?></td>
-  <td><?php W("40,402 kb/s"); ?></td>
-  <td><?php W("20,788 kb/s"); ?></td>
-  <td><?php W("173,8 MB"); ?></td>
-  <td><?php W("689 MB"); ?></td>
- </tr>
- <tr>
   <td><?php W("SQLite"); ?></td>
   <td><?php W("70,562 kb/s"); ?></td>
   <td><?php W("24,255 kb/s"); ?></td>
@@ -300,7 +271,7 @@
 W("Nevertheless, they should help you pick the right database for you (the 
choice is between work required to do the setup vs. performance).");
 W("The <tt>mysql</tt> module requires manual setup, described %s.",
   extlink_("#mysql","here"));
-W("The other databases only require the installation of the respective 
database (with header files) before running configure.");
+W("The sqlite databases only requires the installation of the respective 
database (with header files) before running configure.");
 
 ANCHOR("gnunet.conf.content-priority");H4("GNUNET-INSERT: CONTENT-PRIORITY");
 
@@ -324,15 +295,13 @@
 echo "<ul><li>";
 W("On up-to-date hardware where mysql can be used comfortably, the overall 
performance is fairly good (according to our tests).");
 echo "</li><li>";
-W("Its often possible to recover the mysql database from internal 
inconsistencies.");
-W("The other db choices do not support repair (<tt>gnunet-check</tt> cannot 
fix problems internal to the database manager!).");
-W("For example, we have seen several cases where power failure has ruined a 
gdbm database beyond repair.");
+W("It is often possible to recover the mysql database from internal 
inconsistencies.");
 echo "</li></ul>";
 P();
 W("Cons:");
 BR();
 echo "<ul><li>";
-W("Memory usage (although gdbm also takes quite a bit of memory)");
+W("Memory usage");
 echo "</li><li>";
 W("Manual setup");
 echo "</li></ul>";
@@ -423,7 +392,7 @@
 W("You can supply any number of keywords, and each of the keywords will be 
sufficient to locate and retrieve the file.");
 W("The description (option -D, text with spaces must be in quotes) is 
displayed to other users when they select which files to download.");
 W("The description and the keywords are optional and can be inferred if you 
have %s installed and libextractor is able to infer keywords and a description 
from the file.",
-  extlink_("http://www.ovmj.org/libextractor/";, "libextactor"));
+  intlink_("/libextractor/index.php", "libextactor"));
 P();
 
 W("By default, GNUnet indexes a file instead of copying it.");

Modified: GNUnet-docs/WWW/test/user_gnunet.php3
===================================================================
--- GNUnet-docs/WWW/test/user_gnunet.php3       2005-04-24 13:12:51 UTC (rev 
686)
+++ GNUnet-docs/WWW/test/user_gnunet.php3       2005-04-25 18:48:28 UTC (rev 
687)
@@ -19,13 +19,15 @@
 <?php
 ANCHOR("installation");
 H3("Installation");
-W("First, in addition to the %s you should download the latest version of %s 
and install that library.",
-  ARRAY(intlink_("../download.php3", "GNUnet sources"),
-       extlink_("http://www.ovmj.org/libextractor/";, "libextractor")));
+W("First, in addition to the %s you must download the latest version of %s and 
install that library.",
+  ARRAY(intlink_("download.php3", "GNUnet sources"),
+       extlink_("/libextractor/", "libextractor")));
+W("Libextractor requires glib (also required for GNUnet) and zlib (compression 
library, highly likely that you already have it).");
 W("Installing libextractor should be as simple as:");
 PRE("# ./configure --prefix=\$HOME\n" .
     "# make\n" .
     "# make install\n");
+W("For GNUnet, you should install gtk+ and either mysql or sqlite.");
 W("Now compile and install GNUnet using:");
 PRE("# ./configure --prefix=\$HOME --with-extractor=\$HOME\n" .
     "# make\n" .
@@ -35,8 +37,9 @@
 PRE("# gnunet-transport-check\n");
 W("As a side-effect, this will generate the configuration file 
<tt>/etc/gnunet.conf</tt>.");
 W("If the test fails, you should edit the file to configure your network.");
-W("Note that the message &quot;Could not create HELO&quot; is ok, if it occurs 
only once.");
-W("Once the network is configured, start the server using:");
+W("If you are using the mysql database, edit the configuration from the 
default (sqlite) to mysql.");
+W("After changing the configuration, you should always run 
<tt>gnunet-update</tt> to allow GNUnet to perform necessary internal updates.");
+W("Once configuration is complete and <tt>gnunet-update</tt> is done, start 
the server using:");
 PRE("# gnunetd -d\n");
 W("The &quot;-d&quot; option causes <tt>gnunetd</tt> to print all errors to 
the console and prevents <tt>gnunetd</tt> from detaching from the console.");
 W("If you get no error messages, press &quot;CTRL-C&quot; to abort 
<tt>gnunetd</tt> and restart it without the &quot;-d&quot; option.");
@@ -314,7 +317,7 @@
 W("Each file is about 550 bytes long (different transport protocols may have 
different address sizes).");
 W("A %s of GNUnet hosts can be obtained from the GNUnet webpage.",
  extlink_("download/hosts.tar.gz", "list"));
-W("On startup, GNUnet downloads a list of initial hosts from 
<tt>http://www.ovmj.org/GNUnet/download/hostlist</tt>.");
+W("On startup, GNUnet downloads a list of initial hosts from 
<tt>http://ovmj.org/GNUnet/download/hostlist</tt>.");
 W("This list is generated using");
 PRE("# cat ~/.gnunet/data/hosts/* > hostlist");
 
@@ -339,8 +342,11 @@
 W("Which applications should gnunetd support?");
 W("Specify the name of the dynamic shared object (DSO) that implements the 
service in the gnunetd core here.");
 W("Multiple DSOs can be specified, separated by spaces.");
+W("You should always specify &quot;advertising getoption topology&quot; since 
these are rather fundamental applications.");
+W("Add &quot;stats&quot; in order to be able to obtain statistics using 
<tt>gnunet-stats</tt>.");
+W("Further additions depend on which specific applications you want to use.");
 W("Possible choices are &quot;%s chat tbench tracekit&quot;.",
-  intlink_("user_afs.php3","afs"));
+  intlink_("user_afs.php3","fs"));
 
 P();
 ANCHOR("gnunet.conf.transports");H4("GNUNETD: TRANSPORTS");
@@ -446,9 +452,9 @@
 
 W("<tt>gnunet-stats</tt> is a little tool that displays statistics.");
 W("Unlike the other core tools, it uses the client configuration and only 
works if <tt>gnunetd</tt> is already running.");
+W("<tt>gnunet-stats</tt> also only works if the <tt>stats</tt> module is 
loaded as an application.");
 W("The numbers are for the current gnunetd process only.");
 W("The output looks similar to the following example, but depends on which 
modules you have loaded and what your node has been doing so far.");
-W("The example below is what you get when no transport services and no 
applications are loaded:");
 P();
 
 PRE("$ gnunet-stats\n" .
@@ -481,10 +487,7 @@
 
 W("The number of connected hosts is the nummber of hosts that the local node 
is directly connected to (1 hop).");
 W("The total number of hosts in the network must be larger or equal to this 
number.");
-W("Note that TIMESTAMP messages are not send by the current implementation and 
thus the counter is pretty much always zero.");
 P();
 
-
-
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/vote.php
===================================================================
--- GNUnet-docs/WWW/test/vote.php       2005-04-24 13:12:51 UTC (rev 686)
+++ GNUnet-docs/WWW/test/vote.php       2005-04-25 18:48:28 UTC (rev 687)
@@ -28,6 +28,8 @@
   echo "Database is down. Cannot edit translations.";
   die();
  } 
+$text = $_REQUEST['text'];
+$translation = $_REQUEST['translation'];
 $u = urlencode($text);
 $t = urlencode($translation);
 echo "text = " . $text . "<br>\n";





reply via email to

[Prev in Thread] Current Thread [Next in Thread]