[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r23450 - GNUnet-docs/WWW GNUnet-docs/WWW/download gnunet-ww
From: |
gnunet |
Subject: |
[GNUnet-SVN] r23450 - GNUnet-docs/WWW GNUnet-docs/WWW/download gnunet-www gnunet-www/GNUnet gnunet-www/GNUnet/logos gnunet-www/freeway-logos gnunet-www/gnunet-logos gnunet-www/images |
Date: |
Mon, 27 Aug 2012 20:51:05 +0200 |
Author: grothoff
Date: 2012-08-27 20:51:04 +0200 (Mon, 27 Aug 2012)
New Revision: 23450
Added:
gnunet-www/GNUnet/favicon.ico
gnunet-www/GNUnet/logos/osx.png
gnunet-www/GNUnet/logos/vmware.png
gnunet-www/freeway-logos/
gnunet-www/gnunet-logos/
gnunet-www/gnunet-logos/gnu_with_net.png
gnunet-www/images/afs-t-shirt.ps
Removed:
GNUnet-docs/WWW/config/
GNUnet-docs/WWW/documentation.php3
GNUnet-docs/WWW/download.php3
GNUnet-docs/WWW/download/gnunet-fuse-0.8.0c.tar.bz2
GNUnet-docs/WWW/download/gnunet-gtk-0.8.1.tar.gz
GNUnet-docs/WWW/download/gnunet-qt-0.8.1.tar.bz2
GNUnet-docs/WWW/download/gnunet-qt-0.8.1.tar.gz
GNUnet-docs/WWW/encoding.php3
GNUnet-docs/WWW/faq.php3
GNUnet-docs/WWW/favicon.ico
GNUnet-docs/WWW/freeservice.php3
GNUnet-docs/WWW/freeway/
GNUnet-docs/WWW/gnu.org/
GNUnet-docs/WWW/gnunetgtk.php3
GNUnet-docs/WWW/hacking.php3
GNUnet-docs/WWW/hacking_afs.php3
GNUnet-docs/WWW/hacking_application.php3
GNUnet-docs/WWW/hacking_future.php3
GNUnet-docs/WWW/hacking_index.inc
GNUnet-docs/WWW/hacking_organization.php3
GNUnet-docs/WWW/hacking_rpc.php3
GNUnet-docs/WWW/hacking_server.php3
GNUnet-docs/WWW/hacking_testcases.php3
GNUnet-docs/WWW/hacking_threading.php3
GNUnet-docs/WWW/hacking_ui.php3
GNUnet-docs/WWW/hacking_util.php3
GNUnet-docs/WWW/hacking_win32_build.php3
GNUnet-docs/WWW/hostlist.php
GNUnet-docs/WWW/html_footer.php3
GNUnet-docs/WWW/html_header.php3
GNUnet-docs/WWW/images/
GNUnet-docs/WWW/irc.php3
GNUnet-docs/WWW/links.php3
GNUnet-docs/WWW/logos/
GNUnet-docs/WWW/mailinglist.php3
GNUnet-docs/WWW/menu.php3
GNUnet-docs/WWW/news/
GNUnet-docs/WWW/old_news.php3
GNUnet-docs/WWW/papers.php3
GNUnet-docs/WWW/philosophy.php3
GNUnet-docs/WWW/protocol.php3
GNUnet-docs/WWW/protocol_cs.php3
GNUnet-docs/WWW/protocol_cs_afs.php3
GNUnet-docs/WWW/protocol_cs_core.php3
GNUnet-docs/WWW/protocol_cs_getoption.php3
GNUnet-docs/WWW/protocol_cs_index.inc
GNUnet-docs/WWW/protocol_cs_stats.php3
GNUnet-docs/WWW/protocol_cs_traffic.php3
GNUnet-docs/WWW/protocol_index.inc
GNUnet-docs/WWW/protocol_p2p.php3
GNUnet-docs/WWW/protocol_p2p_afs.php3
GNUnet-docs/WWW/protocol_p2p_core.php3
GNUnet-docs/WWW/protocol_p2p_dht.php3
GNUnet-docs/WWW/protocol_p2p_index.inc
GNUnet-docs/WWW/protocol_p2p_rpc.php3
GNUnet-docs/WWW/protocol_p2p_tracekit.php3
GNUnet-docs/WWW/protocol_transport.php3
GNUnet-docs/WWW/protocol_transport_http.php3
GNUnet-docs/WWW/protocol_transport_index.inc
GNUnet-docs/WWW/protocol_transport_tcp.php3
GNUnet-docs/WWW/protocol_transport_udp.php3
GNUnet-docs/WWW/robots.txt
GNUnet-docs/WWW/screenshots.php3
GNUnet-docs/WWW/screenshots/
GNUnet-docs/WWW/scripts.inc
GNUnet-docs/WWW/scripts.php3
GNUnet-docs/WWW/search.php
GNUnet-docs/WWW/smtp.php3
GNUnet-docs/WWW/t-shirt.ps
GNUnet-docs/WWW/test/
GNUnet-docs/WWW/testbed/
GNUnet-docs/WWW/todo
GNUnet-docs/WWW/user.php3
GNUnet-docs/WWW/user_afs.php3
GNUnet-docs/WWW/user_chat.php3
GNUnet-docs/WWW/user_gnunet.php3
GNUnet-docs/WWW/user_index.inc
GNUnet-docs/WWW/user_namespaces.php3
GNUnet-docs/WWW/user_testbed.php3
gnunet-www/freeway-logos/contact.php
gnunet-www/freeway-logos/doc/
gnunet-www/freeway-logos/freeway.css
gnunet-www/freeway-logos/index.php
gnunet-www/freeway-logos/scripts.inc.php
gnunet-www/gnunet-logos/debian.png
gnunet-www/gnunet-logos/gentoo.png
gnunet-www/gnunet-logos/mandriva.png
gnunet-www/gnunet-logos/osx.png
gnunet-www/gnunet-logos/suse.png
gnunet-www/gnunet-logos/ubuntu.png
gnunet-www/gnunet-logos/vmware.png
gnunet-www/gnunet-logos/windows.png
Log:
cleaning up docs dir
Deleted: GNUnet-docs/WWW/documentation.php3
===================================================================
--- GNUnet-docs/WWW/documentation.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/documentation.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,60 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation";
-$description = "Overview of the available documentation for GNUnet";
-include("html_header.php3");
-
-H2("Documentation");
-BP();
-W("Documentation is always work in progress.");
-W("The current documentation describes GNUnet 0.8.x, but is of course
incomplete.");
-EP();
-H3("i18nHTML");
-BP();
-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 "*" after a
sentence to translate it.");
-W("If you are interested in translating into a language that does not yet
exist, ask on IRC or Drupal.");
-W("Each account has a level associated with it.");
-W("Higher levels allow you to delete translations of lower-level accounts.");
-W("If you think you need and deserve the ability to delete translations, ask
(on IRC or Drupal).");
-W("English is always the source language.");
-W("Only developers can change the source, contact them if you find problems.");
-W("On the translation page, you find all other translations.");
-W("You can also vote for a specific translation by clicking on the respective
sentence.");
-W("You are allowed to vote multiple times for the same sentence, e.g. to
express strong feelings. :-)");
-W("The system logs your IP and allows the administrator to easily undo all
operations that were performed from a certain IP address.");
-if ($xlang && ($xlang != "English") ) {
- W("You can translate the most commonly requested untranslated sentences for
your language using the %s.",
- intlink_("http://gnunet.org/i18nhtml/editor.php", "mass translation
page"));
- }
-
-
-P();
-W("You can access the sourcecode of the documentation using Subversion:");
-P();
-PRE("$ svn checkout https://gnunet.org/svn/GNUnet-docs/");
-P();
-W("Generated doxygen documentation can be found %s.",
- extlink_("doxygen/html", "here"));
-W("Like most documentation, it will probably never really be finished.");
-EP();
-H3("Table of Contents");
-gnunetlogo();
-echo "<ol>\n";
-LILI("philosophy.php3","Copyright and Philosophy");
-LILI("user.php3","Using GNUnet");
-include("user_index.inc");
-LILI("protocol.php3","The Protocols");
-include("protocol_index.inc");
-LILI("hacking.php3","Hacking GNUnet");
-include("hacking_index.inc");
-LI("Special topics");
-echo "<ol>\n";
-LILI("smtp.php3","Transport performance and SMTP setup");
-LILI("encoding.php3","Content encoding");
-echo "</ol>\n";
-echo "</ol>\n";
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/download/gnunet-fuse-0.8.0c.tar.bz2
===================================================================
(Binary files differ)
Deleted: GNUnet-docs/WWW/download/gnunet-gtk-0.8.1.tar.gz
===================================================================
(Binary files differ)
Deleted: GNUnet-docs/WWW/download/gnunet-qt-0.8.1.tar.bz2
===================================================================
(Binary files differ)
Deleted: GNUnet-docs/WWW/download/gnunet-qt-0.8.1.tar.gz
===================================================================
(Binary files differ)
Deleted: GNUnet-docs/WWW/download.php3
===================================================================
--- GNUnet-docs/WWW/download.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/download.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,295 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: Download";
-$description = "This page lists the requirements for running GNUnet and
provides links to download the software.";
-include("html_header.php3");
-
-H2("Introduction");
-BP();
-W("Please mind that this is a beta version.");
-W("The network has not been tested on a large scale and the code still
requires some tuning.");
-W("There are various known portability problems.");
-W("Read the %s file to find out about known problems (and workarounds) for
specific architectures.",
- extlink_("https://gnunet.org/svn/GNUnet/PLATFORMS", "PLATFORMS"));
-
-P();
-
-W("The network is still fairly small and downloads can be rather slow.");
-W("Only little content is available, thus it is not always a bug if you get
few (or no) search results.");
-W("Mind that all queries are case-sensitive.");
-
-P();
-
-W("A subscription to GNUnet mailinglists might be a good idea, use
<tt>help-gnunet</tt> or %s to report problems.",
- extlink_("https://gnunet.org/mantis/","Mantis"));
-P();
-
-W("The next major release will be %s and is expected %s.",
- ARRAY("0.9.0", "2010"));
-EP();
-
-H2("Binary packages");
-BP();
-W("GNUnet is available as ready-to-run software for a few platforms.");
-W("If you are unsure which download to choose, try the package for Windows.");
-
-W("If your operating system or distribution is not included in the list below,
please ask your vendor or consider %s from %s.",
- ARRAY(extlink_("user_gnunet.php3", "building GNUnet"),
extlink_("#source", "source")));
-P();
-?>
-
-<table border="0" cellspacing="0" cellpadding="4">
- <tr>
- <td width="48" align="right">
- <img src="logos/windows.png" />
- </td>
- <td>
- <font class="header3">Windows</font>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <a href="download/win32/Setup-0.8.1b.exe"><?php
W("GNUnet installer (11 MB)"); ?></a>
- <br />
- <font color="FF0000">
- <?php
- W("Note: Microsoft Internet Explorer isn't
able to verify the publisher of this executable. This is not a problem, you can
verify its %s using %s.",
-
ARRAY(extlink_("download/win32/Setup-0.8.1b.exe.asc", "digital signature"),
extlink_("http://winpt.sourceforge.net/", "WinPT")));
- ?>
- </font>
- </td>
- </tr>
- <tr>
- <td width="48" align="right">
- <img src="logos/gentoo.png" />
- </td>
- <td>
- <font class="header3">Gentoo</font>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <a
href="http://gentoo.zugaina.org/net-p2p.html.en"><?php W("Various GNUnet
packages"); ?></a>
- </td>
- </tr>
- <tr>
- <td width="48" align="right">
- <img src="logos/ubuntu.png" />
- </td>
- <td>
- <font class="header3">Ubuntu</font>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <?php
- W("Ubuntu 9.10 (Karmic Koala) already includes
GNUnet 0.8.0c. For older Ubuntu releases follow the instructions below.");
- W("Inofficial packages for Ubuntu 9.04 (Jaunty
Jackalope), 8.10 (Intrepid Ibex) and 8.04 (Hardy Heron) are provided by Markus
through %s.", extlink_("https://launchpad.net/~teamgnunet/+archive/ppa",
"teamgnunet PPA"));
- W("You also need to %s the public key from the
teamgnunet PPA, for example by executing this command:",
extlink_("https://launchpad.net/+help/soyuz/ppa-sources-list.html", "add"));
- PRE("$ sudo apt-key adv --keyserver
keyserver.ubuntu.com --recv-keys 1024R/A52AD45F");
- BR();
- W("Add the following lines to %s to be able to
install and update GNUnet using apt:", "/etc/apt/sources.list");
- PRE("$ deb
http://ppa.launchpad.net/teamgnunet/ubuntu intrepid main");
- PRE("$ deb-src
http://ppa.launchpad.net/teamgnunet/ubuntu intrepid main");
- ?>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <?php
- W("Inofficial packages for Ubuntu 8.04 (Hardy
Heron) by Markus");
- BR();
- W("Add the following lines to %s to be able to
install and update GNUnet using apt:", "/etc/apt/sources.list");
- PRE("$ deb
http://ppa.launchpad.net/teamgnunet/ubuntu hardy main");
- PRE("$ deb-src
http://ppa.launchpad.net/teamgnunet/ubuntu hardy main");
- ?>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <a
href="http://packages.ubuntu.com/hardy/net/gnunet"><?php W("GNUnet core");
?></a>, <a href="http://packages.ubuntu.com/hardy/net/gnunet-gtk"><?php
W("GNUnet graphical interface (gnunet-gtk)"); ?></a>
- </td>
- </tr>
- <tr>
- <td />
- <td />
- </tr>
- <tr>
- <td width="48" align="right">
- <img src="logos/suse.png" />
- </td>
- <td>
- <font class="header3">SuSE</font>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <a
href="http://software.opensuse.org/search?q=gnunet&baseproject=ALL&p=1"><?php
W("Various GNUnet packages"); ?></a>
- </td>
- </tr>
-<!--
- <tr>
- <td />
- <td />
- </tr>
- <tr>
- <td width="48" align="right">
- <img src="logos/vmware.png" />
- </td>
- <td>
- <font class="header3">VMware, QEMU</font>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <a
href="http://www.vmware.com/vmtn/appliances/directory/365">GNUnet Live
System</a>
- </td>
- </tr>
- <tr>
- <td />
- <td />
- </tr>
--->
- <!--
- <tr>
- <td />
- <td />
- </tr>
- <tr>
- <td width="48" align="right">
- <img src="logos/osx.png" />
- </td>
- <td>
- <font class="header3">Mac OS X</font>
- </td>
- </tr>
- <tr>
- <td />
- <td>
- <a
href="http://www.chem.jyu.fi/~eloranta/GNUnet.html"><?php W("Jussi
Eloranta′s port"); ?></a>
- </td>
- </tr>
- -->
-</table>
-
-<?php
-EP();
-ANCHOR("source");
-H2("Source");
-BP();
-W("GNUnet′s source code is released under the %s.",
- extlink_("https://gnunet.org/svn/GNUnet/COPYING", "GPL"));
-BR();
-W("The latest release is here: ");
-BR();
-echo "<ul>\n";
-LIV(extlink_("download/GNUnet-0.8.1b.tar.gz","GNUnet-0.8.1b.tar.gz (2340
kb)"));
-LIV(extlink_("download/gnunet-gtk-0.8.1a.tar.gz" , "gnunet-gtk-0.8.1a.tar.gz
(1108 kb)"));
-LIV(extlink_("download/gnunet-qt-0.8.1a.tar.gz" , "gnunet-qt-0.8.1a.tar.gz
(335 kb)"));
-LIV(extlink_("download/gnunet-fuse-0.8.0c.tar.gz" , "gnunet-fuse-0.8.0c.tar.gz
(103 kb)"));
-echo "</ul>\n";
-
-BP();
-W("The current development code is available from our Subversion repository.");
-W("You can access it using");
-EP();
-PRE("$ svn checkout https://gnunet.org/svn/GNUnet/");
-BP();
-W("The various frontends are available at the following locations:");
-EP();
-PRE("$ svn checkout https://gnunet.org/svn/gnunet-gtk/");
-PRE("$ svn checkout https://gnunet.org/svn/gnunet-qt/");
-PRE("$ svn checkout https://gnunet.org/svn/gnunet-fuse/");
-P();
-W("For access to the freeway code use:");
-EP();
-PRE("$ svn checkout https://gnunet.org/svn/freeway/");
-EP();
-
-H2("System Requirements");
-H3("Hardware");
-echo "<ul>";
-echo "<li>Pentium 100 Mhz, 32 MB RAM</li>";
-echo "</ul>";
-H3("Operating system");
-echo "<ul>";
-echo "<li><a href=\"http://www.gnu.org/\">GNU</a>/<a
href=\"http://www.kernel.org/\">Linux</a>, ";
-echo "<a href=\"http://www.sun.com/software/solaris/\">Solaris
(>= 8)</a>, OS X > 10.3, Win32, ";
-echo "<a href=\"http://www.freebsd.org/\">FreeBSD (>= 5
recommended)</a>, ";
-echo "<a href=\"http://www.openbsd.org/\">OpenBSD</a> ";
-W("or");
-echo " <a href=\"http://www.netbsd.org/\">NetBSD</a>.</li>";
-echo "</ul>";
-H3("3rd party libraries");
-BP();
-W("GNUnet uses some other free software libraries.");
-W("They are part of the Windows installer above, so you do not have to
download them for Windows.");
-BR();
-W("If you want to build GNUnet from source, you need the corresponding
development packages, too.");
-EP();
-?>
-<ul>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://www.gnu.org/software/gmp/">GNU MP Bignum Library</a>
(>= 4.0.0)</li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://www.gnu.org/directory/security/libgcrypt.html">libgcrypt
(>= 1.2.0)</a></li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="/libextractor/">libextractor (>= 0.5.16)</a></li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://www.zlib.net/">zlib</a></li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://www.sqlite.org/">sqlite</a> (>= 3.0.0)</li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://www.gtk.org/">gtk+ >= 2.6</a></li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://glade.gnome.org/">glade >= 2.10</a></li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://curl.haxx.se/">libcurl</a></li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://www.gnu.org/software/guile/guile.html">Guile >=
1.8</a></li>
- <li><strong><?php W("Required:"); ?></strong>
- <a href="http://invisible-island.net/dialog/">dialog >=
1.0-20060221</a></li>
- <li><strong><?php W("Recommended:"); ?> </strong>
- <a href="/libmicrohttpd/">GNU libmicrohttpd</a> (>= 0.3.1)</li>
- <li><strong><?php W("Recommended:"); ?> </strong>
- <a href="http://www.mysql.com/">mysql</a> (>= 5.0.8)</li>
- <li><strong><?php W("Recommended:"); ?></strong>
- <a href="http://xmlsoft.org/">libxml2</a></li>
- <li><strong><?php W("Optional:"); ?></strong>
- <a href="http://www.gnu.org/software/gettext/">GNU gettext (>=
0.16.1)</a></li>
- <li><strong><?php W("Optional:"); ?></strong>
- <a href="http://www.gnu.org/software/ncurses/">ncurses</a></li>
- <li><strong><?php W("Optional:"); ?></strong>
- <a href="http://www.gnu.org/software/adns/">GNU adns</a></li>
- <li><strong><?php W("Optional:"); ?></strong>
- <a href="http://www.nongnu.org/gksu/">GKSu</a></li>
- <li><strong><?php W("Optional:"); ?></strong>
- <a href="http://www.galago-project.org/downloads.php/">libnotify</a></li>
- </ul>
-<?php
-BP();
-W("A complete list for Debian is %s.",
extlink_("https://gnunet.org/svn/GNUnet/README.debian", "available"));
-EP();
-
-H3("Required for building GNUnet from source");
-?>
- <ul>
- <li><strong><?php W("for SVN:");?></strong>
- <a href="http://www.gnu.org/software/autoconf/">autoconf (>= 2.59)</a>
<?php W("and"); ?>
- <a href="http://www.gnu.org/software/automake/">automake (>= 1.8)</a>
<?php W("and"); ?>
- <a href="http://www.gnu.org/software/libtool/">libtool (>= 1.5.6)</a>
<?php W("and"); ?>
- <a href="http://www.gnu.org/software/gettext/">GNU gettext (>=
0.14.1)</a></li>
- <li><strong><?php W("Required to build Windows binaries:"); ?></strong>
- <a href="http://plibc.sf.net/">PlibC</a></li>
-</ul>
-
-<?php
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/encoding.php3
===================================================================
--- GNUnet-docs/WWW/encoding.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/encoding.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,47 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "The Encoding for Censorship-Resistant Sharing";
-$description = "ECRS, the censorship-resistant content encoding for GNUnet
file sharing";
-include("html_header.php3");
-
-H2("The Encoding for Censorship-Resistant Sharing");
-BP();
-W("When GNUnet shares files, it uses a content encoding that is called ECRS,
the Encoding for Censorship-Resistant Sharing.");
-W("Most of ECRS is described in %s research paper.",
- extlink_("download/ecrs.ps", "this"));
-W("ECRS obsoletes the previous %s and ESED II encodings which were used in
GNUnet before version 0.7.0.",
- extlink_("download/esed.ps", "ESED"));
-BR();
-W("The rest of this page assumes that the reader is familiar with the %s.",
- extlink_("download/ecrs.ps", "ECRS paper"));
-W("What follows is a description of some minor extensions that GNUnet makes
over what is described in the paper.");
-W("The reason why these extensions are not in the paper is that we felt that
they were obvious or trivial extensions to the original scheme and thus did not
warrant space in the research report.");
-EP();
-
-H3("Namespace Advertisements");
-BP();
-W("An <tt>SBlock</tt> with identifier 'all zeros' is a signed advertisement
for a namespace.");
-W("This special <tt>SBlock</tt> contains metadata describing the content of
the namespace.");
-W("Instead of the name of the identifier for a potential update, it contains
the identifier for the root of the namespace.");
-W("The URI should always be empty.");
-W("The <tt>SBlock</tt> is signed with the content provder's RSA private key
(just like any other SBlock).");
-W("Peers can search for <tt>SBlock</tt>s in order to find out more about a
namespace.");
-EP();
-
-H3("KSBlocks");
-BP();
-+W("GNUnet implements <tt>KSBlocks</tt> which are <tt>KBlocks</tt> that,
instead of encrypting a CHK and metadata, encrypt an <tt>SBlock</tt> instead.");
-W("In other words, <tt>KSBlocks</tt> enable GNUnet to find <tt>SBlocks</tt>
using the global keyword search.");
-W("Usually the encrypted <tt>SBlock</tt> is a namespace advertisement.");
-W("The rationale behind <tt>KSBlock</tt>s and <tt>SBlock</tt>s is to enable
peers to discover namespaces via keyword searches, and, to associate useful
information with namespaces.");
-W("When GNUnet finds <tt>KSBlocks</tt> during a normal keyword search, it adds
the information to an internal list of discovered namespaces.");
-W("Users looking for interesting namespaces can then inspect this list,
reducing the need for out-of-band discovery of namespaces.");
-W("Naturally, namespaces (or more specifically, namespace advertisements) can
also be referenced from directories, but <tt>KSBlock</tt>s should make it
easier to advertise namespaces for the owner of the pseudonym since they
eliminate the need to first create a directory.");
-P();
-W("Collections are also advertised using <tt>KSBlock</tt>s.");
-EP();
-
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/faq.php3
===================================================================
--- GNUnet-docs/WWW/faq.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/faq.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,897 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet FAQ";
-$description="Frequently asked questions about GNUnet.";
-include("html_header.php3");
-
-H2("Questions");
-
-H3("General");
-
-echo "<ul>\n";
-LIV(extlink_("#raq", "What do I do if my question is not answered
here?"));
-LIV(extlink_("#compare", "How does GNUnet compare to other file-sharing
applications?"));
-LIV(extlink_("#anonymity", "What do you mean by “anonymity”?"));
-LIV(extlink_("#accounting","How does “accounting” work?"));
-LIV(extlink_("#license", "Is the code free?"));
-LIV(extlink_("#speed", "Isn’t all this encryption going to make
things totally slow?"));
-LIV(extlink_("#attacks", "Are there any known attacks?"));
-echo "</ul>\n";
-
-
-H3("Features");
-
-echo "<ul>\n";
-LIV(extlink_("#next", "When are you going to release the next version?"));
-LIV(extlink_("#gui" , "Is there a graphical user interface (GUI)?"));
-LIV(extlink_("#tui" , "How can I use GNUnet from the command line?"));
-LIV(extlink_("#GNUwww", "Is it possible to surf the WWW anonymously with
GNUnet?"));
-LIV(extlink_("#GNUweb", "Is it possible to access GNUnet via a browser as an
anonymous WWW?"));
-LIV(extlink_("#new", "I have some great idea for a new feature, what should
I do?"));
-echo "</ul>\n";
-
-
-H3("Configuration and Installation");
-
-echo "<ul>\n";
-LIV(extlink_("#platform", "On which platforms does GNUnet run?"));
-LIV(extlink_("#database", "What is the right database for me?"));
-LIV(extlink_("#firewall", "How do I have to configure my firewall?"));
-LIV(extlink_("#shapers", "Why should I not use an external traffic shaper?"));
-LIV(extlink_("#keywords", "Why do you require GNU libextractor?"));
-LIV(extlink_("#dependencies", "What are all of the dependencies for building
GNUnet?"));
-echo "</ul>\n";
-
-
-H3("Error messages and bugs");
-
-echo "<ul>\n";
-LIV(extlink_("#assertion","I get error messages of the form "Failure at
FILE.c:LINE". What is going on?"));
-LIV(extlink_("#hostkey", "Checksum error: the deleted hostkey problem."));
-LIV(extlink_("#knownbugs","Are there any known bugs?"));
-LIV(extlink_("#bugs", "How do I report a bug?"));
-echo "</ul>\n";
-
-
-H3("Common problems");
-
-echo "<ul>\n";
-LIV(extlink_("#test", "I cannot find anything. How can I test if it
works?"));
-LIV(extlink_("#lastblocks", "Why is downloading the last few blocks so
slow?"));
-LIV(extlink_("#delete", "<tt>gnunet-unindex</tt> behaves in unexpected
ways."));
-LIV(extlink_("#tell", "How can I see which files I have indexed/inserted
(names, descriptions, keywords)?"));
-echo "</ul>\n";
-
-
-H3("Using GNUnet");
-
-echo "<ul>\n";
-LIV(extlink_("#spam", "Why should I insert directories instead of individual
files?"));
-echo "</ul>\n";
-
-
-H2("Answers");
-
-H3("General");
-
-ANCHOR("raq");
-H4("What do I do if my question is not answered here?");
-BP();
-W("There are many other sources of information.");
-W("You can read additional %s, ask the question on one of the %s.",
- ARRAY(intlink_("documentation.php3", "documentation"),
- intlink_("mailinglist.php3","mailing lists")));
-EP();
-
-ANCHOR("compare");
-H4("How does GNUnet compare to other file-sharing applications?");
-BP();
-W("As opposed to Napster and Gnutella, GNUnet was designed with security in
mind as the highest priority.");
-W("We intend on producing a network with high security guarantees.");
-W("Napster and Gnutella are open to a wide variety of attacks, and users have
little privacy.");
-W("GNUnet is also free software and thus the source code is available, so you
do not have to worry about being spied upon by the software.");
-W("The following table summarizes the main differences between GNUnet and
other systems.");
-W("The information is accurate to the best of our knowledge, but especially
for the commercial systems that does not mean much.");
-W("The comparison is also difficult since there are sometimes differences
between various implementations of (almost) the same protocol.");
-W("In general, we pick a free implementation as the reference implementation
since it is possible to inspect the free code easily.");
-W("Also, all of these systems are changing over time and thus the data below
may not be up-to-date.");
-W("If you find any flaws, please let us know.");
-W("Finally, the table is not saying much (it is hard to compare these systems
this briefly), so if you want the real differences, read the %s (and probably
the code).",
- intlink_("papers.php3","research papers"));
-EP();
-?>
-<center>
- <table border="0" cellspacing="0" cellpadding="0" width="90%">
- <tr>
- <th class="tbl"><?php W("Network"); ?></th>
- <th class="tbl"><?php
W("%s",extlink_("http://www.gnu.org/software/gnunet/", "GNUnet")); ?></th>
- <th class="tbl"><?php W("%s",extlink_("http://knapster.sourceforge.net/",
"Napster")); ?></th>
- <th class="tbl"><?php W("%s",extlink_("http://dcgui.berlios.de/","Direct
Connect")); ?></th>
- <th class="tbl"><?php W("%s",extlink_("http://gift.sourceforge.net/",
"FastTrack")); ?></th>
- <th class="tbl"><?php W("%s",extlink_("http://www.emule-project.org/",
"eDonkey")); ?></th>
- <th class="tbl"><?php
W("%s",extlink_("http://gtk-gnutella.sourceforge.net/", "Gnutella")); ?></th>
- <th class="tbl"><?php
W("%s",extlink_("http://www.freenetproject.org/","Freenet")); ?></th>
- </tr>
- <tr>
- <th class="tbl"><?php W("Distributed Queries"); ?></th>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("hubs"); ?></td>
- <td class="tbl"><?php W("super-peers"); ?></td>
- <td class="tbl"><?php W("DHT (eMule)"); ?></td>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("yes"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Multisource Download"); ?></th>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Economics"); ?></th>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Anonymity"); ?></th>
- <td class="tbl"><?php W("yes"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("no"); ?></td>
- <td class="tbl"><?php W("yes"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Language"); ?></th>
- <td class="tbl"><?php W("C"); ?></td>
- <td class="tbl"><?php W("often C"); ?></td>
- <td class="tbl"><?php W("C++"); ?></td>
- <td class="tbl"><?php W("C"); ?></td>
- <td class="tbl"><?php W("C++"); ?></td>
- <td class="tbl"><?php W("often C"); ?></td>
- <td class="tbl"><?php W("Java"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Transport Protocol"); ?></th>
- <td class="tbl"><?php W("UDP, TCP, SMTP, HTTP"); ?></td>
- <td class="tbl"><?php W("TCP"); ?></td>
- <td class="tbl"><?php W("TCP?"); ?></td>
- <td class="tbl"><?php W("UDP, TCP"); ?></td>
- <td class="tbl"><?php W("UDP, TCP"); ?></td>
- <td class="tbl"><?php W("TCP"); ?></td>
- <td class="tbl"><?php W("TCP"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Query Format (UI)"); ?></th>
- <td class="tbl"><?php W("keywords / ECRS URIs"); ?></td>
- <td class="tbl"><?php W("keywords"); ?></td>
- <td class="tbl"><?php W("filename, THEX"); ?></td>
- <td class="tbl"><?php W("filename, SHA"); ?></td>
- <td class="tbl"><?php W("filename, MD4?"); ?></td>
- <td class="tbl"><?php W("filename, SHA"); ?></td>
- <td class="tbl"><?php W("secret key, CHK"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Routing"); ?></th>
- <td class="tbl"><?php W("dynamic (indirect, direct)"); ?></td>
- <td class="tbl"><?php W("always direct"); ?></td>
- <td class="tbl"><?php W("always direct"); ?></td>
- <td class="tbl"><?php W("always direct"); ?></td>
- <td class="tbl"><?php W("always direct"); ?></td>
- <td class="tbl"><?php W("always direct"); ?></td>
- <td class="tbl"><?php W("always indirect"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("License"); ?></th>
- <td class="tbl"><?php W("GPL"); ?></td>
- <td class="tbl"><?php W("GPL (knapster)"); ?></td>
- <td class="tbl"><?php W("GPL (Valknut)"); ?></td>
- <td class="tbl"><?php W("GPL (giFT)"); ?></td>
- <td class="tbl"><?php W("GPL (eMule)"); ?></td>
- <td class="tbl"><?php W("GPL (gtk-gnutella)"); ?></td>
- <td class="tbl"><?php W("GPL"); ?></td>
- </tr>
- </table>
-</center>
-<?php
-
-/* Q: How about modularity (adaptation for new uses, besides file
- sharing) and block size, in the previous table ? - IW
- Re: Well, Freenet has been adapted for lots of new uses,
- we currently would claim that it is possible but did
- not really do it yet. The others, well, probably not
- at all, but I’m not sure that we have a strong story
- at this point. */
-BP();
-W("Another important point of reference are the various anonymous peer-to-peer
networks.");
-W("Here, there are differences in terms of application domain and how
specifically anonymity is achieved.");
-W("Anonymous routing is a hard research topic, so for a superficial
comparisson like this one we focus on the latency.");
-W("Another important factor is the programming language.");
-W("Type-safe languages may offer certain security benefits; however, this may
come at the cost of significant increases in resource consumption which in turn
may reduce anonymity.");
-EP();
-?>
-<center>
- <table border="0" cellspacing="0" cellpadding="0" width="90%">
- <tr>
- <th class="tbl"><?php W("Network"); ?></th>
- <th class="tbl"><?php
W("%s",extlink_("http://www.gnu.org/software/gnunet/", "GNUnet")); ?></th>
- <th class="tbl"><?php W("%s",extlink_("http://tor.eff.org/", "Tor"));
?></th>
- <th class="tbl"><?php W("%s",extlink_("http://www.invisiblenet.net/iip/",
"IIP")); ?></th>
- <th class="tbl"><?php W("%s",extlink_("http://www.i2p.net/","I2P")); ?></th>
- <th class="tbl"><?php W("%s",extlink_("http://mute-net.sourceforge.net/",
"Mute")); ?></th>
- <th class="tbl"><?php
W("%s",extlink_("http://www.freenetproject.org/","Freenet")); ?></th>
- <th class="tbl"><?php
W("%s",extlink_("http://mixminion.net/","Mixminion")); ?></th>
- </tr>
- <tr>
- <th class="tbl"><?php W("Latency"); ?></th>
- <td class="tbl"><?php W("medium"); ?></td>
- <td class="tbl"><?php W("low"); ?></td>
- <td class="tbl"><?php W("low"); ?></td>
- <td class="tbl"><?php W("low"); ?></td>
- <td class="tbl"><?php W("low"); ?></td>
- <td class="tbl"><?php W("low"); ?></td>
- <td class="tbl"><?php W("high"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Application"); ?></th>
- <td class="tbl"><?php W("file-sharing"); ?></td>
- <td class="tbl"><?php W("TCP tunnel / HTTP"); ?></td>
- <td class="tbl"><?php W("IRC"); ?></td>
- <td class="tbl"><?php W("TCP tunnel / IRC"); ?></td>
- <td class="tbl"><?php W("file-sharing"); ?></td>
- <td class="tbl"><?php W("file-sharing"); ?></td>
- <td class="tbl"><?php W("E-mail"); ?></td>
- </tr>
- <tr>
- <th class="tbl"><?php W("Language"); ?></th>
- <td class="tbl"><?php W("C"); ?></td>
- <td class="tbl"><?php W("C"); ?></td>
- <td class="tbl"><?php W("C"); ?></td>
- <td class="tbl"><?php W("Java"); ?></td>
- <td class="tbl"><?php W("C++"); ?></td>
- <td class="tbl"><?php W("Java"); ?></td>
- <td class="tbl"><?php W("Python/C"); ?></td>
- </tr>
-
- </table>
-</center>
-<?php
-
-
-ANCHOR("anonymity");
-H4("What do you mean by “anonymity”?");
-BP();
-W("Anonymity is the lack of distinction of an individual from a (large)
group.");
-W("A central goal for anonymous file-sharing in GNUnet is to make all users
(peers) form a group and to make communications in that group anonymous, that
is, nobody (but the initiator) should be able to tell which of the peers in the
group originated the message.");
-W("In other words, it should be difficult to impossible for an adversary to
distinguish between the originating peer and all other peers.");
-W("In particular, even peers should not be able to recognize from which node
the message originated, after all, the adversary could control one or more of
the peers.");
-P();
-W("Of course, in practice, it may be possible for a powerful adversary to do
some analysis and potentially assign higher probabilities for being the
originator of a message to a subset of the peers.");
-W("The GNUnet anonymity protocol tries to make this as hard as possible (see
%s).",
- extlink_("download/aff.ps","our paper on anonymity"));
-W("The degree of anonymity (how hard it would be to distinguish an individual
from the group) in GNUnet depends on the resources (mostly bandwidth) that the
individual has available to achieve anonymity.");
-P();
-W("In the case that an extremely powerful adversary was to break the anonymity
of a peer, GNUnet provides <em>deniability</em>.");
-W("Deniability means that the communication is secret in the sense that only
the final recipient knows the key to decrypt the message.");
-W("The sender and the intermediaries are unable to determine the actual
contents.");
-W("Since content migrates in the network, the originator of the content can
often plausibly deny knowledge of the contents since the content could have
migrated to the peer, making the originator indistinguishable from an
intermediary.");
-W("Since intermediaries have no means of decrypting the content and are (in
all sane legal systems) thus not legally responsible for them (if you use the
Internet to send an encrypted E-mail, your Internet Service Provider (ISP) will
typically not be held responsible for the content that its servers transmit; in
GNUnet, every peer plays the role of an ISP, providing Internet services to
other peers).");
-EP();
-
-
-ANCHOR("accounting");
-H4("How does “accounting” work?");
-BP();
-W("GNUnet is based on a trust-based economic model.");
-W("Each node is forming an <em>opinion</em> on all the other nodes it is in
contact with.");
-W("Depending on that opinion, the node will decide which requests it will
honor.");
-P();
-W("As long as a node is not busy, it will typically serve all requests, using
excess resources to gain popularity.");
-W("If it gets busy, it will drop requests from nodes that the local node
trusts least.");
-W("How busy a node can get (bandwidth and CPU wise) is up to the user to
configure.");
-W("The node increases its trust in nodes that send replies to queries and
reduces its trust in nodes that ask for content.");
-W("The %s ensures that replies are always correct and can not be made up to
earn trust without really contributing (see also the %s paper and the %s for
details).",
- ARRAY(intlink_("encoding.php3","GNUnet encoding"),
- extlink_("download/ecrs.ps","ECRS"),
- intlink_("encoding.php3","encoding page")));
-P();
-W("The economic model is designed in a way that the damage that a malicious
node can do is bounded by the formula");
-EP();
-echo "<center>";
-BP();
-W("damage - contribution < capacity + epsilon");
-EP();
-echo "</center>";
-BP();
-W("where contribution is the amount of resources the node has given to GNUnet,
capacity is the network capacity of the malicious node (it is impossible to
keep a node from causing as much traffic as its own connection can support;
yet, unlike other networks, that traffic is <em>not</em> multiplied by other
nodes).");
-W("Epsilon is a number smaller than the excess capacity of the network,
whereas the excess capacity of the network are wasted resources (idle CPUs,
idle network connections).");
-EP();
-
-
-ANCHOR("license");
-H4("Is the code free?");
-BP();
-W("GNUnet is free software, available under the %s (GPL).",
- extlink_("http://www.gnu.org/copyleft/gpl.html",
- "GNU Public License"));
-W("You are free to run, distribute or modify the code under the terms stated
in that license.");
-W("We are a part of the %s.",
- extlink_("http://www.gnu.org/","GNU project"));
-EP();
-
-
-ANCHOR("speed");
-H4("Isn’t all this encryption going to make things totally slow?");
-BP();
-W("The answer to this is, that encryption is incredibly fast.");
-W("GNUnet uses mostly AES-256, a very fast and secure cipher.");
-W("What really often makes anonymous file-sharing slow are artificial delays
that were introduced to make timing analysis hard and to group messages into
larger packets.");
-W("The reason is, that this makes it harder to correlate actions.");
-W("GNUnet must wait for enough traffic from other peers to make it plausible
that the traffic did not originate from the local peer.");
-W("Larger delays also allow for more reordering of messages by the individual
peer.");
-W("By allowing peers to delay messages, it is easier for them to build more
efficient messages.");
-P();
-W("The primary cause of CPU consumption in the current implementation are
algorithms for message scheduling.");
-W("GNUnet peers try to maximize bandwidth utility by reordering messages.");
-W("Also performing downloads in parallel can cause some significant accounting
issues.");
-W("Many datastructures used currently are simple lists that take time linear
to their size to operate on.");
-W("For local indexing operations the current release is typically pushing the
limits of both the CPU and the harddrive.");
-P();
-W("We expect to use smarter, faster datastructures in the future to reduce CPU
consumption.");
-W("The GNUnet developers are always trying to improve performance; yet, there
is not much hope that performance will ever get close to typical response times
from other applications like the WWW.");
-W("Theoretically, it is possible that a download via GNUnet is even faster
than a download from a crowded webserver or a single dialup user, but how
likely this is depends in practice on how the content is spread throughout the
network -- and we neither promise nor really expect to achieve this level of
performance.");
-W("While peer-to-peer networks can theoretically provide better performance
than dedicated servers, their true strength lies in the possibility of being
anarchistic: low administrative overhead, anonymity, no single point of
failure.");
-W("Complete decentralization is very costly and we should thus not expect to
outperform the centralized solution, especially not if we also want
anonymity.");
-EP();
-
-
-ANCHOR("attacks");
-H4("Are there any known attacks?");
-BP();
-W("Generally, there is the possibility of a known plaintext attack on
keywords, but since the user has control over the keywords that are associated
with the content he inserts, the user can take advantage of the same techniques
used to generate reasonable passwords to defend against such an attack.");
-W("In any event, we are not trying to <i>hide</i> content; thus, unless the
user is trying to insert information into the network that can only be shared
with a small group of people, there is no real reason to try to obfuscate the
content by choosing a difficult keyword anyway.");
-W("Note that it is not necessary to use keywords (or even intelligible
keywords) at all.");
-W("The file identifiers (two hash codes and filesize) can also be shared
off-band.");
-P();
-W("Most attacks on anonymity involve a resource battle between the attacker
and the victim.");
-W("If the attacker has significantly more resources (bandwidth, control over
Internet routers, many peers), anonymity can theoretically always be broken.");
-W("In fact, this applies to all other systems that provide anonymity.");
-W("Unlike other designs, the degree of anonymity that can be achieved in
GNUnet depends mostly on which fraction of its resources each peer spends on
its own requests.");
-P();
-W("Since this is a project in development, you can find a list of problems or
report them using the %s system.",
- extlink_("https://gnunet.org/mantis/","Mantis"));
-EP();
-
-
-
-H3("Features");
-
-ANCHOR("next");
-H4("When are you going to release the next version?");
-BP();
-W("The general answer is, when it is ready.");
-W("A better answer may be, earlier if you contribute (test, debug, code,
document).");
-W("Every release will be anounced on the %s mailing list and on %s.",
- ARRAY(extlink_("http://mail.gnu.org/mailman/listinfo/info-gnunet",
- "Announcements"),
- extlink_("http://freshmeat.net/projects/gnunet/",
- "freshmeat")));
-W("You can subscribe to the mailing list or to the project on freshmeat to
automatically receive a notification.");
-EP();
-
-
-ANCHOR("gui");H4("Is there a graphical user interface?");
-BP();
-W("There are actually two graphical user interfaces, <tt>gnunet-gtk</tt> and
<tt>gnunet-qt</tt>.");
-W("Note that both of these need to be downloaded separately.");
-W("The GUIs supports searching, downloading and inserting files.");
-EP();
-
-
-ANCHOR("tui");H4("How can I use GNUnet from the command line?");
-BP();
-W("Yes, except for image previews pretty much all features can be accessed
with various command line tools.");
-W("Use <tt>gnunet-search</tt> to search for content:");
-P();
-PRE("$ ~/bin/gnunet-search GPL\n" .
-
"gnunet://ecrs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992:\n"
.
- "gnunet-download -o "COPYING"
gnunet://ecrs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992\n"
.
- " filename: COPYING\n" .
- " description: The GNU Public License\n" .
- " author: RMS\n" .
- " publication date: Sat Jun 25 08:29:13 2005");
-P();
-W("The output above is the result of searching for the keyword
“GPL”.");
-W("<tt>gnunet-search</tt> will immediately start searching GNUnet and print
new results (no duplicates) to the screen.");
-W("The first line is the information that is required to retrieve the file
(query-hash, key-hash, and the size of the file, here 17992 bytes).");
-P();
-W("This is followed by additional information about the file.");
-W("In order to download the file, use");
-P();
-PRE("$ gnunet-download -o "COPYING" --
gnunet://ecrs/chk/N8RCF3TETLRU9CV1PAS7M2H9QDB36AE3.K9JO8IP7KTNFO23S3VB4TFUKLD7SO5AS.0466DC92.17992");
-P();
-W("where <tt>COPYING</tt> is the suggested filename.");
-P();
-W("If you want to add content to GNUnet, use");
-EP();
-PRE("$ gnunet-insert -m "description:The GNU Public License" -k GPL
-k GNU -m mimetype:text/plain -m author:RMS COPYING");
-P();
-W("where <tt>COPYING</tt> is the filename and the arguments are the
description of the file (<tt>-m</tt> options) and <tt>-k</tt> is used to
specify additional keywords.");
-EP();
-
-ANCHOR("GNUwww");H4("Is it possible to surf the WWW anonymously with GNUnet?");
-BP();
-W("It is not possible use GNUnet for anonymous browsing at this point.");
-W("We recommend that you use %s for anonymous surfing.",
- extlink_("http://tor.eff.org/", "tor"));
-EP();
-
-ANCHOR("GNUweb");H4("Is it possible to access GNUnet via a browser as an
anonymous WWW?");
-BP();
-W("There is currently no proxy (like fproxy in Freenet) for GNUnet that would
make it accessible with a browser.");
-W("It is possible to build such a proxy and all one needs to know is the
protocol used between browser and proxy and a swift look at the sources in
<tt>src/applications/fs/tools/</tt>.");
-P();
-W("The real question is, whether or not this is a good idea.");
-W("In order to achieve anonymity, the file sharing service implemented on top
of GNUnet has a much higher latency than the WWW.");
-W("Thus, the experience of browsing the web will usually be hindered
significantly by these delays (potentially several minutes per page!).");
-P();
-W("If you still want to write a proxy, you are welcome to send us code and
join the developer team.");
-EP();
-
-
-ANCHOR("new");H4("I have some great idea for a new feature, what should I
do?");
-BP();
-W("Sadly, we have many more feature requests than we can possibly implement.");
-W("The best way to actually get a new feature implemented is to do it yourself
-- and send us a patch.");
-W("If it is a larger effort, you might want to ask on the mailinglists for
some feedback first.");
-W("Also, check on %s to see if the feature is already being worked on.",
- extlink_("https://gnunet.org/mantis/", "Mantis"));
-W("A list of planned long-term features is in the %s file.",
- extlink_("https://gnunet.org/svn/GNUnet/todo", "todo"));
-W("If you cannot code you can submit a feature request to Mantis.");
-W("Please double-check that such a request does not already exist.");
-EP();
-
-
-
-H3("Configuration and Installation");
-
-ANCHOR("platform");
-H4("On which platforms does GNUnet run?");
-BP();
-W("GNUnet is being developed and tested under Debian GNU/Linux for i386.");
-W("We have reports of working versions on FreeBSD, NetBSD, OpenBSD, Solaris
and OS X.");
-W("However, those reports are not recent, if you can or cannot get GNUnet to
work on those systems please let us know.");
-W("GNUnet should work on big-endian architectures, including Linux/PPC.");
-W("GNUnet has been ported to Win32.");
-W("Patches to make it work on other platforms are always appreciated.");
-W("If you had success running GNUnet on any other platform, please report!");
-EP();
-
-
-ANCHOR("database");
-H4("What is the right database for me?");
-BP();
-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_("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.");
-EP();
-
-
-ANCHOR("firewall");
-H4("How do I have to configure my firewall?");
-BP();
-W("GNUnet uses the ports 2086 and 1080 by default.");
-W("Configure your firewall to accept packets to the ports 2086 and 1080 (TCP
and UDP) for the machine running the GNUnet daemon <tt>gnunetd</tt>.");
-W("If your firewall is a NAT box, forward packets to your GNUnet
machine's ports 2086 and 1080 and tweak the configuration file
gnunetd.conf (sections NETWORK, LOAD, UDP, TCP and NAT) to use the external IP
of the NAT box.");
-W("Port 2087 is used for communication between <tt>gnunetd</tt> and the client
tools as <tt>gnunet-gtk</tt>, <tt>gnunet-search</tt> etc.");
-W("There is no need to open port 2087 to the rest of the Internet.");
-P();
-W("Port 2086 is used for GNUnet's own transmission protocol, HTTP
encapsulated GNUnet packets (\"HTTP transport\") are transmitted through port
1080 by default.");
-W("The HTTP transport is not necessarily required and can be disabled in
GNUnet's configuration file.");
-W("Disabling it on firewalled systems is important, because available
transports are advertised to other peers and activated but broken transports
result in decreased reachability.");
-EP();
-
-
-ANCHOR("shapers");
-H4("Why should I not use an external traffic shaper?");
-BP();
-W("GNUnet %s decides who to serve when the system is loaded.",
- extlink_("#accounting","accounting"));
-W("Packets are sent and dropped based on their priority and current load.");
-W("External shapers (like <em>token bucket filter</em>) can’t make this
distinction and treat all GNUnet traffic as equal.");
-W("You should set GNUnets internal bandwidth limits to reflect your true
configuration and what you can afford and <em>not use any external shaping for
GNUnet</em>.");
-W("It’s much better to have the limits enforced by <tt>gnunetd</tt> than
by an external mechanism.");
-EP();
-
-
-ANCHOR("keywords");
-H4("Why do you require GNU libextractor?");
-BP();
-W("GNUnet needs keywords such that other users can find the files.");
-W("Typing in lots of keywords is of course a major pain.");
-W("Other systems like gnutella typically just use the filenames.");
-W("Using filenames is not a good solution since they are not always very
descriptive and/or can be a pain to produce for the content provider in the
first place.");
-P();
-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.",
- extlink_("/libextractor/","libextractor"));
-W("If keywords can easily be extracted from your files, you don’t have
to supply keywords by hand.");
-W("<tt>libextractor</tt> can also use the filename as a source for keywords.");
-P();
-W("If you have keywords in a file that should be extracted but the file format
is not supported by <tt>libextractor</tt>, the API of the library is be simple
enough that any C hacker who knows the file format should be able to code a
plugin that will allow you to extract the keywords.");
-W("If you just want filenames, <tt>libextractor</tt> can do those, too.");
-EP();
-
-
-ANCHOR("dependencies");
-H4("What are all of the dependencies for building GNUnet?");
-BP();
-W("The short answer is, that we cannot really tell you.");
-W("The reason is, that this depends a lot on your distribution.");
-W("For example, we use <tt>libgcrypt</tt>, which in turn requires
<tt>libgpg-error</tt>.");
-W("However, most distributions would put these two libraries into one
package.");
-W("Similarly, dependencies for GTK and MySQL are not always identical.");
-W("Finally, where does the list end? Should we list <tt>libc6</tt>,
<tt>zlib</tt>, <tt>bzip2</tt>, <tt>xlib</tt>, <tt>glib</tt>?");
-W("Also, many dependencies are optional.");
-W("You can use GNUnet without a graphical user interface.");
-W("However, even if you do not use GNUnet with a GUI, you might be using a
<tt>libextractor</tt> binary that is linked against GTK-pixbuf to compute
thumbnails.");
-P();
-W("What we have done instead is list all of the top-level dependencies for
Debian GNU/Linux in the %s file.",
- extlink_("https://gnunet.org/svn/GNUnet/README.debian", "README.debian"));
-W("This list is for the specific Debian version that most GNUnet developers
are using.");
-W("The file is only detailing the top-level packages necessary to compile
GNUnet.");
-W("Those packages in turn depend on other packages, which are not listed.");
-W("For example, the list will include <tt>libextractor-dev</tt> but not
<tt>libextractor1c2a</tt> which maybe required by <tt>libextractor-dev</tt>.");
-W("In other words, <tt>apt-get</tt> is your friend, and if your distribution
does not support automatic download of transitive dependencies you might want
to consider switching -- at least we cannot really help you with a complete
list in that case.");
-P();
-W("Note that the Debian package list should still be useful for you even if
you are not running Debian.");
-W("Other distributions are likely to have similar packages.");
-P();
-W("Finally, please note that <tt>configure</tt> will succeed even if a
suitable version of MySQL or SQLite is not detected.");
-W("The reason is, that (theoretically) you might be compiling for a
client-only system, or you might not care about anonymous file-sharing.");
-W("If you do want to use file-sharing, please read the final lines printed by
configure to make sure that a suitable database was found.");
-EP();
-
-
-H3("Error messages and bugs");
-
-ANCHOR("assertion");
-H4("I get error messages of the form "Failure at FILE.c:LINE". What
is going on?");
-BP();
-W("We use a generic error message in GNUnet to indicate that something went
wrong.");
-W("The cause is usually a bug or some data corruption on the network.");
-W("Note that the bug does not necessarily have to be in the current version --
the problem could be caused by another peer running a different version of
GNUnet.");
-W("Similarly, the problem might be anything from completely harmless to
rendering your peer useless.");
-W("In a stable, production release we would disable these messages, but for
now we want to know about those problems.");
-W("Consequently, please report them to %s (after checking that they have not
already been reported).",
- extlink_("https://gnunet.org/mantis/","Mantis"));
-W("Of course, if a corresponding report already exists, feel free to add a
note saying that you are also experiencing the problem.");
-P();
-W("We do not provide detailed information about what exactly went wrong in the
error message for a simple reason -- there are at least 800 different potential
problems that are reported in this way.");
-W("If we gave 800 specific error messages this would not only increase the
binary size significantly, it would also drive people translating GNUnet into
other languages crazy.");
-W("Finally, it takes much less time to write <tt>BREAK()</tt> in the code to
indicate that something went wrong then to write a detailed explanation of the
cause that anyone unfamiliar with the code can understand.");
-W("If you want to investigate what went wrong yourself, use the source.");
-P();
-W("Note that we do provide detailed error messages and warnings for problems
that are likely not bugs in the code and that the user can address.");
-W("Also note that GNUnet is generally quite verbose in its log messages.");
-W("This is mostly useful for diagnosing problems that users report.");
-W("As long as everything seems to work, it is probably safe to ignore
<tt>WARNING</tt> messages.");
-EP();
-
-
-ANCHOR("hostkey");
-H4("Checksum error: the deleted hostkey problem.");
-BP();
-W("Under certain circumstances, <tt>gnunetd</tt> will print warnings
indicating checksum errors in messages that were received from other nodes.");
-W("This is most of the time not a bug and not a problem.");
-W("Everything is working ok.");
-W("What has happened most of the time is the following.");
-W("Each node on GNUnet has a secret, public key.");
-W("When hosts start, they look at the <tt>data/hosts/</tt> directory looking
for keys and addresses of other nodes on the network.");
-W("It will then cryptographically sign its current network address (say IP and
port) together with a timestamp and send this, together with the public key of
the node, to other nodes on the network.");
-P();
-W("Later, nodes will use this binding of key to address to communicate.");
-W("The binding of a public key to an address would ideally be a one-on-one
relationship.");
-W("Due to dial-up, DHCP and other dynamic assignments, this may not always be
the case.");
-W("Even if the same host is used, a different user may be running
<tt>gnunetd</tt> with a different hostkey by now.");
-W("A more common scenario is that the <tt>~/.gnunet/.hostkey</tt> file was
deleted.");
-W("Other nodes on the network may still know the old hostkey and have it bound
to that host.");
-W("Do not delete the hostkey if you want to avoid this problem!");
-P();
-W("The reason why we can’t avoid this (ok, we could just not print the
error message, but that’s not the point), is that a malicious host could
always claim to have any address on the Internet.");
-W("If we have two public keys for the same host, the best we can do is try out
both.");
-P();
-W("Checking both is very cheap, and after a while (depending on the timeout
configured in gnunetd.conf), hostkeys will eventually expire.");
-P();
-W("You may also receive messages that will result in checksum errors from
clients that run versions of GNUnet before 0.7.0 (protocol mismatch).");
-EP();
-
-
-ANCHOR("knownbugs"); H4("Are there any known bugs?");
-BP();
-W("The list of currently known bugs is available in the %s system.",
- extlink_("https://gnunet.org/mantis/","Mantis"));
-P();
-
-W("Some bugs are occasionally reported directly to developers or the developer
mailing list.");
-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).");
-EP();
-
-
-ANCHOR("bugs");
-H4("How do I report a bug?");
-
-BP();
-W("Good bug reports enable developers to find and hopefully fix problems
faster.");
-W("Nobody can or will fix a “GNUnet does not work for me.” bug.");
-W("Please try to follow the following guidelines as far as they are applicable
to the bug at hand.");
-EP();
-
-echo "<dl>\n";
-DT("Use our bug-tracking system");
-echo "<dd>";
-BP();
-W("You should use the %s system for any bug reporting.",
- 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();
-W("The following status codes are used in Mantis:");
-echo "<dl>\n";
-DT("New");
-echo "<dd>";
-W("A new bug, developers did not look into these yet.");
-echo "</dd>";
-DT("Feedback");
-echo "<dd>";
-W("Developers require feedback from users reporting the bug to resolve it.");
-W("Also used if a general discussion between the researches is needed on how
to address a problem.");
-echo "</dd>";
-DT("Acknowledged");
-echo "<dd>";
-W("Developers have seen the bug.");
-echo "</dd>";
-DT("Confirmed");
-echo "<dd>";
-W("Developers are convinced that the bug is a problem that needs to be
fixed.");
-echo "</dd>";
-DT("Assigned");
-echo "<dd>";
-W("Some developer has started working on the problem.");
-W("Note that developers may give up on problems, putting the bug back to
confirmed, or feedback.");
-echo "</dd>";
-DT("Resolved");
-echo "<dd>";
-W("The bug has been fixed in some version in Subversion or in a patch attached
to the bug report.");
-echo "</dd>";
-DT("Closed");
-echo "<dd>";
-W("Resolved bugs are closed after the bugfix has made it into a full release
of GNUnet.");
-echo "</dd>";
-echo "</dl>";
-echo "</dd>";
-DT("Report your platform.");
-echo "<dd>";
-W("Please report platform information in your bugreport.");
-W("The script <tt>contrib/report.sh</tt> in the GNUnet distribution scans your
system and reports version numbers of relevant installed packages.");
-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>";
-W("Using the <tt>-d -L DEBUG</tt> options, all GNUnet applications can be set
to print (lots of) debugging output to the console.");
-W("You may want to include the last 10-20 lines in the bug report.");
-echo "</dd>";
-DT("Describe what you were doing.");
-echo "<dd>";
-W("If you did something specific when the problem occured, please report what
you were doing.");
-W("If possible, try to reproduce the bug and reduce the number of steps needed
to do so.");
-W("It may also be a good idea to move the <tt>~/.gnunet/</tt> directory for
testing and then reproduce the bug starting from scratch.");
-echo "</dd>";
-DT("Report network and file status information");
-echo "<dd>";
-W("If the bug occurs and does not crash the GNUnet application (deadlock, not
responsive, etc.), please use <tt>netstat -tnl</tt> to gather information about
open TCP sockets and include this in the bug report.");
-W("Furthermore, use <tt>lsof | grep gnunet</tt> (may require root priviledges)
to get information about open files.");
-echo "</dd>";
-DT("Reporting a segfault.");
-echo "<dd>";
-W("If any GNUnet application reproducably segfaults, please try getting a
stack trace.");
-W("Use <tt>gdb bin/gnunet-application-name</tt> and then at the <tt>(gdb)</tt>
prompt use <tt>run APPLICATION-ARGUMENTS</tt> to start the application with the
GNU debugger.");
-W("Once the segfault occurs, you will get the <tt>(gdb)</tt> prompt again.");
-W("Now type <tt>ba</tt> to get the stacktrace.");
-W("Attach the output to the bugreport.");
-echo "</dd>";
-DT("Deadlocks, or what to do if GNUnet just stops working.");
-echo "<dd>";
-W("If any of your GNUnet applications just stops working, you can directly
obtain diagnostic information using gdb.");
-W("Use <tt>ps ax</tt> to obtain the process ID of your GNUnet applications.");
-W("Sometimes problems can be caused by the interplay of <tt>gnunetd</tt> and a
client application.");
-W("In that case, follow the instructions for both applications.");
-P();
-W("Once you have the process ID (2-5 digit number), start <tt>gdb</tt>.");
-W("At the <tt>(gdb)</tt> prompt, enter <tt>attach PID</tt> where PID must be
replaced by the process ID.");
-W("Then use <tt>info threads</tt> to obtain a list of all running threads of
the application.");
-W("Use <tt>thread NUMBER</tt> to select a thread.");
-W("For each thread, obtain the backtrace using the <tt>ba</tt> command.");
-W("Using this information, GNUnet developers can hopefully see where the
application hangs.");
-P();
-W("Please also report the <tt>lsof</tt> and <tt>netstat</tt> output as
described before.");
-echo "</dd>";
-DT("Statistics.");
-echo "<dd>";
-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.");
-echo "</dd>";
-DT("Reporting Problems with Mantis");
-echo "<dd>";
-W("If you have problems with Mantis, please contact %s via E-mail.",
- extlink_("mailto:address@hidden","address@hidden"));
-echo "</dd>";
-echo "</dl>";
-EP();
-
-
-
-H3("Common problems");
-
-ANCHOR("test");
-H4("I cannot find anything. How can I test if it works?");
-BP();
-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>gnunet.org</tt>.");
-W("This test may of course fail if <tt>gnunet.org</tt> is temporarily not
available.");
-W("Common other problems are:");
-EP();
-echo "<ul>\n";
-LI("firewall (UDP and TCP ports 2086 should be open)");
-LI("not connected (it may take a couple of minutes, check the number of
connected peers using gnunet-stats or one of the GUIs)");
-LI("typos (if you’re off by one letter, it won’t work)");
-echo "</ul>\n";
-BP();
-W("For a test of slightly larger scale, you can try to download another
“official” test content by searching for keyword <tt>alien</tt> or
go directly for the content using:");
-P();
-PRE("$ gnunet-download -o "Aliensong.mpeg" --
gnunet://ecrs/chk/MN8P2LS383SRU0N68OPRBU28J0MIOPFS1BTA7K76SJUFONHHGE6LJ33PU45ASNUTGT4AP70LQUOSN79C2IODFA7D4IU0HR9K3ASIHE8.E561C1GJ1SR99AMBM7L87RF2HKGE8L7D6JLIUGT5G7UBDPCT1FNDCMV15T00LD0U92C6JE3M93JE23PJKVF2AJRHIB3VCIC41952DOO.3201028");
-P();
-W("Still not satisfied?");
-W("Use your imagination for guessing keywords, or try common mime-types as
keywords (such as <tt>application/pdf</tt>, <tt>application/x-zip</tt>,
<tt>image/jpeg</tt> or <tt>audio/mp3</tt>).");
-EP();
-
-
-ANCHOR("lastblocks");
-H4("Why is downloading the last few blocks so slow?");
-
-BP();
-W("Sometimes when downloading large files from GNUnet, it may take a long time
to get the last remaining blocks of the file.");
-W("This is often not an error, and if it happens, it does not automatically
mean that the blocks must have disappeared from the network (though that is
possible).");
-W("The explanation is as follows (its a bit technical).");
-EP();
-echo "<ul>\n";
-LI("The system starts with a fairly low TTL and probes going higher each time
no response arrives.");
-LI("The last block is likely (as in always) to have been requested multiple
times without success (peer busy processing other requests, message-drops,
etc.).");
-LI("The TTL of the last block is always significantly higher than the
(successful) ttl of the first block.");
-LI("A higher TTL <em>also</em> means that the retransmission frequency is
lower, so GNUnet will also attempt to get that block less frequently.");
-LI("Finally, on occasion the peer may have depleted whatever initial trust it
had in the network by the time it gets to the last block, putting it into a
further disadvantage.");
-LI("Finally finally, a peer without trust only gets effective TTL of 0 (except
locally), so it will now compete with other queries (in particular queries
still in slots from the download; now, the routing table has a small resistance
(TTL_DECREMENT) before replacing a pending query with one with a higher TTL,
adding yet another 5s or so.");
-echo "</ul>\n";
-BP();
-W("To summarize, there are plenty of reasons why the download MUST go slower
at the end.");
-W("However, the GNUnet developers are still investigating ways to make it
faster.");
-EP();
-
-
-ANCHOR("delete");
-H4("<tt>gnunet-unindex</tt> behaves in unexpected ways.");
-BP();
-W("First of all, many things can go seemingly wrong with
<tt>gnunet-unindex</tt> and one has to understand what exactly
<tt>gnunet-unindex</tt> does to avoid pitfalls.");
-W("The first thing to recall is that <tt>gnunet-unindex</tt> only unindexes
blocks from the local database.");
-W("Blocks that have been replicated by other peers are not removed.");
-W("This is why it is possible that a file can still be available after running
<tt>gnunet-unindex</tt>.");
-W("Also <tt>gnunet-unindex</tt> does <b>not</b> unindex the search-blocks
associated with keywords.");
-W("Thus searching for the file will still list the file as if it was there.");
-W("Part of the reason for not removing the search-blocks is that the keywords
used when indexing are not known to <tt>gnunet-unindex</tt>.");
-W("A more elaborate mechanism that uses libextractor to guess which keywords
could have been used still needs to be implemented.");
-W("In the future we also plan to time-out search-blocks to avoid the
search-space pollution.");
-P();
-W("Another important aspect of <tt>gnunet-unindex</tt> is that it may unindex
blocks <b>shared</b> with other files or within the same file.");
-W("The reason is that blocks of identical content hash to the same identifier
and can thus not be distinguished by GNUnet.");
-W("For highly structured content it is possible in practice that two blocks
are identical.");
-W("GNUnet will then share the storage space for these two blocks.");
-W("When unindexing 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-unindex</tt>, as well as in downloads that do not complete.");
-W("In general, <tt>gnunet-unindex</tt> should be used with caution.");
-EP();
-
-
-ANCHOR("tell");
-H4("How can I see which files I have indexed/inserted (names, descriptions,
keywords)?");
-BP();
-W("For building directories, GNUnet keeps track of all file identifiers that
it has so far encountered, including search results, inserted or indexed files
and files mentioned in downloaded directories.");
-W("This information is stored in plaintext to allow building of directories.");
-W("Users should run <tt>gnunet-directory -t</tt> to start tracking this
information.");
-W("Note that the data is kept locally in the GNUnet directory and never send
out into the network.");
-W("You can inspect the information with <tt>gnunet-directory -l</tt>.");
-W("It is probably a good idea to clean this database of your activities from
time to time.");
-W("You can run <tt>gnunet-directory -k</tt> to remove the information
collected so far (and to stop tracking).");
-W("Once that database has been cleaned, GNUnet can no longer tell which files
you inserted, but it can tell you which files are indexed.");
-P();
-W("The reason why GNUnet can not tell you which files were inserted is the
same reason, why we distinguish between indexing and insertion: deniability.");
-W("The primary use of insertion is to give an adversary no easy way to figure
out what files are stored on your computer, and that under the assumption that
the adversary takes full control of you machine.");
-W("Thus, GNUnet was designed to not require any information that would allow
it to reconstruct the inserted file without the appropriate keyword (read:
password).");
-W("If the adversary already knows the exact content, it is still possible for
the adversary that has control of your machine to verify that the content is
present.");
-W("The best defence against that is to insert the content with a low priority
and to turn on <tt>ACTIVEMIGRATION</tt>.");
-W("Then you can plausibly claim that the content migrated to your node from
another peer, and that you had no way of knowing that it was there.");
-W("In either case, how well deniability serves you will depend on your local
court.");
-W("Since there are countries where breathing can get you into jail, saying
that you were not able to tell what your computer was storing may not be
sufficient.");
-W("Note that breaking your anonymity and taking control of your computer are
steps that the adversary needs to take first, before you need to resort to
deniability.");
-P();
-W("Indexed content is a slightly different story.");
-W("For indexed content, the goal for GNUnet is still to make it difficult for
the adversary to establish from which machine the content originates
(anonymity).");
-W("For indexed content GNUnet keeps links to the indexed files, typically in
<tt>/var/lib/gnunet/data/shared/</tt>.");
-W("GNUnet uses the list to locate the block corresponding to a request.");
-W("Do NOT edit the directory by hand.");
-W("Use <tt>gnunet-unindex</tt> to remove files from the directory.");
-P();
-W("Also, do not move or change indexed files since GNUnet relies on the paths
of indexed files to be constant.");
-W("If you must move an indexed file, use first <tt>gnunet-unindex</tt>, then
move the file, and then use <tt>gnunet-insert</tt> to re-insert the file.");
-EP();
-
-
-H3("Using GNUnet");
-
-EP();
-ANCHOR("spam");
-H4("Why should I insert directories instead of individual files?");
-
-BP();
-W("GNUnet's ECRS encoding/query strategy doesn'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't seem to be any easy solution to this problem.");
-W("Ranking search results by trust could be one answer in the future.");
-W("Meanwhile, namespaces and directories are a step towards the nonspammable
direction.");
-P();
-W("Inserting into a namespace requires the user to create a pseudonym first,
which is equal to a public/private key pair that identifies the namespace.");
-W("(One user can create any number of pseudonyms.)");
-W("Then, pointers to files or directories can be inserted into the
pseudonym's namespace, signed by the private key of the pseudonym.");
-W("The signed blocks will be verified by each peer before the blocks are
accepted or passed along.");
-W("The verification works by checking the validity of the cryptographic
signature against the public key included in the namespace block, and by
checking that hashing the public key results in the correct namespace
identifier.");
-W("Thus, only the user with the private key to the namespace can publish into
it, making it a nonspammable, secure publishing channel that other users can
limit their searches to.");
-W("Its worth noting that naturally the pointers found from a namespace can
point to any files chosen by the pseudonym, even if the actual files were
inserted by someone else.");
-P();
-W("Directories are a good way to group files to meaningful collections in
GNUnet.");
-W("The directories can contain arbitrary number of pointers to namespaces
(SBlocks), pointers to other directories and pointers to files.");
-W("With directories, users can build networks of content, where not only
inserted files, but also interesting other content or namespaces can be pointed
to, just as in WWW.");
-W("Additionally, directories have two nice properties.");
-W("First, they are immutable, meaning that they can't be tampered with,
but contain exactly those pointers the publisher intended.");
-W("The second property is that identical files pointed to by two directories
waste no additional space, even if the directories were built by separate
users.");
-W("This contrasts strongly to the case where similar files were archived by
e.g. zip or tar, which could double the space usage over the network
-without any speedups in retrieval time.");
-W("By using directories to group the content enables GNUnet to spread the
identical file blocks more efficiently.");
-P();
-W("For more info on using directories and namespaces, see GNUnet online
documentation, or man page of <tt>gnunet-insert</tt> for examples.");
-EP();
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/favicon.ico
===================================================================
(Binary files differ)
Deleted: GNUnet-docs/WWW/freeservice.php3
===================================================================
--- GNUnet-docs/WWW/freeservice.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/freeservice.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,104 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "FreeServices - tunneling everything over GNUnet";
-$description = "FreeServices - tunneling everything over GNUnet";
-include("html_header.php3");
-
-H2("Introduction");
-BP();
-W("At the moment, GNUnet implements two applications: file-sharing and
broadcast chat.");
-BR();
-W("Most of the existing and well-known Internet services could transmit data
through GNUnet and thus establish anonymous connections between publishers and
receivers.");
-BR();
-W("This concept proposes \"GNUnet FreeServices\" as an application-independent
solution without the need to modify existing protocols and software.");
-EP();
-H3("Status of this document");
-BP();
-W("This document is currently an early request for comments."); W("Important
details may be added, changed or left out in the final implementation.");
-EP();
-
-H2("Setting up a FreeService");
-BP();
-W("Every Internet service that is to be published through GNUnet has to be
defined in a central configuration file that is stored on the computer that
runs gnunetd:");
-EP();
-PRE("[My homepage]<br />host=localhost<br />port=8080
-[Google]<br />host=www.google.de<br />port=80<br />destname=www.google.de
-[My mailboxes]<br />host=localhost<br />port=25<br />destname=mysite.com
-[IRC]<br />host=0.0.0.0<br />port=6667");
-BP();
-W("In this example, a FreeService called \"My Homepage\" (actually a
\"Freesite\") is defined."); W("The webserver (perhaps Apache) serving it runs
locally on port 8080.");
-W("Because Google is known to censor search hits in certain countries, we (who
are living in a free country) also relay anonymous traffic to them.");
-W("After that, we accept anonymous mail destined to us."); W("Our mailserver
(perhaps Sendmail or qmail) runs at port 25 and accepts mail for our anonymous
domain (see below).");
-W("Finally, we relay all (0.0.0.0) IRC traffic (port 6667).");
-EP();
-BP();
-W("For every FreeService, a RSA key is generated. The hash of the Public Key
is used as an unique identifier just like a domain name (FQDN).");
-W("The private key is used to digitally sign responses to proof
authenticity.");
-BR();
-W("The \"destname\" specification is used to rewrite our anonymous domain name
to a official domain name.");
-W("This is important for virtual HTTP hosting (multiple domains on a single
server) and mail over SMTP (so the mail server doesn't have to be configured to
accept mail for our anonymous domain.).");
-EP();
-H2("Server side");
-BP();
-BOL();
-LI("An encrypted request for a FreeService is received as usual (port 2086)");
-LI("The request gets decrypted by the core of gnunetd and is forwarded to the
FreeService module (just like FS or Chat messages).");
-LI("The FreeService module connects to the destination as defined in the
configuration file (webserver at port 8080, for example), forwards the request
(<i>HTTP GET</i>, for example) and forwards the response to the core of
gnunetd, that in turn sends it to the requester through the GNUnet network.");
-EOL();
-EP();
-BP();
-extlink("images/freeservice-server.png", "[Picture]");
-EP();
-
-H2("Client side");
-BP();
-W("Client connections are always routed through a special GNUnet SOCKSv5 proxy
to the GNUnet server that makes the requested FreeService available.");
-W("This SOCKS proxy accepts TCP-stlye requests and forwards it to the local
GNUnet server (its FreeService module to be precisely) which forwards the
request to the GNUnet server homing the FreeService.");
-W("Depending on the application/protocol, an application proxy has to be put
in front of the SOCKS proxy."); W("This is recommended in case the protocol
compromises anonymity (anonymizing HTTP proxy).");
-extlink("images/freeservice-client.png", "[Picture]");
-EP();
-
-H2("Addresses and Hyperlinks");
-BP();
-W("As described above, every FreeService is identified by the hash of its
Public-Key.");
-W("Therefore, it can be used to construct an URI.");
-W("Example:");
-PRE(" http://D9HF28EPQ403TSJH8333UIFG85JDM56.gnunet/index.html");
-EP();
-
-H3("Aliases");
-BP();
-W("Because such a URI is hard to remember, the SOCKS proxy maintains a
database of alternative names.");
-W("In that way, an alias \"mysite\" could be defined for the hash above:");
-PRE(" http://mysite.gnunet/index.html");
-EP();
-BP();
-W("Because there's no way to set up a central registry for such names (as
denic.de for German domain names), they are only stored for local use.");
-EP();
-
-H2("Usage");
-H3("HTTP");
-BP();
-W("To request content from .gnunet-Sites, a browser has to be configured to
forward <b>all</b> requests to the GNUnet SOCKS proxy.");
-W("The proxy server checks the domain name for the postfix \".gnunet\" and
forwards these requests to the GNUnet server.");
-W("Requests besides the TLD \".gnunet\" are treated as normal requests and are
forwarded to either the destination server or a final HTTP proxy server (yours
or your provider's).");
-EP();
-
-H4("Links to non-anonymous content");
-BP();
-W("A freesite may embed or link to pictures or other content.");
-W("In case this is not done through the .gnunet-Address, but the usual address
(http://www.mysite.com/title.jpg, for example), the requester looses anonymity
when requesting the content: the request does not get routed through GNUnet,
but a normal - maybe not encrypted - direct connection to the destination
server.");
-W("To circumvent this, an additional proxy server has to be added in front of
the SOCKS proxy."); W("This proxy checks every \"normal\" request whether it is
the result of a link on an anonymous page (through the HTTP header
\"Referrer\").");
-W("In this case, a warning message is returned first.");
-EP();
-
-H3("Mail");
-BP();
-W("Mailaddresses look like those presented above. Mail is sent to
address@hidden or address@hidden");
-W("To accept these addresses, the mailreader has to be configured to forward
all mail to the GNUnet SOCKS proxy."); W("It checks for the TLD \".gnunet\" and
sends the mail through GNUnet if necessary.");
-EP();
-
-H2("The whole picture");
-W("... is %s.", intlink_("images/freeservice-all.png", "here"));
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/gnunetgtk.php3
===================================================================
--- GNUnet-docs/WWW/gnunetgtk.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/gnunetgtk.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,231 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: gnunet-gtk";
-$description="Configuring and using gnunet-gtk";
-include("html_header.php3");
-H2("gnunet-gtk");
-
-BP();
-W("<tt>gnunet-gtk</tt> is the GTK+ interface for GNUnet.");
-W("<tt>gnunet-gtk</tt> is highly customizable and uses a plugin architecture
to load code that will support the various GNUnet applications.");
-W("The basic plugins are "about", "daemon" and
"stats".");
-W("These plugins implement the about dialog, the interaction with
<tt>gnunetd</tt> (start, stop, status) and visualization of statistics obtained
from <tt>gnunetd</tt>.");
-W("In addition, plugins can be loaded for specific peer-to-peer
applications.");
-W("In particular, the "fs" plugin provides the user interface for
file-sharing.");
-W("Which plugins are loaded is configured in the <tt>gnunet.conf</tt>
configuration file in section <tt>GNUNET-GTK</tt> under <tt>PLUGINS</tt>.");
-
-P();
-W("After <tt>gnunet-gtk</tt> was started, you should see something like the
following:");
-EP();
-IMG("screenshots/gnunet-gtk-welcome.png","GNUnet GTK welcome
window","CENTER",615,492);
-BP();
-W("Which options appear on top depends on the set of plugins that are selected
in the configuration file.");
-W("The following plugins are currently available:");
-echo "<ul>\n";
-LILI("#about", "About");
-LILI("#daemon", "Daemon");
-LILI("#fs", "File-sharing");
-LILI("#stats", "Statistics");
-echo "</ul>\n";
-EP();
-
-ANCHOR("about");
-H2("The about plugin");
-BP();
-W("This plugin is responsible for making the "About" button on the
welcome screen work.");
-W("Note that the plugin requires libglade 2.10 or higher to work properly.");
-EP();
-ANCHOR("daemon");
-H2("The daemon plugin");
-BP();
-W("The daemon plugin enables the "General" menu.");
-W("This menu can be used to control <tt>gnunetd</tt>.");
-EP();
-IMG("screenshots/gnunet-gtk-daemon.png",
- "gnunet-gtk daemon page",
- "CENTER",615,492);
-BP();
-W("The "Start" and "Stop" buttons can be used to start or
kill the <tt>gnunetd</tt> process.");
-W("Note that stop may kill <tt>gnunetd</tt> even if <tt>gnunetd</tt> is
running on another machine, while start is only able to start the process on
the local machine.");
-W("If <tt>gnunetd</tt> is running, the "Start"-button will not be
active.");
-W("Similarly, if <tt>gnunetd</tt> is not running, the "Stop"-button
will not be active.");
-W("If either of the buttons has been pressed, both will be deactivated for a
while to give <tt>gnunetd</tt> time to start or shutdown.");
-W("The little round light to the right of the buttons indicates the current
status of <tt>gnunetd</tt>.");
-W("It is green if the daemon is running and red if the daemon is not
running.");
-P();
-W("Finally, the page lists the application modules that <tt>gnunetd</tt> has
currently loaded, together with a description of each application.");
-EP();
-
-
-
-ANCHOR("fs");
-H2("The fs (file-sharing) plugin");
-BP();
-W("The "fs" plugin is responsible for managing file-sharing with
<tt>gnunet-gtk</tt>.");
-W("The plugin provides four sub-menus:");
-echo "<ul>\n";
-LILI("#fs-status", "Status");
-LILI("#fs-search", "Searching and Downloading");
-LILI("#fs-publication", "Publication");
-LILI("#fs-advanced", "Advanced");
-echo "</ul>\n";
-EP();
-ANCHOR("fs-status");
-H3("Status");
-BP();
-W("The status tab gives an overview of the current file-sharing activities.");
-EP();
-IMG("screenshots/gnunet-gtk-fs-status.png",
- "gnunet-gtk file-sharing status page",
- "CENTER",615,492);
-BP();
-W("It lists the various active searches with the number of search results for
each search.");
-P();
-W("The download list shows active downloads and how far they have
progressed.");
-W("The download list can also be used to abort downloads.");
-W("The "Clear"-button can be used to clear completed downloads from
the list (the downloaded files will not be deleted).");
-P();
-W("Finally the publication list shows active publications and their
progress.");
-EP();
-
-ANCHOR("fs-search");
-H3("Searching and Downloading");
-
-IMG("screenshots/gnunet-gtk-fs-search.png",
- "gnunet-gtk file-sharing search and download page",
- "CENTER",615,492);
-BP();
-W("In order to start a search, enter a keyword into the input line at the top
and click on search.");
-W("You can specify multiple keywords, separated by spaces.");
-W("Prefix mandatory keywords with a "+".");
-W("If you want to use a space inside of a keyword (or begin a keyword with a
"+", put the entire keyword in double-quotes.");
-W("Using multiple keywords will cause all search results that match any of the
keywords to be displayed.");
-EP();
-
-H4("Ranking of results");
-BP();
-W("In addition to showing the search results, gnunet-gtk also automatically
tries to rank and evaluate search results.");
-W("Ranking information is continuously updated as more information becomes
available.");
-W("The blue bar under "Ranking" shows how many keywords a particular
result matches.");
-W("If the blue bar is full, the search result matches all specified
keywords.");
-W("Just below the blue bar under "Ranking" is a second bar which can
be red, yellow or green.");
-W("This bar indicates how likely it is that the given file is actually
available.");
-W("The bar becomes thicker as the certainty that the (un)availability has been
established increases.");
-W("The bar initially starts in the middle as a yellow line.");
-W("It grows red to the left to indicate unavailability, and green to the right
to indicate availability.");
-EP();
-
-H4("Namespaces");
-BP();
-W("If a namespace should be searched, change the selection in the selection
box on the right from "globally" to some namespace identifier.");
-W("A tutorial for using namespaces can be found %s.",
- intlink_("user_namespaces.php3", "here"));
-EP();
-
-H4("Downloading");
-
-BP();
-W("The search results will be displayed in a tab that has the same name as the
query.");
-W("Mind that the metadata shown was supplied by the user that uploaded the
file and may not always be accurate.");
-W("The search query will be repeated in the background as long as the tab is
open.");
-W("Duplicate results will not be displayed.");
-W("Starting another search with the same query will merely bring the existing
tab into focus.");
-W("The "Anonymity" spin button to the right of the search line can
be used to specify the desired level of anonymity for the search.");
-P();
-W("The tab contains a list with the search results and a button that can be
used to initiate the download of selected files.");
-W("Note that it is possible to specify a different level of anonymity for the
download using the anonymity spin button next to the
"Download"-button.");
-W("The "Close"-button closes the search window.");
-P();
-W("If a directory is downloaded, the contents of the directory will be shown
in the search window.");
-EP();
-IMG("screenshots/gnunet-gtk-directory-browser.png",
- "gnunet-gtk lists the contents of a directory",
- "CENTER",765,679);
-BP();
-W("Click on the little triangle that appears to the left of the name to show
the contents of the directory.");
-W("GNUnet is able to show the contents of a directory even if the download is
still incomplete.");
-W("Files (and other directories) contained in the directory can be downloaded
just like the search results using the "Download" button.");
-P();
-W("Downloaded files will be saved in the directory specified in the
<tt>gnunet.conf</tt> configuration file (default is
<tt>$HOME/gnunet-downloads/</tt>).");
-P();
-W("Again, you can abort downloads using the "Status" tab.");
-W("If you exit <tt>gnunet-gtk</tt>, all active downloads and searches will be
frozen.");
-W("Then, the next time you restart <tt>gnunet-gtk</tt>, they will
automatically continue.");
-EP();
-
-ANCHOR("fs-publication");
-H3("Publishing");
-
-IMG("screenshots/gnunet-gtk-fs-upload.png",
- "gnunet-gtk file-sharing publication page",
- "CENTER",615,492);
-BP();
-W("In order to share a file to GNUnet, you should first choose between
insertion and indexing.");
-W("If you want to publish an entire directory tree, select
"recursive;".");
-W("You can the enter a filename or use the "Browse" button to browse
the local filesystem for files.");
-W("Finally, press the "Publish" button.");
-W("This will open another dialog in which you can provide metadata about the
file.");
-W("The dialog will likely already contain metadata that was inferred by %s.",
- intlink_("http://gnunet.org/libextractor/index.php", "libextractor"));
-W("Feel free to add additional keywords, descriptions or even change the
preview.");
-W("Note that the total size of the metadata must be below 60.000 bytes, so
large previews will not work.");
-W("Once you have completed the metadata dialog, the publication will start.");
-W("You can watch its progress in the status tab.");
-EP();
-
-ANCHOR("fs-advanced");
-H3("Advanced File Sharing");
-BP();
-W("A tutorial for using namespaces can be found %s.",
- intlink_("user_namespaces.php3", "here"));
-W("The menus in this tab also allow you to start and stop a collection.");
-W("A collection behaves just like a namespace except that any file that you
share will automatically be added.");
-W("You can have any number of namespaces, but only one active collection at
any point in time.");
-EP();
-
-
-ANCHOR("stats");
-H2("The stats plugin");
-
-BP();
-W("This page visualizes various statistics of the current <tt>gnunetd</tt>
process.");
-W("You can configure the speed at which the window updates using the
STATS-INTERVAL option in <tt>gnunet.conf</tt> (in section
<tt>GNUNET-GTK</tt>).");
-W("The information shown corresponds to (some of) the data shown by
<tt>gnunet-stats</tt>.");
-EP();
-IMG("screenshots/gnunet-gtk-stats-load.png",
- "gnunet-gtk load statistics page",
- "CENTER",615,492);
-IMG("screenshots/gnunet-gtk-stats-inbound.png",
- "gnunet-gtk inbound traffic statistics page",
- "CENTER",615,492);
-
-ANCHOR("peers");
-H2("The Peers View");
-
-BP();
-W("The peer tab shows the list of other peers known to your system as well as
their connection status.");
-W("A green light is used for connected peers.");
-W("If the connection is flaky and about to time out, the light turns yellow.");
-W("For peers where the IP address is known and the DNS lookup succeeds, the
hostname and the country of the peer are also listed.");
-W("Finally the list also includes how much we trust this peer (which itself is
a metric for how much that peer has been contributing to the network).");
-EP();
-IMG("screenshots/gnunet-gtk-peers.png",
- "gnunet-gtk peers page",
- "CENTER",615,492);
-
-
-ANCHOR("logs");
-H2("The Logs");
-
-BP();
-W("The logs tab shows messages about events.");
-W("The most common messages are namespace discoveries and a failure to connect
to gnunetd.");
-W("Note that the tab shows the messages in reverse order -- the most recent
message is always on top!");
-EP();
-IMG("screenshots/gnunet-gtk-logs.png",
- "gnunet-gtk logs page",
- "CENTER",615,492);
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking.php3
===================================================================
--- GNUnet-docs/WWW/hacking.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,97 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Copyright and Philosophy";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring
anonymous file sharing with an excess based trust-economy";
-include("html_header.php3");
-
-P();
-HR();
-ANCHOR("design");H3("System Design");
-
-BP();
-W("This section is intented to be an introduction to programmers that want to
extend the framework.");
-W("GNUnet has a layered design.");
-W("An extremely high-level, simplified view is this:");
-EP();
-
-img("images/gnunet-design.png", "GNUnet layering", "CENTER", 401, 421, 0, 10,
10);
-?>
-<center>
-<table border="0" cellspacing="0" cellpadding="0">
-<tr>
-<th class="tbl"><?php W("Layer"); ?></th>
-<th class="tbl"><?php W("Example"); ?></th>
-<th class="tbl"><?php W("code in"); ?></th>
-<tr>
-<th class="tbl"><?php W("User Interface(s)"); ?></th>
-<td class="tbl"><?php W("gnunet-search"); ?></td>
-<td class="tbl">applications/fs/tools/</td>
-</tr>
-<tr>
-<th class="tbl"><?php W("Application Logic"); ?></th>
-<td class="tbl"><?php W("file sharing"); echo ", "; W("statistics"); ?></td>
-<td class="tbl">applications/fs/module/, applications/stats/</td>
-</tr>
-<tr>
-<th class="tbl"><?php W("Core"); ?></th>
-<td class="tbl"><?php W("gnunetd"); ?></td>
-<td class="tbl">server/</td>
-</tr>
-<tr>
-<th class="tbl"><?php W("Transport"); ?></th>
-<td class="tbl"><?php W("UDP"); echo " "; W("TCP"); ?></td>
-<td class="tbl">transports/</td>
-</tr>
-</table>
-</center>
-<?php
-BP();
-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:");
-EP();
-img("images/overview.png", "GNUnet Core Overview", "CENTER", 746, 598, 0, 10,
10);
-BP();
-W("The responsibilities of the individual modules are split as follows:");
-EP();
-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("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("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("topology");
-DD("Maintaining a diverse set of connections with other peers, that is
deciding with which peers to establish connections at what time");
-DT("transport");
-DD("Hanlding of multiple low-level transports for direct communication with
other peers (with UDP-like semantics)");
-echo "</dl>";
-BP();
-W("The core itself is responsible for loading of modules, registering of
handlers and the event loops.");
-W("Various helper services exist for building applications.");
-W("The most important ones are:");
-EP();
-echo "<dl>";
-DT("getoption");
-DD("Allows clients (not other peers) to query the configuration of
<tt>gnunetd</tt> via TCP.");
-DT("rpc");
-DD("Allows applications to make remote procedure calls, that is reliable
invocations of functions with arguments and return values at another peer.");
-DT("stats");
-DD("Keeps statistics (pair of a string and an unsigned long long value) of
arbitrary properties of GNUnet. The service allows other modules to add new
statistics, the application module allows <tt>gnunet-stats</tt> to query these
values.");
-DT("traffic");
-DD("Keeps track of how many messages of which type were recently received or
transmitted. Can be queried by both other modules and by clients. Used for
example to ensure that enough cover traffic is available for anonymous
operations where a high level of anonymity is desired.");
-echo "</dl>";
-BP();
-
-W("The following sections describe various aspects of the GNUnet code in more
detail:");
-EP();
-include("hacking_index.inc");
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking_afs.php3
===================================================================
--- GNUnet-docs/WWW/hacking_afs.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking_afs.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,68 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Hacking GNUnet File-Sharing";
-$description="Overview of the File-sharing code in GNUnet";
-include("html_header.php3");
-
-H2("The File-Sharing code in GNUnet");
-afslogo();
-P();
-W("The file-sharing code falls roughly into five main groups: the ECRS
encoding, the SQSTORE database, the FS module, 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 DHT routing services are responsible for deciding which peers should
receive which queries (and where to send replies back to) for non-anonymous
routing.");
-W("Anonymous routing is integrated into the FS module.");
-W("The FS module also provides communication with clients (the client side is
done by the FSLIB helper library), tracking of requests, planning of anonymous
routing, content migration and management of the SQSTORE (with help of the
DATASTORE module).");
-W("The FS module selects between anonymous and DHT routing services depending
on the desired level of anonymity.");
-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", "File-sharing user documentation"));
-P();
-
-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 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")));
-
-P();
-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"));
-
-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("FS queues requests and keeps track of the previous node on the path for
sending replies.");
-W("The FS module itself is responsible for deciding which content should be
stored locally.");
-W("FS uses the DATASTORE module to store data, to lookup queries and for
content migration.");
-W("FS also manages on-demand encoded data.");
-W("The ECRS_CORE library is used by FS and ECRS to verify that replies match
the queries (ECRS verification).");
-W("FS uses the DHT for non-anonymous routing.");
-W("The decision is based on the frequency and priority of requests for the
content and the available diskspace.");
-W("A %s is used (by the DATASTORE module) to reduce the number of accesses to
the SQSTORE module.",
- extlink_("download/bloomfilter.ps", "bloomfilter"));
-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 publishing 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");
-?>
Deleted: GNUnet-docs/WWW/hacking_application.php3
===================================================================
--- GNUnet-docs/WWW/hacking_application.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/hacking_application.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,81 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: writing applications";
-$description="How to write an application service for GNUnet";
-include("html_header.php3");
-
-H4("How do I write a new application service for GNUnet?");
-BP();
-W("The directory %s contains the minimal piece of code that you will need to
start.",
-
extlink_("doxygen/html/template_8c-source.html","src/applications/template/"));
-W("You may also want to look at %s for a simple working example.",
- extlink_("doxygen/html/chat_8c-source.html","src/applications/chat/"));
-P();
-W("Most simple applications will consist of two pieces of code:");
-EP();
-echo "<ol><li>";
-W("The first is a dynamic library that plugs into the GNUnet core.");
-W("This library must provide a single function which is invoked by the core
when <tt>gnunetd</tt> starts.");
-W("This function registers a couple of callbacks with the GNUnet core in order
to handle certain peer-to-peer messages.");
-W("Every peer-to-peer message is bounded in size (about 60.000 octets) and
must be bound to the appropriate application module using a unique message
identifier typically defined in %s.",
-
extlink_("doxygen/html/gnunet__protocols_8h.html","src/include/gnunet_protocols.h"));
-W("The registered function of the application module will be called whenever a
peer-to-peer message matching a registered message identifier is received.");
-W("The application module can send messages to other nodes using the %s.",
-
extlink_("doxygen/html/structCoreAPIForApplication.html","CoreAPIForApplication"));
-W("Typically, the module will also make use of GNUnet’s client-server
implementation %s to communicate with a user interface.",
- extlink_("doxygen/html/tcpserver_8c-source.html","tcpserver"));
-W("Like with peer-to-peer messages, the service can register for client-server
messages.");
-echo "</li><li>";
-W("The second piece of code is a user interface application.");
-W("Some implementations may even use a set of user interface applications (for
example, the anonymous file sharing has <tt>gnunet-search</tt>,
<tt>gnunet-insert</tt>, <tt>gnunet-download</tt> and a GUI that provides the
combined functionality, <tt>gnunet-gtk</tt>).");
-W("It depends on the specifics of the application if it uses dynamic libraries
or not.");
-W("The application must communicate with the service module that is loaded
into the GNUnet core.");
-W("While any IPC mechanism should theoretically work, the preferred way that
is used by all existing GNUnet applications is using %s, a simple TCP
connection that communicates with the %s.",
- ARRAY(extlink_("doxygen/html/tcpio_8c.html","tcpio"),
- extlink_("doxygen/html/tcpserver_8c-source.html","tcpserver")));
-BR();
-W("The simplest way for a user interface to connect to the GNUnet core via TCP
is to use the helper methods defined %s as part of the <tt>gnunetutil</tt>
library; the library defines methods for %s and getting a client socket that is
connected to <tt>gnunetd</tt>.",
- ARRAY(extlink_("doxygen/html/port_8c-source.html","port.c"),
- extlink_("doxygen/html/printhelp_8c-source.html","parsing the command
line options")));
-echo "</li></ol>";
-
-ANCHOR("portability");H4("Portability");
-BP();
-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:");
-EP();
-echo "<ul>";
-echo "<li>";
-W("Avoid platform specific code outside of <tt>src/util/</tt>.");
-echo "</li>";
-echo "<li>";
-W("Do not use <tt>fork()</tt> or similar functions.");
-echo "</li>";
-echo "<li>";
-W("Use <tt>GNUNET_thread_sleep()</tt> instead of <tt>sleep()</tt>.");
-echo "</li>";
-echo "<li>";
-W("Use <tt>DIR_SEPARATOR</tt> and <tt>DIR_SEPARATOR_STR</tt> instead of plain
slashes.");
-echo "</li>";
-echo "<li>";
-W("Use the uppercase macros defined in <tt>platform.h</tt> (for example,
<tt>CHDIR()</tt> instead of <tt>chdir()</tt>, <tt>CONNECT()</tt> instead of
<tt>connect()</tt>).");
-echo "</li>";
-echo "<li>";
-W("Use <tt>GNUNET_disk_file_open()</tt> instead of <tt>open()</tt>");
-echo "</li>";
-echo "<li>";
-W("If an I/O function is missing in <tt>platform.h</tt>, ask the GNUnet
developers.");
-W("The desired function may exist on all platforms, but its behavior may be
different.");
-echo "</li>";
-echo "<li>";
-W("Always expect I/O operations to fail with <tt>EWOULDBLOCK</tt>, even if
<tt>SELECT()</tt> returned the descriptor as ready.");
-echo "</li>";
-echo "<li>";
-W("GTK functions may only be called from the main thread. Use
<tt>gtkSaveCall()</tt> from the <tt>gnunetgtk_common</tt> library before making
any GTK calls.");
-echo "</li>";
-echo "</ul>";
-P();
-
-include("html_footer.php3");
-?>
-
Deleted: GNUnet-docs/WWW/hacking_future.php3
===================================================================
--- GNUnet-docs/WWW/hacking_future.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking_future.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,39 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Future Work";
-$description="Future work for GNUnet hackers";
-include("html_header.php3");
-
-ANCHOR("future");H3("Future Work");
-BP();
-W("Code contributions (GPL) are generally welcome.");
-W("Before writing a larger patch, you may want to discuss the idea on the
developer mailinglist first.");
-P();
-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):");
-EP();
-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("fix %s",
- extlink_("https://gnunet.org/mantis/","bugs"));
-LI("improve HTTP(S) implementation of %s",
- extlink_("/libmicrohttpd/","libmicrohttpd"));
-LI("package binaries for various platforms");
-LI("design and implement a resillient, privacy-respecting chat protocol");
-echo "</ul>";
-BP();
-W("And if you want to go totally crazy:");
-EP();
-echo "<ul>";
-LI("distributed computation (sandboxing!?)");
-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("add SSH-based transport protocol");
-LI("add steganography to existing transport protocols");
-echo "</ul>";
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking_index.inc
===================================================================
--- GNUnet-docs/WWW/hacking_index.inc 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking_index.inc 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,11 +0,0 @@
-<ol>
-<li><?php intlink("hacking_organization.php3","Code Organization"); ?></li>
-<li><?php intlink("hacking_util.php3","src/util/"); ?></li>
-<li><?php intlink("hacking_server.php3","Understanding gnunetd"); ?></li>
-<li><?php intlink("hacking_application.php3","Writing applications"); ?></li>
-<li><?php intlink("hacking_testcases.php3","Writing testcases"); ?></li>
-<li><?php intlink("hacking_threading.php3","Threading"); ?></li>
-<li><?php intlink("hacking_rpc.php3","Using the RPC service"); ?></li>
-<li><?php intlink("hacking_win32_build.php3","Building on MS Windows"); ?></li>
-<li><?php intlink("hacking_future.php3","Future Work"); ?></li>
-</ol>
Deleted: GNUnet-docs/WWW/hacking_organization.php3
===================================================================
--- GNUnet-docs/WWW/hacking_organization.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/hacking_organization.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,99 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Code Organization";
-$description="Overview over the GNUnet source code for developers";
-include("html_header.php3");
-
-ANCHOR("libraries");H3("GNUnet libraries");
-
-BP();
-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.");
-P();
-W("Static libraries are used for purely internal re-use of code (not used at
this point).");
-P();
-W("Shared libraries are used whenever multiple tools share code.");
-W("The general OS abstraction library, <tt>gnunetutil</tt> as well as
libraries like <tt>libgnunetecrs</tt> that are used by multiple user interfaces
belong into this category.");
-P();
-W("Finally, plugins are used for all of the code that is dynamically loaded by
the gnunet daemon (or <tt>gnunet-gtk</tt>) when needed.");
-W("This keeps the code for <tt>gnunetd</tt> small and modular.");
-W("Modules fall into four subcategories, transport-services, internal
services, application services and finally plugins for <tt>gnunet-gtk</tt>.");
-W("Internal services are useless by themselves and only provide functionality
for application services.");
-W("A simple example for an internal 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 fs (file-sharing), tbench,
tracekit and 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("An example for such a convenience library is <tt>libgnunetfs</tt> with the
header file <tt>gnunet_fs_lib.h</tt>.");
-W("In this case, the immediate API exposed by the fs application is extremely
low-level and additional libraries (ECRS and FSUI) are used to provide
higher-level abstractions.");
-W("Note that the application services themselves do not define a header file
since they are accessed using a set of client-server messages exchanged using
code from <tt>gnunetutil</tt> and the GNUnet core.");
-EP();
-
-ANCHOR("overview");H3("Important header files and libraries");
-
-BP();
-W("The most important header files in GNUnet are:");
-EP();
-echo "<ul>\n";
-LILI("#protocols","gnunet_protocols.h");
-LILI("hacking_util.php3","gnunet_util.h");
-LILI("#transport","gnunet_transport.h");
-LILI("#core","gnunet_core.h");
-echo "</ul>\n";
-
-
-ANCHOR("protocols");H4("gnunet_protocols.h");
-BP();
-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.");
-
-EP();
-ANCHOR("transport");H4("gnunet_transport.h");
-BP();
-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:
out-of-order, unreliable, unencrypted delivery of bounded-size messages.");
-W("Each transport type can also define its own addressing scheme.");
-EP();
-ANCHOR("core");H4("gnunet_core.h");
-BP();
-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.");
-
-EP();
-ANCHOR("flow");H3("Global data-flow in GNUnet");
-
-BP();
-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.");
-P();
-W("First, a client such as %s or %s connects (via a secure TCP connection,
typically
-loopback) to the %s.",
- ARRAY(extlink_("doxygen/html/gnunet-search_8c.html","gnunet-search"),
- extlink_("doxygen/html/gnunet-insert_8c.html","gnunet-insert"),
- extlink_("doxygen/html/tcpserver_8c.html","tcpserver")));
-W("The actuall connection operation is initiated in some helper library
written for the specific application, in this case <tt>libgnunetfsui</tt> calls
<tt>libgnunetecrs</tt> which calls <tt>libgnunetfs</tt> which sends the actual
request via TCP using <tt>libgnunetutil</tt>.");
-W("A common request is a %s which is handed by the %s in the GNUnet CORE to
the FS service, which then passes the query to the internal %s for routing.",
-
ARRAY(extlink_("doxygen/html/structCS__fs__request__search__MESSAGE.html","query"),
- extlink_("doxygen/html/tcpserver_8c.html","tcpserver"),
- 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_("doxygen/html/connection_8c.html#a64","connection"));
-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"));
-P();
-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#a26","demultiplexed"));
-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.");
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking_rpc.php3
===================================================================
--- GNUnet-docs/WWW/hacking_rpc.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking_rpc.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,56 +0,0 @@
-<?php
-include("scripts.php3");
-$title="GNUnet Documentation: Remote Procedure Calls (RPC)";
-$description="Documentation of the GNUnet Remote Procedure Call Service (RPC)";
-include("html_header.php3");
-
-H2("The GNUnet RPC service");
-BP();
-W("The GNUnet RPC service offers link-to-link reliable remote procedure
calls.");
-W("The link-to-link restriction means that the peers have to be able to
connect directly.");
-W("In other words, the GNUnet RPC service does not do any routing.");
-W("Also note that different peers may support a different subset of RPC
messages.");
-W("Hence an application cannot expect every peer to respond to RPC calls.");
-P();
-W("GNUnet's RPC calls can be made synchronously or asynchronously.");
-W("In the synchronous case the caller is blocked until a reply has been
received (or until the request times out).");
-W("Note that blocking arbitrary GNUnet threads in this manner is probably a
bad idea, so blocking RPC calls should only be performed by dedicated
threads.");
-W("The more common pattern is to use an asynchronous RPC call.");
-W("In that case the RPC service invokes a callback at the time where a reply
is received.");
-W("Asynchronous RPC calls must be explicitly canceled to reclaim memory.");
-P();
-W("Just like invoking an RPC can be synchronous or asynchronous, the RPC
functions themselves can be synchronous or asynchronous.");
-W("RPC functions that themselves perform RPC calls must almost always be
defined as asynchronous to avoid possibly deadlocking the system.");
-W("Note that the size of RPC messages (paramters, return values) is currently
limited by the MTU (minus headers) of the underlying transport used by
GNUnet.");
-EP();
-
-H3("Arguments and return values");
-BP();
-W("GNUnet RPC functions use the opaque RPC_Param datastructure for passing
arguments and return values.");
-W("RPC_Param allows naming parameters and returning any number of return
values.");
-W("Naming parameters has the advantage that it is easy to add additional
arguments in later versions.");
-W("Also, named parameters define a natural way to achieve a variable number of
arguments.");
-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_("doxygen/html/gnunet__rpc__service_8h.html",
- "gnunet_rpc_service.h"));
-EP();
-
-H3("Using the RPC service");
-BP();
-W("In order to use the RPC service an application module must first request it
from the GNUnet core.");
-W("The following code illustrates how to do this:");
-EP();
-?>
-<pre>
-CoreAPIForApplicaton * coreAPI = ...;
-RPC_ServiceAPI * rpc = (RPC_ServiceAPI) coreAPI->requestService("rpc");
-rpc->RPC_register("myRPCFunction", &myFunction);
-rpc->RPC_execute(&peer, "myRPCFunction", &args, &ret, 0, 5 * cronSECONDS);
-rpc->RPC_unregister("myRPCFunction", &myFunction);
-coreAPI->releaseService(rpc);
-</pre>
-<?php
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking_server.php3
===================================================================
--- GNUnet-docs/WWW/hacking_server.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking_server.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,52 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Hacking gnunetd";
-$description="Description of the internals of the gnunetd process";
-include("html_header.php3");
-
-H2("Understanding gnunetd");
-
-BP();
-
-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) and UDP,
best-effort semantics.");
-W("There is no guarantee that a message will be delivered.");
-BR();
-W("Applications (like file-sharing) are build on top of the GNUnet core; the
core itself has no notion of file-sharing.");
-W("Applications may consist of multiple services and use the %s to access the
GNUnet core.",
- extlink_("doxygen/html/structCoreAPIForApplication.html",
- "CoreAPIForApplication"));
-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("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.");
-BR();
-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 an application plugin and possibly additional
service plugins.");
-W("The core will notify this lowest layer of the service of messages that have
arrived for the service.");
-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("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"));
-W("The %s implementation provides functions to send and receive messages via
TCP.",
- extlink_("doxygen/html/tcpio_8c-source.html","tcpio"));
-W("Note that the TCP connection between the application and <tt>gnunetd</tt>
is presumed to be totally secure (i.e. via loopback).");
-W("You can specify the list of trusted IP addresses (i.e. the LAN) that are
allowed to connect as clients to GNUnetd.");
-EP();
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking_testcases.php3
===================================================================
--- GNUnet-docs/WWW/hacking_testcases.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/hacking_testcases.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,76 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: writing testcases";
-$description="How to write testcases for GNUnet";
-include("html_header.php3");
-
-H2("Writing testcases for GNUnet");
-H3("Fundamentals");
-BP();
-W("Ideally, any non-trivial GNUnet code should be covered by automated
testcases.");
-W("Testcases should reside in the same place as the code that is being
tested.");
-W("The name of source files implementing tests should contain the word
<tt>test</tt>.");
-W("Typically it is desireable to have testcases both for low-level functions
and high-level abstractions.");
-W("For example, while the cryptographic functions would be tested as part of
the session key exchange, they should also still be tested independently.");
-EP();
-H3("Integration with GNU autotools");
-BP();
-W("Testcases in GNUnet should be integrated with the autotools build system.");
-W("This way, developers and anyone building binary packages will be able to
run all testcases simply by running <tt>make check</tt>.");
-W("The final testcases shipped with the distribution should output at most
some brief progress information and not display debug messages.");
-W("The success or failure of a testcase must be indicated by returning zero
(success) or non-zero (failure) from the main method of the testcase.");
-W("The integration with the autotools is relatively straightforward and only
requires modifications to the <tt>Makefile.am</tt> in the directory containing
the testcase.");
-W("For three testcases testing the code in <tt>foo.c</tt>, <tt>bar.c</tt> and
<tt>etc.c</tt>, the <tt>Makefile.am</tt> would contain the following lines:");
-EP();
-PRE("check_PROGRAMS = footest bartest etctest\n" .
- "TESTS = $(check_PROGRAMS)\n" .
- "footest_SOURCES = footest.c\n" .
- "footest_LDADD = $(top_builddir)/src/util/libgnunetutil.la\n" .
- "bartest_SOURCES = bartest.c\n" .
- "bartest_LDADD = $(top_builddir)/src/util/libgnunetutil.la\n" .
- "etctest_SOURCES = etctest.c\n" .
- "etctest_LDADD = $(top_builddir)/src/util/libgnunetutil.la\n");
-BP();
-W("Naturally, other libraries used by the testcase may be specified in the
<tt>LDADD</tt> directive as necessary.");
-P();
-W("Often testcases depend on additional input files, such as a configuration
file.");
-W("These support files have to be listed using the <tt>EXTRA_DIST</tt>
directive in order to ensure that they are included in the distribution.");
-W("Example:");
-EP();
-PRE("EXTRA_DIST = check.conf\n");
-BP();
-W("Executing <tt>make check</tt> will run all testcases in the current
directory and all subdirectories.");
-W("Testcases can be compiled individually by running <tt>make footest</tt> and
then invoked directly using <tt>./footest</tt>.");
-W("Note that due to the use of plugins in GNUnet, it is typically necessary to
run <tt>make install</tt> before running any testcases.");
-W("Thus the canonical command <tt>make check install</tt> has to be changed to
<tt>make install check</tt> for GNUnet.");
-EP();
-H3("Common problems and solutions");
-BP();
-W("When testing GNUnet, the splitting of the code into a daemon and clients
often complicates testing.");
-W("The solution to this is to have the testcase <tt>fork</tt> a
<tt>gnunetd</tt> process and then execute appropriate client actions (to test
the client APIs or the core module or both).");
-W("If necessary, multiple daemons can be forked using different ports (!) to
simulate a network.");
-W("However, most of the time only one <tt>gnunetd</tt> process is needed.");
-W("Also note that some client libraries were not written to communicate with
multiple daemons over multiple trusted TCP connections at the same time, which
may complicate testing in such situations.");
-W("Note that on exit, the testcase should shutdown <tt>gnunetd</tt> with a
kill signal.");
-W("The following code illustrates spawning and killing a <tt>gnunetd</tt>
process from a testcase:");
-EP();
-PRE("pid_t daemon; \n" .
- "daemon = GNUNET_daemon_start(NULL, cfg, \"peer.conf\", NO);\n" .
- "/* put actual testcode here */\n" .
- "if (daemon != -1) {\n" .
- " if (YES != GNUNET_daemon_stop(NULL, daemon))\n" .
- " DIE_STRERROR(\"kill\");\n" .
- "}\n");
-BP();
-W("An alternative way to just test modules (in particular if there is no
client API to start with) is to implement a mock-version of the GNUnet core API
and emulate a <tt>gnunetd</tt> environment for the module.");
-W("An example for this is the %s.",
- extlink_("doxygen/html/fragmentationtest_8c.html", "fragmentationtest.c"));
-P();
-W("Another uncommonly used alternative is to have the testcase process itself
load the modules by initiating the full <tt>gnunetd</tt> startup sequence.");
-W("For that, the testcase must link against <tt>libgnunetcore</tt>.");
-W("For an example see %s.",
- extlink_("doxygen/html/gnunet-transport-check_8c.html",
"gnunet-transport-check.c"));
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking_threading.php3
===================================================================
--- GNUnet-docs/WWW/hacking_threading.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/hacking_threading.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,73 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Threading in gnunetd";
-$description="This page describes the various threads that exist in gnunetd,
how to use them and common pitfalls that should be avoided";
-include("html_header.php3");
-
-H4("Threading and Synchronization");
-BP();
-W("GNUnet is inherently multi-threaded.");
-W("Thus writing applications for GNUnet requires taking synchronization issues
into account.");
-W("GNUnet provides a minimal set of threading abstractions in the %s module,
including semaphores, mutexes, recursive mutexes and thread creation.",
- extlink_("doxygen/html/semaphore_8c-source.html","semaphore"));
-W("When writing code for GNUnet, the following basic rules must be followed:");
-EP();
-echo "<ol><li><strong>";
-W("The core may call registered callback handlers at any time, and also
concurrently.");
-W("The application modules are responsible for synchronizing access to their
internal state properly.");
-echo "</strong>";
-W("In practice, client code will use <tt>GNUNET_mutex_create</tt> in
initializers and then guard access to mutable global shared state using
<tt>GNUNET_mutex_lock</tt> and <tt>GNUNET_mutex_unlock</tt>.");
-echo "</li><li><strong>";
-W("In order to avoid deadlocks, code that was called via callback from the
core may not invoke methods on the core while holding locks of the
application.");
-echo "</strong>";
-W("The rationale behind this rule is that the core may have a thread A that
holds an internal lock L and calls a callback on the service.");
-W("If simultaneously another thread B holds a lock S of the service and calls
back on the core, this may result in a deadlock if that callback blocks trying
to aquire lock L and thread A blocks trying to aquire lock S.");
-W("If thread A does not hold any internal locks when calling on the core, this
situation can be safely avoided.");
-BR();BR();
-W("Programming with this paradigm is not very difficult.");
-W("Still, it often requires a simple trick if the callback to the core
requires an argument that is typically kept in the shared global state.");
-W("The trick is to copy the shared global state into a local buffer while
holding the lock, then releasing the lock and finally doing the callback on the
core.");
-W("An example for this behavior can be found in the %s code.",
- extlink_("doxygen/html/querymanager_8c-source.html","querymanager"));
-W("Alternatively, the global lock from the connection module can be used to
lock on the application specific state; this global lock may be held while
entering the GNUnet kernel.");
-echo "</li><li><strong>";
-W("Core threads should never be blocked indefinitely.");
-echo "</strong>";
-W("The core has a limited number of processing threads, so blocking them
indefinitely will eventually block the node.");
-W("If clients (service modules in the core or applications connecting via TCP)
block these threads, the core will stop working.");
-W("Disk-IO is typically not problematic (though excessive synchronous random
IO operations may degrade performance significantly), and synchronization with
other threads is also no problem (as long as they do not deadlock).");
-W("Encryption operations are also not a problem.");
-W("The only problem in practice are <em>blocking socket operations</em>.");
-W("Blocking socket operations occur pretty much only apply to TCP sockets.");
-BR();BR();
-W("The TCP transport service avoids blocking operations using <tt>select</tt>
calls and IO buffers.");
-W("If a message can not be buffered (buffer full) and sending would block, the
TCP transport layer discards the message (or: why we like unreliable
operational semantics).");
-W("Client-server TCP connections are more problematic.");
-W("The reason for this is, that the client-server connection has reliable
semantics.");
-W("Thus the gnunetd %s code blocks on writes to the client.",
- extlink_("doxygen/html/cron_8c-source.html","tcpio"));
-W("Similarly, the client blocks when sending messages to gnunetd.");
-W("Since the client-server TCP connection is supposed to use a fast (loopback,
LAN) connection and since <tt>gnunetd</tt> uses a thread per client connection,
blocking briefly due to network latency on this connection is considered
acceptable.");
-W("However, a common problem with blocking on TCP connections with clients is
that it leaves the possibility of an <em>inter-process deadlock</em>.");
-BR();BR();
-W("The deadlock can occur if the TCP thread that receives and processes
messages from the client blocks on a write to the client (TCP buffer queue
full) and thus gnunetd no longer reads from the TCP pipe.");
-W("If the client blocks on a write to <tt>gnunetd</tt> and thus no longer
reads from its end of the TCP connection, both processes block forever.");
-W("This problem is typically hard to diagnose since it involves two processes
and may only occur after the TCP buffers of the operating system are full.");
-W("A typical symptom is that <tt>netstat -tn</tt> shows two local TCP
connections with very full receive and send buffers that do not change.");
-BR();BR();
-W("The solution to the problem is that every client (not peer, remember that
clients are trusted and can thus be expected to follow the protocol correctly)
must always be in a state where it has a thread that can receive and process
messages from <tt>gnunetd</tt>.");
-W("That thread should never block, neither by doing a direct write to
<tt>gnunetd</tt> nor by aquireing a lock that could be hold by another thread
while that thread writes to <tt>gnunetd</tt>.");
-W("A typical solution to this problem is to use one thread that processes
replies and another thread that generates requests.");
-W("Another solution is to use the non-blocking TCPIO call in the client.");
-W("The %s code is an example for code that handles this type of problem.",
- extlink_("doxygen/html/requestmanager_8c-source.html", "RequestManager"));
-echo "</li></ol>";
-
-H5("Notes");
-echo "<ul><li>";
-W("You should never use <tt>pthread_detach</tt>.");
-W("There is hardly ever a good reason for it, and it can be the source of
subtle bugs.");
-W("Write a shutdown-sequence for your code and make sure to use
<tt>GNUNET_thread_join</tt> on all created threads.");
-echo "</li></ul>";
-include("html_footer.php3");
-?>
\ No newline at end of file
Deleted: GNUnet-docs/WWW/hacking_ui.php3
===================================================================
--- GNUnet-docs/WWW/hacking_ui.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking_ui.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,16 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Writing a User-Interface";
-$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 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
Deleted: GNUnet-docs/WWW/hacking_util.php3
===================================================================
--- GNUnet-docs/WWW/hacking_util.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hacking_util.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,90 +0,0 @@
-<?php
-include("scripts.php3");
-$title="GNUnet Documentation - libgnunetutil";
-$description="Programmer documentation for libgnunetutil";
-include("html_header.php3");
-
-H2("libgnunetutil");
-BP();
-
-W("<tt>libgnunetutil</tt> is a helper library that is supposed to contain all
platform dependent code (except for user interfaces).");
-W("It is also supposed to offer basic services that most if not all GNUnet
binaries require.");
-W("The code of <tt>libgnunetutil</tt> is in the <tt>src/util/</tt>
directory.");
-W("The public interface to the library is in the %s header.",
- extlink_("doxygen/html/gnunet__util_8h.html",
- "gnunet_util.h"));
-W("The functions provided by <tt>libgnunetutil</tt> fall roughly into the
following categories:");
-EP();
-?>
-<ul>
- <li><?php extlink("doxygen/html/logging_8c.html",
- "logging");?></li>
-
- <li><?php extlink("doxygen/html/dso_8c.html",
- "plugin support (dynamically shared objects)");?></li>
-
- <li><?php extlink("doxygen/html/timer_8c.html",
- "timing");?></li>
- <li><?php extlink("doxygen/html/statuscalls_8c.html",
- "load management (network, CPU)");?></li>
-
- <li><?php extlink("doxygen/html/semaphore_8c.html",
- "threading and synchronization");?></li>
- <li><?php extlink("doxygen/html/cron_8c.html",
- "periodic or deferred tasks (cron jobs)");?></li>
- <li><?php extlink("doxygen/html/shutdown_8c.html",
- "signal handling");?></li>
-
- <li><?php extlink("doxygen/html/tcpio_8c.html",
- "Reliable (TCP), record-based client-server
communication");?></li>
- <li><?php extlink("doxygen/html/port_8c.html",
- "Connecting clients with <tt>gnunetd</tt>");?></li>
- <li><?php extlink("doxygen/html/daemon_8c.html",
- "External process control of <tt>gnunetd</tt> by
clients");?></li>
-
- <li><?php extlink("doxygen/html/random_8c.html",
- "random number generation");?></li>
- <li><?php extlink("doxygen/html/hashing_8c.html",
- "hashing");?></li>
- <li><?php extlink("doxygen/html/symcipher__gcry_8c.html",
- "symmetric encryption");?></li>
- <li><?php extlink("doxygen/html/hostkey__gcry_8c.html",
- "asymmetric encryption");?></li>
-
- <li><?php extlink("doxygen/html/xmalloc_8c.html",
- "memory management");?></li>
- <li><?php extlink("doxygen/html/configuration_8c.html",
- "configuration");?></li>
- <li><?php extlink("doxygen/html/storage_8c.html",
- "IO");?></li>
- <li><?php extlink("doxygen/html/state_8c.html",
- "persistent storage, trivial string-based database");?></li>
- <li><?php extlink("doxygen/html/bloomfilter_8c.html",
- "bloomfilter implementation (with on-disk bit
counters)");?></li>
-
-</ul>
-<?php
-
-BP();
-W("Ideally, porting GNUnet should only require porting the <tt>gnunetutil</tt>
library.");
-W("More testcases for the <tt>gnunetutil</tt> APIs are therefore a great way
to make porting of GNUnet easier.");
-EP();
-
-ANCHOR("crypto");
-H3("Cryptography");
-
-BP();
-W("The <tt>gnunetutil</tt> APIs provides 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 256-bit AES encryption.");
-W("Fresh, asymmetric 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("GNUnet uses SHA-512 for computing one-way hash codes.");
-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).");
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hacking_win32_build.php3
===================================================================
--- GNUnet-docs/WWW/hacking_win32_build.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/hacking_win32_build.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,297 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Building on Microsoft Windows 32-bit
Platforms";
-$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");
-BP();
-W("This document is a guide to building GNUnet and libextractor on Windows
platforms.");
-P();
-W("The Windows build uses a UNIX emulator for Windows, %s, to build the
executable modules.",
- extlink_("http://www.mingw.org/", "MinGW"));
-W("These modules run natively on Windows and do not require additional
emulation software besides the usual %s.",
- extlink_("download.php3", "dependencies"));
-P();
-W("GNUnet development is mostly done under Linux and especially SVN checkouts
may not build out of the box.");
-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")));
-EP();
-H4("Hardware and OS requirements");
-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>
- <?php BR();W("The software packages GNUnet depends on are usually
compressed using UNIX tools like tar,
- gzip and bzip2.");
- W("If you do not already have an utility that is able to extract such
archives, get %s.",
- extlink_("http://www.7-zip.org/", "7-Zip"));
- ?>
- </li>
- <li>
- <b><?php W("UNIX environment"); ?></b>
- <?php BR();
- W("The MinGW project provides the compiler toolchain that is used to build
GNUnet.");
- BR();
-
- W("Get the following packages from %s:",
extlink_("http://www.mingw.org/download.shtml", "the MinGW project")); ?>
- <ul>
- <li>GCC core</li>
- <li>GCC g++</li>
- <li>MSYS</li>
- <li>MSYS Developer Tool Kit (msysDTK)</li>
- <li>MSYS Developer Tool Kit - msys-autoconf (bin)</li>
- <li>MSYS Developer Tool Kit - msys-automake (bin)</li>
- <li>MinGW Runtime</li>
- <li>MinGW Utilities</li>
- <li>Windows API</li>
- <li>Binutils</li>
- <li>make</li>
- <li>pdcurses</li>
- <li>GDB (snapshot)</li>
- </ul>
- <ol>
- <li><?php W("Install MSYS (to c:\mingw, for example.)"); W("Do
<strong>not</strong> use spaces in the pathname (c:\program files\mingw).");
?></li>
- <li><?php W("Install MinGW runtime, utilities and GCC to a subdirectory
(to c:\mingw\mingw, for example)"); ?></li>
- <li><?php W("Install the Development Kit to the MSYS directory
(c:\mingw)"); ?></li>
- <li>
- <?php W("Create a batch file bash.bat in your MSYS directory
with the content:");BR();
- PRE("bin\sh.exe --login");
- W("This batch file opens a shell which is used to invoke the
build processes.");
- W("MinGW's standard shell (msys.bat) is not suitable because it
opens a separate console window
- for each compilation step.");
- W("On Vista, bash.bat needs to be run as administrator.");
- ?>
- </li>
- <li><?php W("Start bash.sh and rename (c:\mingw\mingw\)lib\libstdc++.la
to avoid problems:");
- BR();PRE("mv /usr/mingw/lib/libstdc++.la
/usr/mingw/lib/libstdc++.la.broken");
- ?>
- </li>
- <li><?php W("Unpack the Windows API to the MinGW directory
(c:\mingw\mingw\) and remove the declaration of DATADIR from
(c:\mingw\mingw\)include\objidl.h (lines 55-58)"); ?></li>
- <li><?php W("Unpack autoconf, automake to the MSYS directory
(c:\mingw)"); ?></li>
- <li><?php W("Install all other packages to the MinGW directory
(c:\mingw\mingw\)"); ?></li>
- </ol>
- </li>
- <li>
- <b><?php W("GNU Libtool"); ?></b>
- <?php BR();
- W("GNU Libtool is required to use shared libraries.");
- BR();
- W("Get the prebuilt package from %s and unpack it to the MinGW directory
(c:\mingw)",
- extlink_("download/win/libtool-1.5.18.zip", "here"));
- ?>
- </li>
- <li>
- <b><?php W("Pthreads"); ?></b>
- <?php BR();
- W("GNUnet uses the portable POSIX thread library for multi-threading.");
- BR();
- ?>
- <ol>
- <li><?php W("Save %s as libpthread.a into the lib directory
(c:\mingw\mingw\lib\libpthread.a)",
-
extlink_("ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/libpthreadGC2.a",
- "libpthreadGC2.a")); ?></li>
- <li><?php W("Save %s into the MinGW bin directory (c:\mingw\mingw\bin)",
-
extlink_("ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/pthreadGC2.dll",
- "pthreadGC2.dll")); ?></li>
- <li><?php W("Download all header files from %s to the include directory
(c:\mingw\mingw\include)",
-
extlink_("ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/include/",
- "include/")); ?></li>
- </ol>
- </li>
- <li>
- <b><?php W("GNU MP"); ?></b>
- <?php BR();
- W("GNUnet uses the GNU Multiple Precision library for special
cryptographic operations.");
- BR();
- W("Get the GMP binary package from the %s and unpack it to the MinGW
directory (c:\mingw\mingw)",
- extlink_("http://sourceforge.net/projects/mingwrep/", "MinGW
repository"));
- ?>
- </li>
- <li>
- <b><?php W("GNU Gettext"); ?></b>
- <?php BR();
- W("GNU gettext is used to provide national language support.");
- BR();
- W("Get the prebuilt package from %s and unpack it to the MinGW directory
(c:\mingw\mingw)",
- extlink_("download/win/gettext-0.17.zip", "here"));
- ?>
- </li>
- <li>
- <b><?php W("GNU iconv"); ?></b>
- <?php BR();
- W("GNU Libiconv is used for character encoding conversion.");
- BR();
- W("Get the prebuilt package from %s and unpack it to the MinGW directory
(c:\mingw\mingw)",
- extlink_("download/win/libiconv-1.9.1.zip", "here"));
- ?>
- </li>
- <li>
- <b><?php W("SQLite");?></b>
- <?php BR();W("GNUnet uses the SQLite database to store content.");BR();
- W("Get the prebuilt binary from %s and unpack it to your MinGW directory.",
- extlink_("http://www.gnunet.org/download/win32/sqlite.zip", "here"));
- ?>
- </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 (the latter is only
required for MySQL < 4.1.12) 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("gnunet-gtk and libextractor depend on GTK.");
- BR();
- W("Get the the binary and developer packages of atk, glib, gtk, iconv,
gettext-runtime, pango from %s and unpack it to the MinGW directory
(c:\mingw\mingw)",
- extlink_("ftp://ftp.gtk.org/pub/gtk/v2.6/win32", "gtk.org"));
- BR();
- W("Get pkg-config and libpng from %s and unpack them to the MinGW
directory (c:\mingw\mingw)",
- extlink_("Tor Lillqvist",
"http://www.gimp.org/~tml/gimp/win32/downloads.html"));
- BR();
- W("Do not overwrite any existing files!");
- ?>
- </li>
- <li>
- <b><?php W("Glade"); ?></b>
- <?php BR();
- W("gnunet-gtk and and gnunet-setup were created using this interface
builder.");
- BR();
- ?>
- <ul>
- <li>
- <?php
- W("Get the Glade and libglade (-bin and -devel) packages (without GTK!)
from %s and unpack it to the MinGW directory (c:\mingw\mingw)",
- extlink_("http://gladewin32.sourceforge.net", "GladeWin32"));
- ?>
- </li>
- <li>
- <?php
- W("Get libxml from %s and unpack it to the MinGW directory
(c:\mingw\mingw).",
- extlink_("download/win/libxml.zip", "here"));
- ?>
- </li>
- </ul>
- </li>
- <li>
- <b><?php W("zLib"); ?></b>
- <?php BR();
- W("libextractor requires zLib to decompress some file formats. GNUnet uses
it to (de)compress meta-data.");
- BR();
- W("Get zLib from %s (%s) and unpack it to the MinGW directory
(c:\mingw\mingw)",
- ARRAY(extlink_("download/win/zlib.zip", "here"),
extlink_("download/win/zlib.zip.asc", "Signature")));
- ?>
- </li>
- <li>
- <b><?php W("Bzip2"); ?></b>
- <?php BR();
- W("libextractor also requires Bzip2 to decompress some file formats.");
- BR();
- W("Get Bzip2 (binary and developer package) from %s and unpack it to the
MinGW directory (c:\mingw\mingw)",
- extlink_("http://gnuwin32.sourceforge.net/packages/bzip2.htm",
"GnuWin32"));
- ?>
- </li>
- <li>
- <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/win32/libgcrypt-1.2.2.zip", "here"),
- extlink_("download/win32/libgcrypt-1.2.2.zip.asc", "Signature")));
- ?>
- </li>
- <li>
- <b><?php W("PlibC"); ?></b>
- <?php BR();
- W("PlibC emulates Unix functions under Windows.");
- BR();
- W("Get PlibC from %s and unpack it to the MinGW directory
(c:\mingw\mingw)",
-
extlink_("https://sourceforge.net/project/showfiles.php?group_id=137319",
"here"));
- ?>
- </li>
- <li>
- <b><?php W("OGG Vorbis");?></b>
- <?php BR();W("OGG Vorbis is used to extract meta-data from .ogg
files");BR();
- W("Get the packages %s and %s and unpack them to the MinGW directory
(c:\mingw\mingw)",
-
ARRAY(extlink_("http://www.gnunet.org/libextractor/download/win/libogg-1.1.4.zip",
"libogg"),
-
extlink_("http://www.gnunet.org/libextractor/download/win/libvorbis-1.2.3.zip",
"libvorbis")));
- ?>
- </li>
- <li>
- <b><?php W("Exiv2");?></b>
- <?php BR();W("(lib)Exiv2 is used to extract meta-data from files with
Exiv2 meta-data");BR();
- W("Download %s and unpack it to the MSYS directory (c:\mingw)",
-
extlink_("http://www.gnunet.org/libextractor/download/win/exiv2-0.18.2.zip",
"Exiv2"));
- ?>
- </li>
-</ol>
-<?php H4("Building libextractor and GNUnet");
-BP();
-W("Before you compile libextractor or GNUnet, be sure to set
PKG_CONFIG_PATH:");
-P();
-PRE("export PKG_CONFIG_PATH=/mingw/lib/pkgconfig");
-P();
-W("See %s for basic instructions on building libextractor and GNUnet.",
- extlink_("user_gnunet.php3",
- "Installation"));
-P();
-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:");
-P();
-PRE("CFLAGS='-O2 -march=pentium -fomit-frame-pointer' ./configure
--prefix=\$HOME --with-extractor=\$HOME");
-EP();
-H4("Installer");
-BP();
-W("The GNUnet installer is made with %s.",
extlink_("http://nsis.sourceforge.net/",
- "NSIS"));
-W("The installer script is located in contrib\win in the GNUnet source tree.");
-EP();
-H4("Source");
-BP();
-W("The sources of all dependencies are available %s.",
- extlink_("download/win/3rd_party_sources.tar",
- "here"));
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/hostlist.php
===================================================================
--- GNUnet-docs/WWW/hostlist.php 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/hostlist.php 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,24 +0,0 @@
-<?php
-// Requires PHP >= 4.3.0
-// Author: "Krasko Oleksandr" <address@hidden>
-// Minor improvements by Christian Grothoff <address@hidden>
-header("Content-Type: application/octet-stream\r\n\r\n");
-$extmas = array('2','3','4','5','6','8');
-$path = '/home/gnunet/.gnunet/data/hosts/'; // adjust as necessary
-$dir = opendir($path);
-if (! $dir)
- die("Cannot open directory $path.\n");
-$mas = array();
-while ($fname = readdir($dir)) {
- $fn = $path . '/' . $fname;
- if (is_file($fn)) {
- $dpo = strpos($fname, '.') + 1;
- $len = strlen($fname);
- if (in_array(substr($fname, $dpo - $len), $extmas))
- $mas[] = $fn;
- }
-}
-shuffle($mas); // randomize order
-foreach ($mas as $val)
- echo file_get_contents($val);
-?>
Deleted: GNUnet-docs/WWW/html_footer.php3
===================================================================
--- GNUnet-docs/WWW/html_footer.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/html_footer.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,30 +0,0 @@
-<?php
-if (! $no_footer) {
- P();
- if ($menu != "NO") {
- HR();
- $menu_once = 0;
- menu_bar();
- }
- HR();
- PRE("Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Christian
Grothoff.\n" .
- "Verbatim copying and distribution of this entire article\n" .
- "is permitted in any medium, provided this notice is preserved.");
- BR();
- generateFooter();
- if ($haveNBO) {
- HR();
- H2("Footnotes");
- ANCHOR("NBO");H3("NBO - network byte order");
- BP();
- W("Fields of this type are in network byte order.");
- W("Before reading these fields, they must be converted to host byte" .
- " order using <tt>htons</tt> for 2-byte values, <tt>htonl</tt> for
4-byte values" .
- " and <tt>htonll</tt> for 8-byte values.");
- W("Before writing to these fields, the value must be converted using" .
- " <tt>ntohs</tt>, <tt>ntohl</tt> and <tt>ntohll</tt> respectively.");
- EP();
- }
- echo "</body></html>\n";
- }
-?>
Deleted: GNUnet-docs/WWW/html_header.php3
===================================================================
--- GNUnet-docs/WWW/html_header.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/html_header.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,51 +0,0 @@
-<?php
-DOCTYPE("HTML", "Transitional");
-echo "<html><head>\n";
-$haveNBO = 0;
-if ($title) {
- TITLE($title);
- } else {
- TITLE("GNUnet");
- }
-if ($description) {
- echo "<meta name=\"description\" content=\"";
- TRANSLATE($description);
- echo "\">";
- }
-?>
-<meta name="author" content="Christian Grothoff">
-<meta name="keywords"
content="GNUnet,distributed,anonymous,p2p,sharing,accounting,accountability,denyability,backup,freenet,file,decentralized,free,GNU,Linux,GPL">
-<meta name="robots" content="index,follow">
-<meta name="revisit-after" content="28 days">
-<?php
-echo "<meta name=\"content-language\" content=\"" . $languagecodes[$lang] .
"\">";
-echo "<meta name=\"language\" content=\"" . $languagecodes[$lang] . "\">";
-?>
-<meta name="publisher" content="Christian Grothoff">
-<meta name="date" content="2004-12-19">
-<?php
-if ($author)
- echo "<meta name=\"rights\" content=\"(C)
2001,2002,2003,2004,2005,2006,2007,2008,2009,2010 by $author\">";
-else
- echo "<meta name=\"rights\" content=\"(C)
2001,2002,2003,2004,2005,2006,2007,2008,2009,2010 by Christian Grothoff\">";
-?>
-<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="icon" href="favicon.ico" type="image/x-icon">
-<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
-<link rel=stylesheet type="text/css" href="gnunet.css">
-</head>
-<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
-<?php
- if ($menu != "NO") {
- include("menu.php3");
-?>
-<div id="lang-menu">
-<?php
- generateLanguageBar();
-?>
-</div>
-<?php
- }
-?>
Deleted: GNUnet-docs/WWW/irc.php3
===================================================================
--- GNUnet-docs/WWW/irc.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/irc.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1 +0,0 @@
-<?php header('Location:
http://embed.mibbit.com/?server=irc.freenode.net&channel=%23gnunet&noServerNotices=true&noServerMotd=true');
?>
\ No newline at end of file
Deleted: GNUnet-docs/WWW/links.php3
===================================================================
--- GNUnet-docs/WWW/links.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/links.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,115 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: Links";
-$description="Related projects.";
-include("html_header.php3");
-
-H2("GNUnet worldwide");
-echo "<ul>";
-LILI("http://uk.gnunet.org/", "UK: GNUnet hostlist and various tips");
-LILI("http://de.gnunet.org/", "DE: GNUnet hostlist");
-LILI("http://freshmeat.net/projects/gnunet/", "GNUnet on freshmeat");
-LILI("http://packages.debian.org/gnunet", "GNUnet Debian package");
-LILI("/freeway/", "freeway (GNUnet port to Java)");
-LILI("http://yunta.dainet.pl/programming/gnuweb/", "WWW interface for GNUnet");
-LILI("http://sourceforge.net/projects/s-n-a-g/", "Social Networking
Application for GNUnet");
-echo "</ul>";
-
-H2("GNUnet related projects");
-echo "<ul>";
-LILI("/libextractor/", "libextractor");
-LILI("/libmicrohttpd/", "libmicrohttpd");
-LILI("http://metalinks.sourceforge.net/", "metalinks");
-echo "</ul>\n";
-
-H2("Other p2p Networks");
-echo "<ul>\n";
-LILI("http://www.i2p.net/","I2P");
-LILI("http://freenetproject.org/","Freenet");
-LILI("http://crisp.cs.du.edu/pitchblack/","See also: Pitch Black");
-LILI("http://tor.eff.org/","The Onion Router (TOR)");
-LILI("http://www.turtle4privacy.org/", "Turtle");
-LILI("http://mute-net.sourceforge.net/","Mute");
-LILI("http://gift.sf.net/","giFT");
-LILI("http://freepastry.org/","FreePastry");
-LILI("http://invisibleip.sourceforge.net/iip/","Anonymous P2P Chat");
-LILI("http://mnet.sourceforge.net/","Mnet");
-LILI("http://www.stealthnet.de/","StealthNet");
-LILI("http://crisp.cs.du.edu/youRShare/","See also: StealthNet decloaked");
-LILI("http://www.freehaven.net/","Freehaven");
-LILI("http://entropy.stop1984.com/","Entropy");
-LILI("http://cs1.cs.nyu.edu/~waldman/publius/","Publius");
-LILI("http://www.distributed.net","Distributed.Net");
-echo "</ul>\n";
-H2("Relevant Conferences");
-BP();
-W("Note that the list excludes security conferences that have a broader
focus.");
-EP();
-echo "<ul>\n";
-LILI("http://petworkshop.org/",
- "PET (Privacy Enhancing Technologies)");
-LILI("http://www.iptps.org/",
- "International Workshop on Peer-To-Peer Systems");
-LILI("http://www.ieee-security.org/TC/SP-Index.html",
- "IEEE Symposium on Security and Privacy");
-LILI("http://p2pecon.cs.cornell.edu/",
- "Workshop on the Economics of Peer-to-Peer Systems");
-LILI("www.ics.mq.edu.au/conferences/acisp2007/",
- "Australasian Conference on Information Security and Privacy");
-LILI("http://www.ieee-security.org/TC/SP-Index.html",
- "IEEE Symposium on Security and Privacy");
-LILI("http://ih07.irisa.fr/",
- "Information Hiding Workshop");
-echo "</ul>\n";
-
-
-H2("Mailinglists");
-echo "<ul>\n";
-LILI("http://zgp.org/mailman/listinfo/p2p-hackers",
- "P2P Hackers mailinglist");
-echo "</ul>\n";
-
-H2("Other related work");
-echo "<ul>\n";
-LILI("http://freehaven.net/anonbib/date.html",
- "Anonymity Research bibliography");
-LILI("http://www.cl.cam.ac.uk/~rja14/econsec.html",
- "Economics and Security Resource Page");
-LILI("http://www.bittorrent.com/","BitTorrent");
-LILI("http://mixminion.net/","Mixminion");
-LILI("http://mixmaster.sourceforge.net/","Mixmaster");
-LILI("http://www.advogato.org/trust-metric.html",
- "Avogadro another system based on trust to keep malicious participants in
check");
-LILI("http://www.cs.umd.edu/projects/nice/",
- "NICE, peer-to-peer research project (still in the early stages)");
-LILI("http://www.open-content.net/specs/draft-jchapweske-thex-02.html",
- "Tree Hash EXchange format (THEX)");
-LILI("http://www.laas.fr/~lcourtes/ludo-1.html",
- "Ludovic Courtes PhD Thesis on "Cooperative Data Backup for Mobile
Devices" (with on-line bibliography covering many P2P topics)");
-echo "</ul>\n";
-
-H2("Praise & Press");
-BP();
-W("Note that these articles were all written independently and most of the
time without any feedback from the GNUnet developers.");
-W("Some contain some serious mistakes.");
-EP();
-echo "<ul>\n";
-LILI("http://www.golem.de/0204/19103.html",
- "Golem.de");
-LILI("http://www.kuro5hin.org/story/2002/6/3/185643/7148",
- "kuro5hin");
-LILI("http://www.infoanarchy.org/story/2002/4/1/5152/25842",
- "infoanarchy");
-LILI("http://www.gnu.org/brave-gnu-world/issue-40.en.html",
- "Brave GNU World");
-LILI("http://www.heise.de/newsticker/data/jk-28.03.03-003/",
- "Heise reporting about PET 2003");
-LILI("http://lwn.net/Articles/61329/",
- "LWN");
-LILI("http://www.root.cz/clanek/2551",
- "Article about GNUnet on root.cz");
-LILI("http://lwn.net/Articles/162190/",
- "Linux Weekly News");
-echo "</ul>";
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/mailinglist.php3
===================================================================
--- GNUnet-docs/WWW/mailinglist.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/mailinglist.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,92 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: Contact";
-$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");
-BP();
-W("GNUnet uses %s as a community content management system.",
- extlink_("/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.");
-EP();
-
-H2("Bugtrack");
-BP();
-W("GNUnet uses Mantis for bugtracking.");
-W("Visit %s to report bugs.",
- extlink_("/mantis/","/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();
-W("If you dislike Mantis and need to report a bug via E-mail, you can use the
standard GNU way by sending mail to %s.",
- extlink_("mailto:address@hidden","address@hidden"));
-EP();
-
-H2("Mailinglists");
-BP();
-echo "<dl><dt>";
-extlink("http://mail.gnu.org/mailman/listinfo/gnunet-developers","Developers");
-echo "</dt><dd>";
-W("This mailinglist is used for developer communication.");
-W("Signing up is easy, send good patches and you get Subversion access, too.");
-echo "</dd><dt>";
-extlink("http://mail.gnu.org/mailman/listinfo/help-gnunet","Users");
-echo "</dt><dd>";
-W("<tt>help-gnunet</tt> is a mailinglist that is intended as a discussion
forum for users, such that they can help other users.");
-W("Some developers usually also hang around to help.");
-echo "</dd><dt>";
-extlink("http://mail.gnu.org/mailman/listinfo/info-gnunet","Announcements");
-echo "</dt><dd>";
-W("If you just want to receive announcements of new versions, you can
subscribe to a strictly moderated mailinglist.");
-W("Only developers can post announcements for new releases of GNUnet related
software on this list.");
-W("All other mail will be discareded.");
-W("This list is not for discussions or bug reports!");
-echo "</dd><dt>";
-extlink("http://mail.gnu.org/mailman/listinfo/gnunet-svn","Diffs");
-echo "</dt><dd>";
-W("This mailinglist is used to instantly publish all commits to the %s.",
- extlink_("https://gnunet.org/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.");
-W("Do not send patches to this list, send them to the developer mailinglist
instead!");
-echo "</dd></dl>";
-EP();
-
-H2("Other Discussion Forums");
-BP();
-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("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"));
-EP();
-
-H2("Chat");
-BP();
-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>.");
-EP();
-
-H2("Public Keys");
-BP();
-W("Use these %s to send encrypted mails to the GNUnet developers and to verify
authenticity and integrity of mails and files.",
- extlink_("http://en.wikipedia.org/wiki/Public_key", "public keys"));
-echo "<dl><dt>Christian Grothoff</dt><dd>";
-extlink("http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE5D02E42",
"0xE5D02E42 (old)");
-extlink("http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x48426C7E",
"0x48426C7E (new)");
-echo "</dd><dt>Nils Durner</dt><dd>";
-extlink("http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x09F4A1E1",
"0x09F4A1E1");
-echo ", ";
-extlink("http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x3D23F25D",
"0x3D23F25D");
-echo "</dd></dl>";
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/menu.php3
===================================================================
--- GNUnet-docs/WWW/menu.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/menu.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,58 +0,0 @@
-<?php
-if (! $menu_once) {
- $menu_once = 1;
-?>
-<div id="fsflinks">
- <ul>
- <li><a href="http://www.gnu.org">GNU</a></li>
- <li><a href="http://www.fsf.org">FSF</a></li>
- <li><a href="http://www.fsfeurope.org/">FSF Europe</a></li>
- <li><a href="http://fsf.org.in/">FSF India</a></li>
- <li><a href="http://www.fsfla.org">FSF Latin America</a></li>
- </ul>
-</div>
-<div id="searcher">
- <form method="post" action="search.php">
- <div><label for="words">Search:</label>
- <input type="hidden" name="method" id="method" value="and" />
- <input name="words" id="words" type="text" size="20" accesskey="4" />
- <input type="submit" value="Go" />
- </div>
- </form>
- <p> </p>
-</div>
-<div id="top2">
-<table bgcolor="#3F4C6B" border="0" cellpadding="0" cellspacing="0"
height="58" width="100%">
- <tr>
- <td colspan="4" height="10" nowrap="nowrap" valign="middle">
- </td>
- </tr>
- <tr>
- <td width="15">
-
- </td>
- <td height="1" nowrap="nowrap" valign="middle">
- <font class="title">GNUnet</font>
- <br />
- <font class="subtitle">
- <?php
- W("GNU’s decentralized anonymous
and censorship-resistant P2P framework.");
- ?>
- </font>
-
- </td>
- <td align="right" valign="top">
-<?php
- gnunetlogo();
-?>
- </td>
- <td width="10">
-
- </td>
- </tr>
-</table>
-<?php
- menu_bar();
- }
-?>
-</div>
Deleted: GNUnet-docs/WWW/old_news.php3
===================================================================
--- GNUnet-docs/WWW/old_news.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/old_news.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,32 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet";
-$description="GNUnet: older news";
-include("html_header.php3");
-
-H2("News archive");
-BP();
-W("The archive dates back until February 2003.");
-W("Before then, news were not archived.");
-EP();
-echo "<dl>\n";
-
-$query = "SELECT title,include,posted FROM news " .
- "ORDER BY posted DESC";
-$result = mysql_query($query, $connection);
-$num = 0;
-if ($result) {
- $num = mysql_numrows($result);
-}
-for ($i=0;$i<$num;$i++) {
- $row = mysql_fetch_array($result);
- $pd = $row["posted"];
- echo "<dt>" . strtok($pd, " ") . ": " . W_($row["title"]) . "</dt>\n";
- echo "<dd>\n";
- include("news/" . $row["include"]);
- echo "</dd>\n";
-}
-echo "</dl>\n";
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/papers.php3
===================================================================
--- GNUnet-docs/WWW/papers.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/papers.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,599 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet papers and related work";
-$description = "GNUnet papers and related work";
-include("html_header.php3");
-H2("Papers about GNUnet");
-gnunetlogo();
-
-function bibEntry($link, $title, $authors, $description) {
- echo "<dt><dt>";
- extlink($link, $title);
- echo "</dt><dd>";
- echo " ";
- $length = count($authors);
- foreach($authors as $i=>$author) {
- echo "$author";
- if ($i == $length-2) {
- echo " ";
- W("and");
- }
- else if ($i < $length-2)
- echo ", ";
- }
- BR();
- echo "<font class=desc>\n";
- W($description);
- echo "</font>\n";
-}
-
-echo "<dl>\n";
-DT("An Encoding for Censorship-Resistant Sharing (%s)",
- ARRAY(extlink_("download/ecrs.ps","ps"),
- extlink_("download/ecrs.pdf","pdf")));
-echo "<dd>"; echo "Christian Grothoff, Krista Grothoff, Tzvetan Horozov ";
W("and"); echo " J. T. Lindgren";
-BR();
-echo "<font class=desc>\n";
-W("The paper describes the encoding of content for the file-sharing layer of
<em>GNUnet</em>.");
-W("We describe an array of techniques to encode content such that it can be
easily distributed, searched for and retrieved.");
-W("The encryption scheme allows users to insert the same content under
multiple keys; yet multiple keys lead to practically identical copies in the
system, reducing storage requirements.");
-W("Keys can be chosen from natural language and can be combined to boolean
queries.");
-W("Queries and content can not be decrypted by intermediaries without guessing
the key.");
-W("Nevertheless, intermediaries can verify that a reply answers a query.");
-W("The encoding of the content produces many small <em>blocks</em>, which can
be easily distributed over several hosts.");
-W("This allows the network to balance load.");
-W("The paper describes how to optimize lookups and extends the scheme with
directories and namespaces.");
-echo "</font>\n";
-echo "</dd>\n";
-
-DT("A Transport Layer Abstraction for Peer-to-Peer Networks (%s) %s",
- ARRAY(extlink_("download/transport.ps","ps"),
- extlink_("http://www.lri.fr/~fci/GP2PC/", "GP2PC 2003")));
-echo "<dd>";
-echo "Ronaldo Ferreira, Christian Grothoff "; W("and"); echo " Paul Ruth";
-BR();
-echo "<font class=desc>\n";
-W("This paper describes the transport abstraction used by GNUnet.");
-W("It describes the SMTP implementation in detail, in particular the security
considerations that occur when using this protocol.");
-W("The paper also compares the performance of the UDP, TCP and SMTP
transport.");
-echo "</font>\n";
-echo "</dd>\n";
-
-DT("An Excess-Based Economic Model for Resource Allocation in Peer-to-Peer
Networks (%s, %s), %s %s.",
- ARRAY(extlink_("download/ebe.ps","ps"),
- extlink_("download/ebe.pdf","pdf"),
- extlink_("http://www.wirtschaftsinformatik.de/","WI"),
-
extlink_("http://www.wirtschaftsinformatik.de/wi_artikel.php?sid=917","3’2003")));
-echo "<dd>"; echo "Christian Grothoff";
-BR();
-echo "<font class=desc>\n";
-W("This paper describes the economic model behind GNUnet.");
-W("We describe how accountability is achieved in an anonymous network.");
-W("Our economy is based on trust, and is used only for resource allocation.");
-BR();
-W("Our economic model is less powerful and much simpler than most schemes for
digital cash.");
-W("Unlike schemes for digital cash, we do not require a trusted authority.");
-echo "</font>\n";
-echo "</dd>\n";
-
-DT("A Quick Introduction to Bloom Filters (%s, %s)",
- ARRAY(extlink_("download/bloomfilter.ps","ps"),
- extlink_("download/bloomfilter.pdf","pdf")));
-echo "<dd>"; echo "Christian Grothoff";
-BR();
-echo "<font class=desc>\n";
-W("This paper gives a brief description of the bloom filter data structure.");
-BR();echo "</font>\n";
-P();
-W("Bloom filters are used in GNUnet for fast set tests that must be performed
for each query.");
-echo "</dd>";
-afslogo();
-
-DT("gap -- practical anonymous networking (%s, %s, %s), %s.",
- ARRAY(extlink_("download/aff.ps","ps"),
- extlink_("download/aff.pdf","pdf"),
- extlink_("download/pet/","slides"),
- extlink_("http://petworkshop.org/","PET 2003")));
-echo "<dd>"; echo " Krista Bennett "; W("and"); echo " Christian Grothoff";
-BR();
-echo "<font class=desc>\n";
-W("This paper describes how anonymity is achieved in GNUnet, a framework for
anonymous distributed and secure networking.");
-BR();
-W("We describe a new scheme for anonymous transfer of data which achieves
better anonymity guarantees than traditional indirection schemes and is more
efficient.");
-W("While the building blocks of our technique used to achieve anonymity are
identical to previous work, we offer a new perspective on how to achieve
anonymity.");
-echo "</font>\n";
-echo "</dd>\n";
-
-DT("Bootstrapping of Peer-to-Peer Networks (%s), %s.",
- ARRAY(extlink_("download/bootstrap.pdf","pdf"),
- extlink_("http://das-p2p.wide.ad.jp/","DAS P2P 2008")));
-echo "<dd>"; echo " Chris GauthierDickey "; W("and"); echo " Christian
Grothoff";
-BR();
-echo "<font class=desc>\n";
-W("This paper describes how large peer-to-peer systems could be bootstrapped
in a fully decentralized manner.");
-BR();
-W("While this maybe implemented in GNUnet in the future, we currently still
use hostlists due to the limited size of the network (the above approach only
works well for larger, established P2P networks).");
-echo "</font>\n";
-echo "</dd>\n";
-
-DT("An Analysis of GNUnet and the Implications for Anonymous,
Censorship-Resistant Networks (%s), %s.",
- ARRAY(extlink_("papers/GNUnet_pet.pdf","pdf"),
- extlink_("http://petworkshop.org/","PET 2003")));
-echo "<dd>";echo "Dennis Kügler";
-BR();
-echo "<font class=desc>\n";
-W("This paper describes attacks on GNUnet’s anonymous file sharing.");
-W("The author analyzes a statistical attack with an active adversary that is
able to correlate queries (for example, by being the responder).");
-W("The paper also describes a censorship attack using an adversary that
legally requires every peer to provide for every transmitted block a
certificate issued by the government that shows that it is legal to share the
block.");
-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 & 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), %s",
- ARRAY(extlink_("download/esed.ps","ps"),
- extlink_("download/esed.pdf","pdf"),
- extlink_("http://www.cm.deakin.edu.au/ACISP’02/","ACISP 2002")));
-echo "<dd>"; echo "Krista Bennett, Christian Grothoff, Tzvetan Horozov ";
W("and"); echo " Ioana Patrascu";
-BR();
-echo "<font class=desc>\n";
-W("<strong>This paper is now obsolete.</strong>");
-W("It has been superceeded by %s.",
- extlink_("download/ecrs.pdf", "ECRS"));
-W("The paper describes the encryption of content for the file-sharing layer of
<em>GNUnet</em>.");
-W("We describe a new technique to encode content such that it can be easily
distributed, searched for and retrieved.");
-W("The encryption scheme allows users to insert the same content under
multiple keys; yet multiple keys lead to practically identical copies in the
system, reducing storage requirements.");
-W("Keys can be chosen from natural language and can be combined to boolean
queries.");
-W("Queries and content can not be decrypted by intermediaries without guessing
the key.");
-W("Nevertheless, intermediaries can verify that a reply answers a query.");
-W("The encoding of the content produces many small <em>GBlocks</em>, which can
be easily distributed over several hosts.");
-W("This allows the network to balance load.");
-W("Single hosts are never hit with requests that take a long time to
process.");
-BR();
-echo "</font>\n";
-P();
-W("Since this paper was written, GNUnet has made some more progress in
addressing some of the issues with ESED.");
-W("The current "state of the art" is detailed on the %s.",
- extlink_("encoding.php3","encoding page"));
-echo "</dd>\n";
-DT("The GNet Whitepaper (%s or %s)",
- ARRAY(extlink_("download/main.ps","ps"),
- extlink_("download/main.pdf","pdf")));
-echo "<dd>"; echo "Krista Bennett, Christian Grothoff, Tzvetan Horozov, Ioana
Patrascu ";
-W("and");
-echo " Tiberius Stef";
-BR();
-echo "<font class=desc>\n";
-W("In this paper, we describe the design and implementation of GNet.");
-W("The methods used for authentication, anonymization, distribution and
ranking are described.");
-W("This paper is the initial design document, it is severely out-of-date.");
-echo "</font>\n";
-echo "</dd>";
-echo "</dl>\n";
-
-HR();
-
-
-H2("Related Work");
-H3("Protocols for Anonymity");
-echo "<dl>";
-bibEntry("papers/p84-chaum.pdf",
- "Untraceable Electronic Mail, Return Addresses, and Digital
Pseudonyms",
- ARRAY("David Chaum"),
- "The fundamental paper on onion routing and mixes.");
-bibEntry("papers/pipenet.txt",
- "Pipenet",
- ARRAY("Wei Dai"),
- "A theoretical concept for an anonymous network based on pipes
between nodes that carry constant amounts of traffic.");
-bibEntry("papers/tmAnon.ps",
- "Towards measuring anonymity",
- ARRAY("Claudia Diaz", "Stefaan Seys", "Joris Claessens", "Bart
Preneel"),
- "This paper describes why it is insufficient to just compute
probabilities for the anonymity set. The authors propose to use entropy, the
number of bits of additional information that the adversary needs to break
anonymity, as the metric for how anonymous a given system is.");
-bibEntry("papers/set.ps",
- "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"),
- "This paper describes a general attack that degrades anonymity in all
session-based anonymous networks, including Crowds, Onion Routing and Mix-Nets.
The main problem is that over time an attacker can learn the identity of the
originator if the adversary can accumulate statistical information on a
connection and correlate it with the sender.");
-bibEntry("papers/shields_apfs.ps",
- "Responder Anonymity and Anonymous Peer-to-Peer File Sharing",
- ARRAY("Vincent Scarlata", "Brian Levine", "Clay Shields"),
- "Extention of Crowds, Hords or Onion routing to achieve responder
anonymity using proxies or multicast. The multicast solution has similar
problems as P5. The paper than goes on implementing a FastTrack style service
on top of the anonymous network. Where is the implementation?");
-bibEntry("papers/p32-reiter.pdf",
- "Anonymous Webtransactions with Crowds",
- ARRAY("Michael Reiter", "Aviel Rubin"),
- "Slides. Think of a Crowd as a self-organized cascade of anonymizing
proxies.");
-bibEntry("papers/j8.ps","Crowds: Anonymity for Web Transactions",
- ARRAY("Aviel Rubin"),
- "Crowds is a system that allows anonymous web-surfing. For each
host, a random static path through the crowd is formed that then acts as a
sequence of proxies, indirecting replies and responses. Vulnerable when facing
adversaries that can perform traffic analysis at the local node and without
responder anonymity. But highly scalable and efficient.");
-bibEntry("papers/cliquenet-iptp.pdf",
- "CliqueNet: A Self-Organizing, Scalable, Peer-to-Peer Anonymous
Communication Substrate",
- ARRAY("Emin Sirer", "Milo Polte", "Mark Robson"),
- "Cliques are small (3-5) groups of nodes that form a DC-Net. The
paper is vague how the larger network is formed, how to deal with small mobs
(2-4) that collaborate in a clique, how to do addressing or the distributed
database.");
-bibEntry("papers/goldschlag99onion.ps",
- "Onion Routing for Anonymous and Private Internet Connections",
- ARRAY("David Goldschlag", "Michael Reed ", "Paul Syverson"),
- "A brief introduction to onion routing.");
-bibEntry("papers/traffic-analysis-attacks-and.ps",
- "Traffic Analysis Attacks and Trade-Offs in Anonymity Providing
Systems",
- ARRAY("Adam Back", "Ulf Möller", "Anton Stiglic"),
- "");
-bibEntry("papers/fault.ps",
- "Fault Tolerant Anonymous Channel",
- ARRAY("Wakaha Ogata", "Kaoru Kurosawa", "Kazue Sako", "Kazunori
Takatani"),
- "This paper describes a zero-knowledge proof that a mix in onion
routing can perform in order to proof that it did route the messages properly.
This allows the deployment of a mix-net where malicious mixes can be detected
without using dummy-traffic to probe for correctness. Technical.");
-bibEntry("papers/gt95.ps",
- "Mixing Email with Babel",
- ARRAY("Ceki Gülcü", "Gene Tsudik"),
- "");
-bibEntry("papers/shields00protocol.ps",
- "A Protocol for Anonymous Communication Over the Internet",
- ARRAY("Clay Shields", "Brian Neil Levine"),
- "Variant of Crowds using multicast for the reply. Since multicast is
anonymity at the expense of potentially many others and also can not be
implemented over TCP (must be UDP), this is probably often worse than the
original Crowds system.");
-bibEntry("papers/p5.ps",
- "P<sup>5</sup>: A Protocol for Scalable Anonymous Communication",
- ARRAY("Rob Sherwood", "Bobby Bhattacharjee ", "Aravind Srinivasan"),
- "Onion routing for sender anonymity, limited broadcast for receiver
anonymity. Nodes can choose to be more anonymous at the expense of other nodes
receiving more traffic. The design uses lots of public key operations and
noise.");
-bibEntry("papers/tarzan-iptps.ps",
- "Introducing Tarzan, a Peer-to-Peer Anonymizing Network Layer",
- ARRAY("Michael Freedman", "Emil Sit", "Josh Cates", "Robert Morris"),
- "");
-//tarzan.ps!
-bibEntry("papers/mixminion.ps",
- "Mixminion: Design of a Type III Anonymous Remailer",
- ARRAY("George Danezis", "Roger Dingledine", "David Hopwood ", "Nick
Mathewson"),
- "Onion routing revisited. With use-once reply blocks for replies to
anonymous senders. Note that the use-once is implemented by making the nodes
keep track of previous messages. The paper describes nicely all the nifty
little extentions and attacks that have been developed around the original
mixing schemes.");
-bibEntry("papers/BD.pdf",
- "Buses for Anonymous Message Delivery",
- ARRAY("Amos Beimel", "Shlomi Dolev"),
- "Applies graph theory to anonymity. The paper suffers from the
fundamental problem that it does not discuss attacks on the scheme, and there
are a couple of pretty basic ways to break anonymity. Also, the scheme uses
lots of traffic; some variants end up looking much like a pipenet.");
-bibEntry("papers/goldberg97taz.ps",
- "TAZ Servers and the Rewebber Network. Enabling Anonymous Publishing
on the World Wide Web",
- ARRAY("Ian Goldberg ", "David Wagner"),
- "");
-bibEntry("papers/k-anonymous.ps",
- "k-Anonymous Message Transmission",
- ARRAY("Luis von Ahn", "Andrew Bortz", "Nicholas J. Hopper"),
- "");
-bibEntry("papers/Anon_Terminology_v0.18.pdf",
- "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>";
-
-H3("Routing");
-echo "<dl>";
-bibEntry("papers/pitchblack.pdf",
- "Routing in the Dark: Pitch Black",
- ARRAY("Nathan S. Evans and Chris GauthierDickey and Christian
Grothoff"),
- "Attack on the routing protocol of Freenet 0.7.");
-bibEntry("papers/swroute.pdf",
- "Distributed routing in Small World Networks",
- ARRAY("Oskar Sandberg"),
- "Theoretical basis for the routing protocol of Freenet 0.7.");
-bibEntry("papers/chord.ps",
- "Chord: A scalable peer-to-peer lookup service for Internet
applications",
- ARRAY("Ion Stoica", "Robert Morris", "Davit Karger", "Frans
Kaashoek", "Hari Balakrishnan"),
- "Description of an efficient scheme to locate resources in a
distributed, dynamic network. Resources are mapped into a cyclic address
space. Each host in the network is associated with a point in that cyclic
address space. Content is hosted at the host(s) that is (are) closest to its
address. The routing table size is O(log n). The maximum search path is also
O(log n) if no nodes fail.");
-bibEntry("papers/pastry.ps",
- "Pastry: Scalable, decentralized object location and routing for
large-scale peer-to-peer systems",
- ARRAY("Antonz Rowstron", "Peter Druschel"),
- "Like Chord, Pastry is a distributed hash table (DHT) with O(log n)
entries in the routing table and a lookup path of O(log n). Pastry has more
freedom in building the routing table and can thus take proximity into account,
making the lookup even faster.");
-bibEntry("papers/location.pdf",
- "Exploting network proximity in peer-to-peer overlay networks",
- ARRAY("Miguel Castro", "Peter Druschel", "Charlie Hu", "Antony
Rowstron"),
- "The authors give an overview over various ways to use proximity
information to optimize routing in peer-to-peer networks. Their study focuses
on Pastry and describe in detail the protocols that are used in Pastry to build
routing tables with neighbours that are close in terms of the underlying
network. They give some analytical and extensive experimental evidence that
the protocols are effective in reducing the length of the routing-path in terms
of the link-to-link latency that their implementation uses to measure
distance.");
-bibEntry("papers/tapestry_CSD-02-1178.pdf",
- "Distributed Data Location in a Dynamic Network",
- ARRAY("Kirsten Hildrum", "John Kubiatowicz", "Satish Rao", "Ben
Zhao"),
- "Another DHT with O(log n) entries in the routing table and a lookup
path of O(log n).");
-bibEntry("papers/can.pdf",
- "A Scalable Content-Addressable Network",
- ARRAY("Sylvia Ratnasamy", "Paul Francis", "Mark Handley", "Richard
Karp", "Scott Shenker"),
- "CAN is a distributed hash table (DHT) that routes messages in an
d-dimensional space on the shortest path to the node closest to to the hash.
As opposed to Chord, Pastry and Tapestry, the routing table does not grow with
the number of nodes. On the other hand, the search path can be longer than log
n.");
-bibEntry("papers/building-low-diameter-p.ps",
- "Building Low-Diameter P2P Networks",
- ARRAY("Gopal Pandurangan", "Prabhakar Raghavan", "Eli Upfal"),
- "Scheme to build dynamic, distributed P2P networks of constant degree
and logarithmic diameter.");
-bibEntry("papers/coral-iptps03.ps",
- "Sloppy hashing and self-organizing clusters",
- ARRAY("Michael J. Freedman", "David Mazieres"),
- "");
-bibEntry("papers/CameraReady_174.pdf",
- "Dynamic Load Balancing in Distributed Hash Tables",
- ARRAY("Marcin Bienkowski", "Miroslaw Korzeniowski", "Friedhelm Meyer
auf der Heide"),
- "");
-echo "</dl>";
-
-H3("Searching in Peer-to-Peer networks");
-echo "<dl>";
-bibEntry("papers/planetp.pdf",
- "PlanetP: Using Gossiping to Build Content Addressable Peer-to-Peer
Information Sharing Communities",
- ARRAY("Francisco Matias Cuenca/Acuna", "Christopher Peery", "Richard
P. Martin", "Thu D. Nguyen"),
- "PlanetP is a peer-to-peer system in which searching content is done
mostly locally. Every peer knows which content is available at which other
peers. The index information is represented compactly using bloom filters and
distributed throughout the network using push and pull mechanisms.");
-bibEntry("papers/searching_in_encrypted_data.pdf",
- "Practical Techniques for Searches on Encrypted Data",
- ARRAY("Dawn Xiaodong Song", "David Wagner", "Adrian Perrig"),
- "");
-bibEntry("papers/JXTAsearch.pdf",
- "JXTA Search: Distributed Search for Distributed Networks",
- ARRAY("Steve Waterhouse"),
- "");
-bibEntry("papers/heimbigner00adapting.ps",
- "Adapting Publish/Subscribe Middleware to Achieve Gnutella-like
Functionality",
- ARRAY("Dennis Heimbinger"),
- "");
-bibEntry("papers/publickeykeywordsearch.pdf",
- "Public Key Encryption with keyword Search",
- ARRAY("Dan Boneh", "Giovanni Di Crescenzo"),
- "");
-bibEntry("papers/secureindex.pdf",
- "Secure Indexes",
- ARRAY("Eu-Jin Goh"),
- "");
-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");
-echo "<dl>";
-bibEntry("papers/hall01algorithms.ps",
- "On Algorithms for Efficient Data Migration",
- ARRAY("Joseph Hall", "Jason Hartline", "Anna R. Karlin", "Jared
Saia", "John Wilkes"),
- "");
-bibEntry("papers/farsite.pdf",
- "Reclaiming Space from Duplicate Files in a Serverless Distributed
File System",
- ARRAY("John R. Douceur", "Atul Adya", "William J. Bolosky", "Dan
Simon", "Marvin Theimer"),
- "");
-bibEntry("papers/farsite-replication.pdf",
- "Competitive Hill-Climbing Strategies for Replica Placement in a
Distributed File System",
- ARRAY("John R. Douceur", "Roger P. Wattenhofer"),
- "");
-bibEntry("papers/p2pmulti.pdf",
- "Replication Strategies in Unstructured Peer-to-Peer Networks",
- ARRAY("E. Cohen", "S. Shenker"),
- "The paper sets out to solve the problem to find the optimal amount to
which a piece of content should be replicated in a peer-to-peer network based
on random search. The authors use a statistical approach to proof that the
optimal content replication strategy is replication proportional to the
square-root of the query rate. They then describe various distributed
algorithms that achieve this replication rate. Interestingly, Freenet (and
GNUnet) use one of these algorithms, content replication on the reply-path.");
-echo "</dl>";
-
-H3("Censorship Resistant Publishing");
-echo "<dl>";
-bibEntry("papers/IHW-CR.pdf",
- "Censorship Resistance Revisited",
- ARRAY("Ginger Perng", "Michael K. Reiter", "Chenxi Wang"),
- "This paper proposes a formal model for censorship resistance. Given
their model of an attacker, the authors show that censorship resistance
requires private information retrieval (PIR), which has a complexity of O(n)
for updates and queries. They demonstrate that almost none of the previously
proposed systems is censorship resistant in this model. This is particularly
interesting for GNUnet, despite the paper not mentioning GNUnet at all, for
three reasons. First, the given formal notion of censorship resistance closely
corresponds to what the content encoding in GNUnet (ECRS) is supposed to
achieve. Secondly, the paper shows that for an adversary that is capable of
guessing keywords (or content), PIR is required. Note that PIR is not
practically feasible due to the O(n) cost associated with it. On the other
hand, if the adversary did not have the ability to mount a successful guessing
attack, the model matches the ECRS model used by GNUnet exactly. Given this type
of atta
cker, ECRS then delivers censorship resistance (in accordance with the model
presented in this paper) with O(1) complexity. Unfortunately, the paper ignores
this weaker attacker model as well as ECRS in its discussion. Nevertheless, the
discussion of what censorship resistance means as well as the critique of other
existing systems makes this paper an important contribution in the field of
censorship resistant publishing.");
-bibEntry("papers/tangler.ps",
- "Tangler: A Censorhsip-Resistant Publishing System Based On Document
Entanglements",
- ARRAY("Marc Waldman", "David Mazieres"),
- "The basic idea is to protect documents by making it impossible to
remove one document from the system without loosing others. The underlying
assumption that the adversary cares about collateral damage of this kind is a
bit far fetched. Also, the entanglement doubles the amount of data that needs
to be moved to retrieve a document.");
-bibEntry("papers/eternity.ps",
- "The Eternity Service",
- ARRAY("Ross Anderson"),
- "Proposal for a system that allows storing content anonymously with
defenses against attacks. Already a classic.");
-bibEntry("papers/fiat01censorship.ps",
- "Censorship Resistant Peer-to-Peer Content Addressable Networks",
- ARRAY("Amos Fiat", "Jared Saia"),
- "");
-bibEntry("papers/server_anonymity.ps",
- "Anonymizing Censorship Resistant Systems",
- ARRAY("Andrei Serjantov"),
- "");
-bibEntry("papers/redblue.pdf",
- "The Economics of Censorship Resistance",
- ARRAY("George Danezis", "Ross Anderson"),
- "");
-bibEntry("papers/publius.pdf",
- "Publius: A robust, tamper-evident, censorship-resistant web
publishing system",
- ARRAY("Mare Waldman", "Aviel Rubin", "Lorrie Cranor"),
- "Censorship-resistance is accomplished by secret sharing, signing and
redundant storage.");
-echo "</dl>";
-
-H3("Accounting and Trust");
-echo "<dl>";
-bibEntry("papers/Accountability-in-P2P-Democracy.ps",
- "Accountability in P2P Democracy",
- ARRAY("Mandar Kelaskar"),
- "Great slides from a presentation that gives an overview on problems
and current approaches to accountability in peer-to-peer networks.");
-bibEntry("papers/LCN.ps",
- "Anonymity in Electronic Commerce",
- ARRAY("Yiannis Tsiounis"),
- "Slides why we need anonymous digital cash.");
-bibEntry("papers/micro-ecash.ps",
- "Micropayments and Anonymous E-Cash",
- ARRAY("Yiannis Tsiounis"),
- "Slides about digital cash with minimal transaction costs suitable for
micropayments.");
-bibEntry("papers/UWM.ps",
- "Balancing Privacy and Accountability",
- ARRAY("Yiannis Tsiounis"),
- "More about anonymous digital cash and why we need anonymity.");
-bibEntry("papers/electronic_cash_thesis.ps",
- "Efficient Electronic cash: New Notions and Techniques",
- ARRAY("Yiannis Tsiounis"),
- "Ph. D. Thesis.");
-bibEntry("papers/anonymity_control_ecash.ps",
- "Anonymity Control in E-Cash Systems",
- ARRAY("George Davida", "Yair Frankel", "Yiannis Tsiounis", "Moti
Yung"),
- "");
-bibEntry("papers/HubauxBC01a.ps",
- "The Quest for Security in Mobile Ad Hoc Networks",
- ARRAY("Jean-Pierre Hubaux", "Levente Buttyan", "Srdan Capkun"),
- "A survey paper giving an introduction to security issues in
distributed, dynamic networks. This paper lists the major security issues and
common paradigms to address them. For their public key infrastructure model,
see for comparrisson the original work on the PGP web of trust.");
-bibEntry("papers/trust_economies.pdf",
- "Trust Economies in the Free Haven Project",
- ARRAY("Brian Sniffen"),
- "Bachelor Thesis.");
-bibEntry("papers/econws02.ps",
- "On the Economics of Anonymity",
- ARRAY("Roger Dingledine", "Paul Syverson"),
- "");
-bibEntry("papers/jxtatrust.pdf",
- "Poblano: A Distributed Trust Model for Peer-to-Peer Networks",
- ARRAY("Rita Chen", "William Yeager"),
- "");
-bibEntry("papers/ppay.pdf",
- "PPay: Micropayments for Peer-to-Peer Systems",
- ARRAY("Beverly Yang", "Hector Garcia-Molina"),
- "");
-bibEntry("papers/accountability-ch16.html",
- "Peer-To-Peer: Harnessing the Power of Disruptive Technologies,
Chapter 16: Accountability",
- ARRAY("Roger Dingledine", "Michael J. Freedman", "David Molnar"),
- "");
-bibEntry("papers/casc-rep.ps",
- "Reliable MIX Cascade Networks through Reputation",
- ARRAY("Roger Dingledine", "Paul Syverson"),
- "How to detect that a Mix (E-mail anonymizer) failed to deliver.");
-bibEntry("papers/mix-acc.ps",
- "A Reputation System to Increase MIX-net Reliability",
- ARRAY("Roger Dingledine", "Michael J. Freedman", "David Hopwood",
"David Molnar"),
- "");
-bibEntry("papers/incentives_for_sharing.ps",
- "Incentives for Sharing in Peer-to-Peer Networks",
- ARRAY("Philippe Golle", "Kevin Leyton-Brown", "Ilya Mironov", "Mark
Lillibridge"),
- "");
-bibEntry("papers/incentives-for-cooperation-in.pdf",
- "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");
-echo "<dl>";
-bibEntry("papers/H021153.PDF",
- "DVD COPY CONTROL ASSOCIATION vs. ANDREW BUNNER",
- ARRAY("Court of Appleal of the State of California, Sixth Appellate
District"),
- "");
-echo "</dl>";
-
-H3("Systems");
-echo "<dl>";
-bibEntry("papers/a-measurement-study-of.ps",
- "A Measurement Study of Peer-to-Peer File Sharing Systems",
- ARRAY("Stefan Saroiu", "P. Krishna Gummadi", "Steven Gribble"),
- "Comparrisson between Napster and Gnutella (network topology, host
characteristics, etc.).");
-bibEntry("papers/freenet.pdf",
- "A Distributed Decentralized Information Storage and Retrieval
System",
- ARRAY("Ian Clarke"),
- "Ph.D. Thesis.");
-bibEntry("papers/icsi-revised.ps",
- "Freenet: A Distributed Anonymous Information Storage and Retrieval
System",
- ARRAY("Ian Clarke", "Oskar Sandberg", "Brandon Wiley", "Theodore
Hong"),
- "");
-bibEntry("papers/freehaven10.ps",
- "The Free Haven Project: Design and Deployment of an Anonymous Secure
Data Haven",
- ARRAY("Roger Dingledine"),
- "Master Thesis.");
-bibEntry("papers/dingledine00free.ps",
- "The Free Haven Project: Distributed Anonymous Storage Service",
- ARRAY("Roger Dingledine", "Michael Freedman", "David Molnar"),
- "Description of an anonymous publication system with accounting.");
-bibEntry("papers/jxta_whitepaper.pdf",
- "Project JXTA: An Open, Innovatie Collaboration",
- ARRAY("Sun Microsystems"),
- "Sun is building a p2p framework.");
-bibEntry("papers/herbivore-esigops.pdf",
- "Eluding Carnivores: File Sharing with Strong Anonymity",
- ARRAY("Emin Gün Sirer", "Sharad Goel", "Mark Robson", "Dogan
Engin"),
- "");
-bibEntry("papers/freehaven-ch12.html",
- "Peer-To-Peer: Harnessing the Power of Disruptive Technologies --
Chapter 12: Free Haven",
- ARRAY("Roger Dingledine", "Michael J. Freedman", "David Molnar"),
- "Description of the problems that arise when one tries to combine
anonymity and accountability. Note that the Free Haven design described here
charges for storing data in the network (downloads are free), whereas in GNUnet
adding data is free and only the downloads are considered as utilization.");
-bibEntry("papers/gnutella_protocol.pdf",
- "The Gnutella Protocol Specification v0.4",
- ARRAY("Clip2"),
- "A brief description of the gnutella protocol.");
-bibEntry("papers/mojonation.pdf",
- "Experiences Deploying A Large-Scale Emergent Network",
- ARRAY("Bryce Wilcox-O Hearn"),
- "Describes the authors experiences with MojoNation..");
-bibEntry("papers/Dan_Klinedinst_GSEC.pdf",
- "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>";
-
-H3("Transports");
-echo "<dl>";
-bibEntry("papers/infranet.ps",
- "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
"legitimate" 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.");
-bibEntry("papers/4616.0.109-bauer.ps",
- "New Covert Channels in HTTP",
- ARRAY("Matthias Bauer"),
- "");
-echo "</dl>";
-
-H3("Publish-Subscribe");
-echo "<dl>";
-bibEntry("papers/scribe.pdf",
- "Scribe: A large-scale and decentralized application-level multicast
infrastructure",
- ARRAY("M. Castro", "Peter Druschel", "A. Kermarrec", "A. Rowstron"),
- "The paper describes an implementation of a publish-subscribe system
on top of Pastry. The paper presents a simple interface and a message routing
algorithm that is inverting Pastry’s lookup algorithm. The authors
provide extensive amounts of empirical measurements of their implementation of
the approach on various network topologies and group sizes.");
-bibEntry("papers/herald.pdf",
- "Herald: Achieving a Global Event Notification Service",
- ARRAY("L. Cabrera", "M. Jones", "M. Theimer"),
- "The paper describes the design goals (and non-goals) of a scalable,
peer-to-peer event notification system. Its primary contribution is a
comprehensive listing of the problems that any such system will face, such as
unreliable or malicious peers or the requirement for heuristics that
automatically make reasonable choices for degrees of replication.");
-bibEntry("papers/debs04perng.pdf",
- "Providing content-based services in a peer-to-peer environment",
- ARRAY("Ginger Perng", "Chenxi Wang", "Michael K. Reiter"),
- "");
-echo "</dl>";
-
-H3("Other");
-echo "<dl>";
-bibEntry("papers/p422-bloom.pdf",
- "Space/Time Trade-offs in Hash Coding with Allowable Errors",
- ARRAY("Burton Bloom"),
- "The original paper on Bloom filters. The author describes how this
probabilistic datastructure can be used to speed up dictionary lookups. This is
pretty much what libextractor is doing for the dictionary-based
<tt>printable</tt> plugins.");
-bibEntry("papers/ccs02.ps",
- "A Reputation-Based Approach for Choosing Reliable Resources in
Peer-to-Peer Networks",
- ARRAY("Ernesto Damiani", "De Capitani di Vimercati", "Stefano
Paraboschi", "Pierangela Samarati", "Fabio Violante"),
- "");
-bibEntry("papers/privacy-gratification.pdf",
- "Privacy in Electronic Commerce and the Economics of Immediate
Gratification",
- ARRAY("Alessandro Acquisti"),
- "");
-bibEntry("papers/goldreich98secure.ps",
- "Secure Multi-Party Computation",
- ARRAY("Oded Goldreich"),
- "");
-echo "</dl>";
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/philosophy.php3
===================================================================
--- GNUnet-docs/WWW/philosophy.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/philosophy.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,233 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Copyright and Philosophy";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring
anonymous file sharing with an excess based trust-economy";
-include("html_header.php3");
-/*
-Add HTML
-describing structure:
-Copyright, Design Goals & Philo, Concepts
-*/
-
-ANCHOR("copyright");
-H3("Copyright and Contributions");
-BP();
-W("GNUnet is part of the %s.",
- extlink_("http://www.gnu.org/","GNU project"));
-W("All code contributions must thus be put under the %s.",
- extlink_("http://www.gnu.org/copyleft/gpl.html", "GNU Public License
(GPL)"));
-W("All documentation should be put under FSF approved licenses (see %s).",
- extlink_("http://www.gnu.org/copyleft/fdl.html","fdl"));
-W("GNU standards and the %s should be adhered to.",
- extlink_("http://www.gnu.org/philosophy/philosophy.html","GNU philosophy"));
-
-EP();
-
-ANCHOR("goals");
-H3("Design Goals and Philosophy");
-
-BP();
-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.");
-W("GNUnet should be more than just another file-sharing network.");
-W("The plan is to offer many other services and in particular to serve as a
development platform for the next generation of decentralized Internet
protocols.");
-EP();
-
-ANCHOR("Privacy");
-H4("Privacy");
-BP();
-W("GNUnet’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.");
-EP();
-
-ANCHOR("Versatility");
-H4("Versatility");
-BP();
-W("We call GNUnet a peer-to-peer framework 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.");
-EP();
-
-
-ANCHOR("Practicality");
-H4("Pracicality");
-
-BP();
-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.");
-
-P();
-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();
-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.");
-W("Many designs (e.g. anonymity via broadcast) fail to give users an incentive
to choose a less secure but more efficient mode of operation.");
-W("GNUnet should avoid wherever 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.");
-EP();
-
-ANCHOR("concepts");
-H3("Concepts");
-
-BP();
-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.");
-EP();
-
-gnunetlogo();
-H4("Authentication");
-
-BP();
-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 256-bit AES.");
-W("A each peer independently generates such a session key for the data that
this peer will transmit to the other peer.");
-W("As only the two participating hosts know the two session keys, this
authenticates each packet without requiring signatures each time.");
-W("GNUnet uses SHA-512 hash codes to verify the integrity of messages.");
-
-P();
-W("In GNUnet, the identity of a host is the (SHA-512) 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.");
-
-P();
-
-W("GNUnet uses a special type of message to communicate a binding between
public (RSA) keys to their current network address.");
-W("These messages are commonly called HELOs or peer advertisements.");
-W("They contain the public key of the peer and a signature with its current
network address for a specific transport service.");
-W("A transport service is a special kind of shared library that enables
unreliable, out-of-order message delivery between peers.");
-W("For the UDP and TCP transport services, a network address is an IP and a
port.");
-W("GNUnet can also use other transports (HTTP, SMTP, etc.) which use various
other forms of addresses.");
-W("Note that any node can have many different active transport services at the
same time, and each of these can have a different address.");
-W("Binding messages expire after at most a week (the timeout can be shorter if
the user configures the node appropriately).");
-W("This expiration ensures that the network will eventually get rid of
outdated advertisements.");
-W("More details can be found in %s.",
- extlink_("download/transport.ps", "this paper"));
-
-
-EP();
-H4("Accounting to Encourage Resource Sharing");
-
-BP();
-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.");
-
-P();
-
-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’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"));
-
-EP();
-H4("Confidentiality");
-
-BP();
-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 pair of keys 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")));
-
-
-EP();
-afslogo();
-ANCHOR("anonymity");
-H4("Anonymity");
-
-BP();
-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("Anonymity is never absolute.");
-W("While there are various %s that can help quantify the level of anonymity
that a given mechanism provides, there is no such thing as complete anonymity.",
- extlink_("papers/tmAnon.ps", "scientific metrics"));
-W("GNUnet allows users to select for each operation (publish, search,
download) the desired level of anonymity.");
-W("The metric used is the amount of cover traffic available to hide the
request.");
-W("While this metric is not as good as the theoretical metric given in %s, it
is probably the best metric available to a peer with a purely local view of the
world that does not rely on unreliable external information.",
- extlink_("papers/tmAnon.ps", "scientific metrics"));
-W("The default anonymity level is 1, which uses anonymous routing but imposes
no minimal requirements on cover traffic.");
-W("It is possible to forego anonymity when this is not required.");
-W("The anonymity level of 0 allows GNUnet to use more efficient, non-anonymous
routing.");
-EP();
-
-H5("How GNUnet achieves Anonymity");
-
-BP();
-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("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.");
-
-P();
-
-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 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, in anonymous file-sharing as implemented on top of
GNUnet we do not have to indirect the replies if we don’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.");
-W("More details can be found in %s.",
- extlink_("download/aff.ps", "this paper"));
-
-
-EP();
-ANCHOR("deniability");
-H4("Deniability");
-
-BP();
-W("Even if the user that downloads data and the server that provides data are
anonymous, the intermediaries may still be targets.");
-W("In particular, if the intermediaries can find out which queries or which
content they are processing, a strong adversary could try to force them to
censor certain materials.");
-
-P();
-
-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("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>).");
-
-W("More details can be found in %s.",
- extlink_("download/ecrs.ps", "this paper"));
-
-EP();
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol.php3
===================================================================
--- GNUnet-docs/WWW/protocol.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/protocol.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,43 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Protocols";
-$description="Overview over the GNUnet protocol families.";
-include("html_header.php3");
-
-H2("The Protocols");
-BP();
-W("GNUnet uses protocols in three different contexts.");
-EP();
-echo "<ol><li>";
-W("The first and most important protocol family is the peer-to-peer
protocol.");
-W("This protocol defines how nodes in the network exchange information with
each other.");
-W("The peer-to-peer protocol defines messages for peer discovery, encryption,
availability and other, application specific messages.");
-W("All peers in the network must support a certain core subset of the
peer-to-peer messages.");
-W("The peer-to-peer messages are exchanged between <tt>gnunetd</tt>
processes.");
-W("The mechanisms of exchange are encapsulated in the <em>transport</em>
services.");
-echo "</li><li>";
-W("The second protocol family is the client-server protocol.");
-W("The client-server protocol is used between <tt>gnunetd</tt> and the GNUnet
tools.");
-W("Since <tt>gnunetd</tt> is a deamon process that runs in the background, the
user must be able to interact with <tt>gnunetd</tt>.");
-W("GNUnet uses a TCP connection, typically via loopback, to allow GNUnet
clients to send requests to <tt>gnunetd</tt>.");
-W("For these clients, the GNUnet tools, <tt>gnunetd</tt> acts as a server, and
not as a peer.");
-W("Note that GNUnet clients are ultimately trusted.");
-W("GNUnet does not encrypt the TCP traffic between client and server since
this connection should only ever be allowed either via loopback or on a trusted
LAN.");
-W("Which hosts are allowed to connect as clients to <tt>gnunetd</tt> is
specified in the configuration file.");
-echo "</li><li>";
-W("The third family of GNUnet protocols is used in the transport layer.");
-W("The transport layer encapsulates the sending and receiving of peer-to-peer
messages.");
-W("Every GNUnet peer must support at least one transport protocol.");
-W("Transport protocols differ in performance, system requirements and
ease-of-use.");
-W("Each transport protocol also defines its own format for a host address.");
-W("Host addresses can be anything from a simple IP:PORT combination to an http
URL or an E-mail address.");
-W("While a single peer can have as many addresses as transports, every peer is
uniquely identified by its identity, which is the hash of its public key.");
-echo "</li></ol>";
-
-H2("Overview");
-BP();
-W("The protocols are described in the following sections:");
-EP();
-include("protocol_index.inc");
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_cs.php3
===================================================================
--- GNUnet-docs/WWW/protocol_cs.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/protocol_cs.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,30 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Client-Server Protocol";
-$description="Description of the protocol used for GNUnet client-server
communication.";
-include("html_header.php3");
-
-ANCHOR("CSprotocol");H3("GNUnet Protocol: client-to-node");
-BP();
-W("This section describes the protocol that is used on the
<strong>trusted</strong>, reliable TCP connection between <tt>gnunetd</tt> and
the clients (such as <tt>gnunet-insert</tt>, <tt>gnunet-search</tt>,
<tt>gnunet-download</tt> or <tt>gnunet-gtk</tt>).");
-W("TCP is stream oriented, but GNUnet breaks the stream into records.");
-W("The different messages between GNUnet and the clients all have the
following basic format:");
-EP();
-LAYOUT("GNUNET_MessageHeader",
- F(ARRAY(N("message size", NBO_()) => 2,
- N("request type", NBO_()) => 2,
- N("(size - 4) bytes of data", "") => 0)));
-BP();
-W("The message type constants are defined in <tt>gnunet_protocols.h</tt> and
all have names starting with <tt>GNUNET_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("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).");
-P();
-W("See also %s.",
- extlink_("doxygen/html/tcpio_8c-source.html","tcpio.c"));
-
-W("The following groups of client-server messages are currently documented:");
-EP();
-include("protocol_cs_index.inc");
-include("html_footer.php3");
-?>
\ No newline at end of file
Deleted: GNUnet-docs/WWW/protocol_cs_afs.php3
===================================================================
--- GNUnet-docs/WWW/protocol_cs_afs.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_cs_afs.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,173 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: File-Sharing Client-to-Node protocol";
-$description="Protocol between client and node for (anonymous) file sharing";
-include("html_header.php3");
-
-H3("GNUnet Protocol: client-to-node: File Sharing");
-BP();
-afslogo();
-W("The file-sharing procotol currently defines the following messages between
client and server:");
-EP();
-echo "<ul>\n";
-LILI("#CS_QUERY","QUERY_START");
-LILI("#CS_RESULT","RESULT");
-LILI("#CS_INSERT","INSERT");
-LILI("#CS_INDEX","INDEX");
-LILI("#CS_DELETE","DELETE");
-LILI("#CS_UNINDEX","UNINDEX");
-LILI("#CS_TESTINDEX","TESTINDEX");
-LILI("#CS_INIT_INDEX","INIT_INDEX");
-echo "</ul>\n";
-
-ANCHOR("CS_QUERY");H4("QUERY_START");
-BP();
-W("The client sends a message of this form whenever it is searching or
downloading.");
-W("The server is expected to perform the search and send results back to the
client.");
-W("The server can send any number of results with any delay.");
-W("The client can stop searching by closing the connection.");
-W("If the server closes the connection, the client will need to re-send the
search request using a new connection to continue searching.");
-W("This should only happen if the server is restarted by the user.");
-W("The format of the message is:");
-EP();
-LAYOUT("CS_fs_request_search_MESSAGE",
- F(ARRAY(N("message size (144 or 208)", NBO_()) => 2,
- V("request type", 8, NBO_()) => 2,
- V("reserved", 0, NBO_()) => 4,
- N("type", NBO_()) => 4,
- N("anonymity level", NBO_()) => 4,
- N("target (if known, otherwise all zeros)", "") => 64,
- N("query", "") => 64,
- N("namespace (optional)", "") => 64)));
-
-
-ANCHOR("CS_RESULT");H4("RESULT");
-BP();
-W("If <tt>gnunetd</tt> finds a search result to a %s, it sends back the data
encapsulated in this message.",
- extlink_("#CS_QUERY","QUERY_START"));
-W("The format of the message is:");
-EP();
-LAYOUT("CS_fs_reply_content_MESSAGE",
- F(ARRAY(N("message size (4+X)", NBO_()) => 2,
- V("request type", 9, NBO_()) => 2,
- N("anonymity level (of content, 0 for unknown)", NBO_()) => 4,
- N("data (ECRS encoded)", "") => 0)));
-
-ANCHOR("CS_INSERT");H4("INSERT");
-BP();
-W("Clients send this message to insert data into the network.");
-W("The server is supposed to store the data and share it with other nodes.");
-W("Note that there are two ways to share data, via insertion and via %s.",
- extlink_("#CS_INDEX","indexing"));
-W("Indexing only applies to downloads and never to search results.");
-W("The importance in this message tells the server how important it is to
store this content, so that the server can decide which content to discard if
it is running out of space.");
-P();
-W("If the insertion was successful, the server replies with a %s containing
<tt>OK</tt>, otherwise the server replies with <tt>SYSERR</tt>.",
- intlink_("protocol_cs_core.php3","RETURN_VALUE"));
-P();
-W("The format of the message is:");
-EP();
-LAYOUT("CS_fs_request_insert_MESSAGE",
- F(ARRAY(N("message size (20+X)", NBO_()) => 2,
- V("request type", 10, NBO_()) => 2,
- V("reserved", 0, NBO_()) => 4,
- N("priority", NBO_()) => 4,
- N("anonymity level", NBO_()) => 4,
- N("expiration (cron_t)", NBO_()) => 8,
- N("data (ECRS encoded)", "") => 0)));
-
-ANCHOR("CS_INDEX");H4("INDEX");
-BP();
-W("Clients send this message to index content to make it available to the
network.");
-W("The indexing message does not only contain the data but also describes a
way for the server to possibly find it on-demand.");
-W("This is achieved using the <tt>file ID</tt>, a hash of the entire file.");
-W("This hash thus uniquely identifies the file.");
-W("The client should send an <tt>INDEX_INIT</tt> message earlier that tells
the server the location of a file with that hash in the filesystem.</tt>");
-W("If <tt>gnunetd</tt> can access that file, it will create a symbolic link
instead of copying <tt>data</tt> into its internal database.");
-W("If <tt>gnunetd</tt> cannot access the file, it will create a copy of the
file using the <tt>data</tt> contained in the <tt>INDEX</tt> messages.");
-W("In both cases <tt>gnunetd</tt> will store an index of the file in its
database in order to be able to retrieve the blocks on-demand.");
-P();
-W("If the indexing was successful, the server replies with a %s containing
<tt>OK</tt>, otherwise the server replies with <tt>SYSERR</tt>.",
- intlink_("protocol_cs_core.php3","RETURN_VALUE"));
-W("The format of the message is:");
-EP();
-LAYOUT("CS_fs_request_index_MESSAGE",
- F(ARRAY(N("message size (92+X)", NBO_()) => 2,
- V("request type", 11, NBO_()) => 2,
- V("reserved", 0, NBO_()) => 4,
- N("priority", NBO_()) => 4,
- N("anonymity level", NBO_()) => 4,
- N("expiration (cron_t)", NBO_()) => 8,
- N("offset of data in file", NBO_()) => 8,
- N("file ID (SHA-512 of entire file)", "") => 64,
- N("data (X bytes in plaintext)", "") => 0)));
-
-
-ANCHOR("CS_DELETE");H4("DELETE");
-BP();
-W("This message is used by clients to request the deletion of specific content
by <tt>gnunetd</tt> from the local datastore.");
-W("The format of the message is:");
-EP();
-LAYOUT("CS_fs_request_delete_MESSAGE",
- F(ARRAY(N("message size (4+X)", NBO_()) => 2,
- V("request type", 12, NBO_()) => 2,
- V("reserved", 0, NBO_()) => 4,
- N("data (ECRS encoded)", "") => 0)));
-
-
-ANCHOR("CS_UNINDEX");H4("UNINDEX");
-BP();
-W("This message is used to request the removal of an entire indexed file from
the database of <tt>gnunetd</tt>.");
-W("<tt>gnunetd</tt> will use the original file to reconstruct the individual
blocks stored in the index.");
-W("For that, <tt>gnunetd</tt> needs to know the <tt>blocksize</tt> that was
used during the construction of the original index.");
-W("The format of the message is:");
-EP();
-LAYOUT("CS_fs_request_unindex_MESSAGE",
- F(ARRAY(N("message size (72)", NBO_()) => 2,
- V("request type", 13, NBO_()) => 2,
- N("blocksize", NBO_()) => 4,
- N("file ID (SHA-512 of entire file)", "") => 64)));
-
-
-ANCHOR("CS_TESTINDEX");H4("TESTINDEX");
-BP();
-W("This message is used by the client to test if a given file is already
indexed.");
-W("The server replies with a %s containing <tt>YES</tt> or <tt>NO</tt>.",
- intlink_("protocol_cs_core.php3","RETURN_VALUE"));
-W("The format of the message is:");
-EP();
-LAYOUT("CS_fs_request_test_index_MESSAGE",
- F(ARRAY(V("message size", 72, NBO_()) => 2,
- V("request type", 14, NBO_()) => 2,
- V("reserved", 0, NBO_()) => 4,
- N("file ID (SHA-512 of entire file)", "") => 64)));
-EP();
-
-
-ANCHOR("CS_INIT_INDEX"); H4("INIT_INDEX");
-
-BP();
-W("This message is used by the client to initiate the indexing process of a
file.");
-W("The file is identified by its SHA-512 hash.");
-
-W("The message is used to give <tt>gnunetd</tt> a chance to create a symbolic
link instead of creating a copy.");
-W("The given filename is the target name on the machine where the client is
running.");
-W("In other words, the file may not exist on the machine where
<tt>gnunetd</tt> is running.");
-W("Also, file permissions maybe set such that <tt>gnunetd</tt> cannot access
the file.");
-W("<tt>gnunetd</tt> must verify that the file is accessible AND that the
contents match the provided SHA-512 hash.");
-W("<tt>gnunetd</tt> signals success or error with a %s_VALUE of OK or SYSERR.",
- intlink_("protocol_cs_core.php3","RETURN_VALUE"));
-// FIXME: what does "success" mean? Not always symlinking, right?
-W("The format of the message is:");
-
-
-LAYOUT("CS_fs_request_init_index_MESSAGE",
- F(ARRAY(N("message size (72+X)", NBO_()) => 2,
- V("request type", 15, NBO_()) => 2,
- V("reserved", 0, NBO_())=>4,
- N("file ID (SHA-512 of the file)", "")=> 64,
- N("filename", "") => 0)));
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_cs_core.php3
===================================================================
--- GNUnet-docs/WWW/protocol_cs_core.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_cs_core.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,43 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Client-to-Node protocol";
-$description="Documentation of the CS messages implemented by the GNUnet
core.";
-include("html_header.php3");
-
-H3("GNUnet Protocol: client-to-node: core");
-BP();
-W("The following messages are not specific to any particular appliation.");
-W("They are implemented by the core and always available.");
-W("The RETURN_VALUE message is also used as part of application-specific CS
protocols.");
-EP();
-echo "<ul>\n";
-LILI("#GNUNET_MessageReturnValue","RETURN VALUE");
-LILI("#SHUTDOWN_REQUEST","SHUTDOWN REQUEST");
-echo "</ul>\n";
-
-ANCHOR("GNUNET_MessageReturnValue");H4("RETURN VALUE");
-BP();
-W("The RETURN VALUE message is used to communicate simple (int) return values
from TCP requests.");
-W("It is always send in response to another, specific request.");
-W("The format of the RETURN_VALUE message is:");
-EP();
-LAYOUT("GNUNET_MessageReturnValue",
- F(ARRAY(V("message size", 8, NBO_()) => 2,
- V("request type", 0, NBO_()) => 2,
- N("return value", NBO_()) => 4)));
-
-
-ANCHOR("SHUTDOWN_REQUEST");H4("SHUTDOWN REQUEST");
-BP();
-W("With this message, the client can request gnunetd to shutdown.");
-W("The format of the SHUTDOWN REQUEST message is:");
-EP();
-LAYOUT("GNUNET_MessageHeader",
- F(ARRAY(V("message size", 4, NBO_()) => 2,
- V("request type", 1, NBO_()) => 2)));
-BP();
-W("The server responds with a RETURN VALUE message with the contents OK if it
is shutting down.");
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_cs_getoption.php3
===================================================================
--- GNUnet-docs/WWW/protocol_cs_getoption.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_cs_getoption.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,43 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: getoption CS protocol";
-$description="Documentation of the client-server getoption protocol";
-include("html_header.php3");
-
-H3("GNUnet Protocol: client-to-node: getoption");
-BP();
-W("The %s messages are implemented by the %s service.",
- ARRAY("GET_OPTION", "getoption"));
-EP();
-echo "<ul>\n";
-LILI("#CS_getoption_request_MESSAGE","GET_OPTION_REQUEST");
-LILI("#CS_getoption_reply_MESSAGE","GET_OPTION_REPLY");
-echo "</ul>\n";
-
-ANCHOR("GET_OPTION_REQUEST");H4("GET_OPTION_REQUEST");
-BP();
-W("With this message, the client can request the value of an option from the
gnunetd configuration.");
-W("The format of the GET_OPTION_REQUEST message is:");
-EP();
-LAYOUT("CS_getoption_request_MESSAGE",
- F(ARRAY(V("message size", 68, NBO_()) => 2,
- V("request type", 2, NBO_()) => 2,
- N("section name", "") => 32,
- N("option name", "") => 32)));
-BP();
-W("The server responds with a GET_OPTION_REPLY message.");
-EP();
-
-ANCHOR("GET_OPTION_REPLY");H4("GET_OPTION_REPLY");
-BP();
-W("With this message, the server notifies the client about the value of an
option.");
-W("The format of the GET_OPTION_REPLY message is:");
-EP();
-LAYOUT("CS_getoption_reply_MESSAGE",
- F(ARRAY(N("message size", NBO_()) => 2,
- V("request type", 3, NBO_()) => 2,
- N("value (size - 4 bytes), 0-terminated", "") => 0)));
-
-include("html_footer.php3");
-
-?>
Deleted: GNUnet-docs/WWW/protocol_cs_index.inc
===================================================================
--- GNUnet-docs/WWW/protocol_cs_index.inc 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_cs_index.inc 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,10 +0,0 @@
-<ol>
-<li><?php intlink("protocol_cs_core.php3","GNUnet core"); ?></li>
-<li><?php intlink("protocol_cs_getoption.php3","getoption"); ?></li>
-<li><?php intlink("protocol_cs_stats.php3","stats"); ?></li>
-<li><?php intlink("protocol_cs_traffic.php3","traffic"); ?></li>
-<li><?php intlink("protocol_cs_afs.php3","fs"); ?></li>
-<!-- li><?php intlink("protocol_cs_chat.php3","chat"); ?></li -->
-<!-- li><?php intlink("protocol_cs_tbench.php3","tbench"); ?></li -->
-<!-- li><?php intlink("protocol_cs_tracekit.php3","tracekit"); ?></li -->
-</ol>
Deleted: GNUnet-docs/WWW/protocol_cs_stats.php3
===================================================================
--- GNUnet-docs/WWW/protocol_cs_stats.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_cs_stats.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,72 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: stats CS protocol";
-$description="Documentation of the CS stats protocol";
-include("html_header.php3");
-
-H3("GNUnet Protocol: client-to-node: stats");
-BP();
-W("The %s messages are implemented by the %s service.",
- ARRAY("STATISTICS", "stats"));
-EP();
-echo "<ul>\n";
-LILI("#CS_GET_STATISTICS","GET_STATISTICS");
-LILI("#CS_STATISTICS","STATISTICS");
-LILI("#CS_GET_MESSAGE_SUPPORTED","GET_MESSAGE_SUPPORTED");
-echo "</ul>\n";
-
-ANCHOR("CS_GET_STATISTICS");H4("GET_STATISTICS");
-BP();
-W("With this message, the client can request statistics from the server.");
-W("The server always replies with a %s message.",
- extlink_("#CS_STATISTICS","STATISTICS"));
-P();
-W("The format of the message is:");
-EP();
-LAYOUT("CS_MESSAGE_HEADER",
- F(ARRAY(V("message size", 4, NBO_()) => 2,
- V("request type", 36, NBO_()) => 2)));
-
-
-ANCHOR("CS_STATISTICS");H4("STATISTICS");
-BP();
-W("The available statistical information may change between GNUnet versions.");
-W("It also depends on which modules are loaded.");
-W("The format of the message is:");
-EP();
-
-LAYOUT("CS_stats_reply_MESSAGE",
- F(ARRAY(N("message size", NBO_()) => 2,
- V("request type", 37, NBO_()) => 2,
- V("reserved", 0, NBO_()) => 4,
- N("start time (cron_t)", NBO_()) => 8,
- N("total", NBO_()) => 4,
- N("count", NBO_()) => 4,
- N("values (count unsigned long longs)", NBO_()) => 0,
- N("names (count 0-terminated strings)", "") => 0)));
-BP();
-W("The server sends potentially several STATISTICS messages until the sum of
<tt>count</tt> in all messages equals the <tt>total</tt> advertised.");
-W("The last decription string is also zero-terminated.");
-W("Thus the last character in every of these messages is 0.");
-EP();
-
-
-
-ANCHOR("CS_GET_MESSAGE_SUPPORTED");H4("GET_MESSAGE_SUPPORTED");
-BP();
-W("This message can be used to test if <tt>gnunetd</tt> currently supports a
certain type of P2P or CS message.");
-W("The <tt>type</tt> specifies which type of message the question is about.");
-W("The <tt>category</tt> specifies if it is about P2P (0: plaintext, 1:
ciphertext, 2: either) or CS (3) messages.");
-W("<tt>gnunetd</tt> responds with a %s message with the answer YES or NO.",
- intlink_("protocol_cs_core.php3", "RETURN_VALUE"));
-W("The format of the message is:");
-EP();
-LAYOUT("CS_stats_reply_MESSAGE",
- F(ARRAY(V("message size", 8, NBO_()) => 2,
- V("request type", 38, NBO_()) => 2,
- N("type", NBO_()) => 2,
- N("category", NBO_()) => 2)));
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_cs_traffic.php3
===================================================================
--- GNUnet-docs/WWW/protocol_cs_traffic.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_cs_traffic.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,56 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: traffic CS protocol";
-$description="Documentation of the CS traffic protocol";
-include("html_header.php3");
-
-H3("GNUnet Protocol: client-to-node: traffic");
-BP();
-W("The %s messages are implemented by the %s service.",
- ARRAY("TRAFFIC", "traffic"));
-EP();
-echo "<ul>\n";
-LILI("#CS_traffic_request_MESSAGE","TRAFFIC_REQUEST");
-LILI("#CS_traffic_info_MESSAGE","TRAFFIC_INFO");
-echo "</ul>\n";
-
-
-ANCHOR("CS_traffic_request_MESSAGE");H4("TRAFFIC_REQUEST");
-BP();
-W("With this message, the client can request traffic statistics from
<tt>gnunetd</tt>.");
-W("The time period specfied in the message specifies which traffic is
interesting for the request (in terms of not older than time period time
units).");
-W("The server responds with a TRAFFIC_INFO message.");
-W("The format of the message is:");
-EP();
-LAYOUT("CS_traffic_request_MESSAGE",
- F(ARRAY(V("message size", 8, NBO_()) => 2,
- V("request type", 33, NBO_()) => 2,
- N("time interval", NBO_()) => 4)));
-
-
-ANCHOR("CS_traffic_info_MESSAGE");H4("TRAFFIC_INFO");
-BP();
-W("With this message, the server sends traffic information to the client.");
-W("The format of the message is:");
-EP();
-
-LAYOUT("CS_traffic_info_MESSAGE",
- F(ARRAY(N("message size", NBO_()) => 2,
- V("request type", 34, NBO_()) => 2,
- N("count", NBO_()) => 4,
- N(""count" traffic counters") => 0)));
-BP();
-W("The traffic counters have the following format:");
-EP();
-
-LAYOUT("TRAFFIC_COUNTER",
- F(ARRAY(N("flags (see TC_ constants)", NBO_()) => 2,
- N("message type", NBO_()) => 2,
- N("number of messages of this type that were processed",
NBO_()) => 4,
- N("average message size", NBO_()) => 4,
- N("bitmask indicating in which of the last 32 time units a
message was processed", NBO_()) => 4)));
-
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_index.inc
===================================================================
--- GNUnet-docs/WWW/protocol_index.inc 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/protocol_index.inc 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,11 +0,0 @@
-<ol>
-<li><?php intlink("protocol_p2p","Peer-to-Peer");
- include("protocol_p2p_index.inc"); ?>
-</li>
-<li><?php intlink("protocol_cs","Client-Server");
- include("protocol_cs_index.inc"); ?>
-</li>
-<li><?php intlink("protocol_transport","Transport Services");
- include("protocol_transport_index.inc"); ?>
-</li>
-</ol>
\ No newline at end of file
Deleted: GNUnet-docs/WWW/protocol_p2p.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/protocol_p2p.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,46 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Peer-to-Peer Protocols";
-$description="GNUnet Documentation: The protocol for inter-node
communication.";
-include("html_header.php3");
-
-ANCHOR("protocol");H3("GNUnet Protocols: node-to-node");
-BP();
-W("A packet exchanged between GNUnet hosts can contain any number of
messages.");
-W("The total packet size is limited by the MTU of the transport service that
is used.");
-W("Packets are assembled from individual messages by the GNUnet core.");
-W("They are padded with noise until they have the size of the MTU of the
specific transport service used to transmit the message.");
-
-W("The GNUnet core also computes a checksum of the plaintext message and
encrypts the data with AES-256.");
-W("The transport service only needs to transmit the information.");
-W("The data that the transport service needs to communicate is the sender
identity, the checksum, the total message size, a flag indicating whether or
not the message is in plaintext or encrypted, and the packet itself.");
-W("The transport layer implementation is responsible for wrapping the packet
appropriately.");
-W("Different transports can send message very differently.");
-W("For example, TCP needs to communicate the size explicitly but the sender
identity is only communicated once (at the time where the connection is
established).");
-W("UDP on the other hand does not need to explicitly communicate the size
(datagrams!), but it needs to supply the sender identity each time
(stateless!).");
-
-W("For received packets, the transport is not responsible for checking the
checksum.");
-W("If the checksum does not verify the core will discard the message
silently.");
-P();
-W("Each of the messages in the plaintext packet has the following header:");
-EP();
-
-LAYOUT("GNUNET_MessageHeader",
- F(ARRAY(N("message size", NBO_()) => 2,
- N("request type", NBO_()) => 2,
- N("(size - 4) bytes of data", "") => 0)));
-
-BP();
-W("The header is followed by <tt>message size</tt> octets for the message.");
-W("GNUnet clients are required to skip unknown request types.");
-W("The <tt>message size</tt> field is the size of the message in octets
including the header.");
-P();
-W("The following groups of peer-to-peer messages are documented:");
-include("protocol_p2p_index.inc");
-W("Note that peers are guaranteed to support the core protocols, but all
others are optional.");
-W("Peers that do not support a protocol are expected to simply ignore those
unsupported messages.");
-EP();
-
-include("html_footer.php3");
-?>
-
Deleted: GNUnet-docs/WWW/protocol_p2p_afs.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_afs.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_p2p_afs.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,115 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: The GAP Peer-to-Peer Protocol";
-$description="The protocol used between GNUnet peers for anonymous
file-sharing.";
-include("html_header.php3");
-
-afslogo();
-ANCHOR("ROUTING");H4("Anonymous Routing: GAP");
-BP();
-W("First, a "correct" 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.");
-P();
-W("Whenever a peer receives a query, it makes a couple of decisions.");
-W("The peer first decides whether 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("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.");
-P();
-
-W("Once GAP has decided that a query will be processed, it performs a local
lookup.");
-W("Potential replies are sent 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("A number of peers is selected based on a biased random selection.");
-W("The selection is biased towards peers that have recently replied to other
queries that had the same predecessor as the current query.");
-W("The exact code can be found %s.",
- extlink_("doxygen/html/plan_8c.html",
- "here (plan.c)"));
-P();
-
-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.");
-W("The response is delivered instantly to local clients and with a (random)
delay to other peers.");
-W("The query stays in the routing table if there is a possibility that it may
yield additional results.");
-W("In order to handle queries that can yield multiple results, each peer
remembers which results have already been processed for a given query.");
-P();
-
-W("The philosophy of why this should achieve good anonymity is described in
the %s.",
- extlink_("download/aff.ps", "GAP paper"));
-W("The rationale behind correlating queries from the same predecessor lies in
the %s which will yield correlations between successive queries from the same
client.",
- extlink_("download/ecrs.ps", "encoding scheme"));
-
-P();
-W("The GAP protocol defines the following messages:");
-echo "<ul>\n";
-LILI("#QUERY","P2P_gap_query_MESSAGE");
-LILI("#RESULT","GAP_RESULT");
-echo "</ul>\n";
-EP();
-
-ANCHOR("QUERY");H4("QUERY");
-BP();
-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"));
-EP();
-
-LAYOUT("P2P_gap_query_MESSAGE",
- F(ARRAY(N("message size (152 + (Q-1) * 64 + X)", NBO_()) => 2,
- V("request type", 16, NBO_()) => 2,
- N("ECRS block type", NBO_()) => 4,
- N("priority", NBO_()) => 4,
- N("time-to-live", NBO_()) => 4,
- N("filter mutator", NBO_()) => 4,
- N("number of queries (Q = 1 or 2)", NBO_()) => 4,
- N("return-to peer identity", NBO_()) => 64,
- N("query hash", NBO_()) => 64,
- N("namespace (optional, depending on block type, only if Q=2)",
NBO_()) => 64,
- N("Bloom filter", "") => 0)));
-BP();
-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"));
-W("The current protocol uses at most one additional hash code for the
namespace, but the GAP code should allow for any number of additional hash
codes to be passed around (depending on the value of <tt>number of
queries</tt>).");
-W("Finally, the query is optionally followed by a Bloom filter.");
-W("Its size can be determined from the size field of the request (and maybe
zero).");
-W("The Bloom filter is used to communicate that certain results are not
legal.");
-W("In order to determine if a result is not legal, the receiver is to hash the
result, hash the <tt>filter mutator</tt>, XOR the two hash codes and test if
the resulting value is matched by the Bloom filter.");
-W("If the Bloom filter matches the XOR'ed hash codes, the result is not
acceptable.");
-
-EP();
-ANCHOR("RESULT");H4("RESULT");
-BP();
-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("Note that the type of the result is encoded by ECRS in the data portion (in
the first four bytes).");
-W("The size of the data portion of the result depends on the query type and is
again defined by ECRS.");
-W("The hash for checking against the bloomfilter of a query should be done
only over the ECRS-encoded data.");
-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")));
-EP();
-LAYOUT("P2P_gap_reply_MESSAGE",
- F(ARRAY(N("message size", NBO_()) => 2,
- V("request type", 17, NBO_()) => 2,
- N("expiration time (unsigned, relative, in ms)", NBO_()) => 8,
- N("ECRS-encoded data", NBO_()) => 0)));
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_p2p_core.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_core.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_p2p_core.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,271 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Peer-to-Peer Protocols";
-$description="The core protocol, the fundamental messages underlying all
GNUnet applications";
-include("html_header.php3");
-
-ANCHOR("protocol");H3("GNUnet Protocol: node-to-node: core messages");
-BP();
-W("The GNUnet node-to-node (peer-to-peer) procotol currently defines seven
different messages that must be supported by all peers:");
-EP();
-echo "<ul>\n";
-LIV(extlink_("#HELLO","HELLO"));
-LIV(extlink_("#SETKEY","SETKEY"));
-LIV(extlink_("#PING","PING"));
-LIV(extlink_("#PONG","PONG"));
-LIV(extlink_("#HANGUP","HANGUP"));
-LIV(extlink_("#FRAGMENT","FRAGMENT"));
-LIV(extlink_("#NOISE","NOISE"));
-echo "</ul>\n";
-BP();
-W("These messages are typically not all implemented directly by the core
itself, but rather by internal service plugins.");
-W("However, loading these plugins is not optional (the core will automatically
do so on startup).");
-W("Thus it makes sense to refer to these messages as the core messages.");
-P();
-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_("#HELLO","HELLO"));
-W("The recipient of the HELLO sends back a %s to confirm that the host is
actually reachable.",
- extlink_("#PING","PING"));
-W("The receiver of the PING always sends back a %s to confirm receit.",
- extlink_("#PONG","PONG"));
-P();
-W("Later, either of the hosts sends the other host an %s message with an
encrypted %s to initiate a connection.",
- ARRAY(extlink_("#SETKEY","SETKEY"),
- extlink_("#PING", "PING")));
-W("The receiver acknowledges this with another SETKEY, which also contains a
new PING and a %s that corresponds to the PING that was received earlier.",
- extlink_("#PONG","PONG"));
-W("Again, the PING is answered with an encrypted %s.",
- extlink_("#PONG","PONG"));
-W("If no PONG is received, either side can send another SETKEY and PING.");
-W("If an SETKEY 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:");
-
-IMG("images/states.png",
- "Illustration of a message exchange in GNUnet",
- "CENTER",
- 444,
- 571);
-
-P();
-W("Nodes then exchange application specific mesages.");
-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 HELLO
message.");
-W("%s can be used by any of the nodes to drop the connection.",
- extlink_("#HANGUP","HANGUP"));
-W("A connection that is inactive for a long time (about 15 minutes) is also
considered dropped.");
-W("The %s is neither acknowledged nor required, but implemented by all
well-behaved nodes.",
- extlink_("#HANGUP","HANGUP"));
-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 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:");
-EP();
-LAYOUT("GNUNET_TransportPacket_HEADER",
- F(ARRAY(N("hash of the plaintext (SHA-512)", "") => 64,
- N("sequence number, 0 for plaintext", 11, NBO_()) => 4,
- N("timestamp (in seconds)", NBO_()) => 4,
- N("bandwidth limit (bytes per minute)", NBO_()) => 4)));
-BP();
-W("This header is followed by individual messages.");
-W("Note again that the identity of the sender must also be communicated such
that the core can select the right key for decryption.");
-W("However, how this is done depends on the specific transport.");
-
-EP();
-ANCHOR("HELLO");H4("HELLO");
-
-BP();
-W("A HELLO packet is used to propagate information about participating nodes
throughout GNUnet.");
-W("Each GNUnet node is identified by its public key K.");
-W("Throughout GNUnet, the public key of a node is often abbreviated by just
the hash of K, short H(K).");
-P();
-W("The HELLO packet is the way nodes propagate public keys of other nodes.");
-W("Furthermore, the identity of the node is <strong>bound</strong> to an
address.");
-W("How an address is specified depends on the underlying transport mechanism
that is used.");
-W("For example, the UDP service uses the IP and the UDP port.");
-W("An SMTP transport implementation may choose to use an E-mail address.");
-W("GNUnet nodes can have multiple addresses and change addresses at any time,
e.g. if the IP is dynamically assigned, like in DHCP or on dialup.");
-W("The %s is used to notify other hosts of a changed address.",
- extlink_("doxygen/html/structGNUNET__MessageHello.html","HELLO message"));
-P();
-W("<strong>Security considerations</strong>.");
-W("Malicious nodes could disrupt GNUnet by telling nodes fake addresses.");
-W("As nodes forward HELLOs from other nodes, malicious hosts could replace the
address of the original node by an invalid address.");
-W("In order to prevent this, the address portion of a HELLO must be signed
with the private key of the node.");
-W("In order to prevent malicious hosts from forwarding outdated addresses, the
signed portion of a HELLO also contains a timestamp stating how long the HELLO
is going to be valid.");
-W("The administrator of each node can specify how long the HELLOs signed by
that node are going to be valid; the administrator is in the best position to
judge how long the current address will be valid.");
-P();
-W("Another security concern is where hosts send out valid, signed HELLO
messages with IPs of non-participating machines.");
-W("The goal of this attack could either be to flood the non-participating
hosts with traffic (trick GNUnet into performing an attack) or to make it hard
for the receiver to find a valid GNUnet host in the ocean of addresses that it
learned from the HELLOs.");
-W("GNUnet defends against this type of attack by sending a PING to the
acclaimed host and only believes the HELLO of a PONG is received.");
-W("Thus the malicious host sending fake HELLOs will fail to trick GNUnet into
repeatedly trying to connect to the non-participating host.");
-
-P();
-W("Receivers of HELLOs must verify the signature and check that the HELLO has
not expired.");
-W("Nodes should delete HELLOs that have expired for a long time.");
-W("HELLOs that expired just a short time ago may belong to nodes that may
re-appear.");
-W("GNUnet nodes may still keep trying to connect to these nodes, but their
HELLOs should no longer be propagated.");
-W("HELLOs can be send to hosts without an established encrypted connection (in
plaintext).");
-W("This is necessary because HELLOs and %ss are needed to form the encrypted
channel in the first place.",
- EXTLINK_("#SETKEY","SETKEY"));
-W("Once an encrypted channel was formed, nodes can exchange HELLOs via that
channel.");
-EP();
-LAYOUT("GNUNET_MessageHello",
- F(ARRAY(N("message size (600 + X)", NBO_()) => 2,
- V("request type", 0, NBO_()) => 2,
- N("RSA signature (signing data starting from sender id to end of
HELLO)","") => 256,
- V("size of public key (T)", 262, NBO_()) => 2,
- V("size of n in bytes (N)", 256, NBO_()) => 2,
- N("n in public RSA key (N bytes)", "") => 256,
- N("e in public RSA key (T - N bytes)", "") => 2,
- V("padding", 0, NBO_()) => 2,
- N("sender id (SHA-512 of data from T to padding)", "") => 64,
- N("expiration time (in seconds)", NBO_()) => 4,
- N("MTU of the transport (in bytes)", NBO_()) => 4,
- N("sender address size (X, in bytes)", NBO_()) => 2,
- N("transport protocol", NBO_()) => 2,
- N("sender address", "") => 0)));
-
-
-
-ANCHOR("SETKEY");H4("SETKEY");
-BP();
-W("Sessionkeys are 256 bit keys for AES-256, a symmetric cipher that is used
for all communication between GNUnet nodes except %ss and SETKEYs themselves
(for those, RSA with 2048 bit keys is used).",
- extlink_("#HELLO","HELLO"));
-P();
-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.");
-P();
-W("A session key exchange may be initiated by either node.");
-W("SETKEYS are always encrypted with the public key of the receiving node.");
-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 transmitted key is the key that the sender will use in the future.");
-W("An SETKEY always contains an encrypted PING message.");
-W("An SETKEY may furthermore contain an encrypted PONG message, in particular
if the SETKEY is transmitted in response to an SETKEY+PING message.");
-W("The encrypted portion is part of the SETKEY 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("SETKEY messages are usually not send through an encrypted channel.");
-W("If nodes that already have an SETKEY 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 SETKEY or as an ordinary encrypted
message.");
-P();
-W("The format of an SETKEY message is the following:");
-EP();
-LAYOUT("P2P_setkey_MESSAGE",
- F(ARRAY(N("message size (584 + X)", NBO_()) => 2,
- V("request type", 1, NBO_()) => 2,
- N("creation time (seconds)", NBO_()) => 4,
- N("RSA encrypted data", "") => 256,
- N("Intended recipient", "") => 64,
- N("RSA signature", "") => 256,
- N("AES-512 encrypted PINGs and PONGs", "") => 0)));
-BP();
-W("Note that X is always either 72 or 144 bytes.");
-W("The RSA encrypted data decrypts with the hostkey of the receiver to an
AES-256 session key.");
-W("Before decrypting, the recipient checks that its own identity matches the
intended recpient field.");
-W("This helps avoid wasting CPU time if the sender is mistaken about the
identity of the target.");
-W("Using the RSA signature as the initialization vector, this key can be used
to decrypt the PINGs and PONGs (if present).");
-W("The sessionkey is also used for all future communication with the peer
(until HANGUP or timeout).");
-W("If PINGs are transmitted, the peer should respond by sending an encrypted
PONG.");
-W("If the peer has not yet transmitted a session key, the PONG can be included
in another SETKEY message that is transmitted in response.");
-W("If a PONG is included, this should be verified and if it matches a prior
PING used as confirmation that the other peer has received an earlier
sessionkey.");
-EP();
-
-ANCHOR("PING");H4("PING");
-BP();
-W("PINGs are used to test if a node receives messages correctly.");
-W("PINGs are exchanged in encrypted messages, as part of SETKEYs 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 SETKEY
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.");
-P();
-W("The identity stored in the PING is the identity of the receiver.");
-W("If that identity does not match, the PING must be silently discarded.");
-EP();
-LAYOUT("P2P_pingpong_MESSAGE",
- F(ARRAY(V("message size", 72, NBO_()) => 2,
- V("request type", 2, NBO_()) => 2,
- N("challenge", NBO_()) => 4,
- N("Identity of receiver of PING", "") => 64)));
-
-
-ANCHOR("PONG");H4("PONG");
-BP();
-W("PONGs are responses to PINGs.");
-W("If the node is not aware of a corresponding PING (or if the challenge is
wrong), the PONG is silently dropped.");
-W("Otherwise the appropriate action corresponding to the PING is triggered.");
-EP();
-LAYOUT("P2P_pingpong_MESSAGE",
- F(ARRAY(V("message size", 72, NBO_()) => 2,
- V("request type", 3, NBO_()) => 2,
- N("challenge", NBO_()) => 4,
- N("Identity of receiver of PING (sender for PONG)", "") => 64)));
-
-
-ANCHOR("HANGUP");H4("HANGUP");
-BP();
-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.");
-W("The format of the HANGUP message is:");
-LAYOUT("P2P_hangup_MESSAGE",
- F(ARRAY(V("message size", 68, NBO_()) => 2,
- V("request type", 4, NBO_()) => 2,
- N("Identity of sender", "") => 64)));
-
-
-ANCHOR("FRAGMENT");H4("FRAGMENT");
-BP();
-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:");
-EP();
-
-LAYOUT("P2P_fragmentation_MESSAGE",
- F(ARRAY(N("message size (12 + X)", NBO_()) => 2,
- V("request type", 5, NBO_()) => 2,
- N("fragment id", NBO_()) => 4,
- N("offset", NBO_()) => 2,
- N("total length of fragmented message", NBO_()) => 2,
- N("(size - 12) bytes of fragmented message at <tt>offset</tt>",
"") => 0)));
-BP();
-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.");
-EP();
-
-
-
-ANCHOR("NOISE");H4("NOISE");
-BP();
-W("Noise is used to make it harder for adversaries to perform traffic
analysis.");
-W("A node receiving noise should just silently ignore it.");
-W("Nodes may append noise to packets that are short to make all packets look
more uniform in size.");
-W("Noise should only be used in encrypted traffic.");
-W("The format for noise is:");
-EP();
-LAYOUT("GNUNET_MessageHeader",
- F(ARRAY(N("message size", NBO_()) => 2,
- V("request type", 6, NBO_()) => 2,
- N("(size - 4) random bytes", "") => 0)));
-
-BP();
-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.");
-
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_p2p_dht.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_dht.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_p2p_dht.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,75 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Peer-to-Peer Protocols: DHT";
-$description="The distributed hash table (DHT) protocol in GNUnet";
-include("html_header.php3");
-ANCHOR("protocol");H3("GNUnet Protocol: node-to-node: DHT");
-BP();
-
-EP();
-ANCHOR("DHT_DISCOVERY");H4("DHT DISCOVERY");
-BP();
-W("A DISCOVERY message is used to let another peer know that the sender
supports the DHT protocol and also to exchange topology information.");
-W("A DISCOVERY message contains the amount of space available for the DHT at
the sender as well as the identities of other DHT participants known to the
sender.");
-W("The format of the DISCOVERY message is the following:");
-EP();
-LAYOUT("P2P_DHT_Discovery",
- F(ARRAY(N("message size (8 + N * 64)", NBO_()) => 2,
- V("request type", 18, NBO_()) => 2,
- N("available space (in bytes)", NBO_()) => 4,
- N("known DHT participants", "") => 0)));
-ANCHOR("DHT_ASK_HELLO");H4("DHT ASK HELLO");
-BP();
-W("ASK HELLO messages are used by DHT peers if they would like to contact
another peer in the network but do not have the necessary address
information.");
-W("If possible, other peers respond to ASK HELLO messages with the respective
HELLO message.");
-W("The format of the ASK HELLO message is the following:");
-EP();
-LAYOUT("P2P_DHT_ASK_HELLO",
- F(ARRAY(V("message size", 72, NBO_()) => 2,
- V("request type", 19, NBO_()) => 2,
- V("resreved", 0, NBO_()) => 4,
- N("identity of peer", "") => 64)));
-
-ANCHOR("DHT_GET");H4("DHT GET");
-BP();
-W("A DHT_GET message is used to ask other peers to find content matching a
particular type and key.");
-W("Other peers should respond with the respective DHT RESULT message if they
can find the data.");
-EP();
-LAYOUT("DHT_MESSAGE",
- F(ARRAY(V("message size", 80, NBO_()) => 2,
- V("request type", 20, NBO_()) => 2,
- N("type of requested content", NBO_()) => 4,
- N("hop count", NBO_()) => 4,
- N("network size estimate", NBO_()) => 4,
- N("key", "") => 64)));
-ANCHOR("DHT_PUT");H4("DHT PUT");
-BP();
-W("A DHT PUT message is used to store data in the DHT.");
-W("Peers should make an effort to store the data either in their own datastore
or in the datastore of other peers (by forwarding the request).");
-W("Peers do not send any response or confirmation to a DHT PUT request.");
-W("Peers can validate the success of a PUT by issuing the corresponding GET
request and wainting for results.");
-EP();
-LAYOUT("DHT_MESSAGE",
- F(ARRAY(N("message size (80 + X)", NBO_()) => 2,
- V("request type", 21, NBO_()) => 2,
- N("type of requested content", NBO_()) => 4,
- N("hop count", NBO_()) => 4,
- N("network size estimate", NBO_()) => 4,
- N("key", "") => 64,
- N("data", NBO_()) => 0)));
-ANCHOR("DHT_RESULT");H4("DHT RESULT");
-BP();
-W("A DHT RESULT message is transmitted in response to a DHT GET request.");
-W("Peers should forward the result to the previous peer in the request chain
(or the respective local client for local requests).");
-W("Peers do not send any response or confirmation to a DHT RESULT request.");
-EP();
-LAYOUT("DHT_MESSAGE",
- F(ARRAY(N("message size (80 + X)", NBO_()) => 2,
- V("request type", 22, NBO_()) => 2,
- N("type of requested content", NBO_()) => 4,
- N("hop count", NBO_()) => 4,
- N("network size estimate", NBO_()) => 4,
- N("key", "") => 64,
- N("result data", NBO_()) => 0)));
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_p2p_index.inc
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_index.inc 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_p2p_index.inc 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,9 +0,0 @@
-<ol>
-<li><?php intlink("protocol_p2p_core.php3","GNUnet core"); ?></li>
-<li><?php intlink("protocol_p2p_afs.php3","GAP"); ?></li>
-<li><?php intlink("protocol_p2p_rpc.php3","RPC"); ?></li>
-<li><?php intlink("protocol_p2p_dht.php3","DHT"); ?></li>
-<!-- li><?php intlink("protocol_p2p_chat.php3","Chat"); ?></li -->
-<!-- li><?php intlink("protocol_p2p_tbench.php3","TBench"); ?></li -->
-<!-- li><?php intlink("protocol_p2p_tracekit.php3","TraceKit"); ?></li -->
-</ol>
\ No newline at end of file
Deleted: GNUnet-docs/WWW/protocol_p2p_rpc.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_rpc.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_p2p_rpc.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,105 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Peer-to-Peer Protocols: RPC";
-$description="Protocol for remote procedure calls in GNUnet";
-include("html_header.php3");
-
-ANCHOR("protocol");H3("GNUnet Protocol: node-to-node: RPC");
-BP();
-W("RPC is a service that can be run by a subset of the GNUnet network.");
-W("In other words, not all GNUnet peers necessarily support this service.");
-W("A peer that does not support RPC is supposed to ignore RPC requests.");
-W("The RPC service provides reliable hop-by-hop communication.");
-W("It does provide anything that is directly useful to an end-user.");
-W("The RPC service is intended to be used by other GNUnet protocols that need
this kind of primitive.");
-W("How to use the RPC service is described on the %s page.",
- intlink_("hacking_rpc.php3", "RPC hacking"));
-W("The GNUnet node-to-node (or peer-to-peer) RPC procotol currently defines
three messages that must be supported by all peers that use RPC.");
-EP();
-echo "<ul>\n";
-LILI("#REQ","REQ");
-LILI("#RES","RES");
-LILI("#ACK","ACK");
-echo "</ul>\n";
-BP();
-W("The most basic sequence is that a peer sends a %s to any other host to
request the execution of some function.",
- extlink_("#REQ","REQ"));
-W("The recipient of the REQ sends back a %s to communicate the successful
execution and to return some response code.",
- extlink_("#RES","RES"));
-W("The receiver of the RES always sends back a %s to confirm receit and
complete the 3-way handshake.",
- extlink_("#ACK","ACK"));
-P();
-W("If the initiator does not receive a RES, it will typically retry the REQ
(until timing out).");
-W("Similarly, if the responder does not receive the ACK, it will retry the RES
(until timing out).");
-W("After receiving the ACK the responder frees all resources associated with
the REQ.");
-W("Sequence numbers are used to prevent the responder from executing the
function multiple times.");
-EP();
-ANCHOR("REQ");H4("REQ");
-
-BP();
-W("<strong>Security considerations</strong>.");
-W("The RPC module does not provide any access checks on RPC calls.");
-W("While the peer identity of the initiator has been established, there is no
access control mechanism.");
-W("Clients that register RPC callbacks are supposed to take care of access
checks themselves.");
-W("The priority communicated in the RPC message is currently unchecked by the
implementation and only used to reserve bandwidth with the core.");
-W("The fact that the priority is not checked against economic constraints
allows an attacker to obtain more bandwidth than the common GNUnet model would
permit.");
-W("Note that the %s service currently suffers from the same "bug".",
- intlink_("protocol_p2p_tracekit.php3", "tracekit"));
-W("Future implementations of RPC will likely expose the priority to the RPC
function.");
-
-W("The format of the REQ message is:");
-EP();
-LAYOUT("P2P_rpc_MESSAGE",
- F(ARRAY(N("size", NBO_()) => 2,
- V("type", 42, NBO_()) => 2,
- N("sequence number", NBO_()) => 4,
- N("importance", NBO_()) => 4,
- N("number of arguments", NBO_()) => 2,
- N("length of the function name", NBO_()) => 2,
- N("function name", "") => 0,
- N("arguments (see RPC_paramSerialize)", "") => 0)));
-BP();
-W("The format of the arguments is first a zero-terminated parameter name,
followed by the size of the parameter (as an <tt>unsigned int</tt> 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_("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.");
-EP();
-
-ANCHOR("RES");H4("RES");
-
-BP();
-W("The format of the RES message is:");
-EP();
-LAYOUT("P2P_rpc_MESSAGE",
- F(ARRAY(N("size", NBO_()) => 2,
- V("type", 43, NBO_()) => 2,
- N("sequence number", NBO_()) => 4,
- N("importance of the reply", NBO_()) => 4,
- N("number of return values", NBO_()) => 2,
- N("error code (0 for success)", NBO_()) => 2,
- N("return values (see RPC_paramDeserialize)", "") => 0)));
-BP();
-W("The number of return values must be 0 if a non-zero error code is
returned.");
-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_("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.");
-EP();
-
-ANCHOR("ACK");H4("ACK");
-BP();
-W("An ACK is purely a notification that a RES was received.");
-W("The format of an ACK is the following:");
-EP();
-LAYOUT("RPC_ACK_Message",
- F(ARRAY(V("size", 8, NBO_()) => 2,
- V("type", 44, NBO_()) => 2,
- N("sequence number", NBO_()) => 4)));
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_p2p_tracekit.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_tracekit.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_p2p_tracekit.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,70 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Peer-to-Peer Protocols: Trace";
-$description="GNUnet Documentation - The Trace protocol";
-include("html_header.php3");
-
-ANCHOR("protocol");H3("GNUnet Protocol: node-to-node: Trace");
-
-BP();
-W("The <tt>tracekit</tt> module provides a protocol that allows tracing the
GNUnet topology.");
-W("Not all GNUnet peers support this service, in fact peers that are concerned
about anonymity should probably not support it at all since this protocol
reveils too much information.");
-W("The primary purpose of <tt>tracekit</tt> is to help the GNUnet developers
in investigating problems.");
-W("The results from <tt>tracekit</tt> are not necessarily accurate.");
-W("Peers may not respond, not respond in time or the responses may be lost.");
-W("The tracekit protocol only defines two messages:");
-echo "<ul>\n";
-LIV(extlink_("#PROBE","PROBE"));
-LIV(extlink_("#REPLY","REPLY"));
-echo "</ul>\n";
-W("The most basic sequence is that a peer sends a %s to any other host to
request topology information.",
- extlink_("#PROBE","PROBE"));
-W("The recipient of the PROBE checks if it has seen the probe previously and
if not forwards it to all other neighbours, sends back a %s and also forwards
all REPLY messages received from its neighbours.",
- extlink_("#REPLY","REPLY"));
-EP();
-ANCHOR("PROBE");H4("PROBE");
-
-BP();
-W("The format of the %s is:",
- extlink_("doxygen/html/structTRACEKIT__p2p__PROBE.html", "PROBE message"));
-LAYOUT("P2P_tracekit_probe_MESSAGE",
- F(ARRAY(V("message size", 40, NBO_()) => 2,
- V("message type", 36, NBO_()) => 2,
- N("timestamp (unsigned)", NBO_()) => 4,
- N("hops to go (unsigned)", NBO_()) => 4,
- N("importance of the request (unsigned)", NBO_()) => 4,
- N("internal client ID", NBO_()) => 4,
- N("initiator peer identity", NBO_()) => 64)));
-W("If the responder has already seen a PROBE request from the same initiator
with the same timestamp, the PROBE is discarded.");
-W("The timestamp is used by the responder who has bounded space to keep track
of requests.");
-W("The responder is expected to discard the oldest request from the tracking
table.");
-W("Abuse is prevented by having the responder discard requests with a
timestamp in the future.");
-W("If a PROBE is received with a timestamp that is older than the oldest
tracked PROBE, the request is discarded.");
-W("If the number of hops to go reaches zero the responder does not forward the
request.");
-W("Otherwise the responder forwards the request to all neighbours with hops to
go reduced by one.");
-W("REPLIES received from those neighbours are forwarded back to the previous
peer that send the PROBE.");
-W("The initiator peer identity cannot be confirmed and is not checked in any
way.");
-W("The current implementation does not use the economic system to limit the
importance of requests.");
-EP();
-
-ANCHOR("REPLY");H4("REPLY");
-
-BP();
-W("The format of the REPLY is:");
-LAYOUT("P2P_tracekit_reply_MESSAGE",
- F(ARRAY(N("message size (140 + N * 64)", NBO_()) => 2,
- V("request type", 37, NBO_()) => 2,
- N("initiator peer identity", NBO_()) => 64,
- N("responder peer identity", NBO_()) => 64,
- N("initiator timestamp (unsigned)", NBO_()) => 4,
- N("internal client ID", NBO_()) => 4,
- N("connected peers", NBO_()) => 0)));
-W("The responder peer identity is the identity of the peer that originally
constructed this message.");
-W("Peers forwarding REPLY messages are not supposed to modify them in any
way.");
-W("The internal client ID is copied unchanged from the original request.");
-W("The message contains a variable number of peer IDs for each connected
peer.");
-W("If a peer has more connected peers than what can be fit into one message,
it may construct multiple REPLIES.");
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_transport.php3
===================================================================
--- GNUnet-docs/WWW/protocol_transport.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_transport.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,54 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: The Protocol of the Transport Services";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring
anonymous file sharing with an excess based trust-economy";
-include("html_header.php3");
-
-BP();
-W("GNUnet uses a special type of message to bind public keys to their current
address.");
-W("For the UDP, TCP and HTTP transport layers, an address consists of IPv4
(and/or IPv6) addresses and a port.");
-W("Other transport mechanisms (SMTP, etc.) deploy various other forms of
addresses.");
-W("Note that any node can have multiple addresses for the various transport
mechanisms.");
-EP();
-
-include("protocol_transport_index.inc");
-
-BP();
-W("The configuration of the SMTP transport layer is described %s",
- intlink_("smtp.php3","here"));
-
-W("The transport layer has, like the internet protocol (IP), best-effort
semantics.");
-W("There is no guarantee that a message will be delivered.");
-W("We now describe how you can write your own transport mechanism for the
GNUnet peer-to-peer framework.");
-
-EP();
-H4("How do I write a new transport mechanism for GNUnet?");
-
-BP();
-W("The best way to start implementing a new transport mechanism is to start
with existing code that is semantically as close to the new mechanism as
possible.");
-W("The most important criteria is if the connection is stateful and
bidirectional (TCP, HTTP) or stateless and unidirectional (UDP, SMTP).");
-W("Implementations also can choose to only support messages of fixed size
using some implemntation-dependent fixed MTU (UDP, SMTP), provide a streaming
interface and use a stream (TCP) or internally convert a streaming interface
into individual messages (HTTP).");
-W("Since reliability and delays are handled by the applications, these
criteria are irrelevant for choosing an implementation to evolve from.");
-P();
-
-W("Every new transport mechanism must define an identification number in %s.",
- extlink_("doxygen/html/gnunet__protocols_8h.html","gnunet_protocols.h"));
-W("Note that this number is used purely internally in GNUnet and does not have
to correspond to the underlying protocol in any way.");
-P();
-W("For details on the transport API see our %s.",
- extlink_("download/transport.ps","transport paper"));
-
-
-W("In addition to the message itself, the transport mechanism must communicate
the sender identity (hash of public key) and the size of the message.");
-P();
-W("The transport layer implementation defines an appropriate message format to
transmit this data.");
-W("The encapsulation format can be different for each transport.");
-W("Depending on the implementation of the transport mechanism, it may not be
necessary to transmit the sender identity or the size explicitly in each
message.");
-W("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("UDP on the other hand must transmit the sender identity each time.");
-W("The HTTP transport encodes the sender identity in the request URL.");
-W("Also, some transports need to explicitly transmit the size of the message
(TCP) whereas for other transports (such as UDP) the explicit packet size makes
it unnecessary to explicitly transmit the message size.");
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_transport_http.php3
===================================================================
--- GNUnet-docs/WWW/protocol_transport_http.php3 2012-08-27 18:40:59 UTC
(rev 23449)
+++ GNUnet-docs/WWW/protocol_transport_http.php3 2012-08-27 18:51:04 UTC
(rev 23450)
@@ -1,45 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: The HTTP transport service";
-$description = "Documentation for the HTTP transport service protocol";
-include("html_header.php3");
-
-H2("The HTTP transport service");
-BP();
-W("The HTTP transport service uses both GET and POST/PUT requests to transmit
data.");
-W("While bi-directional communication could just use GET requests, peers
behind NAT could not be reached that way.");
-W("As a result, HTTP transports distinguish between the peer initiating the
connection and the peer receiving the request.");
-W("The initiator performs a PUT request whenever the initiator wants to send a
message.");
-W("The initiator also attempts to always have a GET request pending with the
receiving peer.");
-W("The receiving peer can use that GET request to transmit its data to the
initiator.");
-P();
-W("Both GET and POST/PUT requests use the encoded hash of the public key of
the sender for the filename in the URL.");
-W("This enables the receiver to determine who is initiating the request.");
-W("No "WELCOME" message is exchanged; the initiator is expected to
know who he wants to talk to.");
-W("More than such one message can be transmitted using the same GET or PUT
request.");
-W("The transmission format uses the usual encapsulation with a
<tt>GNUNET_MessageHeader</tt>.");
-W("That message has the following format:");
-EP();
-LAYOUT("GNUNET_MessageHeader",
- F(ARRAY(N("size", NBO_()) => 2,
- V("reserved", 0, NBO_()) => 2,
- N("data", "") => 0)));
-BP();
-W("Here, <tt>data</tt> is the message as passed down by the GNUnet core.");
-P();
-W("For the HTTP transport service, the sender address in the HELLO has this
format:");
-EP();
-LAYOUT("HostAddress",
- F(ARRAY(N("IPv6 address", "") => 16,
- N("IPv4 address", NBO_()) => 4,
- N("port", NBO_()) => 2,
- V("availability", 0, NBO_()) => 2)));
-BP();
-W("The <tt>availability</tt> field describes which of the IP protocols are
supported.");
-W("If the lowest bit (1) is set, the given IPv4 address should be valid.");
-W("If the second lowest bit (2) is set, the given IPv6 address should be
valid.");
-W("If both bits are set, both IPv4 and IPv6 can be used to contact the peer.");
-W("All other bits should be zero and ignored by peers at this point.");
-W("HELLOs where no bits in <tt>availability</tt> are set are invalid.");
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_transport_index.inc
===================================================================
--- GNUnet-docs/WWW/protocol_transport_index.inc 2012-08-27 18:40:59 UTC
(rev 23449)
+++ GNUnet-docs/WWW/protocol_transport_index.inc 2012-08-27 18:51:04 UTC
(rev 23450)
@@ -1,6 +0,0 @@
-<ol>
-<li><?php intlink("protocol_transport_udp.php3","UDP"); ?></li>
-<li><?php intlink("protocol_transport_tcp.php3","TCP"); ?></li>
-<li><?php intlink("protocol_transport_http.php3","HTTP"); ?></li>
-<li><?php intlink("smtp.php3","SMTP"); ?></li>
-</ol>
Deleted: GNUnet-docs/WWW/protocol_transport_tcp.php3
===================================================================
--- GNUnet-docs/WWW/protocol_transport_tcp.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_transport_tcp.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,41 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: The TCP transport service";
-$description = "Documentation for the TCP transport service protocol";
-include("html_header.php3");
-
-H2("The TCP transport service");
-BP();
-W("In each TCP connection, the first data that is transmitted is a welcome
message that tells the receiver the identity of the remote peer.");
-W("That message has the following format:");
-EP();
-LAYOUT("TCPWelcome",
- F(ARRAY(V("size", 68, NBO_()) => 2,
- V("reserved", 0, NBO_()) => 2,
- N("sender identity", "") => 64)));
-BP();
-W("The individual messages exchanged over TCP then have the format:");
-EP();
-LAYOUT("GNUNET_MessageHeader",
- F(ARRAY(N("size", NBO_()) => 2,
- V("type", 0, NBO_()) => 2,
- N("data", "") => 0)));
-BP();
-W("Here, <tt>data</tt> is the message as passed down by the GNUnet core.");
-P();
-W("For the TCP transport service, the sender address in the HELLO has this
format:");
-EP();
-LAYOUT("HostAddress",
- F(ARRAY(N("IPv6 address", "") => 16,
- N("IPv4 address", NBO_()) => 4,
- N("port", NBO_()) => 2,
- V("availability", 0, NBO_()) => 2)));
-BP();
-W("The <tt>availability</tt> field describes which of the IP protocols are
supported.");
-W("If the lowest bit (1) is set, the given IPv4 address should be valid.");
-W("If the second lowest bit (2) is set, the given IPv6 address should be
valid.");
-W("If both bits are set, both IPv4 and IPv6 can be used to contact the peer.");
-W("All other bits should be zero and ignored by peers at this point.");
-W("HELLOs where no bits in <tt>availability</tt> are set are invalid.");
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/protocol_transport_udp.php3
===================================================================
--- GNUnet-docs/WWW/protocol_transport_udp.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/protocol_transport_udp.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,34 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: The UDP transport service";
-$description = "Documentation for the UDP transport service protocol";
-include("html_header.php3");
-
-H2("The UDP transport service");
-BP();
-W("The current UDP implementation encapsulates messages in this format:");
-EP();
-LAYOUT("UDPMessage",
- F(ARRAY(N("message size", NBO_()) => 2,
- V("reserved", 0, NBO_()) => 2,
- N("sender ID", NBO_()) => 64)));
-
-BP();
-W("Note that the actual data appears before this struct.");
-P();
-W("For the UDP transport service, the sender address in the HELLO has this
format:");
-EP();
-LAYOUT("HostAddress",
- F(ARRAY(N("IPv6 address", "") => 16,
- N("IPv4 address", NBO_()) => 4,
- N("port", NBO_()) => 2,
- V("availability", 0, NBO_()) => 2)));
-BP();
-W("The <tt>availability</tt> field describes which of the IP protocols are
supported.");
-W("If the lowest bit (1) is set, the given IPv4 address should be valid.");
-W("If the second lowest bit (2) is set, the given IPv6 address should be
valid.");
-W("If both bits are set, both IPv4 and IPv6 can be used to contact the peer.");
-W("All other bits should be zero and ignored by peers at this point.");
-W("HELLOs where no bits in <tt>availability</tt> are set are invalid.");
-include("html_footer.php3");
-?>
\ No newline at end of file
Deleted: GNUnet-docs/WWW/robots.txt
===================================================================
--- GNUnet-docs/WWW/robots.txt 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/robots.txt 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,4 +0,0 @@
-User-agent: *
-Disallow: /i18nhtml/dig.php
-Disallow: /i18nhtml/translate.php
-
Deleted: GNUnet-docs/WWW/screenshots.php3
===================================================================
--- GNUnet-docs/WWW/screenshots.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/screenshots.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,105 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Screenshots";
-$description="GNUnet Screenshots";
-include("html_header.php3");
-H2("GNUnet Screenshots");
-
-BP();
-W("Besides command line tools, GNUnet provides a graphical user interface:
%s.", extlink_("gnunetgtk.php3", "gnunet-gtk"));
-W("Here are some screenshots of gnunet-gtk and its features and ports.");
-EP();
-IMG("screenshots/gnunet-gtk-fs-status-winxp.png",
- "gnunet-gtk status page",
- "CENTER",732,544);
-BP();
-W("Overview of all pending and completed filesharing operations (Windows
XP).");
-EP();
-
-BR();
-
-IMG("screenshots/gnunet-gtk-directory-browser.png",
- "gnunet-gtk download page",
- "CENTER",732,592);
-BP();
-W("Search and download page with thumbnails (Linux, standard GTK theme).");
-EP();
-
-BR();
-
-IMG("screenshots/gnunet-gtk-stats-winxp.png",
- "gnunet-gtk statistics page",
- "CENTER",732,534);
-BP();
-W("Statistics of outgoing network traffic (Windows XP).");
-EP();
-
-H3("gnunet-qt");
-BR();
-
-IMG("screenshots/gnunet-qt-fs-search.png",
- "gnunet-qt search and download on Windows XP",
- "CENTER",808,634);
-BP();
-W("Search and download page with thumbnails (Windows XP, standard theme).");
-EP();
-
-IMG("screenshots/gnunet-qt-fs-stats.png",
- "gnunet-qt filesharing overview on Linux, KDE",
- "CENTER",808,629);
-BP();
-W("Filesharing overview (Linux, KDE).");
-EP();
-
-H3("gnunet-gtk in French");
-BR();
-
-IMG("screenshots/gnunet-gtk-fr1.png",
- "gnunet-gtk search and download",
- "CENTER",732,533);
-BP();
-W("Search and download page with thumbnails (Linux, standard GTK theme).");
-EP();
-
-IMG("screenshots/gnunet-gtk-fr2.png",
- "gnunet-gtk publication dialog",
- "CENTER",732,546);
-BP();
-W("Publication dialog (Linux, standard GTK theme).");
-EP();
-
-IMG("screenshots/gnunet-gtk-fr3.png",
- "gnunet-gtk publication page",
- "CENTER",732,550);
-BP();
-W("Publication page (Linux, standard GTK theme).");
-EP();
-
-IMG("screenshots/gnunet-gtk-fr4.png",
- "gnunet-gtk status page",
- "CENTER",732,546);
-BP();
-W("Overview of all pending and completed filesharing operations (Linux,
standard GTK theme).");
-EP();
-
-IMG("screenshots/gnunet-gtk-fr5.png",
- "gnunet-gtk publication dialog with thumbnail",
- "CENTER",732,546);
-BP();
-W("Publication dialog with thumbnail (Linux, standard GTK theme).");
-EP();
-
-H3("GNUnet under Virtual Machines");
-
-BR();
-
-IMG("screenshots/gnunet-qemu.png",
- "qemu running gnunet-gtk",
- "CENTER",732,578);
-BP();
-W("qemu running gnunet-gtk (Linux on top of Linux).");
-EP();
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/scripts.inc
===================================================================
--- GNUnet-docs/WWW/scripts.inc 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/scripts.inc 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,136 +0,0 @@
-<?php
-include_once("i18nHTML/i18nhtml.php");
-
-// GNUnet specific functions
-
-function afslogo() {
- img("logos/afs_small.png", "Anonymous file sharing logo", "RIGHT", 150, 115);
-}
-function gnunetlogo() {
- img("logos/gnunet-logo-color.png", "GNUnet logo", "RIGHT", 73, 75);
-}
-
-function menu_bar() {
-?>
-
- <div id="navigation-bar">
- <div id="navbar">
- <ul>
- <li><?php intlink("index.php","Welcome") ?></li>
- <li><?php intlink("mailinglist.php3","Contact"); ?></li>
- <li><?php extlink("/drupal/", "Community"); ?></li>
- <li><?php intlink("faq.php3","FAQ"); ?></li>
-
- <li><?php intlink("download.php3","Download"); ?></li>
- <li><?php intlink("documentation.php3","Documentation"); ?></li>
- <li><?php intlink("papers.php3","Papers"); ?></li>
- <li><?php intlink("links.php3","Links"); ?></li>
- </ul>
- </div>
- </div>
-<?php
-}
-
-// create an alement name consisting of the translation of $name
-// and the concrete value $name and possibly an NBO tag
-function V($name, $val, $nbo="") {
- return W_($name) . " (" . $val . (($nbo == "")?"":",$nbo") . ")";
-}
-
-// create an alement name consisting of the translation of $name
-// and possibly an NBO tag
-function N($name, $nbo="") {
- return W_($name) . (($nbo == "")?"":"($nbo)");
-}
-
-// formats a struct for showStructLayout
-// $elements is an (ordered!) list mapping a name
-// Todo: hack a bit more to give range for byte-offsets (i.e 4-13 bytes);
-// Also: for variable-size elements (size==0), improve "plusX" (and add
-// also "plusY, plusZ" etc if multiple var-size ones happen to be used)
-function F($elements) {
- $ret = ARRAY();
- $offset = 0;
- $currString = "";
- $plusX = "";
- foreach($elements as $name => $size) {
- $osize = $size;
- if (($offset % 4) == 0) {
- if ( ($size >= 4) || ($size == 0) ) {
- $ret[] = "<th class=\"tbl\">$offset$plusX</th><td class=\"tbl\"
colspan=4>$name</td>";
- $mod = $size % 4;
- $offset += $size - $mod;
- $size = $mod;
- }
- if ($size > 0) {
- $currString = "<th class=\"tbl\">$offset$plusX</th><td class=\"tbl\"
colspan=$size>$name</td>";
- $offset += $size;
- }
- } else {
- $left = 4 - ($offset % 4);
- if ($left > $size)
- $left = $size;
- $currString = $currString . "<td class=\"tbl\" colspan=$left>$name</td>";
- $offset += $left;
- $size -= $left;
- if (($offset % 4) == 0) {
- $ret[] = $currString;
- $currString = "";
- }
- if ($size > 0) {
- $mod = $size % 4;
- if ($size >= 4) {
- $size -= $mod;
- $ret[] = "<th class=\"tbl\">$offset$plusX</th><td class=\"tbl\"
colspan=4>$name</td>";
- $offset += $size;
- }
- if ($mod > 0) {
- $currString = "<th class=\"tbl\">$offset$plusX</th><td class=\"tbl\"
colspan=$mod>$name</td>";
- $offset += $mod;
- }
- }
- }
- if ($osize == 0)
- $plusX = "+X";
- }
- if ($currString != "")
- $ret[] = $currString;
- return $ret;
-}
-
-// See the various protocol*.php3 files for how to use this
-// one. Rather complicated :-). Used to display the layout
-// of a struct when describing protocols.
-function LAYOUT($structName,
- $fieldArray) {
- echo "<center>\n";
- echo "<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\"
width=\"90%\">\n";
- echo "<tr><th colspan=5 valign=center><a href=\"doxygen/html/struct" .
- str_replace("_", "__", $structName) . ".html\">" . $structName .
- "</a></th></tr>";
- echo "<tr><th rowspan=2 class=\"tbl\">" . W_("Offset") .
- "</th><th colspan=4 class=\"tbl\">" . W_("Bit position") .
- "</th></tr>\n";
- echo "<tr><th class=\"tbl\">0-7</th><th class=\"tbl\">8-15</th><th
class=\"tbl\">16-23</th><th class=\"tbl\">24-31</th></tr>\n";
- $cnt = 0;
- foreach($fieldArray as $value) {
- echo "<tr>" . $value . "</tr>\n";
- $cnt++;
- }
- if ($cnt > 5)
- echo "<tr><th class=\"tbl\"></th><th class=\"tbl\">0-7</th><th
class=\"tbl\">8-15</th><th class=\"tbl\">16-23</th><th
class=\"tbl\">24-31</th></tr>\n";
- echo "</table>\n";
- echo "</center>\n";
-}
-
-
-function NBO_() {
- global $haveNBO;
- $haveNBO = 1;
- return "<a href=\"#NBO\">NBO</a>";
-}
-function NBO() {
- echo NBO_();
-}
-
-?>
Deleted: GNUnet-docs/WWW/scripts.php3
===================================================================
--- GNUnet-docs/WWW/scripts.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/scripts.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,6 +0,0 @@
-<?php
-if (! $scripts_once) {
- $scripts_once = 1;
- include("scripts.inc");
- }
-?>
Deleted: GNUnet-docs/WWW/search.php
===================================================================
--- GNUnet-docs/WWW/search.php 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/search.php 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,6 +0,0 @@
-<?php
- $sstr = str_replace("+", "%2B", $_POST["words"]);
- $sstr = str_replace("-", "%3A", $sstr);
- $sstr = ereg_replace("[[:space:]]+", "+", $sstr);
- header("Location: http://www.google.de/search?q=site%3Agnunet.org+" .
$sstr);
-?>
\ No newline at end of file
Deleted: GNUnet-docs/WWW/smtp.php3
===================================================================
--- GNUnet-docs/WWW/smtp.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/smtp.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,216 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet: The SMTP Transport";
-$description="GNUnet - an anonymous distributed backup system :-)";
-include("html_header.php3");
-
-H2("The GNUnet SMTP Transport Layer");
-
-BP();
-W("This page describes the new SMTP transport service for GNUnet.");
-W("It also describes the transport layer in more detail and gives some
benchmarking results.");
-W("The performance results presented are quite old and maybe outdated at this
point.");
-EP();
-echo "<ol>\n";
-LIV(extlink_("#why","Why use SMTP for a peer-to-peer transport?"));
-LIV(extlink_("#how","How does it work?"));
-LIV(extlink_("#cfg","How do I configure my peer?"));
-LIV(extlink_("#tst","How do I test if it works?"));
-LIV(extlink_("#perf","How fast is it?"));
-LIV(extlink_("#doc","Is there any additional documentation?"));
-echo "</ol>\n";
-
-ANCHOR("why");H3("Why use SMTP for a peer-to-peer transport?");
-BP();
-W("There are many reasons why one would not want to use SMTP:");
-EP();
-echo "<ul>\n";
-LI("SMTP is using more bandwidth than TCP, UDP or HTTP");
-LI("SMTP has a much higher latency.");
-LI("SMTP requires significantly more computation (encoding and decoding time)
- for the peers.");
-LI("SMTP is significantly more complicated to configure.");
-LI("SMTP may be abused by tricking GNUnet into sending mail to
- non-participating third parties.");
-echo "</ul>\n";
-BP();
-W("So why would anybody want to use SMTP?");
-EP();
-echo "<ul>\n";
-LI("SMTP can be used to contact peers behind NAT boxes (in virtual private
networks).");
-LI("SMTP can be used to circumvent policies that limit or prohibit
peer-to-peer traffic by masking as "legitimate" traffic.");
-LI("SMTP uses E-mail addresses which are independent of a specific IP, which
can be useful to address peers that use dynamic IP addresses.");
-LI("SMTP can be used to initiate a connection (e.g. initial address exchange)
and peers can then negotiate the use of a more efficient protocol (e.g. TCP)
for the actual communication.");
-echo "</ul>\n";
-
-BP();
-W("In summary, SMTP can for example be used to send a message to a peer behind
a NAT box that has a dynamic IP to tell the peer to establish a TCP connection
to a peer outside of the private network.");
-W("Even an extraordinary overhead for this first message would be irrelevant
in this type of situation.");
-EP();
-
-ANCHOR("how");H3("How does it work?");
-
-BP();
-W("When a GNUnet peer needs to send a message to another GNUnet peer that has
advertised (only) an SMTP transport address, GNUnet base64-encodes the message
and sends it in an E-mail to the advertised address.");
-W("The advertisement contains a <em>filter</em> which is placed in the E-mail
header, such that the receiving host can filter the tagged E-mails and forward
it to the GNUnet peer process.");
-W("The filter can be specified individually by each peer and be changed over
time.");
-W("This makes it impossible to censor GNUnet E-mail messages by searching for
a generic filter.");
-EP();
-
-ANCHOR("cfg");H3("How do I configure my peer?");
-
-BP();
-W("First, you need to configure <tt>procmail</tt> to filter your inbound
E-mail for GNUnet traffic.");
-W("The GNUnet messages must be delivered into a pipe, for example
<tt>/tmp/gnunet.smtp</tt>.");
-W("You also need to define a <em>filter</em> that is used by procmail to
detect GNUnet messages.");
-W("You are free to choose whichever filter you like, but you should make sure
that it does not occur in your other E-mail.");
-W("In our example, we will use <tt>X-mailer: GNUnet</tt>.");
-W("The <tt>~/.procmailrc</tt> configuration file then looks like this:");
-EP();
-
-PRE(":0:\n" .
- "* ^X-mailer: GNUnet\n" .
- "/tmp/gnunet.smtp\n" .
- "# where do you want your other e-mail delivered to\n" .
- "# (default: /var/spool/mail/$USER)\n" .
- ":0:\n" .
- "/var/spool/mail/$USER\n");
-
-BP();
-W("After adding this file, first make sure that your regular E-mail still
works (e.g. by sending an E-mail to yourself).");
-W("Then edit the GNUnet configuration.");
-W("In the section <tt>SMTP</tt> you need to specify your E-mail address under
<tt>EMAIL</tt>, your mail server (for outgoing mail) under <tt>SERVER</tt>, the
filter (<em>X-mailer: GNUnet</em> in the example) under <tt>FILTER</tt> and the
name of the pipe under <tt>PIPE</tt>.");
-W("The completed section could then look like this:");
-EP();
-
-PRE("EMAIL = address@hidden" .
- "MTU = 65000\n" .
- "SERVER = mail.gnu.org:25\n" .
- "FILTER = \"X-mailer: GNUnet\"\n" .
- "PIPE = /tmp/gnunet.smtp");
-
-BP();
-W("Finally, you need to add <tt>smtp</tt> to the list of <tt>TRANSPORTS</tt>
in the <tt>GNUNETD</tt> section.");
-W("GNUnet peers will use the E-mail address that you specified to contact your
peer until the advertisement times out.");
-W("Thus, if you are not sure if everything works properly or if you are not
planning to be online for a long time, you may want to configure this timeout
to be short, e.g. just one hour.");
-W("For this, set <tt>HELLOEXPIRES</tt> to <tt>1</tt> in the <tt>GNUNETD</tt>
section.");
-P();
-W("This should be it, but you may probably want to %s it first.\n",
- extlink_("#tst","test"));
-
-ANCHOR("tst");H3("How do I test if it works?");
-
-BP();
-W("Any transport can be subjected to some rudimentary tests using the
<tt>gnunet-transport-check</tt> tool.");
-W("The tool sends a message to the local node via the transport and checks
that a valid message is received.");
-W("While this test does not involve other peers and can not check if firewalls
or other network obstacles prohibit proper operation, this is a great testcase
for the SMTP transport since it tests pretty much nearly all of the
functionality.");
-P();
-
-W("<tt>gnunet-transport-check</tt> should only be used without running
<tt>gnunetd</tt> at the same time.");
-W("By default, <tt>gnunet-transport-check</tt> tests all transports that are
specified in the configuration file.");
-W("But you can specifically test SMTP by giving the option
<tt>--transport=smtp</tt>.");
-P();
-
-W("Note that this test always checks if a transport can receive and send.");
-W("While you can configure most transports to only receive or only send
messages, this test will only work if you have configured the transport to send
and receive messages.");
-
-EP();
-ANCHOR("perf");H3("How fast is it?");
-
-BP();
-W("We have measured the performance of the UDP, TCP and SMTP transport layer
directly and when used from an application using the GNUnet core.");
-W("Measureing just the transport layer gives the better view of the actual
overhead of the protocol, whereas evaluating the transport from the application
puts the overhead into perspective from a practical point of view.");
-P();
-
-W("The loopback measurements of the SMTP transport were performed on three
different machines spanning a range of modern SMTP configurations.");
-W("We used a PIII-800 running RedHat 7.3 with the <em>Purdue</em> Computer
Science configuration which includes filters for spam.");
-W("We also used a Xenon 2 GHZ with a vanilla <em>RedHat</em> 8.0 sendmail
configuration.");
-W("Furthermore, we used qmail on a PIII-1000 running Sorcerer GNU Linux
(<em>SGL</em>).");
-W("The numbers for UDP and TCP are provided using the SGL configuration.");
-W("The qmail benchmark uses qmail’s internal filtering whereas the
sendmail benchmarks relies on procmail to filter and deliver the mail.");
-W("We used the transport layer to send a message of b bytes (excluding
transport protocol headers) directly to the local machine.");
-W("This way, network latency and packet loss on the wire have no impact on the
timings.");
-W("n messages were sent sequentially over the transport layer, sending message
i+1 after the i-th message was received.");
-W("All messages were sent over the same connection and the time to establish
the connection was not taken into account since this overhead is miniscule in
practice -- as long as a connection is used for a significant number of
messages.");
-EP();
-
-echo "<center>\n";
-?>
-<table border="0" cellspacing="0" cellpadding="0" width="90%">
- <tr>
- <th class="tbl"><?php W("Transport"); ?></th>
- <th class="tbl">UDP</th>
- <th class="tbl">TCP</th>
- <th class="tbl">SMTP (Purdue sendmail)</th>
- <th class="tbl">SMTP (RH 8.0)</th>
- <th class="tbl">SMTP (SGL qmail)</th>
- </tr>
- <tr>
- <th class="tbl" stlye="text-align: right;"> 11 bytes</th>
- <td class="tbl" stlye="text-align: right;">31 ms</td>
- <td class="tbl" stlye="text-align: right;">55 ms</td>
- <td class="tbl" stlye="text-align: right;"> 781 s </td>
- <td class="tbl" stlye="text-align: right;">77 s </td>
- <td class="tbl" stlye="text-align: right;">24 s </td>
- </tr>
- <tr>
- <th class="tbl" stlye="text-align: right;"> 407 bytes</th>
- <td class="tbl" stlye="text-align: right;">37 ms</td>
- <td class="tbl" stlye="text-align: right;">62 ms</td>
- <td class="tbl" stlye="text-align: right;"> 789 s </td>
- <td class="tbl" stlye="text-align: right;">78 s </td>
- <td class="tbl" stlye="text-align: right;">25 s </td>
- </tr>
- <tr>
- <th class="tbl" stlye="text-align: right;">1,221 bytes</th>
- <td class="tbl" stlye="text-align: right;">46 ms</td>
- <td class="tbl" stlye="text-align: right;">73 ms</td>
- <td class="tbl" stlye="text-align: right;"> 804 s </td>
- <td class="tbl" stlye="text-align: right;">78 s </td>
- <td class="tbl" stlye="text-align: right;">25 s </td>
- </tr>
-</table>
-<?php
-
-echo "</center>\n";
-BP();
-
-W("The benchmarks show that UDP and TCP are, as expected, both significantly
faster compared with any of the SMTP services.");
-W("Among the SMTP implementations, there can be significant differences
depending on the SMTP configuration.");
-W("Filtering with an external tool like procmail that needs to re-parse its
configuration for each mail can be very expensive.");
-W("Applying spam filters can also significantly impact the performance of the
underlying SMTP implementation.");
-W("The microbenchmark showa that SMTP can be a viable solution for initiating
peer-to-peer sessions: a couple of seconds to connect to a peer are probably
not even going to be noticed by users.");
-
-W("The next benchmark measures the possible throughput for a transport.");
-W("Throughput can be measured by sending multiple messages in parallel and
measureing packet loss.");
-W("Note that not only UDP but also the TCP transport can actually loose
messages since the TCP implementation drops messages if the <tt>write</tt> to
the socket would block.");
-W("While the SMTP protocol never drops messages itself, it is often so slow
that only a fraction of the messages can be sent and received in the given
time-bounds.");
-W("For this benchmark we report the message loss after allowing t time for
sending m messages.");
-W("If messages were not sent (or received) after an overall timeout of t, they
were considered lost.");
-W("The benchmark was performed using two Xeon 2 GHZ machiens running RedHat
8.0 with sendmail.");
-W("The machines were connected with a direct 100 MBit ethernet connection.");
-
-W("Figures %s, %s and %s show that the throughput for messages of size 1,200
octects is 2,343 kbps, 3,310 kbps and 6 kbps for UDP, TCP and SMTP
respectively.",
- ARRAY(extlink_("images/udp_1200.png","udp1200"),
- extlink_("images/tcp_1200.png","tcp1200"),
- extlink_("images/smtp_mtus.png","smtp-MTUs")));
-W("The high per-message overhead of SMTP can be improved by increasing the
MTU, for example, an MTU of 12,000 octets improves the throughput to 13 kbps as
figure %s shows.",
- extlink_("images/smtp_mtus.png","smtp-MTUs"));
-W("Our research paper (%s, %s) has some more details on the benchmarking
results.",
- ARRAY(extlink_("download/transport.ps","A4"),
- extlink_("download/transport-us.ps","US-letter")));
-
-EP();
-ANCHOR("doc");H3("Is there any additional documentation?");
-
-BP();
-W("Sure.");
-W("We have the %s from our initial proposal, a research paper (%s, %s) that
also discusses some security aspects of the design and a concluding %s.",
- ARRAY(extlink_("download/transport-proposal.ps","slides"),
- extlink_("download/transport.ps","A4"),
- extlink_("download/transport-us.ps","US-letter"),
- extlink_("download/transport-presentation.pdf","presentation")));
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/t-shirt.ps
===================================================================
--- GNUnet-docs/WWW/t-shirt.ps 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/t-shirt.ps 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,700 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: sss.dvi
-%%Pages: 1
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips sss.dvi -o o.ps
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 2003.07.19:1007
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: special.pro
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@address@hidden div/hsc X}B/@address@hidden div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
-psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
-roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
-moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
-begin/SpecialSave save N gsave normalscale currentpoint TR
address@hidden count/ocount X/dcount countdictstack N}N/@setspecial{
-CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
-closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
-sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
-}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
-CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
-lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
-/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
-repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
-/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
-currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
-moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
-/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
-1 startangle endangle arc savematrix setmatrix}N end
-
-%%EndProcSet
-TeXDict begin 39158280 55380996 1000 600 600 (sss.dvi)
address@hidden
-%DVIPSBitmapFont: Fa cmss10 14.4 1
-/Fa 1 50 df<EC03801407140F143F14FF1303131F0007B5FCB6FCA413FD13E1EAF80112
-00B3B3B3A5B8FCA7285175D03C>49 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmcsc10 29.86 3
-/Fb 3 118 df[<962607FFF8160F4EB600C04B7E063F15F84DB8153F050F05C0147F053F
-05F014FF94B900FC5B0403DB80077F040F02F0C7393FFF8003043F91C800076D5A93B500
-F80300EBF00F030302E093383FF81F4B0280EE1FFC4B49CA3807FE3F033F01F8716C5A4B
-49050090B5FC92B548844A028084020791CC7E4A49854A49854A49854A49855E91B54885
-494A8649894991CEFC494987A2494987495B8B495B8B90B5FC4B875A5D488AA2485CA248
-1F7FA292D0FC5A203FA2485BA37AC7FC489CC8FCA35CA2B5FCB17EA280982603FFFCED0F
-FE9AB8FC7EA46C7F98C70007EDFC00E3001F14E06C775C6F86785C7E8A6C80A27E817E81
-7F817F817F6D7FA26D7F6D806D807F6E7F826E6D616E7F6E7F6E6D61020114C06E6E606F
-6D606F01FC60030F01FFF07FDF6F6E933801FF8F6F02F05E030002FC041F1307043FD9FF
-8092387FFE03040F02F8913907FFF8010403DAFFC090B5487E040092B700C0137F053F95
-C7123F050F05FC140F050105F06EC7FCDD003F048091C8FC060103F8CBFCDE000749CCFC
->135 133 115 257 159 103 D<B700E04DB46CECFFC07096B7FCA2828282A2D800076E
-DD0007EDF000D9003F6E050015800C3F49C7FC71060F13F871725B71725BA203BF6D725B
-71725B039F7F158F03877F7272C8FC15830381808403808082707F8482707F8470808270
-808582717F717F8583717F8583718071808683727F86727F84727F868472808772808473
-7F8785737F87737F85738088857380747F8886747F88747F8674808986748089757F8775
-7F8987757F1E807514C0877514E01EF0887613F81EFC7613FE887613FF67888888A28989
-A28989894A7E8989A24A6C85496D868A497F496D86011F01FF86017F14C00003B600F885
-B800E0848AA28A8BA201C0C7007F1A3E827F75FE98>110 D<D8FFF8DB7FFC4BB46CECFF
-C090B895B7FCA6D8001F03E0CA0007EDF00001014ACC15806D4A073F49C7FC6E49070F13
-F8785B6E49735BA2785B785BA479C8FCB3B3B3B26E646782A36E515AA2826E1B03676E1B
-0770626E1B0F676E6D191F676F6D183F6F505A7118FF6F6D96C9FC6F4F5A6F6D17036F6D
-4D5A6F6D4D5A6F6DEF3FF0706C4D5A7001C04B485A706D4B5B7001F8030F90CAFC7001FE
-ED7FFE0401D9FFC0903803FFF87002FC013F5B053F90B712C0050F5F05034CCBFCDD007F
-15F8061F15C006014ACCFCDE000F13E0828275FE98>117 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmss10 29.86 6
-/Fc 6 117 df[<93B512C0033FECFF800203B712F8021F16FF91B912C0010318F0011F18
-FC017F18FF90BB7E00031AE0000F864886007F86BC7E876C922680007F158003F0C71203
-92C96C14C06C01FC041F14E002E0826C0180040314F049CA7E01F87114F86C5A01C07213
-FC5B6CCC7E00041BFECD7EA47413FFAB62A21CFEA262A25013FCA297B5FC1CF8614F14F0
-61071F14E0614F14C096B6FC4E15804E15004E5C4E5C634E5C4E5C4E5C95B65A50C7FC4D
-5C4D5C624D5C4D5CA24D5C4D91C8FC614D5BA294B55A615E61615E615E96C9FCA24C5BA2
-605E60A25E60A3605EA260A593B5FC60B3A293CCFCB3A60303B512E0B3A3>88
-175 114 302 117 63 D[<50B512F0087FECFFE00707B8FC073F17F04EBAFC060F19E006
-3F19F895BCFC05031BC0050F1BF0053F1BFC4DF3FF804CBE12C05E160F4C1D804C933880
-003F93B700F0C8FC4B048015074B03FCCAFC4B03F0171F4B03C0050714004B92CB12014B
-02FC727E4B4A191F92B600E019074A4B854A92CE5A4A4A1B7E4D1B1E4A4A1B0E4A4A1B06
-4A4A98C7FC4A5C5F91B6D1FC495CA2495C5E495C5B5E495CA2495CA24991D2FCA290B55A
-A2485CA25D5A5D5AA25D5A5DA35A5DA34891D3FCA5485BA7B55AB3A26C7F99B912F0A66C
-7FA56C80A3816C98C9FCA3817E81A27E817E81A26C80A26D7FA26D80A26D80A26D80827F
-6D80826D80A26D806E80836E806E806E806E80836E806E15C06E816F14F86F806F14FF6F
-15C06F03F05F6F03FC171F6FDBFF804BB6FC6F04F0153F043FDBFF80013FB7FC7093BAFC
-82160382706C1CC0711C00050F1BFC05031BF005001B80063F07FCC7FC060F19E0060196
-C8FCDE003F17F0070794C9FCDF007F15C0080102E0CAFC>132 178
-112 302 165 71 D<EF1FFF4CB512F8040F14FF047F15E04BB712F8030716FE031F824B
-17C092B97E4A844A18FC020F844A845C4A8591B6D8F80181499226C0001F80494AC71207
-04F8020180494A6E6C7F4902C081494A6F7F93C97E4949707F4949824B707F90B5488275
-1380485C4B83481CC04B834891CBFC7513E0485BA24A7213F05AA24A845A1DF84A84A348
-5BA291BCFCA21DFCA2BEFCAA02C0CEFCA66C7FA5807EA3807E80A27E80A26C7FA26C8081
-7E816C6E19106F19306D1BF06F18016D6D18076D6D180F04C0173F6D6E17FF6D6E040313
-F86D02FC160F6D02FF167F05C00203B5FC6D03F0141F6E02FF0107B6FC6E92B8FC800207
-1AF06E1AC06E1A806EF1FE00033F606F18F0030718C0030195C7FC6F6C16F8041F16C004
-034BC8FCDC007F14E0050301F8C9FC5E7678F26E>101 D<F0FFFC051FEBFFE0B500E091
-B612FC040315FF041F16C04C16F093B87E0303834B834B83033F844B8492BA7E14E102E3
-8502E7EC000F04F801008102EF01E0143F91B50080020F8093C812034B6F804B814B825D
-4B707FA24B82A24B82A292CA1580A25C86A25CA35CA65CB3B3B3AF59716DF080>110
-D<F0FFF8051FEBFFC04CB612FC040FEDFF80043F16E093B812F8030317FE030F717E4B84
-037F18F092BA7E4A85020719FF4A864A864ADB800F814A02F8C78191B600C0021F804992
-C80007804902FC0301804C814902E0043F7F494A7080494A708093CA7E49497180494971
-804B8390B548727FA2484A727F4B8448894B84488992CC7E481E804A85A2481EC04A85A2
-481EE0A24A85A2481EF0A44A86A2B51DF8AE6E97B5FCA26C1EF0A46E61A26C1EE0A26E61
-A26C1EC06E61A26C6E4E1480A36C6E4E14006F606C656F606C6E95B55AA26C6E4D5C6D6D
-4D5C6F5F6D6E4C5C705E6D6E4C5C6D02F893B65A6D6E4B92C7FC6D02FF03075C05C0141F
-6D03F891B65A6D9226FF800F5D6E92B85A6E626E62020797C8FC6E616E616E61033F18E0
-030F18806F95C9FC030117FC6F6C16F0040F1680040103FCCAFCDC003F14E0050101FCCB
-FC6D7679F27C>I[<913807FFFEB3AEBC1280AFC7000F49CAFCB3B3B3B082A47115806E17
-0171EC07C01A1F71143F71EB01FF6E6E010713E005FE90B5FC94B7FC1BF080A26E18F8A2
-811BE06F17806FEEFE006F16F06F16C06F4BC7FC6F15E06F6C49C8FC041F1380>77
-145 123 269 90 116 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: a4
-a4
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 250 2571 a @beginspecial 0 @llx 0 @lly 136 @urx
-104 @ury 4080 @rwi @setspecial
-%%BeginDocument: afs.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 0 0 136 104
-%%HiResBoundingBox: 0.000000 0.000000 135.849731 103.306396
-%.........................................
-%%Title GNUnet Anonymous File Sharing Logo
-%%Creator: Alex Jones
-%%CreationDate: 2003/04/21 19:53:24
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%EndComments
-%%BeginProlog
-% This copyright applies to everything between here and the %%EndProlog:
-% Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved.
-%%BeginResource: procset GS_epswrite_2_0_1001
-/GS_epswrite_2_0_1001 80 dict dup begin
-/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
-4 index eq and{ pop pop pop}{ PageSize dup 1
-5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get
exec}
-{ pop/setpagedevice where
-{ pop 1 dict dup /PageSize PageSize put setpagedevice}
-{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
-setpage}if}ifelse}ifelse}ifelse} bind def
-/!{bind def}bind def/#{load def}!/N/counttomark #
-/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
-/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
-/w/setlinewidth #/J/setlinecap #
-/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
-/m/moveto #/l/lineto #/c/rcurveto #
-/p{N 2 idiv{N -2 roll rlineto}repeat}!
-/P{N 0 gt{N -2 roll moveto p}if}!
-/h{p closepath}!/H{P closepath}!
-/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
-/re{4 -2 roll m exch dup lx exch ly neg lx h}!
-/^{3 index neg 3 index neg}!
-/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
-/q/gsave #/Q/grestore #/rf{re fill}!
-/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
-/|={pop exch 4 1 roll 3 array astore cvx exch 1 index def exec}!
-/|{exch string readstring |=}!
-/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
-/@/currentfile #/${+ @ |}!
-/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
-3 1 roll}repeat pop pop true}!
-/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
-/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
-/Ic{exch Ix false 3 colorimage}!
-/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
-/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
-/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
-/@F{@ &2<<F}!/@address@hidden &2 FX}!
-/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
-/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
-/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
-currentdict end image}!
-/~{@ read {pop} if}!
-end readonly def
-%%EndResource
-/pagesave null def
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-GS_epswrite_2_0_1001 begin
-/pagesave save store 100 dict begin
-0.1 0.1 scale
-%%EndPageSetup
-gsave mark
-K
-0 0 0 0 rf
-Q q
-0 0 250000 0 0 250000 ^ Y
-255 G
-900 304 m
-1 0 2 0 3 0 c
-0 -1 0 -2 y
-0 0 0 -1 v
-1 -1 0 -3 -2 -4 c
-0 -1 0 -3 -1 -5 c
-0 -1 0 -1 -1 -2 c
-0 -1 -1 -2 -1 -4 c
--1 0 -2 -1 -2 -2 c
--1 -1 -1 -1 y
-0 -1 -1 -2 -1 -4 c
-1 0 2 0 v
-1 2 2 5 3 7 c
-3 8 5 15 8 23 c
--4 -1 -8 -2 -12 -5 c
--9 -4 -18 -8 -26 -12 c
--1 -1 p
--1 0 -2 -1 v
-0 -1 0 -2 0 -4 c
--1 -2 -1 -5 -1 -7 c
-1 0 2 1 y
--1 3 -2 5 -1 6 c
-1 1 1 2 2 2 c
-2 1 3 1 4 1 c
-1 3 3 4 7 5 c
-3 0 5 2 8 4 c
-1 1 2 2 3 3 c
-2 0 3 -1 4 -1 c
-1 1 1 2 2 2 c
-1 1 1 1 1 2 c
-1 0 2 0 y
-1 0 1 0 y
-f
-923 306 m
-2 0 3 -1 3 -2 c
-3 -4 4 -8 5 -13 c
-1 -2 1 -6 0 -11 c
-1 -4 1 -9 -2 -16 c
--1 -1 -1 -2 -2 -3 c
-0 0 0 -1 v
-0 0 0 -1 v
--1 0 -1 0 0 0 c
-0 -1 1 -3 1 -5 c
--1 -3 -2 -5 -3 -7 c
--1 0 -1 -1 -1 -2 c
--1 0 -1 -1 y
-0 -4 -1 -8 -2 -12 c
-0 1 p
-0 1 0 1 1 1 c
-1 0 2 -1 v
-1 5 2 10 4 15 c
-1 6 2 12 4 17 c
-6 37 -2 52 -25 44 c
--3 -8 -5 -15 -8 -23 c
--1 -2 -2 -5 -3 -7 c
-1 -1 2 -1 4 -2 c
-0 2 1 4 1 6 c
-0 3 1 6 3 9 c
-0 1 0 2 1 3 c
-0 1 0 2 0 3 c
-2 3 3 5 5 8 c
-0 0 1 0 v
-0 1 0 1 y
-1 0 2 0 3 0 c
-3 0 6 -1 9 -1 c
-f
-866 286 m
-0 2 0 3 0 4 c
--1 0 -2 -1 -4 -1 c
-1 -1 1 -2 1 -3 c
-1 -2 1 -5 2 -7 c
-0 2 0 5 1 7 c
-f
-907 203 m
--1 -1 -2 -3 -2 -5 c
--1 -1 -1 -2 -2 -2 c
--1 -7 -5 -12 -11 -15 c
--1 0 -1 -2 -2 -3 c
--2 -4 -5 -8 -8 -11 c
-1 0 1 -1 v
-10 10 18 21 26 34 c
-1 2 2 4 4 7 c
-1 3 2 6 4 9 c
--2 0 -2 1 -2 2 c
--3 -5 -5 -10 -8 -15 c
-f
-870 154 m
-1 0 2 1 2 2 c
-0 0 0 1 v
--1 0 -1 1 y
--1 -1 -2 -2 -4 -3 c
--1 0 -2 -1 -3 -3 c
-1 0 2 0 2 1 c
-2 0 3 0 4 1 c
-f
-851 139 m
-0 1 0 2 1 3 c
-0 1 1 1 1 2 c
--1 0 p
-0 -1 -1 -2 -3 -3 c
--3 -2 -6 -4 -10 -5 c
--3 -4 -7 -7 -12 -8 c
--2 -1 -5 -3 -7 -5 c
--5 -3 -9 -4 -14 -3 c
--7 -5 -14 -9 -23 -13 c
-1 0 p
-10 4 21 8 31 13 c
-3 1 7 3 11 5 c
-1 0 2 1 3 1 c
-5 3 10 6 15 9 c
-2 1 5 3 7 4 c
-f
-873 154 m
-0 0 1 0 v
--1 1 -1 1 y
-0 0 0 -1 v
-f
-12.5 w
-3.86371 M
-1 J
-1 j
-K
-1082 619 m
--1 -1 -2 -2 v
--4 -3 -9 -7 -15 -11 c
--13 -4 p
--7 0 -14 0 -19 2 c
--19 4 -35 13 -50 28 c
--18 16 -33 33 -46 53 c
--8 10 -14 21 -18 32 c
--4 10 -6 23 -6 37 c
-0 5 1 8 2 11 c
-1 2 2 4 4 6 c
-6 7 13 13 20 19 c
-3 3 6 6 9 8 c
-S
-452 801 m
--7 5 -15 9 -22 13 c
--5 2 -10 4 -16 7 c
--7 2 -13 4 -18 5 c
--6 2 -12 3 -18 4 c
--12 1 -25 2 -39 1 c
--38 -4 p
--24 -4 -45 -9 -63 -16 c
--2 -1 -5 -2 -8 -4 c
--12 -6 -25 -13 -37 -18 c
--9 -4 -16 -7 -24 -11 c
--24 -8 p
--10 -4 -21 -7 -32 -10 c
--18 -5 -31 -1 -40 10 c
--6 6 -10 14 -12 25 c
--1 5 -2 9 -3 13 c
--1 8 -2 15 -3 22 c
--1 20 0 40 3 61 c
-1 5 2 11 3 16 c
-1 5 2 9 4 14 c
-10 33 22 68 38 104 c
--17 -21 -32 -44 -45 -71 c
--4 -9 -8 -18 -12 -28 c
--2 -5 -4 -10 -6 -16 c
--2 -4 -3 -9 -5 -15 c
--2 -7 -5 -15 -7 -22 c
--2 -7 -4 -14 -5 -22 c
--2 -7 -3 -14 -4 -21 c
--3 -21 -4 -41 -2 -60 c
-1 -11 3 -21 6 -32 c
-2 -11 6 -23 10 -33 c
-1 -2 1 -4 2 -5 c
-5 -15 14 -27 23 -37 c
-4 -3 7 -6 11 -9 c
-24 -11 50 -10 74 4 c
-16 9 32 15 50 18 c
-7 2 15 3 24 3 c
-1 0 2 0 v
-1 0 3 0 5 0 c
-6 -1 13 -2 18 -5 c
-6 -3 11 -6 17 -9 c
-6 -2 11 -5 14 -8 c
-2 -2 4 -3 7 -5 c
-2 -2 5 -4 7 -7 c
-14 -16 p
-3 -4 7 -8 10 -12 c
-S
-452 801 m
-11 0 21 3 29 10 c
-11 7 22 13 31 18 c
-4 3 9 5 16 8 c
-48 25 100 39 157 41 c
-18 0 p
-14 1 28 1 41 0 c
-12 -1 25 -3 40 -4 c
-33 -7 65 -18 95 -36 c
-1 0 2 -1 3 -1 c
-10 -5 19 -11 27 -17 c
-5 -4 10 -7 15 -10 c
-6 -5 14 -9 24 -12 c
-S
-328 605 m
-6 -2 12 -3 18 -4 c
-3 0 5 0 8 0 c
-2 0 4 0 7 1 c
-1 0 2 0 4 0 c
-20 4 38 14 55 29 c
-16 13 29 27 42 41 c
-17 26 p
-6 10 11 21 14 32 c
-1 5 2 10 3 15 c
-0 2 0 4 0 5 c
-0 5 0 10 -1 14 c
--2 1 -4 4 -5 6 c
--2 2 -4 4 -6 6 c
--2 1 -4 3 -5 4 c
--2 2 -3 3 -5 4 c
-S
-474 784 m
--1 2 -3 4 -6 5 c
-0 0 p S
-468 789 m
--6 5 -11 8 -16 12 c
-S
-474 784 m
--2 2 -4 4 -6 5 c
-S
-418 516 m
-1 -1 2 -1 y
-3 -1 6 -3 8 -4 c
-5 -3 10 -6 14 -10 c
-5 -3 9 -8 13 -13 c
-6 0 12 -1 19 -1 c
-157 1 p
-1 3 2 5 4 7 c
-4 10 4 17 0 23 c
--2 2 -3 3 -4 4 c
--10 9 -30 13 -60 14 c
--23 1 -46 0 -68 -3 c
--21 -2 -41 -5 -61 -11 c
--5 -1 -9 -2 -14 -3 c
--3 -1 -5 -2 -8 -3 c
--1 0 -1 0 -2 0 c
-h
-S
-311 617 m
-1 0 2 -1 2 -2 c
-4 -3 8 -6 13 -9 c
-S
-1082 619 0 -195 P
-0 -34 -4 -66 -11 -98 c
-0 -1 0 -2 v
--9 -40 -24 -77 -43 -112 c
--3 -4 -5 -8 -7 -12 c
--2 -3 -4 -6 -5 -9 c
--3 -4 -6 -9 -9 -13 c
--5 -7 -10 -14 -16 -21 c
--1 -2 -2 -3 -3 -4 c
--18 -21 p
--12 -14 -25 -26 -38 -38 c
--17 -14 -35 -26 -53 -37 c
--5 -2 -9 -4 -13 -7 c
--34 -16 -70 -27 -108 -31 c
--4 0 -9 0 -13 -1 c
--46 -2 p
--5 0 -11 0 -16 1 c
--50 2 -95 13 -138 33 c
--43 21 -83 50 -119 89 c
--52 55 -87 117 -103 187 c
--8 31 -11 63 -12 97 c
-0 194 p S
-948 798 m
-9 8 17 13 26 17 c
-4 2 9 4 14 7 c
-6 3 12 5 17 6 c
-5 1 10 2 16 3 c
-11 1 22 2 33 1 c
-1 0 3 0 4 0 c
-28 -3 p
-1 0 2 0 3 0 c
-23 -4 43 -10 60 -17 c
-3 -1 5 -2 7 -4 c
-12 -6 23 -12 35 -18 c
-7 -4 14 -7 21 -10 c
-18 -8 p
-11 -3 23 -7 34 -10 c
-10 -3 18 -3 25 0 c
-11 4 18 16 22 35 c
-7 32 8 64 3 95 c
--1 6 -2 12 -3 17 c
--1 5 -3 9 -3 13 c
--6 19 -12 39 -19 60 c
--5 14 -10 29 -16 44 c
-6 -7 10 -15 16 -23 c
-14 -22 26 -47 36 -75 c
-2 -6 3 -11 5 -16 c
-2 -5 3 -10 5 -15 c
-3 -8 5 -15 7 -23 c
-1 -7 3 -14 5 -22 c
-7 -39 7 -76 0 -112 c
--3 -12 -6 -23 -10 -34 c
--1 -1 -1 -3 -2 -5 c
--7 -21 -18 -36 -32 -46 c
--5 -2 -10 -4 -14 -5 c
--18 -5 -35 -2 -53 10 c
--14 9 -29 15 -45 18 c
--8 1 -15 2 -22 2 c
--6 0 -12 -2 -18 -3 c
--7 -2 -12 -4 -17 -7 c
--5 -2 -9 -5 -13 -8 c
--2 -2 -4 -4 -7 -7 c
--21 -22 p
--3 -3 -5 -6 -7 -10 c
--2 -2 -3 -3 -4 -4 c
-S
-825 535 m
-43 2 84 -3 124 -14 c
-7 -1 15 -4 22 -6 c
--8 -4 -16 -8 -22 -14 c
--5 -4 -9 -8 -13 -14 c
--6 0 -12 -1 -18 -2 c
--149 2 p
--19 31 0 47 56 48 c
-h
-S
-620 235 m
--3 -2 -6 -5 -9 -9 c
--2 -3 -4 -7 -6 -12 c
-0 -1 -1 -4 -1 -6 c
-0 -3 1 -6 1 -9 c
-4 -11 11 -21 23 -32 c
-6 -5 12 -10 17 -15 c
-10 -7 20 -14 31 -20 c
-2 -1 4 -2 7 -4 c
-6 -3 12 -6 19 -9 c
-10 -5 19 -9 29 -12 c
-12 -3 24 -4 38 -3 c
-14 3 p S
-866 290 m
--1 0 -2 -1 -4 -1 c
--2 -1 -4 -2 -5 -3 c
--11 -4 -21 -7 -31 -11 c
--6 -2 -12 -4 -17 -5 c
--10 -3 -20 -5 -31 -8 c
-0 0 p
--2 0 -4 -1 -6 -1 c
--5 -1 -10 -2 -15 -3 c
--10 -1 -20 -3 -29 -4 c
--4 -1 -7 -1 -10 -1 c
--6 -1 -11 -2 -16 -2 c
--2 0 -4 0 -5 -1 c
--3 0 -5 0 -7 0 c
--1 0 -2 0 -3 -1 c
--2 0 -3 0 -4 0 c
--3 0 -5 0 -7 0 c
--2 -1 -6 -1 -8 -1 c
-0 0 -1 0 v
-S
-667 248 m
--2 0 -3 0 -5 0 c
--18 -1 -32 -6 -42 -13 c
-S
-907 309 m
--3 -8 -5 -15 -8 -23 c
--1 -2 -2 -5 -3 -7 c
--11 -22 -24 -41 -41 -55 c
--2 -2 -4 -3 -5 -5 c
-0 2 1 3 1 5 c
-5 14 10 33 14 55 c
-S
-866 290 m
-1 1 2 1 y
-1 1 p
-8 4 17 8 26 12 c
-4 3 8 4 12 5 c
-S
-865 279 m
-0 2 0 5 1 7 c
-0 2 0 3 0 4 c
-S
-907 309 m
-23 8 31 -7 25 -44 c
--2 -5 -3 -11 -4 -17 c
--2 -5 -3 -10 -4 -15 c
--7 -17 p
--2 -3 -3 -6 -4 -9 c
--2 -3 -3 -5 -4 -7 c
--8 -13 -16 -24 -26 -34 c
--11 -10 p
-0 -1 -1 -2 -2 -2 c
--19 -15 p
--2 -1 -5 -3 -7 -4 c
--5 -3 -10 -6 -15 -9 c
--1 0 -2 -1 -3 -1 c
--4 -2 -8 -4 -11 -5 c
--10 -5 -21 -9 -31 -13 c
-S
-667 248 m
--8 -38 -5 -63 8 -74 c
--27 12 -45 33 -55 61 c
-S
-cleartomark end end pagesave restore showpage
-%%PageTrailer
-%%Trailer
-%%Pages: 1
-
-%%EndDocument
- @endspecial 1265 3036 a Fc(Got)83 b Fb(gnu)p Fc(net?)3930
-5670 y Fa(1)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
Deleted: GNUnet-docs/WWW/todo
===================================================================
--- GNUnet-docs/WWW/todo 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/todo 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,7 +0,0 @@
-NEW content to be written:
-1) P2P tbench
-2) CS tbench, tracekit
-3) Internal Service APIs (stats, identity, pingpong, rpc, traffic, transport,
dht)
-4) application library APIs (fs, ecrs, fsui, getoption, stats, traffic, dht)
-5) gtk plugins and gtkcommon API
-
Deleted: GNUnet-docs/WWW/user.php3
===================================================================
--- GNUnet-docs/WWW/user.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/user.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,24 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Using GNUnet";
-$description="Information for users (overview)";
-include("html_header.php3");
-
-H2("End-User Documentation");
-BP();
-W("GNUnet is a framework for peer-to-peer networking.");
-W("This means that based on a common codebase, GNUnet will be able to run a
diverse set of applications.");
-W("The only useful application at the moment is %s.",
- intlink_("user_afs.php3","anonymous file sharing"));
-W("In order to use any GNUnet application, a user must first install the
software, then do some basic configuration of the framework and finally
configure the specific application itself.");
-W("The configuration of the framework involves setting up the network and the
specification which applications should be used.");
-P();
-
-W("The following pages describe first how to compile and configure GNUnet and
then detail how to configure and use applications built with GNUnet.");
-EP();
-
-include("user_index.inc");
-
-P();
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/user_afs.php3
===================================================================
--- GNUnet-docs/WWW/user_afs.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/user_afs.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,579 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Using GNUnet for File Sharing";
-$description="Configuring and using GNUnet for (anonymous) file sharing";
-include("html_header.php3");
-H2("File Sharing with GNUnet");
-
-afslogo();
-echo "<ul>\n";
-LILI("#concepts","Concepts");
-echo "<ul>\n";
-LILI("#files","Files");
-LILI("#keywords","Keywords");
-LILI("#directories","Directories");
-LILI("#namespaces","Namespaces");
-LILI("#advertisements","Advertisements");
-LILI("#collections","Collections");
-LILI("#example","Example");
-echo "</ul>\n";
-LILI("#configuration","Configuration");
-echo "<ul>\n";
-LILI("#mysql","Setting up the mysql database");
-echo "</ul>\n";
-LILI("#afscommands","Shell Commands for File Sharing");
-echo "<ul>\n";
-LILI("#gnunetautoshare","gnunet-auto-share");
-LILI("#gnunetinsert","gnunet-insert");
-LILI("#gnunetsearch","gnunet-search");
-LILI("#gnunetdownload","gnunet-download");
-LILI("#gnunetunindex","gnunet-unindex");
-LILI("#gnunetdirectory","gnunet-directory");
-LILI("#gnunetpseudonym","gnunet-pseudonym");
-echo "</ul>\n";
-LILI("gnunetgtk.php3","gnunet-gtk");
-echo "</ul>\n";
-
-ANCHOR("concepts"); H3("Concepts");
-
-BP();
-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.");
-W("GNUnet enables content providers to group related content and to establish
a reputation.");
-W("Furthermore, GNUnet allows updates to certain content to be made
available.");
-W("This section is supposed to introduce users to the concepts that are used
to achive this goals.");
-EP();
-
-ANCHOR("files"); H4("Files");
-BP();
-W("A file in GNUnet is just a sequence of bytes.");
-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"));
-EP();
-
-ANCHOR("keywords"); H4("Keywords");
-BP();
-W("Keywords are the most simple mechanism to find files on GNUnet.");
-W("Keywords are case-sensitive and the search string must always match exactly
the keyword used by the person providing the file.");
-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_("/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.");
-EP();
-
-ANCHOR("directories"); H4("Directories");
-BP();
-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.");
-EP();
-
-ANCHOR("namespaces"); H4("Namespaces");
-BP();
-W("A namespace is a set of files that were signed by the same pseudonym.");
-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 (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).");
-EP();
-
-ANCHOR("advertisements"); H4("Advertisements");
-BP();
-W("Advertisements are used to notify other users about the existence of a
namespace.");
-W("Advertisements are propagated using the normal keyword search.");
-W("When an advertisement is received (in response to a search), it is NOT
displayed immediately.");
-W("Instead, the namespace is added to the list of namespaces available in the
namespace-search dialogs of <tt>gnunet-gtk</tt> and printed by
<tt>gnunet-pseudonym</tt>.");
-W("Whenever a namespace is created, an appropriate advertisement can be
generated.");
-W("The default keyword for the advertising of namespaces is
<tt>namespace</tt>.");
-EP();
-
-ANCHOR("collections"); H4("Collections");
-
-BP();
-W("A collection is an automatically managed namespace.");
-W("The root of the namespace points to a directory with all of the files
inserted by the user since the collection was initiated.");
-W("The root is updated upon request to reflect files published since the last
update.");
-W("The construction of the directory and the update of the namespace are done
automatically by GNUnet on each insertion and does not require work from the
user.");
-W("Collections are advertised under the keyword <tt>collection</tt>.");
-EP();
-
-ANCHOR("example"); H4("Example");
-
-BP();
-W("Here is how to start a collection:");
-EP();
-PRE("$ gnunet-pseudonym -a -C NICKNAME -D DESCRIPTION -r AUTHORNAME\n" .
- "$ gnunet-insert FILENAME\n" .
- "$ gnunet-search collection\n" .
- "$ gnunet-gtk");
-BP();
-W("In <tt>gnunet-gtk</tt> select <tt>Advanced-Search Namespace</tt>.");
-W("In the dialog, select the NICKNAME from the list of namespace
identifiers.");
-W("The search key identifier will be filled out automatically to point to the
root of the namespace.");
-W("The search should yield a directory which contains the file FILENAME.");
-W("After inserting additional files, additional directories with more files
will show up in the search.");
-W("To stop the collection, use");
-EP();
-PRE("$ gnunet-pseudonym -E");
-BP();
-W("Note that the UI may not always be very pretty for collections since this
is a new feature.");
-EP();
-
-ANCHOR("configuration");H3("File-sharing options in gnunet.conf");
-
-BP();
-W("This section describes the options in gnunet.conf that relate to anonymous
file sharing.");
-W("Most options are in the configuration file for the gnunetd daemon, the
others are specfically marked as client options.");
-EP();
-
-ANCHOR("gnunet.conf.diskquota");H4("FS: QUOTA");
-
-BP();
-W("Use this option to specify how much space GNUnet is allowed to use on the
drive.");
-W("This does not include indexed files.");
-W("The value is specified in MB, the default is 1024.");
-W("Note that whenever you change this value, GNUnet may have to reorganize the
database, which can take quite some time on the next start (obviously depending
on the previous size of the database).");
-P();
-
-W("Large amounts of storage space may also have some impact on memory use, a
typical value is around 250 kb memory per gigabyte of storage space.");
-W("Note that indexing files (instead of inserting, indexing is the default,
insertion can be enforced with the <tt>-n</tt> switch) is much cheaper; the
files will cause less memory usage, use less space in the database and the
operation will be faster.");
-
-
-EP();
-ANCHOR("gnunet.conf.indexdirectory"); H4("FS: INDEX-DIRECTORY");
-
-BP();
-W("This option specifies the name of the directory where indexed files are
either copied to or symlinked from.");
-W("When a file is indexed with the option <tt>-l</tt> and if <tt>gnunetd</tt>
and the inserting process run on the same machine, then a symbolic link is
created from the index-directory to that file.");
-W("Without the <tt>-l</tt> option or if <tt>gnunetd</tt> runs on a different
machine, a copy of the file is made instead.");
-W("Note that the indexing process does a lot more than just this, thus moving
files over to the index directory by hand will NOT share these files.");
-EP();
-
-ANCHOR("gnunet.conf.activemigration");H4("FS: ACTIVEMIGRATION");
-
-BP();
-W("Setting this option to <tt>YES</tt> allows <tt>gnunetd</tt> to migrate data
to the local machine.");
-W("Setting this option to <tt>YES</tt> is highly recommended for efficiency.");
-W("Its also the default.");
-W("If you set this value to YES, GNUnet will store content on your machine
that you cannot decrypt.");
-W("While this may protect you from liability if the judge is sane, it may not
(IANAL).");
-W("If you put illegal content on your machine yourself, setting this option to
YES will probably increase your chances to get away with it since you can
plausibly deny that you inserted the content.");
-W("Note that in either case, your anonymity would have to be broken first
(which may be possible depending on the size of the GNUnet network and the
strength of the adversary).");
-
-EP();
-ANCHOR("gnunet.conf.extractors");H4("FS: EXTRACTORS");
-
-BP();
-W("This is a client option respected by <tt>gnunet-insert</tt> and
<tt>gnunet-gtk</tt>.");
-W("This option specifies which additional extractors <tt>gnunet-insert</tt>
should use for keyword extraction.");
-W("The default set of extractors from your local libextractor installation is
always used.");
-W("Typically, an extractor for splitting keywords at word boundaries is added
here.");
-
-EP();
-ANCHOR("gnunet.conf.databasetype");H4("MODULES: sqstore");
-
-BP();
-W("Which database type should be used for content?");
-W("Valid types are "sqstore_sqlite" and "sqstore_mysql".");
-W("The libraries and header files for the specified type must have been
available at compile time.");
-W("If the type is changed, you must stop <tt>gnunetd</tt> and run
<tt>gnunet-update</tt> to convert the database.");
-P();
-W("The <tt>mysql</tt> module requires manual setup, described %s.",
- extlink_("#mysql","here"));
-W("The sqlite databases only requires the installation of the respective
database (with header files) before running configure.");
-EP();
-
-ANCHOR("mysql");H4("Setting up the mysql database");
-
-BP();
-W("MySQL 4.1 is required since GNUnet uses prepared statements.");
-W("First, here are some performance numbers comparing MySQL and SQlite:");
-?>
-<center>
-<table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <th class="tbl">DB</th>
- <th class="tbl">MySQL 4</th>
- <th class="tbl">MySQL 5</th>
- <th class="tbl">SQlite</th>
- </tr>
- <tr>
- <th class="tbl">1.6 GHZ AMD 64<br>
- GNU/Linux, gcc 3.3.5<br>
- IO: 53.67 MB/sec</th>
- <td class="tbl">Upload: 615 MB, 350s (1714 kbps)<br>
- <br>
- </td>
- <td class="tbl"> </td>
- <td class="tbl">Upload: 615 MB, 424s (1414 kbps)<br>
- <br>
- </td>
- </tr>
- <tr>
- <th class="tbl">
- 3 GHZ Pentium 4<br>
- Windows XP, gcc 3.4.2<br>
- </th>
- <td class="tbl">
- Upload: 615 MB, 6062s (99 kbps)
- </td>
- <td class="tbl">
- Upload: 615 MB, 1388s (433 kbps)
- </td>
- <td class="tbl">
- Upload: 615 MB, 517s (1162 kbps)
- </td>
- </tr>
-</table>
-</center>
-<?php
-EP();
-H5("Highlights");
-BP();
-W("Pros:");
-EP();
-echo "<ul>";
-LI("On up-to-date hardware where mysql can be used comfortably, the overall
performance is fairly good (according to our tests).");
-LI("It is often possible to recover the mysql database from internal
inconsistencies.");
-echo "</ul>";
-BP();
-W("Cons:");
-EP();
-echo "<ul>";
-LI("Memory usage");
-LI("Manual setup");
-echo "</ul>";
-
-H5("Setup Instructions");
-
-BP();
-W("First, you must have mysql including the development files (headers)
installed on the system when you configure GNUnet.");
-W("Not all binary distributions contain the mysql module, so you may also have
to compile GNUnet by hand.");
-W("After you have mysql installed and GNUnet compiled with mysql support, do
the following:");
-EP();
-echo "<ol><li>";
-BP();
-W("In /etc/gnunetd.conf, set");
-EP();
-PRE("sqstore = sqstore_mysql");
-echo "</li><li>";
-BP();
-W("Then access mysql as root (root of the database, not of the system):");
-EP();
-PRE("$ mysql -u root -p ");
-BP();
-W("and do the following.");
-W("[You should replace \$USER with the username that will be running the
gnunetd process].");
-EP();
-PRE("CREATE DATABASE gnunet;\n" .
- "GRANT select,insert,update,delete,create,alter,drop,create temporary
tables ON gnunet.* TO address@hidden;\n" .
- "SET PASSWORD FOR address@hidden(\"\$the_password_you_like\");\n" .
- "FLUSH PRIVILEGES;");
-echo "</li><li>";
-BP();
-W("In the \$HOME directory of \$USER, create a ".my.cnf" file with
the following lines:");
-EP();
-PRE("[client]\n" .
- "user=\$USER\n" .
- "password=\$the_password_you_like");
-BP();
-W("Note that .my.cnf file is a security risk since it exposes the password.");
-W("You may want to keep the file in a place where it is not easily accessed.");
-W("The \$HOME/.my.cnf can be a symbolic link.");
-W("It is also possible not to use any password if database security is no
concern.");
-W("Note that $USER has only priviledges to mess up GNUnet′s tables,
nothing else (unless you give him more, of course).");
-EP();
-echo "</li><li>";
-BP();
-W("Finally, you may want to briefly try if the DB connection works.");
-W("First, login as \$USER.");
-W("Then use:");
-EP();
-PRE("# mysql -u \$USER -p\n" .
- "mysql> use gnunet;");
-BP();
-W("If you get the message "Database changed" it probably works.");
-W("If you get "ERROR 2002: Can′t connect to local MySQL server
through socket ′/tmp/mysql.sock′ (2)" it may be resolvable by
"ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock"");
-W("So there may be some additional trouble depending on your mysql setup.");
-W("Finally, after changing the configuration, you need to run
<tt>gnunet-update</tt>.");
-echo "</li></ol>";
-EP();
-
-H5("REPAIRING TABLES");
-
-BP();
-W("Its probably healthy to check your tables for inconsistencies every now and
then.");
-W("If you get odd SEGVs on gnunetd startup, it might be that the mysql
databases have been corrupted.");
-P();
-W("The tables can be verified or fixed in the following ways:");
-EP();
-echo "<ol><li>";
-BP();
-W("by shutting down mysqld (mandatory!) and running");
-EP();
-PRE("# myisamchk -r *.MYI");
-BP();
-W("in /var/lib/mysql/gnunet/ (or wherever the tables are stored).");
-EP();
-echo "</li><li>";
-BP();
-W("Another repair command is <tt>mysqlcheck</tt>.");
-W("The usable command may depend on your mysql build/version.");
-EP();
-echo "</li><li>";
-BP();
-W("by executing ");
-EP();
-PRE("mysql> REPAIR TABLE gnXXXX");
-BP();
-W("for each table in the gnunet database (USE gnunet; SHOW TABLES;)");
-EP();
-echo "</li></ol>";
-BP();
-W("If you have problems related to the mysql module, your best friend is
probably the mysql manual.");
-W("The first thing to check is that mysql is basically operational, that you
can connect to it, create tables, issue queries and so on.");
-EP();
-HR();
-
-
-
-
-ANCHOR("commands");H3("Commands for File Sharing");
-
-afslogo();
-BP();
-W("The only useful application that is currently available for GNUnet is
anonymous file-sharing.");
-W("The GUI interface is described %s.",
- extlink_("#GUI","here"));
-W("For shell-gurus, five shell commands provide the interface:");
-EP();
-
-ANCHOR("gnunetautoshare");H4("gnunet-auto-share");
-BP();
-W("<tt>gnunet-auto-share</tt> can be used to "automatically" share
all of the files in a given directory.");
-W("The basic format of the command is");
-EP();
-PRE("$ gnunet-auto-share DIRECTORY-NAME*");
-BP();
-W("After being started like this, <tt>gnunet-auto-share</tt> will put itself
into the background (daemonize) and periodically check if new files have been
copied into the given directories.");
-W("Working in the background, <tt>gnunet-auto-share</tt> will ensure that all
files in the given directory are published to <tt>gnunetd</tt> and thus
available to the network.");
-W("You will need to restart <tt>gnunet-auto-share</tt> whenever your computer
is rebooted (just like you need to restart <tt>gnunetd</tt>).");
-W("While your distribution may contain a script to automatically restart
<tt>gnunetd</tt>.");
-W("Writing such a script maybe a bit tricky since <tt>gnunet-auto-share</tt>
would usually run as an ordinary user and needs to access the
<tt>gnunet.conf</tt> configuration of that ordinary user (so that the user can
add directories to share).");
-P();
-W("It is possible to manually specify keywords for the top-level files or
directories shared using <tt>gnunet-auto-share</tt>.");
-W("This can be done by creating an additional configuration file (by default:
<tt>~/.gnunet/metadata.conf</tt>).");
-W("Use the names of the shared files as section names, the type of the
metadata as the key and the value of the metadata as the values.");
-W("The <tt>gnunet-auto-share</tt> man page contains a sample
<tt>metadata.conf</tt> configuration file and more detailed descriptions of the
various supported options.");
-EP();
-
-ANCHOR("gnunetinsert");H4("gnunet-insert");
-
-BP();
-W("The command <tt>gnunet-insert</tt> can be used to add content to the
network.");
-W("The basic format of the command is");
-EP();
-
-PRE("$ gnunet-insert [-n] [-k KEYWORDS]* [-m TYPE:VALUE] FILENAME");
-
-BP();
-W("The option -k is used to specify keywords for the file that should be
inserted.");
-W("You can supply any number of keywords, and each of the keywords will be
sufficient to locate and retrieve the file.");
-W("The -m option is used to specify meta-data, such as descriptions.");
-W("You can use -m multiple times.");
-W("The TYPE passed must be from the list of meta-data types known to
libextractor.");
-W("You can obtain this list by running <tt>extract -l</tt>.");
-W("Use quotes around the entire meta-data argument if the value contains
spaces.");
-W("The meta-data is displayed to other users when they select which files to
download.");
-W("The meta-data and the keywords are optional and maybe inferred by %s.",
- intlink_("/libextractor/index.php", "libextactor"));
-P();
-
-W("By default, GNUnet indexes a file instead of copying it.");
-W("This is much more efficient, but requries the file to stay unaltered at the
location where it was when it was indexed.");
-W("Indexed files also must be accessible for <tt>gnunetd</tt> using the same
absolute path.");
-W("If indexing fails, make sure that the file permissions are set
appropriately.");
-W("If you intend to move, delete or alter a file, consider using the option
<tt>-n</tt> which will force GNUnet to make a copy of the file in the
database.");
-W("Since it is much less efficient, this is strongly discouraged for large
files.");
-
-W("When GNUnet indexes a file (default), GNUnet does <strong>not</strong>
create an additional encrypted copy of the file but just computes a summary (or
index) of the file.");
-W("That summary is approximately two percent of the size of the original file
and is stored in GNUnet’s %s.",
- extlink_("#database", "database"));
-W("Whenever a request for a part of an indexed file reaches GNUnet, this part
is encrypted on-demand and send out.");
-W("There is no need for an additional encrypted copy of the file to stay
anywhere on the drive.");
-W("This is very different from other systems, such as %s, where each file that
is put online must be in Freenet’s database in encrypted format, doubling
the space requirements if the user wants to preseve a directly accessible copy
in plaintext.",
- extlink_("http://www.freenetproject.org/","Freenet"));
-P();
-
-W("Thus indexing should be used for all files where the user will keep using
this file (at the location given to gnunet-insert) and does not want to
retrieve it back from GNUnet each time.");
-P();
-
-W("The option <tt>-n</tt> may be used if the user fears that the file might be
found on his drive (assuming the computer comes under the control of an
adversary).");
-W("When used with the <tt>-n</tt> flag, the user has a much better chance of
denying knowledge of the existence of the file, even if it is still (encrypted)
on the drive and the adversary is able to crack the encryption (e.g. by
guessing the keyword.");
-P();
-W("gnunet-insert has a ton of additional options to handle namespaces and
directories.");
-W("See the man-page for details.");
-W("If you want to remove a file that you have indexed from the local peer, use
the tool <tt>gnunet-unindex</tt> to un-index the file.");
-EP();
-
-HR();
-
-ANCHOR("gnunetsearch");H4("gnunet-search");
-BP();
-W("The command <tt>gnunet-search</tt> can be used to search for content on
GNUnet.");
-W("The format is:");
-EP();
-
-PRE("$ gnunet-search [-t TIMEOUT] KEYWORD [KEYWORD]*");
-
-BP();
-W("The -t option specifies that the query should timeout after approximately
TIMEOUT seconds.");
-W("A value of zero is interpreted as <i>no timeout</i>.");
-W("If multiple words are passed as keywords the search generally searches for
any of them.");
-W("Prefixing keywords with a + makes them mandatory.");
-W("Keywords are separated by spaces; use quotes for keywords that contain
spaces.");
-W("Thus,");
-EP();
-
-PRE("$ gnunet-search Das Kapital");
-
-BP();
-W("and");
-EP();
-
-PRE("$ gnunet-search \"Das Kapital\"");
-
-BP();
-W("are different.");
-
-P();
-W("Search results are printed by gnunet-search like this:");
-EP();
-PRE("gnunet://ecrs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992:\n"
.
- "gnunet-download -o \"COPYING\"
gnunet://ecrs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992\n"
.
- " filename: COPYING\n" .
- " description: The GNU Public License\n" .
- " author: RMS\n" .
- " publication date: Sat Jun 25 08:29:13 2005");
-BP();
-W("The second line is the command you would have to enter to download the
file.");
-W("The argument passed to <tt>-o</tt> is the suggested filename (you may
change it to whatever you like).");
-W("The filename is followed by key for decrypting the file, the query for
searching the file, a checksum (in hexadecimal) finally the size of the file in
bytes.");
-W("The second line contains the description of the file; here this is
"The GNU Public License", the author and the publication date (see
the options for gnunet-insert on how to change these).");
-
-EP();
-
-ANCHOR("gnunetdownload");H4("gnunet-download");
-BP();
-W("In order to download a file, you need the three values returned by
<tt>gnunet-search</tt>.");
-W("You can then use the tool <tt>gnunet-download</tt> to obtain the file:");
-EP();
-PRE("$ gnunet-download -o FILENAME GNUNETURL");
-BP();
-W("FILENAME specifies the name of the file where GNUnet is supposed to write
the result.");
-W("Existing files are overwritten.");
-W("If you want to download the GPL from the previous example, you do the
following:");
-EP();
-PRE("$ gnunet-download -o \"COPYING\"
gnunet://ecrs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992");
-BP();
-W("If you ever have to abort a download, you can continue it at any time by
re-issuing <tt>gnunet-download</tt> with the same filename.");
-W("In that case, GNUnet will <strong>not</strong> download blocks again that
are already present.");
-W("GNUnet’s %s will ensure file integrity, even if the existing file was
not downloaded from GNUnet in the first place.",
- intlink_("encoding.php3","file-encoding mechanism"));
-W("You may want to use the <tt>-V</tt> switch (must be added before the
<tt>--</tt>) to turn on verbose reporting.");
-W("In this case, <tt>gnunet-download</tt> will print the current number of
bytes downloaded whenever new data was received.");
-EP();
-HR();
-BP();
-W("The option -c CONFIGFILE can be passed to each of the commands to override
the default location of the configuration file.");
-W("The option -v shows the current version number.");
-W("Use -h to get a short description of the options.");
-EP();
-
-ANCHOR("gnunetunindex");H4("gnunet-unindex");
-BP();
-W("<tt>gnunet-unindex</tt> can be used to un-index files that were inserted
into GNUnet (works only for files that were inserted locally and that are still
present on the local drive).");
-EP();
-
-ANCHOR("gnunetdirectory");H4("gnunet-directory");
-BP();
-W("Directories are shared just like ordinary files.");
-W("If you download a directory with <tt>gnunet-download</tt>, you can use
<tt>gnunet-directory</tt> to list its contents.");
-W("The contents of a directory are File Identifiers (FIs).");
-W("An FI contains all the information required by <tt>gnunet-download</tt> to
retrieve the file.");
-W("Additionally, FIs can contain the mime-type, description, a filename and
other meta information.");
-P();
-W("In order to make it possible to assemble directories, GNUnet stores all
locally known FIs in a plaintext database, the FI database.");
-
-P("This <tt>gnunet-directory</tt> can also be used to list the contents of the
FI database.");
-W("The option <tt>-l</tt> causes the display of all known FI entries.");
-W("The FI database can be flushed using the <tt>-k</tt> option.");
-W("There is currently no way to selectively remove a specific entry.");
-EP();
-
-HR();
-BP();
-W("Note that there is no command line tool to create a directory from the FI
database.");
-W("To create a directory from the command line, you must use
<tt>gnunet-insert</tt>.");
-W("The main use of the FI database is for building directories (and namespace
entries) with <tt>gnunet-gtk</tt>.");
-
-EP();
-ANCHOR("gnunetpseudonym");
-H4("gnunet-pseudonym");
-BP();
-W("By default this tool lists all locally available pseudonyms.");
-W("With the <tt>-C NICK</tt> option it can also be used to create a new
pseudonym.");
-W("A pseudonym is the virtual identity of the entity in control of a
namespace.");
-W("Anyone can create any number of pseudonyms.");
-W("Note that creating a pseudonym can take a few minutes depending on the
performance of the machine used.");
-P();
-W("With the <tt>-D NICK</tt> option pseudonyms can be deleted.");
-W("Once the pseudonym has been deleted it is impossible to add content to the
corresponding namespace.");
-W("Deleting the pseudonym does not make the namespace or any content in it
unavailable.");
-EP();
-H5("Advertising namespaces");
-BP();
-W("Each namespace is associated with meta-data that describes the namespace.");
-W("This meta-data is provided by the user at the time that the pseudonym was
created.");
-W("Naturally all of the information is <tt>optional</tt> and maybe
<tt>incorrect</tt> since it is provided by the user and cannot be verified.");
-W("The meta-data is published in what is called a namespace advertisement.");
-W("These advertisements are exchanged within GNUnet and can be found using
normal keyword-searches.");
-W("This way, users can learn about new namespaces without relying on
out-of-band communication or directories.");
-W("When a pseudonym is created, the namespace is by default advertised under
the keyword <tt>namespace</tt>.");
-W("When a keyword-search finds a namespace advertisement, it is automatically
stored in the local GNUnet database.");
-W("The advertisement is preserved for tools like <tt>gnunet-pseudonym</tt> and
<tt>gnunet-gtk</tt> that can reproduce them when appropriate.");
-EP();
-H5("Namespace roots");
-BP();
-W("An item of particular interest in the namespace advertisement is the
ROOT.");
-W("The ROOT is the identifier of a designated file in the namespace.");
-W("The idea is that the ROOT can be used to advertise an entry point to the
content of the namespace.");
-W("Note that currently all of the meta-data must be provided at the time where
the namespace is created and cannot be updated later.");
-EP();
-H5("Naming namespaces");
-BP();
-W("On the network, pseudonyms are uniquely identified using the hash of the
corresponding public key.");
-W("As a result, links to content in namespaces can be rather long -- they need
to incorporate a 512-bit binary hash!");
-W("In order to make using namespaces a bit more practical, NICKNAMEs are used
to identify pseudonyms on each system.");
-W("The NICKNAME is derived from the metadata provided when the namespace was
created.");
-W("Since metadata can be freely chosen by the creator of the namespace,
conflicts are possible.");
-W("Different users may choose to create namespaces with the same meta-data
resulting in identical base-names for different namespaces.");
-W("In order to ensure that there is only one namespace corresponding to a
given name, a unique number is added to the base-name to ensure that the
resulting NICKNAME is unique.");
-W("The resulting NICKNAME is (usually) short and unique for the local
system.");
-P();
-w("However, other systems may have chosen different unique numbers for the
same namespace.");
-W("For example, the same namespace may be called "Alice-1" on
Carol's system and "Alice-2" on Bob's system, simply because Bob got
an advertisement for another namespace "Alice" from Dave earlier (and
hence Bob called that one "Alice-1").");
-W("If Bob were to discuss namespaces with Carol, they should not use the
NICKNAMEs (which may differ between systems) but instead should use the hash of
the public keys.");
-W("Naturally, software can and should handle the necessary conversions between
systems (by translating from NICKNAME to the hash of the public key and
back).");
-EP();
-
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/user_chat.php3
===================================================================
--- GNUnet-docs/WWW/user_chat.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/user_chat.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,15 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: gnunet-chat";
-$description="GNUnet Documentation - a secure peer-to-peer framework starring
anonymous file sharing with an excess based trust-economy";
-include("html_header.php3");
-
-H2("gnunet-chat");
-BP();
-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.");
-W("At this point, it merely broadcasts messages to all other chat clients.");
-W("It is not really in any useable state.");
-
-EP();
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/user_gnunet.php3
===================================================================
--- GNUnet-docs/WWW/user_gnunet.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/user_gnunet.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,551 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: GNUnet core setup";
-$description="How to configure the GNUnet peer-to-peer framework (excluding
GNUnet applications)";
-include("html_header.php3");
-H2("GNUnet Documentation: GNUnet core");
-?>
-<ul>
- <li><a href="#installation"><?php W("Installation"); ?></a></li>
- <li><a href="#gnunet.conf"><?php W("The configuration file gnunet.conf");
?></a></li>
- <li><a href="#coretools"><?php W("GNUnet core tools"); ?></a>
- <ul>
- <li><a href="#transportcheck">gnunet-transport-check</a></li>
- <li><a href="#stats">gnunet-stats</a></li>
- <li><a href="#peerinfo">gnunet-peer-info</a></li>
- </ul>
- </li>
-</ul>
-<?php
-ANCHOR("installation");
-H3("Installation");
-BP();
-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 has itself various mandatory and optional dependencies.");
-W("Please check the dependency list, both GNUnet and libextractor contain a
file README.debian that lists the current package dependencies for Debian.");
-W("Note that in addition to satisfying the dependencies, you might have to
make sure that development headers for the various libraries are also
installed.");
-W("There maybe files for other distributions, or you might be able to find
equivalent packages for your distribution.");
-W("If you are <tt>root</tt> and cannot find binary packages, you should
install GNUnet and libextractor to <tt>/usr/local</tt> and run <tt>gnunetd</tt>
as a special administrative user <tt>gnunet</tt>.");
-W("For that, change <tt>\$HOME</tt> in the instructions below to
<tt>/usr/local</tt>.");
-W("The instructions below work when installing GNUnet as an ordinary user on
most GNU/Linux systems.");
-W("Installing libextractor should be as simple as:");
-EP();
-PRE("$ ./configure --prefix=\$HOME\n" .
- "$ make\n" .
- "# make install\n");
-BP();
-W("For GNUnet, you should again check the dependency list.");
-W("Now compile and install GNUnet using:");
-EP();
-PRE("$ ./configure --prefix=\$HOME --with-extractor=\$HOME\n" .
- "$ make\n" .
- "# make install\n");
-BP();
-
-W("Finally, you probably want to compile <tt>gnunet-gtk</tt>:");
-EP();
-PRE("$ ./configure --prefix=\$HOME --with-extractor=\$HOME
--with-gnunet=\$HOME\n" .
- "$ make\n" .
- "# make install\n");
-BP();
-W("If you are updating from a version from the 0.7.x series, you should (after
stopping gnunetd) run:");
-EP();
-PRE("# gnunet-update\n");
-BP();
-W("This should trigger all necessary changes.");
-W("Note that you will also have to run <tt>gnunet-update</tt> after certain
changes to the <tt>gnunetd.conf</tt> configuration file.");
-W("<tt>gnunetd</tt> will immediately exit with an error message if
<tt>gnunet-update</tt> must be run.");
-P();
-W("If you are using GNUnet for the first time (or if you deleted all of your
old files) you will probably want to run <tt>gnunet-setup</tt> at this point.");
-W("The setup tool supports various styles of user interfaces.");
-W("Invoke <tt>gnunet-setup</tt> without arguments to see the various styles
supported on your platform.");
-W("You should run <tt>gnunet-setup</tt> with the <tt>-d</tt> option in order
to configure <tt>gnunetd</tt>.");
-W("Unless you specify a different location with the <tt>-c</tt> option, the
<tt>gnunetd</tt> configuration will be stored in <tt>/etc/gnunetd.conf</tt>.");
-W("In order to enable <tt>gnunet-setup</tt> to edit that file, you should run
it as user <tt>root</tt>:");
-EP();
-PRE("# gnunet-setup -d wizard-gtk\n");
-BP();
-W("Using one of the wizards should allow a quick initial configuration.");
-P();
-W("After finishing the configuration with <tt>gnunet-setup</tt>, you can test
the installation using");
-EP();
-PRE("# gnunet-transport-check\n");
-PRE("# gnunet-transport-check -p\n");
-BP();
-W("The first command tests your local transports (basics), the second one
connectivity to the rest of the peer-to-peer network (ping).");
-W("If the test fails (i.e. <tt>gnunet-transport-check -p</tt> reports being
able to connect to 0 peers), you should revisit your configuration, in
particular your network setup.");
-W("Again, after changing the configuration, you should always run
<tt>gnunet-update</tt> to allow GNUnet to perform necessary internal updates.");
-W("Note that it is <tt>normal</tt> for the NAT transport to be reported as
not-working in some configurations.");
-W("Once configuration is complete and <tt>gnunet-update</tt> is done, start
the server using:");
-EP();
-PRE("# gnunetd -d\n");
-BP();
-W("The "-d" 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 any errors, you may have to edit the configuration file:");
-EP();
-PRE("# gnunet-setup -d gconfig\n");
-BP();
-W("Some errors maybe related to the specific applications that are being used,
so consult the documentation there.");
-W("Use the log-files and the tools described below to diagnose problems.");
-W("You may also want to increase the verbosity of the logging using the
parameter "-L DEBUG".");
-W("Read the man pages for additional information about command line options.");
-P();
-W("Once everything works and you get no error messages, press
"CTRL-C" to abort <tt>gnunetd</tt> and restart it without the
"-d" option.");
-W("Without the option, <tt>gnunetd</tt> will detach from the terminal and
write errors into the logfile.");
-P();
-W("If you want to automatically start GNUnet each time your machine boots
<tt>contrib/initgnunet</tt> contains an example script to start the server as
user <em>gnunet</em> with a configuation in <tt>/etc/gnunet.conf</tt>.");
-W("If you installed a binary package, the installer probably already put the
start-script into "/etc/init.d/gnunetd" or the appropriate location
for your system.");
-W("Still, even in that case, you may have to activate the script.");
-
-EP();
-
-H3("General notes about the configuration");
-BP();
-
-W("GNUnet typically requires the configuration of four basic layers.");
-w("On the lowest layer, you need to configure the transport services that
allow GNUnet to communicate with other peers.");
-W("A simple example is the specification of the port number used by a TCP or
UDP transport.");
-
-W("The GNUnet core needs to know certain resource limitations, such as CPU
load and bandwidth usage.");
-W("Both the configuration of the transport services and the GNUnet core are
described below.");
-W("Additionally, the applications run on top of GNUnet may also require some
configuration.");
-W("Finally, the user interface(s) that are used to interact with
<tt>gnunetd</tt> are configured in a per-user configuration file.");
-EP();
-
-HR();
-
-ANCHOR("files");
-H3("The GNUnet configuration files");
-ANCHOR("gnunet.conf");
-
-BP();
-W("When a required configuration file is not present on startup, any GNUnet
tool will attempt to create one by running <tt>gnunet-setup
generate-defaults</tt> which dumps a copy of the default configuration file to
<tt>~/.gnunet/gnunet.conf</tt>.");
-W("The option <tt>-c</tt> can be used for any GNUnet tool to specify an
alternative location for the configuration file.");
-W("GNUnet uses two different configuration files (with the same syntax but
different options), one for the server (<tt>gnunetd</tt>) and another one for
all of the clients.");
-W("The rationale is that typcially the system administrator will setup
<tt>gnunetd</tt> while ordinary users are executing the clients.");
-P();
-W("The default location for the configuration of <tt>gnunetd</tt> is
<tt>/etc/gnunetd.conf</tt>.");
-W("A few tools that help setup and diagnose the daemon (like
<tt>gnunet-transport-check</tt>) also use this configuration file.");
-W("A template for this configuration is in <tt>contrib/gnunetd.conf</tt>.");
-W("You should use <tt>gnunet-setup -d</tt> to create or modify
<tt>/etc/gnunetd.conf</tt>.");
-P();
-W("The GNUnet clients (like <tt>gnunet-insert</tt> or <tt>gnunet-gtk</tt>) use
a different configuration file.");
-W("All GNUnet clients expect this file to reside by default in
<tt>\$HOME/.gnunet/gnunet.conf</tt>.");
-W("A template for this file is in <tt>contrib/gnunet.conf</tt>.");
-W("You should use <tt>gnunet-setup</tt> (without the <tt>-d</tt> option) to
create or modify <tt>~/.gnunet/gnunet.conf</tt>.");
-W("If the configuration file is not found, all GNUnet tools will use default
options for the various settings.");
-EP();
-
-ANCHOR("serveroptions"); H3("Server options");
-
-BP();
-W("All of the options described here refer to the server configuration.");
-W("This section describes the most important options to setup
<tt>gnunetd</tt>.");
-W("The <tt>gnunet-setup</tt> tool gives more detailed descriptions for each
option.");
-W("If you are on dialup, look at %s and probably %s.",
- ARRAY(extlink_("#gnunet.conf.helloexpires", "HELLOEXPIRES"),
- extlink_("#gnunet.conf.interfaces", "INTERFACES")));
-W("If you are behind a NAT box, look at %s.",
- extlink_("#gnunet.conf.ip", "IP"));
-W("If you are a frontier host that is accessible from a trusted LAN and
connected to the Internet, have a look at %s, %s and %s.",
- ARRAY(extlink_("#gnunet.conf.trusted", "TRUSTED"),
- extlink_("#gnunet.conf.blacklist", "BLACKLIST"),
- extlink_("#gnunet.conf.heloexchange", "HELLOEXCHANGE")));
-P();
-W("The configuration of the SMTP transport layer is described %s",
- intlink_("smtp.php3","here"));
-EP();
-
-ANCHOR("gnunet.conf.port");H4("NETWORK: PORT");
-
-BP();
-W("With this option, you can specify to which TCP port the gnunet-clients
should connect.");
-W("It is also the choice of the port for <tt>gnunetd</tt>.");
-W("While you can restrict access to this port using the %s option, you may
also want to firewall this port.",
- extlink_("#gnunet.conf.trusted", "NETWORK: TRUSTED"));
-W("A different port must be used for the TCP and UDP peer-to-peer transport
mechanism.");
-W("The default value is <tt>2087</tt>.");
-
-EP();
-ANCHOR("gnunet.conf.interface");H4("NETWORK: INTERFACE");
-
-BP();
-W("Use this option to specify which interface GNUnet should use to try to
determine your IP.");
-W("The interface is also used to determine the network load.");
-W("Alternatively, you can use the %s option.",
- extlink_("#gnunet.conf.ip", "IP"));
-W("If both an interface and an IP is specified, the IP option takes
preference.");
-
-EP();
-ANCHOR("gnunet.conf.ip");H4("NETWORK: IP");
-
-BP();
-W("This option allows you to specify the advertised IP.");
-W("If you do not specify anything, GNUnet will attempt to detect the IP.");
-W("You really need this option if you are behind a NAT box.");
-W("In that case, you have to specify the IP of the NAT box here (you can use a
hostname, DNS is supported).");
-W("For NAT boxes with changing IP, you may want to use %s.",
- extlink_("http://www.technopagan.org/dynamic/", "Dynamic DNS"));
-
-EP();
-ANCHOR("gnunet.conf.trusted");H4("NETWORK: TRUSTED");
-
-BP();
-W("With this option you can specfiy which addresses are trusted enough to
connect to gnunetd via TCP as clients.");
-W("The default is only the local host.");
-W("If you are on a trusted LAN, you may want to specify the LAN network and
netmask.");
-W("You must use IPs, DNS lookup is not supported.");
-W("The format of this option is <tt>IP/NETWORK;</tt>.");
-W("Multiple entries (seperated and terminated by a semicolon) are permitted.");
-W("The network can be specified using a bitmask (for example,
<tt>/255.255.0.0</tt>) or the number of bits (for example, <tt>/16</tt>).");
-EP();
-ANCHOR("gnunet.conf.interfaces");H4("LOAD: INTERFACES");
-
-BP();
-W("Under this option you specify which interfaces GNUnet is going to monitor
to determine the load.");
-W("If you have ethernet, the default is <tt>eth0</tt>.");
-W("If you have a modem, try <tt>ppp0</tt>.");
-W("In general, the command <tt>ifconfig</tt> (may not be in your path if you
are logged in as a normal user, try <tt>/sbin/ifconfig</tt>) will show you the
active devices.");
-
-EP();
-ANCHOR("gnunet.conf.basiclimiting");H4("LOAD: BASICLIMITING");
-
-BP();
-W("Use basic bandwidth limitation?");
-W("YES or NO.");
-W("The basic method notes only gnunet traffic and can be used to specify
simple maximum bandwidth usage of GNUnet.");
-W("Choose the basic method if you don’t want other network traffic to
interfere with GNUnets operation, but still wish to constrain gnunet’s
bandwidth usage, or if you can’t reliably measure the maximum
capabilities of your
-connection.");
-W("The basic method might also be good when the used interface can transmit
data to/from local network very fast compared to internet traffic (a condition
that makes the advanced method unreliable).");
-
-P();
-
-W("The advanced bandwidth limitation measures total traffic over the chosen
interface (including GNUnet traffic), and allows gnunetd to participate if the
total traffic is low enough.");
-
-EP();
-ANCHOR("gnunet.conf.maxnetbpsuptotal");H4("LOAD: MAXNETBPSUPTOTAL");
-
-BP();
-W("If you use basic bandwidth limitation, this option specifies the maximum
GNUnet can use for its internal traffic.");
-W("When using advanced limiting, use this option to specify your maximum
upload speed (how many bytes per second your node can send).");
-W("In that case, do not specify how much you want GNUnet to use, but use the
maximum theoretically available.");
-W("If you do not know your bandwidth, stick with the default of 50,000 bytes
per second.");
-
-EP();
-ANCHOR("gnunet.conf.maxnetbpsdowntotal");H4("LOAD: MAXNETBPSDOWNTOTAL");
-
-BP();
-W("Same as %s but for download speeds.",
- extlink_("#gnunet.conf.maxnetbpsuptotal", "MAXNETBPSUPTOTAL"));
-W("Note that GNUnet can not control exactly how much data other nodes are
sending to your machine (an approximate control is attempted, but malicious
peers can always ignore the protocol and send more data).");
-W("The upload limit is strictly enforced.");
-W("If we are above our boundaries for the download limits, GNUnet will notify
peers to reduce the amount of traffic until we are back inside the limits.");
-W("Note that if you disable BASICLIMITING, GNUnet will sense if non-GNUnet
traffic is going on and only use the specified amount of bandwidth if you are
not using it otherwise.");
-
-EP();
-ANCHOR("gnunet.conf.maxcpuload");H4("LOAD: MAXCPULOAD");
-
-BP();
-W("Up to which CPU load will GNUnet process packets from other nodes.");
-W("If the average CPU load goes over this value (like for the network, this
includes other applications), GNUnet will start dropping packets and reduce the
load.");
-W("GNUnet may also do fewer of the expensive message-packing computations,
trading bandwidth for CPU time.");
-W("For example, if you are running an application that takes up all of your
CPU power, GNUnet will pretty much not serve any other nodes (the node is
considered <em>busy</em>).");
-W("Only if the load is under the value specified here, GNUnet will serve other
nodes.");
-W("The default is 50, which should keep your hosts responsive enough while
being more than sufficient for GNUnet on any modern machine.");
-
-EP();
-ANCHOR("gnunet.conf.udp.port");H4("UDP: PORT");
-
-BP();
-W("Which port should the UDP transport layer use?");
-W("If no value is specified, GNUnet will try to find a port in
<tt>/etc/services</tt>.");
-W("If you specify 0, this means that you do not want to open UDP for receiving
messages (but, if you load the transport module, you can still send UDP
traffic).");
-W("The default port is 2086 as assigned to GNUnet by %s.",
- extlink_("http://www.iana.org", "IANA"));
-W("Since other peers will try to connect to this port, you should configure
your firewall to let all traffic through.");
-W("UDP is a stateless protocol, thus just allowing <tt>related</tt> traffic in
a stateful firewall will not be sufficient.");
-
-EP();
-ANCHOR("gnunet.conf.blacklist");H4("UDP: BLACKLIST");
-
-BP();
-W("If your node receives advertisements for nodes on virtual private networks,
it should not even attempt to connect to those networks.");
-W("You can use this option to specify a list of networks that are forbidden.");
-W("gnunetd will then never attempt to communicate with these addresses.");
-W("You will get an error if your own IP address is listed here.");
-W("The format of this option is <tt>IP/NETWORK;</tt>.");
-W("Multiple entries (seperated and terminated by a semicolon) are permitted.");
-W("The network can be specified using a bitmask (for example,
<tt>/255.255.0.0</tt>) or the number of bits (for example, <tt>/16</tt>).");
-
-EP();
-ANCHOR("gnunet.conf.udp.mtu");H4("UDP: MTU");
-
-BP();
-W("This option specifies the maximum transfer unit, the maximum number of
bytes that GNUnet will put in a UDP packet.");
-W("This does not include the IP or UDP headers.");
-W("Do not use more than your OS (and firewall) can support.");
-W("Typcially, your want to avoid fragmentation and should choose network-MTU
minus 28.");
-W("You can determine your MTU using the <tt>ifconfig</tt> command.");
-W("For ethernet, the network MTU should be 1500 octets, resulting in 1472
octets for the GNUnet MTU, which is also the default.");
-W("Do not use values smaller than 1200.");
-EP();
-
-ANCHOR("gnunet.conf.tcp.port");H4("TCP: PORT");
-
-BP();
-W("Which port should the TCP transport layer use?");
-W("If no value is specified, GNUnet will try to find a port in
<tt>/etc/services</tt>.");
-W("If you specify 0, this means that you do not want to open TCP for receiving
messages (but, if you load the transport module, you can still initiate
bi-directional TCP connections).");
-W("Setting the TCP port to 0 is a common configuration for machines behind NAT
boxes (these peers can then still initiate connections but other nodes will not
attempt to connect).");
-W("The default port is 2086 as assigned to GNUnet by %s.",
- extlink_("http://www.iana.org", "IANA"));
-W("Since other peers will try to connect to this port, you should configure
your firewall to let all traffic through.");
-W("Make sure that the port number you select here does not conflict with the
client TCP port.");
-
-EP();
-ANCHOR("gnunet.conf.blacklist");H4("TCP: BLACKLIST");
-BP();
-W("If your node receives advertisements for nodes on virtual private networks,
it should not even attempt to connect to those networks.");
-W("You can use this option to specify a list of networks that are forbidden.");
-W("gnunetd will then never attempt to communicate with these addresses.");
-W("You will get an error if your own IP address is listed here.");
-W("The format of this option is <tt>IP/NETWORK;</tt>.");
-W("Multiple entries (seperated and terminated by a semicolon) are permitted.");
-W("The network can be specified using a bitmask (for example,
<tt>/255.255.0.0</tt>) or the number of bits (for example, <tt>/16</tt>).");
-
-EP();
-ANCHOR("gnunet.conf.tcp.mtu");H4("TCP: MTU");
-
-BP();
-W("This option specifies the maximum transfer unit, the maximum number of
bytes that GNUnet will put in a TCP packet.");
-W("This does not include the IP or TCP headers.");
-W("Typcially, your want to avoid fragmentation and should choose network-MTU
minus 40.");
-W("For ethernet, this would result in 1460 octets, which is also the
default.");
-W("Do not use less than 1200.");
-
-EP();
-ANCHOR("gnunet.conf.nat.limited"); H4("NAT: LIMITED");
-
-BP();
-W("The NAT transport allows connections between machines using network-address
translation (NAT) and "normal" peers with a globally unique IP
address.");
-W("Thus in practice, all GNUnet peers that support TCP should also load the
NAT transport service, either since they need it to connect themselves or
because it allows them to connect to other peers that require NAT support.");
-W("NAT support requires loading the TCP transport service (IPv4 and/or
IPv6).");
-W("The only option for the NAT transport is "LIMITED".");
-W("The default value "NO" is used for peers that
<strong>either</strong> have a globally routed IP address (are not using NAT at
all) <strong>or</strong> for peers that advertise the IP of the NAT box and
where the NAT box forwards the TCP port to the NAT-ed IP in the LAN.");
-W("Only if you can not configure your NAT box to forward the TCP port to your
local machine you should set LIMITED to "YES".");
-P();
-W("In summary, there are three possibilities.");
-W("If you use TCP and don′t use NAT on your local network, load the NAT
transport anyway, set LIMITED to "NO".");
-W("If you use NAT on your local network and have control over your NAT box,
configure the NAT box to forward the TCP (and if possibly UDP) ports to the
machine running <tt>gnunetd</tt>, also load the NAT transport and also set
LIMITED to "NO".");
-W("If you use NAT on your local network and do NOT have control over the NAT
box, you <strong>must</strong> load the TCP and the NAT transport, set the
TCP-PORT to "0" and LIMITED to "YES".");
-P();
-W("The last option is the worst since it limits whom you can connect to and
thus limits your anonymity.");
-W("If you are adventurous, you can supplement the last option with the SMTP
transport, which is difficult to configure but will allow NAT-to-NAT
communication.");
-
-EP();
-ANCHOR("gnunet.conf.loglevel");H4("LOGGING: USER-LEVEL and ADMIN-LEVEL");
-
-BP();
-W("Loglevel, how much should be logged?");
-W("You can use NOTHING, FATAL, ERROR, WARNING, INFO, STATUS or DEBUG (which
log more and more messages in this order).");
-W("Default is WARNING.");
-W("You can override this option at the commandline with the <tt>-L</tt>
switch.");
-
-EP();
-ANCHOR("gnunet.conf.logfile");H4("GNUNETD: LOGFILE");
-
-BP();
-W("If <tt>gnunetd</tt> is not started with the <tt>-d</tt> option, it writes
logging messages into this file (with <tt>-d</tt> all messages are written to
the console).");
-W(" Read this %s if you are using logrotate.",
-
extlink_("http://mail.gnu.org/archive/html/help-gnunet/2002-08/msg00012.html",
"mail"));
-
-EP();
-ANCHOR("gnunet.conf.pidfile");H4("GNUNETD: PIDFILE");
-
-BP();
-W("In which file should gnunetd write the process-id of the server?");
-W("If you run gnunetd as root, you may want to choose /var/run/gnunetd.pid.");
-W("It’s not the default since gnunetd may not have write rights at that
location.");
-
-EP();
-ANCHOR("gnunet.conf.hosts");H4("GNUNETD: HOSTS");
-
-BP();
-W("In this directory GNUnet stores the key and last known Internet address of
each known GNUnet node.");
-W("Each file is about 600 bytes long (different transport protocols may have
different address sizes).");
-W("On startup, GNUnet downloads a list of initial hosts from the specified
<tt>HOSTLISTURL</tt>.");
-W("The files listed in the <tt>HOSTLISTURL</tt> are generated using:");
-EP();
-PRE("$ cat /var/lib/GNUnet/data/hosts/* > hostlist");
-BP();
-W("Running the command above and offering the generated <tt>hostlist</tt> file
on a webserver is all it takes to run your own hostlist server.");
-W("<tt>gnunetd</tt> will try to download peer advertisements from a (random)
server specified in the <tt>HOSTLISTURL</tt> only if too few peers are
connected for a longer period of time.");
-P();
-W("Once connected, GNUnet hosts exchange information about other hosts
automatically.");
-W("Thus except for the initial connection, there should be no pressing need to
obtain a new list (except if a node was offline for a long time and the old
list aged so much that it became useless).");
-W("If hosts cannot be reached and the time that the key has been signed to be
valid by the sender has expired, GNUnet deletes their identities from
<tt>data/hosts/</tt>.");
-W("Note that the trust information is kept "forever".");
-
-EP();
-ANCHOR("gnunet.conf.hostlisturl");H4("GNUNETD: HOSTLISTURL");
-
-BP();
-W("Whenever <tt>gnunetd</tt> needs to learn about an initial set of peers that
it can connect to, it downloads a list of initial nodes to connect to via
http.");
-W("The URL to use is specified here.");
-W("Multiple URLs can be specified separated by spaces.");
-
-EP();
-ANCHOR("gnunet.conf.applications");H4("GNUNETD: APPLICATIONS");
-
-BP();
-W("Which applications should <tt>gnunetd</tt> 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 "advertising getoption" since these are
rather fundamental applications.");
-W("Add "stats" in order to be able to obtain statistics using
<tt>gnunet-stats</tt>.");
-W("Add "traffic" to see statistics about traffic (also used by
anonymous file sharing for cover traffic estimates).");
-W("Further additions depend on which specific applications you want to use.");
-W("Possible choices include "%s chat tbench tracekit".",
- intlink_("user_afs.php3","fs"));
-
-EP();
-ANCHOR("gnunet.conf.transports");H4("GNUNETD: TRANSPORTS");
-
-BP();
-W("Which transport services should be used?");
-W("Use space-separated list of the modules, for example "udp smtp tcp
nat".");
-W("If you want to use SMTP, please read the %s for details.",
- intlink_("smtp.php3","SMTP documentation"));
-
-P();
-W("The <tt>gnunet-setup</tt> tool also contains help texts for the various
options.");
-
-EP();
-HR();
-
-ANCHOR("clientoptions"); H3("Client options");
-BP();
-W("These are options that should be specified in the per-user
<tt>gnunet.conf</tt> configuration files.");
-W("They apply to the various user interfaces for GNUnet.");
-EP();
-ANCHOR("gnunet.conf.host");
-H4("NETWORK: HOST");
-
-BP();
-W("With this option, you can specify to which host the GNUnet clients should
connect by default.");
-W("You can override the choice you make here with the <tt>-H</tt> option.");
-W("The default, <tt>localhost</tt> should be fine.");
-
-EP();
-
-ANCHOR("gnunet.conf.port");H4("NETWORK: PORT");
-
-BP();
-W("With this option, you can specify to which TCP port the gnunet-clients
should connect.");
-W("It is also the choice of the port for <tt>gnunetd</tt>.");
-W("While you can restrict access to this port using the %s option, you may
also want to firewall this port.",
- extlink_("#gnunet.conf.trusted", "NETWORK: TRUSTED"));
-W("A different port must be used for the TCP and UDP peer-to-peer transport
mechanism.");
-W("The default value is <tt>2087</tt>.");
-EP();
-
-HR();
-
-ANCHOR("coretools");
-H3("GNUnet core tools");
-
-ANCHOR("transportcheck");
-H4("gnunet-transport-check");
-
-BP();
-W("The <tt>gnunet-transport-check</tt> tool checks if a transport is
configured correctly.");
-W("By default the tool checks if the transport is at least able to send a
message to its own address.");
-W("This test is called the <em>loopback mode</em>.");
-W("This mode is useful to check basic transport functionality when new
transports are implemented or when GNUnet is ported to a new platform.");
-W("By default, <tt>gnunet-transport-check</tt> tests all the transports that
are currently specified in the configuration file.");
-P();
-W("With the option <tt>-p</tt> it is possible to run
<tt>gnunet-transport-check</tt> in <em>ping mode</em>.");
-W("In ping mode <tt>gnunet-transport-check</tt> performs an http download of
the peer list specified in the configuration (HOSTLISTURL option) and attempts
to connect to each of these peers (if a matching transport is configured).");
-W("This way the tool is able to catch a variety of problems, including
problems relating to NAT boxes, the firewall configuration and virtual private
networks (VPNs).");
-W("Note that it is perfectly normal that not all peers from the hostlist can
be reached, but for both common transports (tcp and udp) at least a few should
succeed.");
-W("The default time that <tt>gnunet-transport-check</tt> waits for a reply is
15s.");
-W("For a quick test the timeout can be reduced, for example to 500 ms with the
option <tt>-T 500</tt>.");
-P();
-W("Note that you can not run <tt>gnunet-transport-check</tt> while
<tt>gnunetd</tt> is running!");
-W("You must stop <tt>gnunetd</tt> before testing transports.");
-W("The output of <tt>gnunet-transport-check</tt> looks something like this:");
-EP();
-
-PRE("$ gnunet-transport-check\n" .
- "Testing transport(s) udp tcp\n" .
- "Transport OK, 0ms for 1 messages of size 11 bytes.\n" .
- "Transport OK, 0ms for 1 messages of size 11 bytes.\n");
-
-BP();
-W("And for ping mode:");
-EP();
-
-PRE("$ gnunet-transport-check -p\n" .
- "Available transport(s): udp tcp\n" .
- ".....................\n" .
- "8 out of 21 peers contacted successfully (0 times transport
unavailable).\n");
-
-ANCHOR("peerinfo");
-H4("gnunet-peer-info");
-
-BP();
-W("The <tt>gnunet-peer-info</tt> tool displays the identities, trust earned
and Internet addresses of all GNUnet peers that the local peer is aware of.");
-W("The output looks like this:");
-EP();
-
-PRE("$ gnunet-peer-info\n" .
- "Peer \'CJ4J...\' with trust 31 and address \'31.79.24.1:2086 (TCP)\'\n" .
- "Peer \'FA65...\' with trust 0 and address \'80.16.46.2:2086 (UDP)\'");
-
-ANCHOR("stats");H4("gnunet-stats");
-
-BP();
-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 <tt>gnunetd</tt> 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.");
-EP();
-
-PRE("$ gnunet-stats\n" .
- "Uptime (seconds) :
47\n" .
- "% of allowed network load :
0\n" .
- "% of allowed cpu load :
0\n" .
- "# bytes of noise received :
0\n" .
- "# bytes received from clients :
8\n" .
- "# times outgoing msg sent (bandwidth ok) :
0\n" .
- "# times outgoing msg dropped (bandwidth stressed) :
0\n" .
- "# times incoming msg accepted (cpu ok) :
0\n" .
- "# times incoming msg dropped (cpu overloaded) :
0\n" .
- "# sessionkeys received :
0\n" .
- "# valid sessionkeys received :
0\n" .
- "# sessionkeys sent :
0\n" .
- "# connections shutdown :
0\n" .
- "# currently connected nodes :
0\n" .
- "# bytes noise sent :
0\n" .
- "# encrypted bytes sent :
0\n" .
- "# bytes decrypted :
0\n" .
- "# ping messages sent :
0\n" .
- "# ping messages received :
0\n" .
- "# pong messages sent :
0\n" .
- "# pong messages received :
0\n" .
- "# HELLO messages received from http server :
34\n" .
- "# HELLO messages received overall :
1\n" .
- "# valid HELLO messages received :
0\n" .
- "# HELLO messages forwarded from other peers :
0\n" .
- "# HELLO messages originated :
0\n");
-
-BP();
-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.");
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/user_index.inc
===================================================================
--- GNUnet-docs/WWW/user_index.inc 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/user_index.inc 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,13 +0,0 @@
-<?php
-echo "<ol>\n";
-LILI("user_gnunet.php3","Compilation and Configuration of GNUnet");
-LILI("user_afs.php3","Configuration and Usage of GNUnet’s (anonymous)
file sharing");
-echo "<ul>\n";
-LILI("gnunetgtk.php3","Using <tt>gnunet-gtk</tt>");
-LILI("user_namespaces.php3", "Using namespaces with <tt>gnunet-gtk</tt>");
-echo "</ul>\n";
-// LILI("user_chat.php3","Broadcast chat");
-// LILI("user_tbench.php3","Measureing the transport performance");
-// LILI("user_tracekit.php3","Tracing the GNUnet topology");
-echo "</ol>\n";
-?>
Deleted: GNUnet-docs/WWW/user_namespaces.php3
===================================================================
--- GNUnet-docs/WWW/user_namespaces.php3 2012-08-27 18:40:59 UTC (rev
23449)
+++ GNUnet-docs/WWW/user_namespaces.php3 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,158 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: A Tutorial for Using Namespaces";
-$description="How to create namespaces, add content to namespaces, update
content and search namespaces";
-include("html_header.php3");
-H2("How to use namespaces");
-
-afslogo();
-ANCHOR("setup"); H3("Setup");
-BP();
-W("The first step to start with namespaces is to enable tracking of available
content.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-1.png",
- "The 'Advanced' Tab in file-sharing",
- "CENTER",615,492);
-BP();
-W("This option is disabled by default since it would allow an adversary who
takes control of the current machine to determine what metadata the local user
has been exposed to.");
-W("Once you are done with your namespace operation, you may want to disable
the checkbox and press the <tt>Clear</tt> button.");
-W("For this tutorial, we need to enable tracking of available content:");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-2.png",
- "The 'Advanced' Tab in file-sharing with tracking enabled",
- "CENTER",615,492);
-
-
-ANCHOR("publish"); H3("Publish Content");
-BP();
-W("The next step is (usually) to publish some content using the normal
publishing dialogs.");
-W("You could also add files that you did not upload yourself (and that you
only found by searching the network) to a namespace, but since you could not
know if those files were of high quality, we generally would advise against
it.");
-W("The better method would be to download the content, check it and then
re-publish it.");
-W("For this tutorial, we will assume that the content that you are publishing
in your namespace is content that you are sharing.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-3.png",
- "The 'Publication' Tab in file-sharing",
- "CENTER",615,492);
-BP();
-W("As shown in the screenshot, select a file or directory from your local
disk.");
-W("Any selections of the various options for publishing will work.");
-W("After clicking the <tt>Publish</tt> button, you can edit the meta-data for
the content.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-4.png",
- "Edit the meta-data for the publication",
- "CENTER",712,482);
-BP();
-W("Finally, you should switch to the <tt>Status</tt> tab and wait for your
upload to complete (blue bar full under Publications).");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-5.png",
- "The status tab shows the progress of uploads and downloads",
- "CENTER",615,492);
-
-ANCHOR("create"); H3("Creating the Namespace");
-BP();
-W("If you switch back to the <tt>Advanced</tt> tab, you should now see the
(tracked) content that you have published since enabling tracking in the
list.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-6.png",
- "The 'Advanced' Tab in file-sharing with tracked content",
- "CENTER",615,492);
-BP();
-W("At this point, we can create our first namespace.");
-W("Select <tt>New</tt> and then <tt>Namespace</tt> from the menu.");
-W("A dialog will open where you can enter meta-data describing the
namespace.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-7.png",
- "Dialog for entering metadata about the namespace",
- "CENTER",694,459);
-BP();
-W("You should at least provide a brief description, a title or an author.");
-W("Those values will be used for the nickname of the namespace.");
-W("If you fail to specify metadata for any of these types, your namespace will
be called 'unknown'.");
-W("An important special entry in this dialog is the namespace root.");
-W("The namespace root is the identifier of some piece of content in your
namespace that will be given to uses discovering the namespace.");
-W("Think of it as the name of the entry-point to your namespace.");
-W("A common choice is simply 'root'.");
-W("In the tutorial, 'gpl' will be used for the root.");
-P();
-W("You can also specify keywords for the namespace in this dialog.");
-W("An advertisement for your namespace will be published under those
keywords.");
-W("Whenever users search for any of those keywords, they will learn about your
namespace.");
-W("<tt>gnunet-gtk</tt> will take a few seconds to create the namespace after
you press <tt>Ok</tt>.");
-W("Note that part of the process is generating a secret key, so if your system
seems to hang, type randomly on your keyboard to generate entropy.");
-P();
-W("The <tt>Advanced</tt> tab should now look like this:");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-8.png",
- "Dialog for entering metadata about the namespace",
- "CENTER",615,492);
-
-ANCHOR("insert"); H3("Inserting into the Namespace");
-BP();
-W("In order to add content to your namespace, select a file or directory under
<tt>Available content</tt> and click <tt>Add</tt>.");
-W("A new dialog will pop up where you need to specify an identifier for the
content.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-9.png",
- "The 'Advanced' Tab in file-sharing",
- "CENTER",487,177);
-BP();
-W("The identifier is like a keyword, except that users need to use the
identifier in conjunction with the namespace to find the content.");
-W("While not required, the first bit of content that we will publish in the
namespace will also be the root of the namespace, hence we will enter 'gpl' for
the identifier.");
-W("The <tt>Next Identifier</tt> is the identifier that will be used for any
updates to the content published under <tt>Identifier</tt>.");
-W("If users search the namespace using the identifier, they will automatically
also search for such updates.");
-W("Knowing that we will publish the GPLv2 as the root, we determine that a
good name for an update would be 'gpl3'.");
-EP();
-
-
-ANCHOR("update"); H3("Updating content");
-BP();
-W("In order to demonstrate updating, we need a second available file.");
-W("Following the same steps that we used for publishing the GPL, we added the
GPLv3.");
-W("As a result, the <tt>Advanced</tt> tab should look like this:");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-10.png",
- "The 'Advanced' Tab in file-sharing with GPLv3",
- "CENTER",615,492);
-BP();
-W("In the namespace tab, we select the original file that we want to publish
an update for (here COPYING) and in the <tt>Available Content</tt> list we
select the updated content (here gpl3.txt).");
-W("We can then press the <tt>Update</tt> button to create an update.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-11.png",
- "The 'Advanced' Tab in file-sharing",
- "CENTER",510,137);
-BP();
-W("This time, we are not prompted for an identifier -- 'gpl3' is automatically
chosen for us (since we are updating COPYING).");
-W("We are given the opportunity to specify an identifier for the update to the
update.");
-W("We can leave <tt>Next Identifier</tt> emtpy to express that there will
never be an update to 'gpl3'.");
-W("The resulting namespace overview will then look like this:");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-12.png",
- "The 'Advanced' Tab in file-sharing with GPLv3 inserted",
- "CENTER",615,492);
-
-
-ANCHOR("search"); H3("Search");
-BP();
-W("Users that have discovered the namespace using a keyword search can then
select it from the drop-down list in the <tt>Search and Download</tt> tab
(behind <tt>in namespace</tt>.");
-W("If a namespace is selected, the <tt>Keyword</tt> is automatically set to
the root of the namespace (here 'gpl'):");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-13.png",
- "The 'Search and Download' Tab in file-sharing with the 'Free Software
Licenses' namespace selected",
- "CENTER",809,691);
-BP();
-W("The number behind the namespace identifier (here '0') can be used to assign
the namespace a 'rank'.");
-W("The rank is not used by GNUnet; the idea is that users can use it to
express (and remember) which namespaces they like best.");
-P();
-W("Now that a namespace has been selected, the <tt>Find</tt> button can be
used to search it.");
-EP();
-IMG("screenshots/gnunet-gtk-namespace-14.png",
- "The 'Search and Download' Tab in file-sharing with search results for the
'Free Software Licenses' namespace",
- "CENTER",809,691);
-BP();
-W("GNUnet will first find the search result for the identifier 'gpl'.");
-W("Since 'gpl' was specified with an update, GNUnet will then automatically
search for the update under the identifier 'gpl3'.");
-W("All results found for 'gpl' and its (transitive) updates will be displayed
in the result list.");
-P();
-W("In this example, using the keyword 'gpl3' would have only resulted in the
'gpl3.txt' result.");
-EP();
-
-include("html_footer.php3");
-?>
Deleted: GNUnet-docs/WWW/user_testbed.php3
===================================================================
--- GNUnet-docs/WWW/user_testbed.php3 2012-08-27 18:40:59 UTC (rev 23449)
+++ GNUnet-docs/WWW/user_testbed.php3 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,75 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Deploying a GNUnet P2P testbed";
-$description="GNUnet Documentation - An introduction to gnunet-testbed.";
-include("html_header.php3");
-
-H2("Deploying a GNUnet P2P testbed");
-
-BP();
-W("A P2P testbed is an environment in which P2P developers can test new
ideas.");
-W("Ordinary users can help developers by making their machines available for
testing.");
-W("This document describes how users can setup their machines to participate
in a testbed (and details the risks involved) and how developers can use the
testing infrastructure.");
-
-EP();
-H3("Setting up a testbed client");
-
-BP();
-W("Since setting up a testbed client is quite trivial, the most difficult step
is to decide if it is a good idea.");
-W("The benefits of providing a client to developers are obvious, the
developers may be able to develop and test their free software faster.");
-W("On the other hand, the risks are plentiful.");
-W("Setting up a testbed client will allow developers to run <em>arbitrary</em>
code on the local machine.");
-W("This is a huge security risk.");
-W("While it is possible (and definitely advised) to restrict access to
developers that use a specific IP, this is still equivalent to giving the
developers a TELNET account.");
-W("Yes, I said TELNET, not SSH.");
-W("The connection used at the moment is by default not encrypted and not
authenticated.");
-W("An advanced setup may add an SSH tunnel, but even then you grant developers
direct access to your machine, with the explicit purpose of running new code.");
-W("The only piece of good news is that <tt>gnunetd</tt> does not require
root-rights, so you do not have to grant root-access.");
-W("Of course, there are plenty more local root exploits out there than remote
root exploits.");
-P();
-W("Still reading?");
-W("Ok, then here′s how to do the setup.");
-W("This assumes that you have configured <tt>gnunetd</tt> for normal operation
already.");
-W("For running a testbed peer, you need to add <tt>testbed</tt> to the list of
<tt>APPLICATIONS</tt> in <tt>gnunet.conf</tt>.");
-W("You can keep all other applications, too, but you don′t have to.");
-W("Developers will be able to add and remove application services as they
please anyway -- as long as testbed is present.");
-W("Furthermore, you need to specify the IP address(es) of the developers under
<tt>TRUSTED</tt>.");
-W("This will allow developers to connect to the peer.");
-W("Note that you may have to punch a hole into your firewall since this
connection uses the client port (TCP/2087 by default), and not the peer-to-peer
transports.");
-W("If you want to use an SSH tunnel, exchange an SSH key with the developers
instead.");
-W("Developers can then use that to connect to the service via loopback.");
-W("Finally, the developers must be notified about the availability of your new
test-peer.");
-W("The developers may be using an automatic web-based registration system, in
which case you should follow the instructions there.");
-W("Note that that system could also be advertising an SSH key.");
-W("If there is no web-based registration system, you may want to contact the
developers directly with your IP and port (you may have changed the 2086
default).");
-
-EP();
-H3("Setting up a testbed meta-server");
-
-BP();
-W("The purpose of a testbed meta-server is to maintain a list of available
peers for running tests.");
-W("A meta-server is typically a WWW server which is contacted by peers that
register and unregister their service.");
-W("The <tt>contrib/</tt> directory contains a few PHP scripts that can be used
to setup a meta-server that uses an MySQL database to store the list of
available peers.");
-W("The scripts can be used to create a list of available IP addresses which is
then fed into <tt>gnunet-testbed</tt>.");
-
-EP();
-H3("Using <tt>gnunet-testbed</tt>");
-BP();
-W("<tt>gnunet-testbed</tt> is the application that exercises control over the
testbed peers.");
-W("It uses the same %s to communicate with the peers that all of the other
GNUnet tools use.",
- intlink_("protocol_cs.php3",
- "basic client-server protocol"));
-W("The only major difference is that <tt>gnunet-testbed</tt> connects to
multiple <tt>gnunetd</tt> servers at the same time.");
-W("<tt>gnunet-testbed</tt> excercises its control over the peers by sending
them various commands.");
-W("The commands include network topology management, loading and unloading of
other application modules, uploading of files (including code that can then be
loaded as a module!), configuration, statistics and the execution of arbitrary
commands.");
-W("<tt>gnunet-testbed</tt> features a shell (default is BASH) to script the
execution.");
-W("BASH was chosen since this relieves the developers from implementing a new
scripting language and the users from learning a new toy language.");
-W("When invoked, <tt>gnunet-testbed</tt> opens a BASH shell with the
<tt>@GTB@</tt> prompt.");
-W("At that prompt, additional testbed specific commands are available in
addition to everything else that can be done with the shell.");
-W("The results of the testbed commands (standard output and return values, to
be precise), can be processed with other bash commands in the usual way.");
-W("For documentation on BASH itself, see <tt>man bash</tt>.");
-W("The complete list of testbed specific commands is changing frequently and
should be documented in the <tt>gnunet-testbed</tt> man page.");
-EP();
-
-include("html_footer.php3");
-?>
Copied: gnunet-www/GNUnet/favicon.ico (from rev 23421,
GNUnet-docs/WWW/favicon.ico)
===================================================================
(Binary files differ)
Copied: gnunet-www/GNUnet/logos/osx.png (from rev 23421,
GNUnet-docs/WWW/logos/osx.png)
===================================================================
(Binary files differ)
Copied: gnunet-www/GNUnet/logos/vmware.png (from rev 23421,
GNUnet-docs/WWW/logos/vmware.png)
===================================================================
(Binary files differ)
Deleted: gnunet-www/freeway-logos/contact.php
===================================================================
--- GNUnet-docs/WWW/freeway/contact.php 2012-08-25 14:19:21 UTC (rev 23421)
+++ gnunet-www/freeway-logos/contact.php 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,10 +0,0 @@
-<?php
-include('scripts.inc.php');
-start('Freeway: Contact');
-
-H2('Bugtracker');
-P();
-W('Freeway uses %s.', extlink_('https://gnunet.org/mantis/', 'GNUnet\'s
bugtracking system'));
-W('Always select "freeway" as the category when reporting bugs in Freeway.');
-stop();
-?>
Deleted: gnunet-www/freeway-logos/freeway.css
===================================================================
--- GNUnet-docs/WWW/freeway/freeway.css 2012-08-25 14:19:21 UTC (rev 23421)
+++ gnunet-www/freeway-logos/freeway.css 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,19 +0,0 @@
-a {color: #8B4513; text-decoration: none;}
-a:visited {color: #665340;}
-#banner {background: #D2691E url("freeway.png") top right no-repeat; border:
10px solid #D2691E; color: #D3D3D3; font-size: 12px; height: 75px;}
-#banner a {color: #D3D3D3;}
-#banner h1 a {color: #FFFFFF;}
-body {font-family: sans-serif; margin: 0;}
-.command {background: #D3D3D3; border: 1pt solid #808080; font-family:
monospace; font-size: 10pt;}
-#copyright {background: #D3D3D3; border: 1pt solid #808080; font-family:
monospace; font-size: 8pt; margin-bottom: 1em; margin-top: 1em; padding: 1em;}
-#edit {text-align: center; font-size: 10pt;}
-h1 {color: #FFFFFF; font-size: 35px; margin: 0; padding-top: 10px;}
-h2 {background: #D2691E; border: 1pt solid #8B4513; color: #FFFFFF; display:
block; font-size: 16pt; padding: 0.1em; text-align: center;}
-hr {background: #808080; border: none; height: 1pt; width: 100%;}
-#i18nhtml {margin-top: 3em;}
-#languages {font-size: 8pt; margin: 0; padding: 0; text-align: center;}
-.navigation {width: 100%; border-collapse: collapse;}
-.navigation tr {background: #D3D3D3;}
-.navigation tr td {text-align: center;}
-.navigation tr td a {display: block; font-size: 10pt; font-weight: bold;
padding: 0.1em;}
-p {font-size: 10pt; margin: 1em;}
\ No newline at end of file
Deleted: gnunet-www/freeway-logos/index.php
===================================================================
--- GNUnet-docs/WWW/freeway/index.php 2012-08-25 14:19:21 UTC (rev 23421)
+++ gnunet-www/freeway-logos/index.php 2012-08-27 18:51:04 UTC (rev 23450)
@@ -1,29 +0,0 @@
-<?php
-include('scripts.inc.php');
-start('Freeway');
-
-H2('Requirements');
-P();
-W('Freeway requires an installed copy of GNUnet in order to use the native
modules.');
-W('Currently, Freeway will not work unless GNUnet has been installed.');
-W('You can obtain GNUnet from the %s.', intlink_('http://gnunet.org/', 'GNUnet
website'));
-P();
-W('The Freeway build scripts use Sh, Autotools, Make, Ant, and Jikes.');
-W('You will also need a working C toolchain and Java runtime environment.');
-H2('Getting Freeway');
-P();
-W('There are no official releases available.');
-W('The latest developer code can be checked out of the %s.',
extlink_('https://gnunet.org/svn/freeway/', 'SVN repository'));
-H2('Compiling');
-P();
-W('To generate the build scripts, run %s.', '<span class="command">sh
bootstrap</span>');
-W('Then run %s.', '<span class="command">sh configure</span>');
-W('If configure doesn\'t find GNUnet, you may need to use %s.', '<span
class="command">sh configure --with-gnunet=<path to GNUnet></span>');
-W('Finally, build Freeway and its native components by running %s.', '<span
class="command">sh build.sh</span>');
-H2('Running Freeway');
-P();
-W('After Freeway has been compiled, it can be run using %s.', '<span
class="command">sh etc/gnunetd.sh</span>');
-W('Note: recent versions of Freeway probably only support the native %s
application.', '<span class="command">gnunet-stats</span>');
-W('See also: %s', intlink_('doc/configuration.php',
'documentation/configuration'));
-stop();
-?>
Deleted: gnunet-www/freeway-logos/scripts.inc.php
===================================================================
--- GNUnet-docs/WWW/freeway/scripts.inc.php 2012-08-25 14:19:21 UTC (rev
23421)
+++ gnunet-www/freeway-logos/scripts.inc.php 2012-08-27 18:51:04 UTC (rev
23450)
@@ -1,52 +0,0 @@
-<?php
-include_once('i18nHTML/i18nhtml.php');
-//$mypath = substr(__FILE__, strlen($_SERVER['DOCUMENT_ROOT']),
strrpos(__FILE__, '/') - strlen($_SERVER['DOCUMENT_ROOT']));
-$mypath = '/freeway/';
-
-function start($title = 'Freeway') {
-global $mypath;
-?>
-<head>
-<?php TITLE($title); ?>
-<link rel="stylesheet" type="text/css" href="<?php echo $mypath
?>/freeway.css"/>
-<link rel="icon" type="image/x-icon" href="<?php echo $mypath ?>/favicon.ico"/>
-<link rel="shortcut icon" type="image/x-icon" href="<?php echo $mypath
?>/favicon.ico"/>
-</head>
-<body>
-<div id="banner">
-<h1><a href="http://gnunet.org/freeway/">Freeway</a></h1>
-<?php W('%s in Java', intlink_('http://gnunet.org/', 'GNUnet'))?>
-</div>
-<?php
-navigation();
-generateLanguageBar();
-}
-
-function navigation() {
-global $mypath;?>
-<table class="navigation">
-<tr>
-<td><?php intlink($mypath . '/index.php', 'Welcome'); ?></td>
-<td><?php intlink($mypath . '/contact.php', 'Contact'); ?></td>
-<?php /* ?><td><?php intlink($mypath . '/community.php', 'Community'); ?></td>
-<td><?php intlink($mypath . '/faq.php', 'FAQ'); ?></td>
-<td><?php intlink($mypath . '/download.php', 'Download'); ?></td><?php */ ?>
-<td><?php intlink($mypath . '/doc/index.php', 'Documentation'); ?></td>
-<?php /* ?><td><?php intlink($mypath . '/papers.php', 'Papers'); ?></td>
-<td><?php intlink($mypath . '/links.php', 'Links'); ?></td><?php */ ?>
-</tr>
-</table><?php
-}
-
-function stop() {?>
-<hr/>
-<?php navigation(); ?>
-<hr/>
-<div id="copyright">Copyright (C) 2006<br/>
-Verbatim copying and distribution of this entire article<br/>
-is permitted in any medium, provided this notice is preserved.</div>
-<?php generateFooter(); ?>
-</body>
-</html><?php
-}
-?>
Deleted: gnunet-www/gnunet-logos/debian.png
===================================================================
(Binary files differ)
Deleted: gnunet-www/gnunet-logos/gentoo.png
===================================================================
(Binary files differ)
Copied: gnunet-www/gnunet-logos/gnu_with_net.png (from rev 23421,
GNUnet-docs/WWW/gnu.org/gnu_with_net.png)
===================================================================
(Binary files differ)
Deleted: gnunet-www/gnunet-logos/mandriva.png
===================================================================
(Binary files differ)
Deleted: gnunet-www/gnunet-logos/osx.png
===================================================================
(Binary files differ)
Deleted: gnunet-www/gnunet-logos/suse.png
===================================================================
(Binary files differ)
Deleted: gnunet-www/gnunet-logos/ubuntu.png
===================================================================
(Binary files differ)
Deleted: gnunet-www/gnunet-logos/vmware.png
===================================================================
(Binary files differ)
Deleted: gnunet-www/gnunet-logos/windows.png
===================================================================
(Binary files differ)
Copied: gnunet-www/images/afs-t-shirt.ps (from rev 23421,
GNUnet-docs/WWW/t-shirt.ps)
===================================================================
--- gnunet-www/images/afs-t-shirt.ps (rev 0)
+++ gnunet-www/images/afs-t-shirt.ps 2012-08-27 18:51:04 UTC (rev 23450)
@@ -0,0 +1,700 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: sss.dvi
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentPaperSizes: a4
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips sss.dvi -o o.ps
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource: TeX output 2003.07.19:1007
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
+/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@address@hidden div/hsc X}B/@address@hidden div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end md begin
+/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
+atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
+itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
+transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
+curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
+pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
+if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
+-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
+yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
+neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
+noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
+90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
+1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
+2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
+-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
+TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
+Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
+}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true def normalscale
+currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
+/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
+psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
+psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
+TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
+psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
+roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
+moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
+begin/SpecialSave save N gsave normalscale currentpoint TR
address@hidden count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
+closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
+/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
+currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
+moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
+/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
+1 startangle endangle arc savematrix setmatrix}N end
+
+%%EndProcSet
+TeXDict begin 39158280 55380996 1000 600 600 (sss.dvi)
address@hidden
+%DVIPSBitmapFont: Fa cmss10 14.4 1
+/Fa 1 50 df<EC03801407140F143F14FF1303131F0007B5FCB6FCA413FD13E1EAF80112
+00B3B3B3A5B8FCA7285175D03C>49 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fb cmcsc10 29.86 3
+/Fb 3 118 df[<962607FFF8160F4EB600C04B7E063F15F84DB8153F050F05C0147F053F
+05F014FF94B900FC5B0403DB80077F040F02F0C7393FFF8003043F91C800076D5A93B500
+F80300EBF00F030302E093383FF81F4B0280EE1FFC4B49CA3807FE3F033F01F8716C5A4B
+49050090B5FC92B548844A028084020791CC7E4A49854A49854A49854A49855E91B54885
+494A8649894991CEFC494987A2494987495B8B495B8B90B5FC4B875A5D488AA2485CA248
+1F7FA292D0FC5A203FA2485BA37AC7FC489CC8FCA35CA2B5FCB17EA280982603FFFCED0F
+FE9AB8FC7EA46C7F98C70007EDFC00E3001F14E06C775C6F86785C7E8A6C80A27E817E81
+7F817F817F6D7FA26D7F6D806D807F6E7F826E6D616E7F6E7F6E6D61020114C06E6E606F
+6D606F01FC60030F01FFF07FDF6F6E933801FF8F6F02F05E030002FC041F1307043FD9FF
+8092387FFE03040F02F8913907FFF8010403DAFFC090B5487E040092B700C0137F053F95
+C7123F050F05FC140F050105F06EC7FCDD003F048091C8FC060103F8CBFCDE000749CCFC
+>135 133 115 257 159 103 D<B700E04DB46CECFFC07096B7FCA2828282A2D800076E
+DD0007EDF000D9003F6E050015800C3F49C7FC71060F13F871725B71725BA203BF6D725B
+71725B039F7F158F03877F7272C8FC15830381808403808082707F8482707F8470808270
+808582717F717F8583717F8583718071808683727F86727F84727F868472808772808473
+7F8785737F87737F85738088857380747F8886747F88747F8674808986748089757F8775
+7F8987757F1E807514C0877514E01EF0887613F81EFC7613FE887613FF67888888A28989
+A28989894A7E8989A24A6C85496D868A497F496D86011F01FF86017F14C00003B600F885
+B800E0848AA28A8BA201C0C7007F1A3E827F75FE98>110 D<D8FFF8DB7FFC4BB46CECFF
+C090B895B7FCA6D8001F03E0CA0007EDF00001014ACC15806D4A073F49C7FC6E49070F13
+F8785B6E49735BA2785B785BA479C8FCB3B3B3B26E646782A36E515AA2826E1B03676E1B
+0770626E1B0F676E6D191F676F6D183F6F505A7118FF6F6D96C9FC6F4F5A6F6D17036F6D
+4D5A6F6D4D5A6F6DEF3FF0706C4D5A7001C04B485A706D4B5B7001F8030F90CAFC7001FE
+ED7FFE0401D9FFC0903803FFF87002FC013F5B053F90B712C0050F5F05034CCBFCDD007F
+15F8061F15C006014ACCFCDE000F13E0828275FE98>117 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fc cmss10 29.86 6
+/Fc 6 117 df[<93B512C0033FECFF800203B712F8021F16FF91B912C0010318F0011F18
+FC017F18FF90BB7E00031AE0000F864886007F86BC7E876C922680007F158003F0C71203
+92C96C14C06C01FC041F14E002E0826C0180040314F049CA7E01F87114F86C5A01C07213
+FC5B6CCC7E00041BFECD7EA47413FFAB62A21CFEA262A25013FCA297B5FC1CF8614F14F0
+61071F14E0614F14C096B6FC4E15804E15004E5C4E5C634E5C4E5C4E5C95B65A50C7FC4D
+5C4D5C624D5C4D5CA24D5C4D91C8FC614D5BA294B55A615E61615E615E96C9FCA24C5BA2
+605E60A25E60A3605EA260A593B5FC60B3A293CCFCB3A60303B512E0B3A3>88
+175 114 302 117 63 D[<50B512F0087FECFFE00707B8FC073F17F04EBAFC060F19E006
+3F19F895BCFC05031BC0050F1BF0053F1BFC4DF3FF804CBE12C05E160F4C1D804C933880
+003F93B700F0C8FC4B048015074B03FCCAFC4B03F0171F4B03C0050714004B92CB12014B
+02FC727E4B4A191F92B600E019074A4B854A92CE5A4A4A1B7E4D1B1E4A4A1B0E4A4A1B06
+4A4A98C7FC4A5C5F91B6D1FC495CA2495C5E495C5B5E495CA2495CA24991D2FCA290B55A
+A2485CA25D5A5D5AA25D5A5DA35A5DA34891D3FCA5485BA7B55AB3A26C7F99B912F0A66C
+7FA56C80A3816C98C9FCA3817E81A27E817E81A26C80A26D7FA26D80A26D80A26D80827F
+6D80826D80A26D806E80836E806E806E806E80836E806E15C06E816F14F86F806F14FF6F
+15C06F03F05F6F03FC171F6FDBFF804BB6FC6F04F0153F043FDBFF80013FB7FC7093BAFC
+82160382706C1CC0711C00050F1BFC05031BF005001B80063F07FCC7FC060F19E0060196
+C8FCDE003F17F0070794C9FCDF007F15C0080102E0CAFC>132 178
+112 302 165 71 D<EF1FFF4CB512F8040F14FF047F15E04BB712F8030716FE031F824B
+17C092B97E4A844A18FC020F844A845C4A8591B6D8F80181499226C0001F80494AC71207
+04F8020180494A6E6C7F4902C081494A6F7F93C97E4949707F4949824B707F90B5488275
+1380485C4B83481CC04B834891CBFC7513E0485BA24A7213F05AA24A845A1DF84A84A348
+5BA291BCFCA21DFCA2BEFCAA02C0CEFCA66C7FA5807EA3807E80A27E80A26C7FA26C8081
+7E816C6E19106F19306D1BF06F18016D6D18076D6D180F04C0173F6D6E17FF6D6E040313
+F86D02FC160F6D02FF167F05C00203B5FC6D03F0141F6E02FF0107B6FC6E92B8FC800207
+1AF06E1AC06E1A806EF1FE00033F606F18F0030718C0030195C7FC6F6C16F8041F16C004
+034BC8FCDC007F14E0050301F8C9FC5E7678F26E>101 D<F0FFFC051FEBFFE0B500E091
+B612FC040315FF041F16C04C16F093B87E0303834B834B83033F844B8492BA7E14E102E3
+8502E7EC000F04F801008102EF01E0143F91B50080020F8093C812034B6F804B814B825D
+4B707FA24B82A24B82A292CA1580A25C86A25CA35CA65CB3B3B3AF59716DF080>110
+D<F0FFF8051FEBFFC04CB612FC040FEDFF80043F16E093B812F8030317FE030F717E4B84
+037F18F092BA7E4A85020719FF4A864A864ADB800F814A02F8C78191B600C0021F804992
+C80007804902FC0301804C814902E0043F7F494A7080494A708093CA7E49497180494971
+804B8390B548727FA2484A727F4B8448894B84488992CC7E481E804A85A2481EC04A85A2
+481EE0A24A85A2481EF0A44A86A2B51DF8AE6E97B5FCA26C1EF0A46E61A26C1EE0A26E61
+A26C1EC06E61A26C6E4E1480A36C6E4E14006F606C656F606C6E95B55AA26C6E4D5C6D6D
+4D5C6F5F6D6E4C5C705E6D6E4C5C6D02F893B65A6D6E4B92C7FC6D02FF03075C05C0141F
+6D03F891B65A6D9226FF800F5D6E92B85A6E626E62020797C8FC6E616E616E61033F18E0
+030F18806F95C9FC030117FC6F6C16F0040F1680040103FCCAFCDC003F14E0050101FCCB
+FC6D7679F27C>I[<913807FFFEB3AEBC1280AFC7000F49CAFCB3B3B3B082A47115806E17
+0171EC07C01A1F71143F71EB01FF6E6E010713E005FE90B5FC94B7FC1BF080A26E18F8A2
+811BE06F17806FEEFE006F16F06F16C06F4BC7FC6F15E06F6C49C8FC041F1380>77
+145 123 269 90 116 D E
+%EndDVIPSBitmapFont
+end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: a4
+a4
+%%EndPaperSize
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 250 2571 a @beginspecial 0 @llx 0 @lly 136 @urx
+104 @ury 4080 @rwi @setspecial
+%%BeginDocument: afs.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 136 104
+%%HiResBoundingBox: 0.000000 0.000000 135.849731 103.306396
+%.........................................
+%%Title GNUnet Anonymous File Sharing Logo
+%%Creator: Alex Jones
+%%CreationDate: 2003/04/21 19:53:24
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+% This copyright applies to everything between here and the %%EndProlog:
+% Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved.
+%%BeginResource: procset GS_epswrite_2_0_1001
+/GS_epswrite_2_0_1001 80 dict dup begin
+/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
+4 index eq and{ pop pop pop}{ PageSize dup 1
+5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get
exec}
+{ pop/setpagedevice where
+{ pop 1 dict dup /PageSize PageSize put setpagedevice}
+{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
+setpage}if}ifelse}ifelse}ifelse} bind def
+/!{bind def}bind def/#{load def}!/N/counttomark #
+/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
+/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
+/w/setlinewidth #/J/setlinecap #
+/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
+/m/moveto #/l/lineto #/c/rcurveto #
+/p{N 2 idiv{N -2 roll rlineto}repeat}!
+/P{N 0 gt{N -2 roll moveto p}if}!
+/h{p closepath}!/H{P closepath}!
+/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
+/re{4 -2 roll m exch dup lx exch ly neg lx h}!
+/^{3 index neg 3 index neg}!
+/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
+/q/gsave #/Q/grestore #/rf{re fill}!
+/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
+/|={pop exch 4 1 roll 3 array astore cvx exch 1 index def exec}!
+/|{exch string readstring |=}!
+/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
+/@/currentfile #/${+ @ |}!
+/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
+3 1 roll}repeat pop pop true}!
+/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
+/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
+/Ic{exch Ix false 3 colorimage}!
+/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
+/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
+/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
+/@F{@ &2<<F}!/@address@hidden &2 FX}!
+/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
+/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
+/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
+currentdict end image}!
+/~{@ read {pop} if}!
+end readonly def
+%%EndResource
+/pagesave null def
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+GS_epswrite_2_0_1001 begin
+/pagesave save store 100 dict begin
+0.1 0.1 scale
+%%EndPageSetup
+gsave mark
+K
+0 0 0 0 rf
+Q q
+0 0 250000 0 0 250000 ^ Y
+255 G
+900 304 m
+1 0 2 0 3 0 c
+0 -1 0 -2 y
+0 0 0 -1 v
+1 -1 0 -3 -2 -4 c
+0 -1 0 -3 -1 -5 c
+0 -1 0 -1 -1 -2 c
+0 -1 -1 -2 -1 -4 c
+-1 0 -2 -1 -2 -2 c
+-1 -1 -1 -1 y
+0 -1 -1 -2 -1 -4 c
+1 0 2 0 v
+1 2 2 5 3 7 c
+3 8 5 15 8 23 c
+-4 -1 -8 -2 -12 -5 c
+-9 -4 -18 -8 -26 -12 c
+-1 -1 p
+-1 0 -2 -1 v
+0 -1 0 -2 0 -4 c
+-1 -2 -1 -5 -1 -7 c
+1 0 2 1 y
+-1 3 -2 5 -1 6 c
+1 1 1 2 2 2 c
+2 1 3 1 4 1 c
+1 3 3 4 7 5 c
+3 0 5 2 8 4 c
+1 1 2 2 3 3 c
+2 0 3 -1 4 -1 c
+1 1 1 2 2 2 c
+1 1 1 1 1 2 c
+1 0 2 0 y
+1 0 1 0 y
+f
+923 306 m
+2 0 3 -1 3 -2 c
+3 -4 4 -8 5 -13 c
+1 -2 1 -6 0 -11 c
+1 -4 1 -9 -2 -16 c
+-1 -1 -1 -2 -2 -3 c
+0 0 0 -1 v
+0 0 0 -1 v
+-1 0 -1 0 0 0 c
+0 -1 1 -3 1 -5 c
+-1 -3 -2 -5 -3 -7 c
+-1 0 -1 -1 -1 -2 c
+-1 0 -1 -1 y
+0 -4 -1 -8 -2 -12 c
+0 1 p
+0 1 0 1 1 1 c
+1 0 2 -1 v
+1 5 2 10 4 15 c
+1 6 2 12 4 17 c
+6 37 -2 52 -25 44 c
+-3 -8 -5 -15 -8 -23 c
+-1 -2 -2 -5 -3 -7 c
+1 -1 2 -1 4 -2 c
+0 2 1 4 1 6 c
+0 3 1 6 3 9 c
+0 1 0 2 1 3 c
+0 1 0 2 0 3 c
+2 3 3 5 5 8 c
+0 0 1 0 v
+0 1 0 1 y
+1 0 2 0 3 0 c
+3 0 6 -1 9 -1 c
+f
+866 286 m
+0 2 0 3 0 4 c
+-1 0 -2 -1 -4 -1 c
+1 -1 1 -2 1 -3 c
+1 -2 1 -5 2 -7 c
+0 2 0 5 1 7 c
+f
+907 203 m
+-1 -1 -2 -3 -2 -5 c
+-1 -1 -1 -2 -2 -2 c
+-1 -7 -5 -12 -11 -15 c
+-1 0 -1 -2 -2 -3 c
+-2 -4 -5 -8 -8 -11 c
+1 0 1 -1 v
+10 10 18 21 26 34 c
+1 2 2 4 4 7 c
+1 3 2 6 4 9 c
+-2 0 -2 1 -2 2 c
+-3 -5 -5 -10 -8 -15 c
+f
+870 154 m
+1 0 2 1 2 2 c
+0 0 0 1 v
+-1 0 -1 1 y
+-1 -1 -2 -2 -4 -3 c
+-1 0 -2 -1 -3 -3 c
+1 0 2 0 2 1 c
+2 0 3 0 4 1 c
+f
+851 139 m
+0 1 0 2 1 3 c
+0 1 1 1 1 2 c
+-1 0 p
+0 -1 -1 -2 -3 -3 c
+-3 -2 -6 -4 -10 -5 c
+-3 -4 -7 -7 -12 -8 c
+-2 -1 -5 -3 -7 -5 c
+-5 -3 -9 -4 -14 -3 c
+-7 -5 -14 -9 -23 -13 c
+1 0 p
+10 4 21 8 31 13 c
+3 1 7 3 11 5 c
+1 0 2 1 3 1 c
+5 3 10 6 15 9 c
+2 1 5 3 7 4 c
+f
+873 154 m
+0 0 1 0 v
+-1 1 -1 1 y
+0 0 0 -1 v
+f
+12.5 w
+3.86371 M
+1 J
+1 j
+K
+1082 619 m
+-1 -1 -2 -2 v
+-4 -3 -9 -7 -15 -11 c
+-13 -4 p
+-7 0 -14 0 -19 2 c
+-19 4 -35 13 -50 28 c
+-18 16 -33 33 -46 53 c
+-8 10 -14 21 -18 32 c
+-4 10 -6 23 -6 37 c
+0 5 1 8 2 11 c
+1 2 2 4 4 6 c
+6 7 13 13 20 19 c
+3 3 6 6 9 8 c
+S
+452 801 m
+-7 5 -15 9 -22 13 c
+-5 2 -10 4 -16 7 c
+-7 2 -13 4 -18 5 c
+-6 2 -12 3 -18 4 c
+-12 1 -25 2 -39 1 c
+-38 -4 p
+-24 -4 -45 -9 -63 -16 c
+-2 -1 -5 -2 -8 -4 c
+-12 -6 -25 -13 -37 -18 c
+-9 -4 -16 -7 -24 -11 c
+-24 -8 p
+-10 -4 -21 -7 -32 -10 c
+-18 -5 -31 -1 -40 10 c
+-6 6 -10 14 -12 25 c
+-1 5 -2 9 -3 13 c
+-1 8 -2 15 -3 22 c
+-1 20 0 40 3 61 c
+1 5 2 11 3 16 c
+1 5 2 9 4 14 c
+10 33 22 68 38 104 c
+-17 -21 -32 -44 -45 -71 c
+-4 -9 -8 -18 -12 -28 c
+-2 -5 -4 -10 -6 -16 c
+-2 -4 -3 -9 -5 -15 c
+-2 -7 -5 -15 -7 -22 c
+-2 -7 -4 -14 -5 -22 c
+-2 -7 -3 -14 -4 -21 c
+-3 -21 -4 -41 -2 -60 c
+1 -11 3 -21 6 -32 c
+2 -11 6 -23 10 -33 c
+1 -2 1 -4 2 -5 c
+5 -15 14 -27 23 -37 c
+4 -3 7 -6 11 -9 c
+24 -11 50 -10 74 4 c
+16 9 32 15 50 18 c
+7 2 15 3 24 3 c
+1 0 2 0 v
+1 0 3 0 5 0 c
+6 -1 13 -2 18 -5 c
+6 -3 11 -6 17 -9 c
+6 -2 11 -5 14 -8 c
+2 -2 4 -3 7 -5 c
+2 -2 5 -4 7 -7 c
+14 -16 p
+3 -4 7 -8 10 -12 c
+S
+452 801 m
+11 0 21 3 29 10 c
+11 7 22 13 31 18 c
+4 3 9 5 16 8 c
+48 25 100 39 157 41 c
+18 0 p
+14 1 28 1 41 0 c
+12 -1 25 -3 40 -4 c
+33 -7 65 -18 95 -36 c
+1 0 2 -1 3 -1 c
+10 -5 19 -11 27 -17 c
+5 -4 10 -7 15 -10 c
+6 -5 14 -9 24 -12 c
+S
+328 605 m
+6 -2 12 -3 18 -4 c
+3 0 5 0 8 0 c
+2 0 4 0 7 1 c
+1 0 2 0 4 0 c
+20 4 38 14 55 29 c
+16 13 29 27 42 41 c
+17 26 p
+6 10 11 21 14 32 c
+1 5 2 10 3 15 c
+0 2 0 4 0 5 c
+0 5 0 10 -1 14 c
+-2 1 -4 4 -5 6 c
+-2 2 -4 4 -6 6 c
+-2 1 -4 3 -5 4 c
+-2 2 -3 3 -5 4 c
+S
+474 784 m
+-1 2 -3 4 -6 5 c
+0 0 p S
+468 789 m
+-6 5 -11 8 -16 12 c
+S
+474 784 m
+-2 2 -4 4 -6 5 c
+S
+418 516 m
+1 -1 2 -1 y
+3 -1 6 -3 8 -4 c
+5 -3 10 -6 14 -10 c
+5 -3 9 -8 13 -13 c
+6 0 12 -1 19 -1 c
+157 1 p
+1 3 2 5 4 7 c
+4 10 4 17 0 23 c
+-2 2 -3 3 -4 4 c
+-10 9 -30 13 -60 14 c
+-23 1 -46 0 -68 -3 c
+-21 -2 -41 -5 -61 -11 c
+-5 -1 -9 -2 -14 -3 c
+-3 -1 -5 -2 -8 -3 c
+-1 0 -1 0 -2 0 c
+h
+S
+311 617 m
+1 0 2 -1 2 -2 c
+4 -3 8 -6 13 -9 c
+S
+1082 619 0 -195 P
+0 -34 -4 -66 -11 -98 c
+0 -1 0 -2 v
+-9 -40 -24 -77 -43 -112 c
+-3 -4 -5 -8 -7 -12 c
+-2 -3 -4 -6 -5 -9 c
+-3 -4 -6 -9 -9 -13 c
+-5 -7 -10 -14 -16 -21 c
+-1 -2 -2 -3 -3 -4 c
+-18 -21 p
+-12 -14 -25 -26 -38 -38 c
+-17 -14 -35 -26 -53 -37 c
+-5 -2 -9 -4 -13 -7 c
+-34 -16 -70 -27 -108 -31 c
+-4 0 -9 0 -13 -1 c
+-46 -2 p
+-5 0 -11 0 -16 1 c
+-50 2 -95 13 -138 33 c
+-43 21 -83 50 -119 89 c
+-52 55 -87 117 -103 187 c
+-8 31 -11 63 -12 97 c
+0 194 p S
+948 798 m
+9 8 17 13 26 17 c
+4 2 9 4 14 7 c
+6 3 12 5 17 6 c
+5 1 10 2 16 3 c
+11 1 22 2 33 1 c
+1 0 3 0 4 0 c
+28 -3 p
+1 0 2 0 3 0 c
+23 -4 43 -10 60 -17 c
+3 -1 5 -2 7 -4 c
+12 -6 23 -12 35 -18 c
+7 -4 14 -7 21 -10 c
+18 -8 p
+11 -3 23 -7 34 -10 c
+10 -3 18 -3 25 0 c
+11 4 18 16 22 35 c
+7 32 8 64 3 95 c
+-1 6 -2 12 -3 17 c
+-1 5 -3 9 -3 13 c
+-6 19 -12 39 -19 60 c
+-5 14 -10 29 -16 44 c
+6 -7 10 -15 16 -23 c
+14 -22 26 -47 36 -75 c
+2 -6 3 -11 5 -16 c
+2 -5 3 -10 5 -15 c
+3 -8 5 -15 7 -23 c
+1 -7 3 -14 5 -22 c
+7 -39 7 -76 0 -112 c
+-3 -12 -6 -23 -10 -34 c
+-1 -1 -1 -3 -2 -5 c
+-7 -21 -18 -36 -32 -46 c
+-5 -2 -10 -4 -14 -5 c
+-18 -5 -35 -2 -53 10 c
+-14 9 -29 15 -45 18 c
+-8 1 -15 2 -22 2 c
+-6 0 -12 -2 -18 -3 c
+-7 -2 -12 -4 -17 -7 c
+-5 -2 -9 -5 -13 -8 c
+-2 -2 -4 -4 -7 -7 c
+-21 -22 p
+-3 -3 -5 -6 -7 -10 c
+-2 -2 -3 -3 -4 -4 c
+S
+825 535 m
+43 2 84 -3 124 -14 c
+7 -1 15 -4 22 -6 c
+-8 -4 -16 -8 -22 -14 c
+-5 -4 -9 -8 -13 -14 c
+-6 0 -12 -1 -18 -2 c
+-149 2 p
+-19 31 0 47 56 48 c
+h
+S
+620 235 m
+-3 -2 -6 -5 -9 -9 c
+-2 -3 -4 -7 -6 -12 c
+0 -1 -1 -4 -1 -6 c
+0 -3 1 -6 1 -9 c
+4 -11 11 -21 23 -32 c
+6 -5 12 -10 17 -15 c
+10 -7 20 -14 31 -20 c
+2 -1 4 -2 7 -4 c
+6 -3 12 -6 19 -9 c
+10 -5 19 -9 29 -12 c
+12 -3 24 -4 38 -3 c
+14 3 p S
+866 290 m
+-1 0 -2 -1 -4 -1 c
+-2 -1 -4 -2 -5 -3 c
+-11 -4 -21 -7 -31 -11 c
+-6 -2 -12 -4 -17 -5 c
+-10 -3 -20 -5 -31 -8 c
+0 0 p
+-2 0 -4 -1 -6 -1 c
+-5 -1 -10 -2 -15 -3 c
+-10 -1 -20 -3 -29 -4 c
+-4 -1 -7 -1 -10 -1 c
+-6 -1 -11 -2 -16 -2 c
+-2 0 -4 0 -5 -1 c
+-3 0 -5 0 -7 0 c
+-1 0 -2 0 -3 -1 c
+-2 0 -3 0 -4 0 c
+-3 0 -5 0 -7 0 c
+-2 -1 -6 -1 -8 -1 c
+0 0 -1 0 v
+S
+667 248 m
+-2 0 -3 0 -5 0 c
+-18 -1 -32 -6 -42 -13 c
+S
+907 309 m
+-3 -8 -5 -15 -8 -23 c
+-1 -2 -2 -5 -3 -7 c
+-11 -22 -24 -41 -41 -55 c
+-2 -2 -4 -3 -5 -5 c
+0 2 1 3 1 5 c
+5 14 10 33 14 55 c
+S
+866 290 m
+1 1 2 1 y
+1 1 p
+8 4 17 8 26 12 c
+4 3 8 4 12 5 c
+S
+865 279 m
+0 2 0 5 1 7 c
+0 2 0 3 0 4 c
+S
+907 309 m
+23 8 31 -7 25 -44 c
+-2 -5 -3 -11 -4 -17 c
+-2 -5 -3 -10 -4 -15 c
+-7 -17 p
+-2 -3 -3 -6 -4 -9 c
+-2 -3 -3 -5 -4 -7 c
+-8 -13 -16 -24 -26 -34 c
+-11 -10 p
+0 -1 -1 -2 -2 -2 c
+-19 -15 p
+-2 -1 -5 -3 -7 -4 c
+-5 -3 -10 -6 -15 -9 c
+-1 0 -2 -1 -3 -1 c
+-4 -2 -8 -4 -11 -5 c
+-10 -5 -21 -9 -31 -13 c
+S
+667 248 m
+-8 -38 -5 -63 8 -74 c
+-27 12 -45 33 -55 61 c
+S
+cleartomark end end pagesave restore showpage
+%%PageTrailer
+%%Trailer
+%%Pages: 1
+
+%%EndDocument
+ @endspecial 1265 3036 a Fc(Got)83 b Fb(gnu)p Fc(net?)3930
+5670 y Fa(1)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r23450 - GNUnet-docs/WWW GNUnet-docs/WWW/download gnunet-www gnunet-www/GNUnet gnunet-www/GNUnet/logos gnunet-www/freeway-logos gnunet-www/gnunet-logos gnunet-www/images,
gnunet <=