Author: nextgens Date: 2007-12-16 20:46:27 +0000 (Sun, 16 Dec 2007) New Revision: 16605
Removed: trunk/website/pages/22c3vid.php trunk/website/pages/FCPlib.php trunk/website/pages/Freeplot.php trunk/website/pages/applications.php trunk/website/pages/content.php trunk/website/pages/donate.php trunk/website/pages/donatethanks.php trunk/website/pages/download-old.php trunk/website/pages/download.php trunk/website/pages/fairshare.php trunk/website/pages/faq.php trunk/website/pages/fasd.php trunk/website/pages/fcp.php trunk/website/pages/fcptools.php trunk/website/pages/fec.php trunk/website/pages/fphowto.php trunk/website/pages/freeapps.php trunk/website/pages/index.php trunk/website/pages/javacompat.php trunk/website/pages/keys.php trunk/website/pages/lists.php trunk/website/pages/mailsum.php trunk/website/pages/mailsum0104.php trunk/website/pages/mailsum0204.php trunk/website/pages/mailsum0304.php trunk/website/pages/mailsum0404.php trunk/website/pages/mailsum1103.php trunk/website/pages/mailsum1203.php trunk/website/pages/metadata.php trunk/website/pages/news.php trunk/website/pages/ngrouting.php trunk/website/pages/openjobs.php trunk/website/pages/papers.php trunk/website/pages/people.php trunk/website/pages/philosophy.php trunk/website/pages/roadmap.php trunk/website/pages/sponsors.php trunk/website/pages/stateof180204.php trunk/website/pages/switches.php trunk/website/pages/tools.php trunk/website/pages/tryunstable.php trunk/website/pages/unixhowto.php trunk/website/pages/whatis.php trunk/website/pages/whatsnew.php Log: website: keeping outdated files here is for the least ... confusing Deleted: trunk/website/pages/22c3vid.php =================================================================== --- trunk/website/pages/22c3vid.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/22c3vid.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,6 +0,0 @@ -<h1>22nd Chaos Computer Congress lecture on Freenet 0.7</h1> -In December 2005, Ian Clarke and Oskar Sandberg presented the new design for Freenet in Berlin. Here is the talk they gave (also <a href="http://events.ccc.de/congress/2005/fahrplan/events/492.en.html">here</a>).: -<p> - <center> - <embed style="width:400px; height:326px;" id="VideoPlayback" align="middle" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DwgAAAG7ggqAHSiJjpW0D3w4aYTWysCVjL1o53SuJpfb3pGYozQ6ekjoc3LE4Q0Xzc8EH30V-bqx3qWEpOiaqiFJ6nRbItEVRrQz6Mze1Bec17umxOM_P4sKIX__shPbADZUU4CDL6gBNCAPgvCNNONhS4AEuiFfhELCOZd0ggh2f_OYShpGeWjHQlkMlWstSFwza8Wl7VmZPWIYTDEtIYj7mEESsLd-IB47qwX8vTL8ELu-6_rPmGlUnNz7ijS5IRItkfsYnYbaHKe_7PjblnpsCsMg%26sigh%3DULIQo-9hMNVcEwlrOtdK-b-Voog%26begin%3D0%26len%3D3871480%26docid%3D-2894489251637986433&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fapp%3Dvss%26contentid%3D860d23ea4a7ee84c%26second%3D5%26itag%3Dw320%26urlcreated%3D1149285760%26sigh%3D-px-hq1tmsjGeG9lo-K5FG1rggI&playerId=-2894489251637986433" allowScriptAccess="sameDomain" quality="best" bgcolor="#ffffff" scale="noScale" wmode="window" salign="TL" FlashVars="playerMode=embedded"> </embed> -</center> Deleted: trunk/website/pages/FCPlib.php =================================================================== --- trunk/website/pages/FCPlib.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/FCPlib.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,402 +0,0 @@ - <h1>Freenet Client Protocol Library</h1> - - <h2>What is the Freenet Client Protocol Library?</h2> - <p>FCPLib (Freenet Client Protocol Library) aims to be a platform independent, - but natively compiled set of functions for storing and retrieving information - to and from Freenet. There are routines for storing documents to Freenet from - the local disk, and other routines for moving data in memory to and from - Freenet (for more information see the documentation - for <a href="/fcptools.html">FCPTools</a>, which is the package containing FCPLib).</p> - - <p>It is written in ANSI C, checked by gcc when compiling the library on a Unix - based system (the flags -ansi and -pedantic). I'm not sure how important this - issue is today, but to enable the greatest portability I have kept to these - standards (the flags attempt to enforce strict ANSI compliance and the - disabling of GNU extensions).</p> - <h3>Supported Platforms</h3> - <p>FCPLib is now routinely compiled on the following platforms:</p> - <ul> - <li>Microsoft Windows (Win32 only). - - </li><li>Debian GNU/Linux. - - </li><li>BSD. - - </li><li>Sun Solaris. - - </li><li>Mac OS X.</li> - </ul> - <h3>Contact Information</h3> - <p>All Freenet and FCPLib related email send to <script language="javascript"> - eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%4a%61%79%20%4f%6c%69%76%65%72%69%20%3c%69%6c%6e%65%72%6f%40%67%6d%78%2e%6e%65%74%3e%22%3e%4a%61%79%20%4f%6c%69%76%65%72%69%3c%2f%61%3e%27%29%3b'))</script>. I am currently - subscribed to Freenet-dev, Freenet-tech, and Freenet-support. On the Freenode IRC network I can be found in #freenet - under the registered nick "Jay".</p> - - <h2>FCPLib API Overview</h2> - <h3>Necessary Files</h3> - <p>The necessary files depend on the platform:</p> - <ul> - <li>Windows: <code>ezFCPlib.lib, ezFCPlib.h</code></li> - <li>UNIX: <code>ezFCPlib.a, ezFCPlib.h</code></li> - </ul> - <p>On both platforms the FCPLib compiles into a static library. You must - include this static module in your compiler's linking phase and put ezFCPlib.h - in your project's include path.</p> - <h3>Library Startup and Terminate Functions</h3> - <ul> - <li><code>fcpStartup(FILE *Logfile, int Verbosity)</code> - </li><li><code>fcpTerminate()</code></li> - </ul> - <p><code>fcpStartup()</code> allows a <code>FILE</code> pointer (which may be stdout or a locally opened - file) where debugging messages may be sent. This must be the first function - call to the FCPLib.</p> - <p><code>fcpTerminate()</code> should be called before exiting.</p> - <h3>Handle Create & Destroy Functions.</h3> - <ul> - <li><code>fcpCreateHFCP(char *Host, int Port, int Htl, int Optmask)</code> - </li><li><code>fcpInheritHFCP(hFCP *Handle)</code> - </li><li><code>fcpDestroyHFCP(hFCP *Handle)</code></li> - </ul> - <p>These functions are to be called immediately after <code>fcpStartup()</code>, before - any calls to the following functions: <code>fcpOpenKey()</code>, <code>fcpPutKeyFromFile()</code>, - <code>fcpGetKeyToFile()</code>.</p> - <p><code>fcpInheritHFCP()</code> duplicates an FCP Handle. Call this function - to prepare an FCP Handle with the same options as another one.</p> - <p><code>fcpDestroyHFCP()</code> performs memory and file cleanup, and should - be called before calling <code>free()</code> on the Handle.</p> - <h3>File Based Functions</h3> - <p>There are 2 functions for moving data between files and Freenet:</p> - <ul> - <li><code>fcpPutKeyFromFile(hFCP *Handle, char *Key, char *KeyFile, char - *MetaFile)</code> - </li><li><code>fcpGetKeyToFile(hFCP *Handle, char *Key, char *KeyFile, char - *MetaFile)</code></li> -</ul> -<p><code>fcpPutKeyFromFile() </code>supports files larger than 1M and inserts -them as splitfiles.</p> -<p><code>fcpGetGeyToFile()</code> only supports single file chunks, which usually vary in -Freenet from 200-1,000 kilobytes.</p> - <h3>Memory Based Functions</h3> - <h4>Opening a Key</h4> - <p><code>fcpOpenKey(hFCP *Handle, char *Key, int Mode)</code></p> - <p>This function opens a key in order to read from or write to, depending on - the Mode parameter. Opening a key in Read Mode immediately prompts FCPLib to - fetch the key and metadata, so that the next call to <code>fcpReadKey()</code> - has data to return.</p> - <h4>Reading & Writing</h4> - <p><code>fcpWriteKey(hFCP *Handle, char *Buffer, int Length)<br> - fcpWriteMetadta(hFCP *Handle, char *Buffer, int Length)</code></p> - <p>Once a key is opened for writing, this function writes a block of data to a - temporary file that FCPLib later inserts into Freenet.</p> - <p><code>fcpReadKey(hFCP *Handle, char *Buffer, int Length)<br> - fcpReadMetadata(hFCP *Handle, char *Buffer, int Length)</code></p> - <p>Once a key is opened for reading, this function reads from the temporary - file that <code>fcpOpenKey()</code> retrieved the key into.</p> - <h4>Closing a Key</h4> - <p><code>fcpCloseKey(hFCP *Handle)</code></p> - <p>This function closes a key. When closing a key that has been opened in Write - Mode, FCPLib inserts into Freenet the key and metadata stored in the temporary - files. </p> - <h2>FCPLib in Detail</h2> - <h3>Startup & Terminate Functions</h3> - <h4>fcpStartup</h4> - <p><code>int fcpStartup(FILE *Logfile, int Verbosity)</code></p> -<p><b>Parameters: </b>Logfile is a pointer to an opened <code>FILE</code> -structure, or <code>NULL</code> to send logging information to <code>stdout</code>.</p> -<p><b>Returns:</b> Zero on success, -1 on error.</p> -<p><b>Remarks</b></p> -<p>This must be the first function called out of all the FCPLib functions. On -Windows it initializes Winsock, and then for all platforms initializes the log.</p> -<h4>fcpTerminate</h4> - <p><code>void fcpTerminate()</code></p> -<p><b>Remarks</b></p> -<p>This must be the last function to be called to FCPLib, especially before -exiting a program. It closes the log, and on Windows calls the Winsock <code> -WSACleanup()</code> function.</p> - <h3>Create and Destroy Functions</h3> - <h4>fcpCreateHFCP</h4> - <p><code>hFCP *fcpCreateHFCP(char *Host, int Port, int Htl, int Optmask)</code></p> -<p><b>Parameters:</b> Host is a hostname or IP address of a Freenet node, -Port is the node's listen port, Htl the hops to live for the FCP handle, and -Optmask a series of possible flags.</p> -<p><b>Optmask Values:</b></p> - <ul> - <li><code>FCP_MODE_RAW</code>: - Do not follow redirects on retrieve. - - </li><li><code>FCP_MODE_DELETE_LOCAL</code>: Delete the key from - the local datastore on insert. - - </li><li><code>FCP_MODE_SKIP_LOCAL</code>: Skip the local datastore on retrieve.</li> - </ul> -<p><b>Returns:</b> A pointer to a malloc'ed <code>hFCP</code> structure.</p> -<p><b>Remarks</b></p> -<p>This function creates a new FCP Handle that must be free'd after use. Before -freeing however, call <code>fcpDestroyHFCP()</code>.</p> - <h4>fcpInheritHFCP</h4> - <p><code>hFCP *fcpInheritHFCP(hFCP *Handle)</code></p> -<p><b>Parameters:</b> Handle is an already created hFCP structure.</p> -<p><b>Returns: </b>A pointer to a malloc'ed <code>hFCP</code> structure.</p> -<p><b>Remarks</b></p> -<p>This functions basically creates a new FCP Handle and fills it with values -from the Handle parameter. Before freeing however, call <code>fcpDestroyHFCP()</code>.</p> - <h4>fcpDestroyHFCP</h4> - <p><code>void fcpDestroyHFCP(hFCP *Handle)</code></p> -<p><b>Parameters:</b> Handle is an already created hFCP structure.</p> -<p><b>Remarks</b></p> -<p>This function disconnects the socket (if necessary), and destroys everything -that's been malloc'ed and not yet free'd within the <code>hFCP</code> structure. -It also deletes any temporary files still being held on disk.</p> - <h3>File Based Functions</h3> - <h4>fcpPutKeyFromFile</h4> - <p><code>int fcpPutKeyFromFile(hFCP *Handle, char *Key, char - *KeyFile, char *MetaFile)</code></p> - <p><b>Parameters:</b> Handle is an already created hFCP structure, Key a Freenet URI, - KeyFile the local filename to insert into Freenet, and MetaFile is the - local filename to insert as metadata.</p> - <p><b>Returns:</b> Zero on success, -1 on error.</p> - <p><b>Remarks</b></p> - <p>Handle must already be created from a prior call to any of the fcpCreate - functions. If the file is larger than <code>EZFCP_DEFAULT_SPLITSIZE</code>, the - file is inserted into Freenet as an FEC encoded splitfile.</p> - <h4>fcpGetKeyToFile</h4> - <p><code>int fcpGetKeyToFile(hFCP *Handle, char *Key, char *KeyFile, char - *MetaFile)</code></p> -<p><b>Parameters:</b> Handle is an already created hFCP structure, Key a -Freenet URI, KeyFile the local filename to write the Freenet document, and -MetaFile is the local filename to write the document's metadata.</p> -<p><b>Returns:</b> Zero on success, -1 on error.</p> -<p><b>Remarks</b></p> -<p>Handle must already be created from a prior call to any of the fcpCreate -functions. The retrieving of splitfiles is currently not supported, which means -this function assumes every URI parameter it receives is not FEC Encoded (in -practical terms this means only the mapfile is retrieved).</p> - <h3>Memory Based Functions</h3> - <h4>fcpOpenKey</h4> - <p><code>int fcpOpenKey(hFCP *Handle, char *Key, int Mode)</code></p> -<p><b>Parameters:</b> Handle is an already created hFCP structure, Key a -Freenet URI, and Mode indicates either read or write.</p> -<p><b>MODE VALUES:</b></p> - <ul> - <li><code>FCP_MODE_O_READ.</code> - </li><li><code>FCP_MODE_O_WRITE.</code></li> - </ul> -<p><b>Returns: Zero on success, -1 on error.</b></p> -<p><b>Remarks</b></p> -<p>When a key is opened with Mode=FCP_MODE_O_READ, - the key specified in Key is immediately retrieved and stored internally - by FCPLib. Subsequent calls to <code>fcpReadKey()</code> return data from the retrieved - temporary file.</p> - <p>When a key is opened with Mode=FCP_MODE_O_WRITE, calls to - <code>fcpWriteKey()</code> write the key data to an internal temporary file. The key is - written after a call to <code>fcpCloseKey()</code>.</p> - <h4>fcpReadKey</h4> - <p><code>int fcpReadKey(hFCP *Handle, char *Buffer, int Length)<br> - int fcpReadMetadata(hFCP *Handle, char *Buffer, int Length)</code></p> -<p><b>Parameters:</b> Handle - is an already created hFCP structure, Buffer points to an allocated - block of memory. The function will read at most Length bytes.</p> -<p><b>Returns:</b> Bytes read - into Buffer, -1 on error.</p> -<p><b>Remarks</b></p> - <p>Function reads from the internal temporary file - (which contains the data from the call to <code>fcpOpenKey()</code>) and returns no - more than Length bytes.</p> - <h4>fcpWriteKey</h4> - <p><code>int fcpWriteKey(hFCP *Handle, char *Buffer, int Length)<br> - int fcpWriteMetadata(hFCP *Handle, char *Buffer, int Length)</code></p> -<p><b>Parameters:</b> Handle - is an already created hFCP structure, Buffer points to an allocated - block of memory. The function will write at most Length bytes.</p> -<p><b>Returns:</b> Bytes read - into Buffer, -1 on error.</p> -<p><b>Remarks</b></p> - <p>Function writes to the internal temporary file no more than Length - bytes. Nothing is inserted into Freenet until the call to - <code>fcpCloseKey()</code>.</p> - <h4>fcpCloseKey</h4> - <p><code>int fcpCloseKey(hFCP *Handle)</code></p> -<p><b>Parameters:</b> Handle is an already created hFCP structure.</p> -<p><b>Returns:</b> Zero on - success, -1 on error.</p> -<p><b>Remarks</b> </p> - <p>When a key is opened in Write mode, this function will attempt to store - the key into Freenet. The functions returns after the key is stored or if - an error is encountered.</p> - <p>When a key is opened in Read mode, <code>fcpCloseKey()</code> simply cleans up - temporary files and returns to the caller.</p> - <h3>Other</h3> - <h4>fcpMakeSvkKeypair</h4> - <p><code>int fcpMakeSvkKeypair(hFCP *Handle, char *PubKey, char *PrivKey, - char *Entropy)</code></p> -<p><b>Parameters:</b> Handle - is an already created <code>hFCP</code> structure, PubKey points to an allocated - block of memory to hold the public key, and PrivKey points to an - allocated block of memory to hold the private key. Entropy is not currently used.</p> -<p><b>Returns:</b> Zero on - success, -1 on error.</p> -<p><b>Remarks</b> </p> -<p>PubKey and PrivKey must be allocated with - at least 28 bytes (27 for the key, 1 for the NULL character). - Entropy should be set to <code>NULL</code> for now, until it is implemented.</p> -<p><code>/********************************************************************/</code></p> - <h2>Examples</h2> - <p>For the sake of completion, each of the 4 different methods for moving data - to and from Freenet is illustrated with the minimal C code required.</p> - <h3>Storing Files To Freenet with fcpPutKeyFromFile</h3> - -<pre><code>#include "ezFCPlib.h" - -int main(int argc, char* argv[]) -{ - hFCP *hfcp; - - /* set the log reporting to Verbose (user friendly output) */ - if (fcpStartup(stdout, FCP_LOG_VERBOSE) != 0) - return -1; - - /* Connect to localhost, port 8481, hops to live 3, - and 0 for the optmask */ - hfcp = fcpCreateHFCP("127.0.0.1", 8481, 3, 0); - - /* insert the key. CHK@ means "calculate the CHK". - NULL for no metadata */ - if (fcpPutKeyFromFile(hfcp, - "CHK@", - "/home/hapi/message.txt", NULL) != 0) - return -1; - - /* call to delete temp files and free memory */ - fcpDestroyHFCP(hfcp); - free(hfcp); - - /* The final shutdown for FCPLib */ - fcpTerminate(); - - return 0; -}</code></pre> - -<h3>Storing Files To Freenet with fcpWriteKey</h3> - -<pre><code>#include "ezFCPlib.h" - -int main(int argc, char* argv[]) -{ - hFCP *hfcp; - char msg[65]; - - /* set the log reporting to Verbose (user friendly output) */ - if (fcpStartup(stdout, FCP_LOG_VERBOSE) != 0) - return -1; - - /* Connect to localhost, port 8481, hops to live 3, - and 0 for the optmask */ - hfcp = fcpCreateHFCP("127.0.0.1", 8481, 3, 0); - - /* open the key to prepare for writing */ - if (fcpOpenKey(hfcp, "KSK at message.txt", FCP_MODE_O_WRITE) != 0) - return -1; - - strcpy(msg, "Hello World!); - - /* write the "message" */ - fcpWriteKey(hfcp, msg, strlen(msg)); - - /* this call actually stores the key in Freenet. - it will not return until the file has been stored - (or an error occurs) */ - if (fcpCloseKey(hfcp) != 0) - return -1; - - /* call to delete temp files and free memory */ - fcpDestroyHFCP(hfcp); - free(hfcp); - - /* The final shutdown for FCPLib */ - fcpTerminate(); - - return 0; -}</code></pre> - - <h3>Retrieving Files From Freenet with fcpGetKeyToFile</h3> - -<pre><code>#include "ezFCPlib.h" - -int main(int argc, char* argv[]) -{ - hFCP *hfcp; - - /* set the log reporting to Verbose (user friendly output) */ - if (fcpStartup(stdout, FCP_LOG_VERBOSE) != 0) - return -1; - - /* Connect to localhost, port 8481, hops to live 3, - and 0 for the optmask */ - hfcp = fcpCreateHFCP("127.0.0.1", 8481, 3, 0); - - /* get the key and store it in the file message.txt. - NULL for no metadata */ - if (fcpGetKeyToFile(hfcp, - "KSK at message.txt", - "/home/hapi/message.txt", NULL) != 0) - return -1; - - /* call to delete temp files and free memory */ - fcpDestroyHFCP(hfcp); - free(hfcp); - - /* The final shutdown for FCPLib */ - fcpTerminate(); - - return 0; -}</code></pre> - -<h3>Retrieving Files From Freenet with fcpReadKey</h3> - -<pre><code>#include "ezFCPlib.h" - -int main(int argc, char* argv[]) -{ - hFCP *hfcp; - int bytes; - char buf[513]; - - /* set the log reporting to Verbose (user friendly output) */ - if (fcpStartup(stdout, FCP_LOG_VERBOSE) != 0) - return -1; - - /* Connect to localhost, port 8481, hops to live 3, - and 0 for the optmask */ - hfcp = fcpCreateHFCP("127.0.0.1", 8481, 3, 0); - - /* this call actually retrieves the key from Freenet; - it will not return until the key is retrieved - (or an error occurs) */ - if (fcpOpenKey(hfcp, - "SSK at M7yZgrl8gwtAe1xEcR5Xyv4tFsoPAgM/fiw/7//", - FCP_MODE_O_READ) != 0) - return -1; - - /* ReadKey returns >0 whenever there's data left */ - while ((bytes = fcpReadKey(hfcp, buf, 512)) > 0) { - buf[bytes] = 0; - - /* hope this is text only! */ - printf("buf: %s\n", buf); - } - - /* cleanup some tempfiles */ - if (fcpCloseKey(hfcp) != 0) - return -1; - - /* call to delete remaining temp files and free memory */ - fcpDestroyHFCP(hfcp); - free(hfcp); - - /* The final shutdown for FCPLib */ - fcpTerminate(); - - return 0; -}</code></pre> - -<h1>*</h1> Deleted: trunk/website/pages/Freeplot.php =================================================================== --- trunk/website/pages/Freeplot.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/Freeplot.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,212 +0,0 @@ -<h4><big style="font-weight: normal;"><big></big></big><big - style="font-weight: bold;"><big>GnuPlot with FreeNet HOWTO</big></big></h4> -</div> -Plotting data with GnuPlot is both fun and easy! Using it for Freenet -development... well... the harder part is collecting all the numbers -you want to chart. Graphing with gnuplot is the easy part.<span - style="font-style: italic;"><br> -<br> -<span style="font-weight: bold;">"a picture says a thousand words..."</span></span> - but sometimes, it may only indicate 993 words.<br> -<br> -<span style="font-style: italic; font-weight: bold;">"Hey, Freenet </span><span - style="font-style: italic; font-weight: bold;"><span - style="font-style: italic; font-weight: bold;">already </span></span><span - style="font-style: italic; font-weight: bold;">has graphing -capabilities built in!"<br> -</span>Very true, and they should be used as much as possible. However, -when it is desirable to produce a chart containing two or more -variables, gnuplot may offer a preferable alternative. The other -solution is to stack multiple browser windows vertically, and chart one -variable per window. Also, by spooling the data (and only the data) you -want to examine into a separate datafile, freenet does not have to -retain large quantities of measurements. Specifically, it is convenient -to chart many hours of data that are captured at a one minute -resolution, in order to identify trends or spot relationships. Also of -interest - developers can aggregate measurements that are written to -Freenet's log file, using Perl or {grep,awk,sed} to cut and paste a -concise temporary datafile. It is extremely simple from there to graph -columnar data files with Gnuplot, with short typed commands or even -scripted -gnuplot operations. And Gnuplot has native support for a time dataype, -which is often a desired parameter for many purposes.<br> -<br> -<span style="font-style: italic; font-weight: bold;"></span>This HOWTO -applies to both Windows(tm) and UNIX/Linux platforms. MS Excel could be -used instead of Gnuplot for charting the data we will collect, but this -HOWTO specifically describes the use of Gnuplot. <br> -<br> -<h5 style="color: rgb(51, 153, 153); font-family: sans-serif;"><big><span - style="font-weight: bold;">First -task</span></big></h5> -<ul> - <li>Make sure Perl is installed. </li> -</ul> -<div style="margin-left: 40px;">Windows users, visit <a - href="http://www.perl.com/download.csp">www.perl.com</a> , retrieve -and install the "ActiveState" perl binary. Test that you can run Perl -from the command line (add it to your system PATH).<br> -<br> -UNIX / Linux users, get a clue ! Use your distribution's perl -installation, or build Perl from source.<br> -</div> -<br> -<ul> - <li>Also, <a href="http://lwp.linpro.no/lwp/">the LWP (libwww-Perl) -module</a> is required. </li> -</ul> -<div style="margin-left: 40px;"> -Windows users: <br> - You luck out. ActiveState's binary distribution of Perl 5.8.3 -includes the LWP module, already installed for you.<br> -<br> -UNIX / Linux users:<br> -</div> -<div style="margin-left: 40px;"> As the root user, run <span - style="font-style: italic;">perl -MCPAN -e shell</span> and then -just type in <span style="font-style: italic;">install LWP </span>. -This should perform the installation automatically for you. Of course, -it can be manually retrieved and installed from the link above ( if you -can figure out how to ).<br> -<br> -</div> -You now have HTTP / URL "screen-scraping" ability (without the screen). -Rejoice! To test it out, download and run avg-mri.pl.<br> -<br> -blackstar> <span style="font-style: italic;">perl avg-mri.pl<br> -</span><br> -Average MRI from routes = 234387ms<br> -Instant outbound qph capacity = 1059<br> -<br> -<br> -next, download and run the <a href="dump-mri.pl">dump-mri.pl</a> Perl -script like so: <br> -<br> -blackstar> <span style="font-style: italic;">perl dump-mri.pl<br> -</span><br> -This should produce a sorted list of the mRI values for the set of -connected Freenet routes. <br> -<br> -<h5 style="color: rgb(51, 153, 153); font-family: sans-serif;"><big>Second -task</big></h5> -<ul> - <li>Obtain and install <a - href="http://www.gnuplot.info/download.html">GnuPlot</a></li> -</ul> -<div style="margin-left: 40px;">UNIX / Linux users: <br> -Download gnuplot-4.0.0.tar.gz , configure, make, and install the -package. Or see if it is available for your distribution. You may wish -to specify --with-gd and --without-mouse to the configure script.<br> -<br> -Windows users: <br> -Download gp400win32.zip , unzip to C:\ . This should create -C:\gnuplot . You may wish to add C:\gnuplot\bin to your system PATH.<br> -</div> -<br> -<ul> - <li>Test GnuPlot</li> -</ul> -<div style="margin-left: 40px;">Run gnuplot from the command line. On -UNIX run <span style="font-style: italic;">gnuplot</span>, on Windows -run <span style="font-style: italic;">C:\gnuplot\bin\wgnuplot</span> -(or add wgnuplot to your path).<br> -GnuPlot will start in interactive mode. At the <span - style="font-weight: bold;">gnuplot></span> prompt, type in <span - style="font-style: italic;">f(x)=sin(x)</span> and hit enter. Then -type in <span style="font-style: italic;">plot f(x) </span>. If this -works, you are all set. For Freenet, we will only be plotting data from -a datafile. Enter the command <span style="font-style: italic;">quit</span> -to exit gnuplot. <br> -</div> -<br> -Now we will capture the data and graph the distribution of mRI values -like so:<span style="font-style: italic;"><br> -</span><br> -blackstar> <span style="font-style: italic;">perl dump-mri.pl > -mris.txt</span><br> -blackstar> <span style="font-style: italic;">gnuplot</span> -(or <span style="font-style: italic;">wgnuplot </span>for windows)<br> -<br> -(then, in the interactive gnuplot window, enter...)<br> -gnuplot> <span style="font-style: italic;">plot 'mris.txt' with -impulses</span><br> -<br> -This should produce a histogram of mRI values for the available freenet -routes ! Now you can <span style="text-decoration: underline;">see</span> -if one route is eating all your requests, or -if they are being distributed evenly.<br> -<span style="font-style: italic;"></span><br> -<div style="text-align: center;"> -<h3>Bringing It All Together</h3> -</div> -Now that you have Perl and Gnuplot installed, you can begin collecting -data from Freenet. Download collect.pl , the -Perl script that will log all the relevant -data to a file. Most people will access their freenet software at <span - style="font-weight: bold;">http://localhost:8888</span>. If you have -altered the default settings, or wish to run collect from a different -host, call this file up in an editor, and correct the <span - style="font-weight: bold;">$fproxy</span> variable. When running, once -per minute, this script will retrieve 5 small web -pages from freenet's fproxy process. A datafile is appended to each -time this script gathers the desired data. It is suggested that you -start this -script at about the same time as you launch the freenet process, in -order to gather all the data for a complete freenet session. If using -UNIX, you may wish to alter your start-freenet.sh script, adding one -line at the end to read <span style="font-weight: bold;">perl -collect.pl</span>. After you -have gathered a full session's worth of data, delete (or rename) the -data file, so as to avoid collecting excessive amounts of data on the -next run. The data can be plotted with GnuPlot at any time, while the -collection process is running. It may be helpful to integrate the -management of datafiles into the start-freenet.sh and stop-freenet.sh -scripts on UNIX platforms.<br> -<br> -The data fields produced by running this script include:<br> -<span style="font-family: monospace;"><br> -<time> </span><span style="font-family: monospace;"><outbound -bandwidth> </span><span style="font-family: monospace;"><inbound -bandwidth> </span><span style="font-family: monospace;"><#routes> -</span><span style="font-family: monospace;"><#connections> </span><span - style="font-family: monospace;"><#outbound transfers> </span><span - style="font-family: monospace;"><#inbound -transfers></span><span style="font-family: monospace;"> <queries -per minute></span><span style="font-family: monospace;"> </span><span - style="font-family: monospace;"></span><span - style="font-family: monospace;"> </span><span - style="font-family: monospace;"><#backed off routes> <average -mRI for all routes></span><br style="font-family: monospace;"> -<br> -To see all the data, download <a href="p1.gp">p1.gp</a> and start -gnuplot as such:<br> -<br> -<span style="font-weight: bold;">UNIX> </span><span - style="font-style: italic;">gnuplot -geometry 1000x500 -persist p1.gp</span><br> -<span style="font-weight: bold;">C:\Windows> <span - style="font-style: italic;"><span style="font-weight: bold;"></span></span></span><span - style="font-style: italic;">wgnuplot p1.gp<br> -</span>Note: if using Windows, -uncomment the line at the end of p1.gp that says <span - style="font-weight: bold;">#pause -1</span> by removing the '#'<span - style="font-style: italic;"><br> -</span><br> -Feel free to examine the p1.gp file - it is easy to comment out any -particular stat you don't want displayed - they appear at the bottom of -the file.<br> -<br> -To generate a PNG file, rather than a window, download <a href="p2.gp">p2.gp</a> -and run as:<br> -<span style="font-style: italic;">gnuplot p2.gp</span> (use <span - style="font-style: italic;">wgnuplot</span> on windows)<br> -<br> -you will probably want to adjust the y range of the generated file, so -edit p2.gp and alter the first non-comment line, that reads <span - style="font-style: italic;">set yrange [0:250]</span>.<br> -<br> -As you become more familiar with gnuplot, you are sure to find many new -uses for this wonderful tool.<br> -<big><span style="font-style: italic;"></span></big> -<hr style="width: 100%; height: 2px;"><big><span - style="font-style: italic;"><br> -</span></big> Deleted: trunk/website/pages/applications.php =================================================================== --- trunk/website/pages/applications.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/applications.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,64 +0,0 @@ -<h1>Applications - -</h1> -<br/>A variety of people have written some excellent tools and clients for use with Freenet. -<br/> -<br/><h3>Freenet Publishing & Retrieval Tools -</h3> -<br/><a class='wiki' href='http://localhost:8888/SSK at M7yZgrl8gwtAe1xEcR5Xyv4tFsoPAgM/fiw/6//'><b>Freesite Insertion Wizard</b></a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work.</span></b> -<br/> -<br/>FIW is a feature packed Java AWT application for inserting freesites. It contains a lot of help at each stage of the process, and includes site verification to increase availability of the inserts. -<br/> -<br/><a class='wiki' href='http://127.0.0.1:8888/SSK at kWu5Osv~VAI3-kH7z8QIVxklv-YPAgM/fishtools/34//'><b>FishTools</b></a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work.</span></b> - -<br/> -<br/>Freesite insertion tools written in Python (standalone binaries are available for Windows). Includes FEC support for alternative handling of large files. -<br/> -<br/><a href='/fcptools.html' class='wiki'><b>FCPTools</b></a> -<br/> -<br/>FCPTools provide the same functionality as Freeweb, but without the GUI. Current working platforms include Win32, Linux, and FreeBSD. An ANSI-C based Client Lib (ezFCPlib) is also included to aid developers in writing Freenet clients. -<br/> -<br/><a class='wiki' href='http://freeweb.sf.net/'><b>FreeWeb</b></a> -<br/> -<br/>FreeWeb allows websites to be inserted into Freenet. This tool does not appear to be currently maintained. -<br/> -<br/><b>KIO Freenet</b> -<br/> -<br/>KIO Freenet is a KDE IO-Slave, which provides KDE applications the ability to retrieve content from Freenet via FCP. <a class='wiki' href='http://www.freenetproject.org/snapshots/kio_freenet.bz2'>Download the source</a> and follow the instructions in INSTALL (<b>experimental</b>). - -<br/> -<br/><h3>Message Board Tools and File Sharing tools -</h3> -<br/><a class='wiki' href='http://jtcfrost.sf.net/'><b>Frost</b></a> -<br/> -<br/>Frost is a file-sharing tool for Freenet, it also has chat forums which allow people to chat anonymously over Freenet. It now supports FEC (which makes downloads more reliable). -<br/> -<br/><a class='wiki' href='http://127.0.0.1:8888/SSK at h~ixmz11-tDOox9O1gQyjkzAUCcPAgM/fmb/5//'><b>Freenet Message Board</b></a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work.</span></b> -<br/> -<br/>FMB is an excellent Usenet-like tool which allows secure messages to be exchanged via Freenet, it is somewhat similar to Frost, but employs a more sophisticated "outbox" based approach. -<br/> -<br/>It seems that the original author does not have the time to release new versions of it, some other Freenet users created modified versions. For more information visit <a class='wiki' href='http://localhost:8888/SSK at De48eyKvA132GLzM3iIyon30JvoPAgM/wookie//'>Wookie's Freesite</a>. <b><span style='color:#FF0000;'>You must be running Freenet for this link to work.</span></b> - -<br/> -<br/><a class='wiki' href='http://www.storrow.org/Software/FreeNews/'><b>FreeNews</b></a> -<br/> -<br/>FreeNews is an NNTP server that uses Freenet as its storage medium. It allows you to use your favorite newsreader to read Text Over Freenet messages. -<br/> -<br/><h3>Misc Tools -</h3> -<br/><a class='wiki' href='http://sf.net/projects/liberator'><b>Liberator</b></a> -<br/> -<br/>Liberator is a Unix command-line client designed to be easy to script (or cron). It's written in perl so it should be as portable as needed. -<br/> -<br/><b>Update:</b> new versions written in OCaml will be released in binary form for Win32, Linux/x86, Linux/PPC, and OSX. -<br/> - -<br/><a class='wiki' href='http://127.0.0.1:8888/SSK at fgbuxwSCCjOJHsUI-9-uijD1haQPAgM/flinks/8//'><b>Flinks</b></a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work.</span></b> -<br/> -<br/>Flinks is an application to help people gather, manage, and share links in freenet. Currently, several indicies generate flinks data (<a class='wiki' href='http://127.0.0.1:8888/SSK at -w495UL3mfSlWC2c~nRAuG2fAWwPAgM/TFEE//'><b>The Freedom Engine Engine</b></a>, <a class='wiki' href='http://127.0.0.1:8888/SSK at Sc6qV~D6iFhaYord6HtbjJ8MaEYPAgM/YoYo//'><b>YoYo</b></a>, and the <a class='wiki' href='http://127.0.0.1:8888/SSK at rjYFfgPHfolmcStiaoxESFfBXz8PAgM/FreenetHelp//'><b>Freenet Help Index</b></a>, among others (<b><span style='color:#FF0000;'>You must be running Freenet for those links to work.</span></b>)), so you can go to their page and download their links, allowing you to essentially build your own index with sites you like - -<br/><hr/> -<br/><h2>Want to contribute? -</h2> -<br/>If you want to develop a tool or client for Freenet please publish your idea <a href='/freeapps.html' class='wiki'>here</a>. There you can also find a list of projects related to Freenet in their early stages of development.<br/> - Deleted: trunk/website/pages/content.php =================================================================== --- trunk/website/pages/content.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/content.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,16 +0,0 @@ -<h1>Content</h1> -<h3>Freenet as a Content Distribution System</h3> -In addition to its anonymity features, Freenet is also an effective way to distribute large files - often achieving download speeds faster than other content distribution systems. -As a content distribution network Freenet has the following advantages: -<ul> -<li><b>Totally decentralized</b><br> -Information can be inserted into Freenet for download without any reliance on a centralized server. All the inserter needs to do is give the content's "key" to someone else and they will be able to download it. -<li><b>Adaptive caching</b><br> - -Many CDN architectures only allow peers which have already downloaded a file to share it with other peers. Freenet will adaptively cache information on peers as necessary to meet demand regardless of what that peer has downloaded. This allows Freenet to "scale-up" much more quickly than most solutions for popular files, and improves load-balancing. -<li><b>Strong Security</b><br> -Freenet has long-supported the concept of "Content Hash Keys" which guarantee the integrity of retrieved data. This approach has since been adopted by other architectures. Freenet also supports "Signed Subspace Keys" which allow content to be digitally signed. This also allows content integrity to be guaranteed, but is more flexible than CHKs. -<li><b>Forward Error Correction</b><br> -In-common with some other CDN architectures, Freenet employs "Forward Error Correction", which allows files to be reconstructed even if some of the parts of that file can't be retrieved. Uniquely, Freenet also supports "healing", which involves the reconstruction and reinsertion of missing file components. -</ul> -This page contains links to freely available content on Freenet. If you would like to add a new link please email it to <a href="mailto:ian at locut.us">us</a> - remember that we will only link to content that can be legally distributed in the United States of America. Deleted: trunk/website/pages/donate.php =================================================================== --- trunk/website/pages/donate.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/donate.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,167 +0,0 @@ -<h3>Donations</h3> -<!-- Disabled for now, same as on homepage; we still haven't spent Gillmore's cheque yet. - -<p>Current PayPal balance (updated every 12 hours): <? - include("paypaltotal.txt"); ?></p> --> - -<h4>Why does The Freenet Project need donations?</h4> -Although countless people have given their time and skill to the project since its -inception, The Freenet Project relies on your donations both to support those developers -working full-time on this increasingly complex project, and to cover hardware (ie. the -project development computer) and administrative costs (ie.domain registrations). It is also -a goal to be able to find ourselves in the position to start a legal defense fund to help -ensure the future of Freenet development.<br> Everyone involved is keenly interested in the -future of The Freenet Project and you can be assured donations have been and will continue -to be used wisely. All support is very much appreciated. - -<h4>How can I donate?</h4> -You have four options: -<ul> -<li>You can become a Freenet project "member" for a <b>recurring -payment</b> of $5, $10, or $20 per month. The advantage of this is that -it gives the -project a more stable and dependable income which makes it easier -to make long term committments to potential developers - right now -it is difficult to say whether we will be able to pay a developer -the following month although so-far we have been fortunate. You -can become a member by clicking on this button (you will need a -<a href="http://paypal.com/">PayPal</a> account): -<center> -<table><tr><td bgcolor="#DDDDFF" style="{padding:4px; border:1px solid silver}"> -<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> -<input type="hidden" name="cmd" value="_xclick-subscriptions"> -<input type="hidden" name="business" value="ian at freenetproject.org"> -<input type="hidden" name="item_name" value="Freenet Project Membership"> -<input type="hidden" name="return" value="http://freenetproject.org/donatethanks.html"> -<input type="hidden" name="cancel_return" value="http://freenetproject.org/donate.html"> -<input type="hidden" name="no_shipping" value="1"> -<input type="hidden" name="no_note" value="1"> -<input type="hidden" name="currency_code" value="USD"> -Amount: -<p> -<span style="{border:1px solid black}"> $20 <input type="radio" name="a3" value="20.00"></span> -<span style="{border:1px solid black}"> $10 <input type="radio" name="a3" checked="true" -value="10.00"></span> -<span style="{border:1px solid black}"> $5 <input type="radio" name="a3" value="5.00"></span> -</p> -<input type="image" src="https://www.paypal.com/images/x-click-but20.gif" border="0" name="submit" alt="Make -payments with PayPal - it's fast, free and secure!"> -<input type="hidden" name="p3" value="1"> -<input type="hidden" name="t3" value="M"> -<input type="hidden" name="src" value="1"> -<input type="hidden" name="sra" value="1"> -</form> -</td></tr></table> -</center> -<P> -<hr width="90%"> -<P> - -<li>You can donate through Google Checkout:<br> -<center> -<form action="https://checkout.google.com/cws/v2/Merchant/828420057535417/checkout" id="BB_BuyButtonForm930897499" method="post" name="BB_BuyButtonForm930897499"> - <input name="o" type="hidden" value="shoppingcart"/> - <input name="signature" type="hidden" value="Pl1x6t9lcHiNBRMEBXo9AXOyEl8="/> - <table cellpadding="5" cellspacing="0" width="1%"> - <tr> - <td align="right" width="1%"> - <select name="cart" onChange="document.getElementById('BB_BuyButtonForm930897499').signature.value=document.getElementById('BB_BuyButtonForm930897499').itemSignature[this.selectedIndex].value"> - <option value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxjaGVja291dC1zaG9wcGluZy1jYXJ0IHhtbG5zPSJodHRwOi8vY2hlY2tvdXQuZ29vZ2xlLmNvbS9zY2hlbWEvMiI+DQogIDxzaG9wcGluZy1jYXJ0Pg0KICAgIDxpdGVtcz4NCiAgICAgIDxpdGVtPg0KICAgICAgICA8cXVhbnRpdHk+MTwvcXVhbnRpdHk+DQogICAgICAgIDx1bml0LXByaWNlIGN1cnJlbmN5PSJVU0QiPjIwLjA8L3VuaXQtcHJpY2U+DQogICAgICAgIDxpdGVtLW5hbWU+QnJvbnplPC9pdGVtLW5hbWU+DQogICAgICAgIDxpdGVtLWRlc2NyaXB0aW9uPkEgJDIwIGRvbmF0aW9uIHRvIHRoZSBGcmVlbmV0IFByb2plY3QuPC9pdGVtLWRlc2NyaXB0aW9uPg0KICAgICAgPC9pdGVtPg0KICAgIDwvaXRlbXM+DQogIDwvc2hvcHBpbmctY2FydD4NCiAgPGNoZWNrb3V0LWZsb3ctc3VwcG9ydD4NCiAgICA8bWVyY2hhbnQtY2hlY2tvdXQtZmxvdy1zdXBwb3J0IC8+DQogIDwvY2hlY2tvdXQtZmxvdy1zdXBwb3J0Pg0KPC9jaGVja291dC1zaG9wcGluZy1jYXJ0Pg0KDQo=">$20.0 - Bronze</option> - <option value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxjaGVja291dC1zaG9wcGluZy1jYXJ0IHhtbG5zPSJodHRwOi8vY2hlY2tvdXQuZ29vZ2xlLmNvbS9zY2hlbWEvMiI+DQogIDxzaG9wcGluZy1jYXJ0Pg0KICAgIDxpdGVtcz4NCiAgICAgIDxpdGVtPg0KICAgICAgICA8cXVhbnRpdHk+MTwvcXVhbnRpdHk+DQogICAgICAgIDx1bml0LXByaWNlIGN1cnJlbmN5PSJVU0QiPjUwLjA8L3VuaXQtcHJpY2U+DQogICAgICAgIDxpdGVtLW5hbWU+U2lsdmVyPC9pdGVtLW5hbWU+DQogICAgICAgIDxpdGVtLWRlc2NyaXB0aW9uPkEgJDUwIGRvbmF0aW9uIHRvIHRoZSBGcmVlbmV0IFByb2plY3QuPC9pdGVtLWRlc2NyaXB0aW9uPg0KICAgICAgPC9pdGVtPg0KICAgIDwvaXRlbXM+DQogIDwvc2hvcHBpbmctY2FydD4NCiAgPGNoZWNrb3V0LWZsb3ctc3VwcG9ydD4NCiAgICA8bWVyY2hhbnQtY2hlY2tvdXQtZmxvdy1zdXBwb3J0IC8+DQogIDwvY2hlY2tvdXQtZmxvdy1zdXBwb3J0Pg0KPC9jaGVja291dC1zaG9wcGluZy1jYXJ0Pg0KDQo=">$50.0 - Silver</option> - <option value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxjaGVja291dC1zaG9wcGluZy1jYXJ0IHhtbG5zPSJodHRwOi8vY2hlY2tvdXQuZ29vZ2xlLmNvbS9zY2hlbWEvMiI+DQogIDxzaG9wcGluZy1jYXJ0Pg0KICAgIDxpdGVtcz4NCiAgICAgIDxpdGVtPg0KICAgICAgICA8cXVhbnRpdHk+MTwvcXVhbnRpdHk+DQogICAgICAgIDx1bml0LXByaWNlIGN1cnJlbmN5PSJVU0QiPjEwMC4wPC91bml0LXByaWNlPg0KICAgICAgICA8aXRlbS1uYW1lPkdvbGQ8L2l0ZW0tbmFtZT4NCiAgICAgICAgPGl0ZW0tZGVzY3JpcHRpb24+QSAkMTAwIGRvbmF0aW9uIHRvIHRoZSBGcmVlbmV0IFByb2plY3QuPC9pdGVtLWRlc2NyaXB0aW9uPg0KICAgICAgPC9pdGVtPg0KICAgIDwvaXRlbXM+DQogIDwvc2hvcHBpbmctY2FydD4NCiAgPGNoZWNrb3V0LWZsb3ctc3VwcG9ydD4NCiAgICA8bWVyY2hhbnQtY2hlY2tvdXQtZmxvdy1zdXBwb3J0IC8+DQogIDwvY2hlY2tvdXQtZmxvdy1zdXBwb3J0Pg0KPC9jaGVja291dC1zaG9wcGluZy1jYXJ0Pg0KDQo=">$100.0 - Gold</option> - <option value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxjaGVja291dC1zaG9wcGluZy1jYXJ0IHhtbG5zPSJodHRwOi8vY2hlY2tvdXQuZ29vZ2xlLmNvbS9zY2hlbWEvMiI+DQogIDxzaG9wcGluZy1jYXJ0Pg0KICAgIDxpdGVtcz4NCiAgICAgIDxpdGVtPg0KICAgICAgICA8cXVhbnRpdHk+MTwvcXVhbnRpdHk+DQogICAgICAgIDx1bml0LXByaWNlIGN1cnJlbmN5PSJVU0QiPjUwMC4wPC91bml0LXByaWNlPg0KICAgICAgICA8aXRlbS1uYW1lPlBsYXRpbnVtPC9pdGVtLW5hbWU+DQogICAgICAgIDxpdGVtLWRlc2NyaXB0aW9uPkEgJDUwMCBkb25hdGlvbiB0byB0aGUgRnJlZW5ldCBQcm9qZWN0LjwvaXRlbS1kZXNjcmlwdGlvbj4NCiAgICAgIDwvaXRlbT4NCiAgICA8L2l0ZW1zPg0KICA8L3Nob3BwaW5nLWNhcnQ+DQogIDxjaGVja291dC1mbG93LXN1cHBvcnQ+DQogICAgPG1lcmNoYW50LWNoZWNrb3V0LWZsb3ctc3VwcG9ydCAvPg0KICA8L2NoZWNrb3V0LWZsb3ctc3VwcG9ydD4NCjwvY2hlY2tvdXQtc2hvcHBpbmctY2FydD4NCg0K">$500.0 - Platinum</option> - </select> - </td> - <td align="left" width="1%"> - <input alt="Buy now!" src="https://checkout.google.com/buttons/buy.gif?merchant_id=828420057535417&w=121&h=44&style=white&variant=text&loc=en_US" type="image"/> - </td> - </tr> - </table> - <input name="itemSignature" type="hidden" value="Pl1x6t9lcHiNBRMEBXo9AXOyEl8="/> - <input name="itemSignature" type="hidden" value="bJ5/nuKFXCwbgC2P5HObDWOBBb4="/> - <input name="itemSignature" type="hidden" value="vNL3QaknB7C0ytaxyX21OWzzSr4="/> - <input name="itemSignature" type="hidden" value="O+qrZNdUMaBQFmJnycC3DI3IV/0="/> -</form> -</center> -<hr width="90%"> - -<li>You can <b>donate once</b> via Paypal by clicking on this button:<br> -<center> - <form action="https://www.paypal.com/cgi-bin/webscr" -method="post"> - <input type="hidden" name="cmd" value="_xclick"> - <input type="hidden" name="business" -value="ian at freenetproject.org"> - <input type="hidden" name="no_shipping" value="1"> -<input type="hidden" name="return" value="http://freenetproject.org/donatethanks.html"> -<input type="hidden" name="cancel_return" value="http://freenetproject.org/donate.html"> - <input type="hidden" name="return" -value="http://freenetproject.org/"> - <input type="hidden" name="cancel_return" -value="http://freenetproject.org/"> - <input type="image" -src="http://images.paypal.com/images/x-click-but04.gif" border="0" -name="submit"></form> -</center> -<P> -<hr width="90%"> -<p> -<li>You can donate once through <a -href="http://www.e-gold.com/e-gold.asp?cid=767764">E Gold</a> by filling -out this form:<br> -<center> -<table><tr><td bgcolor="#DDDDFF" style="{padding:4px; border:1px solid silver}"> -<form action="https://www.e-gold.com/sci_asp/payments.asp" method="POST" -target=_top> -<input type="hidden" name="PAYEE_ACCOUNT" value="767764"> -<input type="hidden" name="PAYEE_NAME" value="Freenet Project Inc">Enter -Amount You'd like to Donate:<br>USD$<input type=text -name="PAYMENT_AMOUNT" value="20" size=4> -<input type=hidden name="PAYMENT_UNITS" value=1>worth of E-Gold -<input type=hidden name="PAYMENT_METAL_ID" value=1> -<input type="hidden" name="STATUS_URL" -value="mailto:ian at freenetproject.org"><input type="hidden" -name="NOPAYMENT_URL" value="http://freenetproject.org/"> -<input type="hidden" name="NOPAYMENT_URL_METHOD" value="LINK"> -<input type="hidden" name="PAYMENT_URL" -value="http://freenetproject.org/"> -<input type="hidden" name="PAYMENT_URL_METHOD" value="LINK"> -<input type="hidden" name="BAGGAGE_FIELDS" value="CUSTOMERID"> -<input type="hidden" name="CUSTOMERID" value="0"> -<input type="hidden" name="SUGGESTED_MEMO" value='Donation to Freenet Project'><br> -<input type="submit" name="PAYMENT_METHOD" value="Donate Now"> -</form> -</td></tr></table> -</center> -<P> -<hr width="90%"> -<P> -<li>You can now also donate to the project by purchasing items from the - Freenet <a -href="http://cafepress.com/freenetproject/">store</a>. -</ul> -<h4>How can I be sure that my donation will be used appropriately?</h4> -All donations go to The -Freenet Project Inc, a -non-profit 501c3 corporation with the following -mission -statement: -<blockquote> -The specific purpose of this corporation is to assist in developing and -disseminating technological solutions to further the open and democratic -distribution of information over the Internet or its successor -electronic communication networks or organizations. It is also the -purpose of this organization to guarantee consenting individuals the -free, unmediated, and unimpeded reception and impartation of all -intellectual, scientific, literary, social, artistic, creative, human -rights, and cultural expressions, opinions and ideas without -interference or limitation by or service to state, private, or special -interests. It is also the purpose of this organization to educate the -world community and be an advocate of these purposes. -</blockquote> -All monies received will only be utilized to advance our -Mission -Statement, and are -administered at the direction of the -Freenet Project Board. - Deleted: trunk/website/pages/donatethanks.php =================================================================== --- trunk/website/pages/donatethanks.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/donatethanks.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,6 +0,0 @@ -<h3>Thanks for your donation!</h3> -We have received your generous donation. It will be used at the -direction of the Freenet Board to advance the interests of the -Freenet Project. If you have any questions about how your donation -will be used please contact <a href="mailto:ian at locut.us">Ian Clarke</a>. - Deleted: trunk/website/pages/download-old.php =================================================================== --- trunk/website/pages/download-old.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/download-old.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,111 +0,0 @@ -<body><h2>Download Freenet 0.5</h2> - -<small><p> -Note that Freenet 0.5 is no-longer well supported as development effort has shifted to Freenet 0.7, -which you can download from <a href="/download.html">here</a>. -</p></small> - -<h3>Important note for first time users</h3> - -When you first start Freenet your node will know very little about the -network, meaning that it could take <b>several minutes or longer</b> to -retrieve a web page. Please be patient since Freenet will learn how to -find information more effectively over time and its speed will gradually -improve with use. -<p> - -<i>If you have a firewall or a NAT box click <a -href="/faq.html#firewall"><b>here</b></a> -for some info.</i> - -<BR> <BR> -<h3>Windows</h3>- Download and run -<big><a href="http://downloads.freenetproject.org/freenet-java-webinstall.exe">freenet-java-webinstall.exe</a></big> which includes Java <B>or</B> -<br>- If you already have Java 5 update 4 or greater (<B>strongly</B> recommended for security, although v1.4.1 or greater works) -<big><a href="http://downloads.freenetproject.org/freenet-webinstall.exe">freenet-webinstall.exe</a></big><br> -<br>It will automatically install Freenet and other required components for you. When done, double-click on the small blue rabbit icon in your system-tray. -<br>(Freenet contains <u><b>NO spyware or adware</b></u> , it's Free Software! The source code is publicly available for review) -<BR> <BR> -Freenet works best with <b>Windows 2000, XP Professional or NT. -</b>Windows ME, 98 and 95 work less well. -<!-- 2000 and Millenium Edition are different; all 2k's work good. Millenium is also a bit borked. The borked one is XP Home--> - -<BR> <BR> -<h3>Unix/Linux</h3> -You need to have a recent Java Runtime Environment. We have experienced -best results with Sun's Java Runtime Environment -which can be obtained from <a href="http://www.java.com/">http://www.java.com/</a>. -<BR>Java version 1.4.1 and later will work. However, be aware that there are applet security vulnerabilities in all versions prior to -Java 5 update 4. Generally, we recommend using at least Java 1.4.2. - -<P>Currently Freenet does not run on Kaffe or GCJ, due to bugs in Classpath. This is being worked on.</P> -Once Java is installed, download -<a -href="http://downloads.freenetproject.org/freenet-stable-latest.tgz">freenet-stable-latest.tgz</a>. -Get started by typing: -<pre> -$ tar xzf freenet-stable-latest.tgz -$ cd freenet -$ sh start-freenet.sh -</pre> - -After you start Freenet wait a few seconds for it to start-up (on a slow -computer, you may need to wait about 30 seconds), and visit -http://127.0.0.1:8888/ in your web browser to access Freenet's user -interface. - - -<BR> <BR> -<h3>Hardware requirements</h3> -<b>Minimum:</b> 400MHz Pentium 2, with at least 192MB of RAM.<br> -<b>Recommended:</b> 1GHz or more processor with 256MB <!-- decreasing agaisnt my will :(-->RAM or -more (especially if using Windows XP). - - -<BR> <BR> -<h3>Upgrading</h3> -After installing Freenet, Windows users can upgrade to the latest daily Freenet -"snapshot" release by clicking on "Update Snapshot" in the Freenet section of their -Start menu. -<p> -Linux users may similarily upgrade by running the update.sh shell script in the -freenet/ directory. -<p> -To see the latest changes of the builds in the stable branch, you can go to the -<b><a -href="/whatsnew.html">Changelog</b></a>. - - -<BR> <BR> -<h3>Source Code</h3> -Our 0.5 changelog is reachable <a href="/whatsnew.html">here</a>. -You can obtain the latest source code from SVN from <a href="https://emu.freenetproject.org/svn/branches/legacy/stable/">https://emu.freenetproject.org/svn/branches/legacy/stable/</a>, or you can download a daily snapshot:<ul> -<li><a href="http://downloads.freenetproject.org/freenet-stable-latest.src.tbz">Stable</a> - -current stable branch source code</li> -<li><a -href="http://downloads.freenetproject.org/freenet-unstable-latest.src.tbz">Unstable</a> -- current unstable branch source code</li> -<li><a href="http://downloads.freenetproject.org/freenet-contrib-latest.src.tar.bz2">Contrib</a> - separate module needed to compile freenet-ext.jar; unpack this and one of the above in a common parent directory, and then run "ant distclean dist" to build everything.</li> -</ul><BR> -<!--end of empty space--></body> -<h3>Documentation</h3> - -<p>This page contains links to documentation that would mainly be of -interest to developers of Freenet and Freenet-related tools. Those -with a higher level interest in Freenet's operation should look -<a href="/papers.html">here</a>.</p> - -<p> -<h3><a href="/fcp.html">FCP (Freenet Client - Protocol)</a></h3> -<p>FCP is intended to shield would-be Freenet client developers from the details and ever-changing internals of the Freenet node itself.</p> - -<p> -<h3><a href="/fec.html">FEC (Forward Error-Correction) Protocol</a></h3> -<p>FEC specifically addresses the insertion and retrieval of Redundant Splitfiles.</p> - -<p> -<h3><a href="/metadata.html">Freenet Metadata Spec</a></h3> -<p>This spec is for client metadata. It's intent is to provide -functionality for building web sites within Freenet, as well as -general description of the data inserted into Freenet.</p> Deleted: trunk/website/pages/download.php =================================================================== --- trunk/website/pages/download.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/download.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,111 +0,0 @@ -<h2>Download Freenet 0.7</h2> -<h3>Important note for first time users</h3> - -<p>Freenet 0.7 is different to most other P2P networks in that, to protect -your security, you only connect directly to other people you trust, but -through them you gain access to the entire Freenet network. </p> - -<p>When you first start Freenet 0.7 your node will not know any other nodes -on the network, you need to connect to other nodes - at least three. -Ideally you should find people you trust that are already part of the -Freenet 0.7 network and connect to them, but if that isn't possible in -the early stages of the Freenet 0.7 network you can try connecting to -the irc server <big>irc.freenode.net</big> and join the channel -<big>#freenet-refs</big>, to see if anyone will connect to you.</p> - -<p> <i>If you have a firewall or a NAT box click <a -href="/faq.html#firewall"><b>here</b></a> -for some info.</i> </p> - -<p><b>Warning!</b> Freenet is an alpha and as such under heavy development. -It may have exploitable bugs and design flaws, and it may have development -code to help us understand the network, which may also be exploitable by attackers. -See <a href="http://wiki.freenetproject.org/FreenetZeroPointSevenSecurity">here</a> -for a fuller analysis.</p> - -<a href="javascript:toggleLayer('windows');">Show windows instructions</a> -<div class="hideit" name="windows"> -<h3>Windows</h3> -<p>- Download and run <big><a href="http://downloads.freenetproject.org/alpha/installer/freenet-win32.exe">freenet webinstall</a></big></p> -<p> It will automatically install Freenet and other required components for you. When done, your default browser will automatically open up to Freenet's web-based user interface. </p> -<p>(Freenet contains <u><b>NO spyware or adware</b></u> , it's Free Software! The source code is publicly available for review) </p> -<p>Freenet works best with <b>Windows 2000 Professional, XP Professional or NT. </b> Windows 95, 98 and 2000 Millennium Edition don't work as well; in particular, the installer won't run on those operating systems.</p> -<p>If the installer doesn't work (something seriously wrong) then please <a href="https://bugs.freenetproject.org">let us know</a>, install Java, and try the Linux instructions below.</p> -</div> - -<a href="javascript:toggleLayer('macos');">Show MacOSX instructions</a> -<div class="hideit" name="macos"> -<h3>Mac OSX</h3> -<p><a href="http://downloads.freenetproject.org/alpha/installer/mac/freenet.jnlp">Install Freenet 0.7</a> using JavaWebStart.</p> -</div> - -<a href="javascript:toggleLayer('unix');">Show Linux/Unix instructions</a> -<div class="hideit" name="unix"> -<h3>Unix, and Linux</h3> -<p>You need to have a recent Java Runtime Environment. We have experienced best results with Sun's Java Runtime Environment which can be obtained from <a href="http://www.java.com/">http://www.java.com/</a>. </p>> -<p>Java version 1.4.2 and later will work. Generally, we recommend using latest available version.</p> - -<p>Type on a command line : -<pre> -wget <a href="http://downloads.freenetproject.org/alpha/installer/new_installer.jar" alt="new_installer.jar">http://downloads.freenetproject.org/alpha/installer/new_installer.jar</a> -java -jar new_installer.jar -</pre> -</p> - -<p> Or do the following on a headless system: -<pre> -wget <a href="http://downloads.freenetproject.org/alpha/installer/freenet07.tar.gz" alt="freenet07.tar.gz">http://downloads.freenetproject.org/alpha/installer/freenet07.tar.gz</a> -cat freenet07.tar.gz | gzip -d | tar xv -./bin/1run.sh -./run.sh start -</pre> -</p> -</div> - -<h3>Notes</h3> -<p>Afer you start Freenet, wait a few seconds for it to start up (on a -slow computer, you may need to wait about 30 seconds), and visit -<i>http://127.0.0.1:8888/</i> in your web browser to access Freenet's user -interface.</p> - -<h3>So it's running, what do I do?</h3> -<p>You need to get connected. If you know anyone running Freenet, ask them -for their reference, and give them yours. If you visit <i>http://127.0.0.1:8888/darknet/</i> -in your browser, you can see your reference at the bottom and you can add -other people's references, either by cutting and pasting the reference -itself, or by pointing Freenet to a URL or a file containing their -reference.</p> -<p>If you don't know anyone running Freenet, visit #freenet-refs on -irc.freenode.net and ask nicely to exchange references with someone. -Please don't paste references into the IRC channel: Use a tool such as -<a href="http://dark-code.bulix.org/">http://dark-code.bulix.org</a> or -register with nickserv (/msg nickserv help register) and send your -reference as a private message (the node will automatically remove -the timestamp your IRC client may add to each line).</p> -<p></b>Note: You need to add their reference and they need to add -yours before your nodes can communicate.</b></p> - -<h3>So I'm connected, what do I do?</h3> - -<p>You can find links to some pages in the index on the FProxy homepage at -<i>http://127.0.0.1:8888/</i>. You can find links to some <a -href="http://wiki.freenetproject.org/FreenetZeroPointSevenApps">third party -applications for freenet</a>.</p> - -<h3>Hardware requirements</h3> -<p><b>Minimum:</b> 400MHz Pentium 2, with at least 192MB of RAM.</p> -<p><b>Recommended:</b> 1GHz or more processor with 256MB -<!-- decreasing agaisnt my will :(--> -RAM or more (realistically 512MB if using Windows XP). </p> - -<h3>Upgrading</h3> -<p>Freenet provides now an update-over-freenet mechanism ; We recommend people to use it rather than the updating scripts.</p> - -<p>However if that is not working, Windows users can upgrade to the latest-stable Freenet release by clicking on "update.cmd" in the Freenet directory.</p> -<p>Linux users may similarly upgrade by running the update.sh shell script in the <i>freenet/</i> directory.</p> -<h3>Source Code</h3> -<p>You can obtain the latest source code from SVN from <a href="https://emu.freenetproject.org/svn/trunk/freenet/">https://emu.freenetproject.org/svn/trunk/freenet/</a> or pick up a tarball <a href="http://emu.freenetproject.org/sources/">http://emu.freenetproject.org/sources/</a>.</p> - -<p><small><b>Note: </b> You can still find the download page for Freenet 0.5 <a -href="/download-old.html">here</a>, however 0.5 is no longer officially -maintained or supported and 0.7 has many radical improvements.</small></p> Deleted: trunk/website/pages/fairshare.php =================================================================== --- trunk/website/pages/fairshare.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/fairshare.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,100 +0,0 @@ -<h3>FairShare - Rewarding artists without Copyright</h3> - <h3>Ian Clarke - 29th March 2001</h3> - - <h3>Introduction</h3> - With advances in communication technology, such as the Internet, and - systems like <a href="http://freenetproject.org/">Freenet</a>, comes - the realization that copyright law is increasingly unenforceable - without seriously curtailing people's freedom to communicate. It - has also raised questions about the validity of copyright law - itself, and the ideas upon which it is founded, particularly the - idea that information is property.<br></br> - This raises the obvious question of how to enable people to earn a - living from the creation of useful information in the absence of - copyright law. One obvious solution is to allow those who value a - creative work to voluntarily contribute to its creator. The - Internet makes such a solution much more likely to be effective, - given the ease with which an artist can receive contributions - through companies such as <a -href="http://www.paypal.com/">PayPal</a> and -<a href="http://www.amazon.com/">Amazon</a>. Many people, however, - do not believe that such a mechanism will be effective since it - relies on people having a wider sense of self interest (if they - don't contribute to the artist, then it is less likely that the - artist will continue to create). While my personal belief is that - this simple voluntary payment approach can work, there are also ways - that it can be enhanced to answer this criticism. - - <h3>Everybody can be the record label</h3> - Consider a simplistic view of how a record label operates. They - find early-stage bands who are yet to have a wide audience, but who - they consider to have the potential to be very successful. They - invest money in that band, and if that band does indeed become a - success they make a return on their investment.<br></br> - FairShare essentially democratizes this process. Anybody can - "invest" in an artist, and if that artist goes on to be a success, - then the person is rewarded in proportion to their investment and how - early they made it.<br></br> - But where does this return on investment come from? The answer is - that it comes from subsequent investors. For example, lets say that - you invest $10. $4.50 might go straight to the band, $1 might go to - the operator of the system, and the remaining $4.50 would be - distributed among previous investors in the band, those who invest - early get a bigger proportion than those who invest - less, later-on.<br></br> - Of course, most people will not make a profit, but they are rewarded - by knowing that they contributed towards an artist that they liked, - and helped reward others who believed in that artist, and who may - have brought the artist to their attention. - - <h3>Collaborative Filtering</h3> - One of the positive aspects of what record labels claim to do is to - filter out the "noise", and present the public with the best of what - is available. Of course, this aspect can be mirrored in our - scheme. A FairShare operator could provide a randomized list of - artists, biased towards those who have recieved more contributions, - but with the occasional new act to give them some exposure. - - <P><B><U>Some answers to common questions:</U></B></P> - - <h3>Isn't this a "Pyramid Scheme"?</h3> - I don't think so although I am not a lawyer. The problem with - Pyramid Schemes is that they give the impression that you are - guaranteed a return, which is simply a lie. In the case of - FairShare, we are completely honest about the fact that most people - will not make a profit, but those people benefit by rewarding - artists they like. - - <h3>Might there be other reasons why this is illegal?</h3> - Of course, any new idea could be illegal (just ask Napster!), - it is impossible to tell until it is challenged in court. Having - said that, I can't think of any reason why this <i>should</i> be - illegal provided that those who contribute to artists are not - mislead as to the nature of the system. - - <h3>How will the maths work?</h3> - Good question. There are actually many choices as to how funds can - be distributed to investors in an artist. Some of these will allow - early-investors to make more of a profit, and some will distribute - funds more evenly. We will let the market decide as to which is - best. - - <h3>Won't FairShare operators just become another monopoly?</h3> - Hopefully not. We would discourage artists from using a FairShare - operator who insisted on an exclusive relationship for this reason. - Provided that there is sufficient competition, it will keep margins - down, and the free market should lead to the evolution of optimal - approaches. - - <h3>Who thought of this?</h3> - This mechanism was developed by <a href="mailto:steven at change.tv"> - Steven Starr</a>, <a href="mailto:rob at nowbenow.com">Rob Kramer</a>, - and myself as a response to the impossibility of enforcing copyright - law without restricting people's ability to communicate. The name - "FairShare" is due to Steven Starr. I am not aware of any similar - approaches currently in existence. - - <h3>What has this got to do with Freenet?</h3> - Not much, except that the amount of feedback we received in the - press concerning Freenet's effect on copyright got us thinking about - this problem. Deleted: trunk/website/pages/faq.php =================================================================== --- trunk/website/pages/faq.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/faq.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,522 +0,0 @@ -<h1>Freenet Frequently Asked Questions</h1> - -<h2> Philosophical questions</h2> - -<ol><li><a href="#what">What is Freenet?</a> -</li><li><a href="#who">Who is behind Freenet?</a> -</li><li><a href="#trust">If authors are anonymous how can you trust information?</a> -</li><li><a href="#donate-bw">Do I have to donate disk space and bandwidth?</a> -</li><li><a href="#leech">I don't have to donate anything when using filesharing application X and I get to leech more.</a> -</li><li><a href="#donate-more-bw">All my friends donate very little space and bandwidth. Why should I donate more?</a> -</li><li><a href="#donate-lot">If I donate a lot will my experience improve significantly?</a> -</li><li><a href="#permanent">What do I get from running a permanent node?</a> -</li><li><a href="#legal">Is Freenet legal?</a> -</li><li><a href="#trouble">Can I get trouble if I run a node?</a> -</li><li><a href="#copyright">What about copyright?</a> -</li><li><a href="#childporn">What about child porn, offensive content or terrorism?</a> -</li><li><a href="#offensive">I don't want my node to be used to harbor child porn, offensive content or terrorism. What can I do?</a> -</li><li><a href="#export">How about encryption export restrictions?</a> -</li><li><a href="#whatelse">I have nothing to hide and don't need anonymity. Is there anything else Freenet can offer?</a> -</li></ol> -<h2> Technical questions</h2> - -<ol><li><a href="#how">How do I use this software? I downloaded it, but when I run it there's no GUI.</a> -</li><li><a href="#search">Is Freenet searchable?</a> -</li><li><a href="#firewall">How do I get freenet working with a firewall/NAT?</a> -</li><li><a href="#connection-perm">Do I need a permanent connection to run a node?</a> - -</li><li><a href="#connections">Why does Freenet only download 1 or 2 files at a time?</a> -</li><li><a href="#store-perm">Why can't Freenet store data permanently?</a> -</li><li><a href="#why-java">Why is Freenet implemented in Java?</a> - -</li><li><a href="#fproxy-lan">How do I allow connections to FProxy from other computers?</a> -</li><li><a href="#fec">What is FEC?</a> -</li><li><a href="#healing">What is healing?</a> -</li><li><a href="#fec-cli">My browser can't save large files from Freenet. Can I retrieve them from the command line?</a> -</li><li><a href="#seednodes">How do I extract the necessary seedNode values from my own node?</a> -</li><li><a href="#roadmp">Is there a future roadmap of Freenet?</a> - -</li><li><a href="#heisenbug">What is a Heisenbug?</a> -</li><li><a href="#whatsnew">What's new? Is there a changelog?</a> -</li><li><a href="#backtrace">Why are there so many messages in my logfile with a backtrace attached?</a> -</li><li><a href="#stabchange">How can I change from stable to unstable?</a> -</li></ol> -<h2> Publisher questions</h2> - -<ol><li><a href="#find">If I publish something in Freenet, how will people find it? Don't they have to know the key I used?</a> -</li><li><a href="#chk">How do I publish a Content Hash Key (CHK)?</a> -</li><li><a href="#update">Can Freenet documents be updated / deleted?</a> -</li></ol> -<h2> Contribution questions</h2> - -<ol><li><a href="#idea">I have this great idea....</a> -</li><li><a href="#contribute">Can I contribute to the Freenet Project?</a> -</li><li><a href="#access">How can I access the code and website?</a> -</li><li><a href="#devtools">What tools do I need to help develop?</a> -</li><li><a href="#freenethelp">Is there a Help Site that goes deeper into the questions newbies may have about Freenet, and where people can contribute too?</a> -</li><li><a href="#bugs">Where can I report bugs?</a> -</li></ol> -<h2> Security questions</h2> - -<ol><li><a href="#attack">Won't attack X break Freenet's anonymity?</a> -</li><li><a href="#flooding">Is Freenet vulnerable to flooding attacks?</a> -</li><li><a href="#hash">Why hash keys and encrypt data when a node operator could identify them (the data) anyway if he tried?</a> -</li><li><a href="#cancer">What about hostile "cancer" nodes within the network?</a> -</li><li><a href="#attackY">What about attack Y?</a> -</li></ol> -<h2> Misc. questions</h2> - -<ol><li><a href="http://wiki.freenetproject.org/FrequentlyAskedQuestions">An other FAQ on our wiki server</a> -<ol><li><a href="http://wiki.freenetproject.org/FreenetZeroPointSevenSecurity">A page dedicated to the security of freenet 0.7 on our wiki server</a> -</li></ol> -<h2> Philosophical answers -</h2><p><b id="what">What is Freenet?</b><br> -Freenet -is free software designed to ensure true freedom of communication over -the Internet. It allows anybody to publish and read information with -complete anonymity. Nobody controls Freenet, not even its creators, meaning that the system is not vulnerable to manipulation or shutdown. Freenet - -is also very efficient in how it deals with information, adaptively -replicating content in response to demand. For more information, -please read <a href="/whatis.html">What Is Freenet</a>.</p> - -<p><b id="who">Who is behind Freenet?</b><br> -Freenet grew out of a design for an anonymous publication system created by Ian -Clarke while a student at the University of Edinburgh, Scotland. Since -then many other people have contributed towards making Ian's proposal a -reality.</p> - -<p><b id="trust">If authors are anonymous how can you trust information?</b><br> -Cryptographic signing of information allows people to prove -authorship, this technique is frequently used to authenticate -authorship of emails. Moreover, you could actually sign information -while remaining anonymous, thus having an anonymous persona. You could -prove that you wrote different pieces of information on Freenet, without revealing your identity. In this way you could build up an anonymous reputation for reliability.</p> - - -<p><b id="donate-bw">Do I have to donate disk space and bandwidth?</b><br> -You aren't really donating in the sense that you lose the disk -space and the bandwidth; but you aren't really sharing either (at least -not the same way as with filesharing programs). It is more like -pitching in to the common Freenet resource pool.</p> - -<p><b id="leech">I don't have to donate anything when using filesharing application X and I get to leech more.</b><br> -Do you get to do that anonymously? Freenet is designed with anonymity in mind, performance comes second.</p> - - -<p><b id="donate-more-bw">All my friends donate very little space and bandwidth. Why should I donate more?</b><br> -If you are happy with what you are getting then no. But if you want -more you should consider donating more, making your node permanent and -you should ask your friends to do the same.</p> - -<p><b id="donate-lot">If I donate a lot will my experience improve significantly?</b><br> -Your experience will definitely get better, but for a really great -improvement we need more people to start thinking like you. Bandwidth -counts more than diskspace.</p> - -<p><b id="permanent">What do I get from running a permanent node?</b><br> -Don't be frightened from the word permanent. It doesn't mean that once you start your node you're hooked to freenet -for life. And once you see how much better it is to run a permanent -node, you will likely not want to switch back to transient. Your node -will connect itself better to the rest of the network, so requesting -keys will be faster. Since you will be getting a lot of traffic it is -likely that the newly stored material will be closer to you (or even on -your very own node) and you will have faster access to the newest -editions of the freesites or the latest uploads in Frost. Without permanent -nodes, there is no network to request from. By running a permanent node you are -helping the network.<br>Perhaps more importantly, running a permanent node improves -your anonymity. Since all requests coming from a transient node originate on that node, -the node you're connecting to is guaranteed that the request came from you. A permanent -node forwards requests for other nodes too, so the node you connect to can never be sure -if it was actually you requesting or inserting the data in question.</p> - -<p><b id="legal">Is Freenet legal?</b><br> -If by legal you mean not illegal, then yes it is. Of course, -anything can be found to be illegal at some point in the future, and -the law can be an ass sometimes, so we can make no guarantee about Freenet's future legality.</p> - -<p><b id="trouble">Can I get trouble if I run a node?</b><br> -This is related to the previous question. We have done everything -we can to make it extremely difficult for any sane legal system to -justify punishing someone for running a Freenet - -node, and there is little precedent for such action in today's developed -countries. Many legal systems recognise the importance of freedom of -speech, which is Freenet's -core goal. Having said that, there is risk in doing anything that your -government might not agree with; you should make an informed decision -as to whether to take that risk.</p> - -<p><b id="copyright">What about copyright?</b><br> -There are some excellent thoughts on this subject on the <a href="/philosophy.html">Philosophy</a> page.</p> - -<p><b id="childporn">What about child porn, offensive content or terrorism?</b><br> -While most people wish that child pornography and terrorism did not -exist, humanity should not be deprived of their freedom to communicate -just because of how a very small number of people might use that -freedom.</p> - - -<p><b id="offensive">I don't want my node to be used to harbor child porn, offensive content or terrorism. What can I do?</b><br> -The true test of someone who claims to believe in Freedom of Speech -is whether they tolerate speech which they disagree with, or even find -disgusting. If this is not acceptable to you, you should not run a Freenet node. There is another thing you can do. Since content in Freenet -is available as long as its popular, you can help limit the popularity -of whatever information you do not like. For example, if you do not -want a file to spread you should not request it and tell everyone you -know not to request that specific key. However, keep in mind that freenet -is not designed so as to only allow communication between people if a sufficient -number of people agree with the communication. Freenet is designed to make communication -possible even if there's just one publisher and one reader, and this is already reasonably -feasible on the current freenet.</p> - -<p><b id="export">How about encryption export restrictions?</b><br> -The Freenet Project has notified the US authorities (since the files are hosted on SourceForge, -which is on US soil) that it will be exporting crypto. As long as your -country doesn't prohibit the use of encryption you are fine.</p> - - -<p><b id="whatelse">I have nothing to hide and don't need anonymity. Is there anything else Freenet can offer?</b><br> -Yes, in fact even without the anonymity feature Freenet -is very useful because of its unique way it handles content distribution -and information load. In simple terms that means you can publish a -website without worrying about how big the site will be and without -having to put someone elses ad banners on it. While it is unlikely that -freenet sites will ever load faster than regular websites, it does adapt to -sudden surges of visitors (which will often occur when relatively unknown sites -get linked to from a big site) better, and high download speeds for big files -are feasible too. Just don't expect very low latency. -<h2> Technical answers</h2> -<p><b id="how">How do I use this software? I downloaded it, but when I run it there's no GUI.</b><br> -Fred (the Freenet REference Daemon) runs as a daemon, or service, in the background. You normally talk to it with a Freenet client. One of the services that Fred offers is called fproxy, which lets you talk to Freenet with a web browser. Point your web browser to <a href="http://127.0.0.1:8888/">http://127.0.0.1:8888/</a> for the gateway page. Try clicking the various links in the "Bookmarks" panel to reach some of the popular Freenet index sites.</p> - -<p>If you're looking for applications that run on top of Freenet and provide a different interface or functionality, please see the <a href="/tools.html">Tools</a> page.</p> - -<p><b id="search">Is Freenet searchable?</b><br> -No search mechanism has yet been implemented. One of the design -goals was to make it impossible to locate the exact place where any -piece of information is stored. Even a server operator cannot determine -what is stored at his own node. This naturally makes searching very -difficult. Information is currently retrieved by "keys" which should be -guessable, or communicated by some other means.</p> -<p>Proposals for adding safe searching and indexing capabilities to Freenet are being discussed for the future. For example, Freenet documents can contain hyperlinks which could be spidered in the same way as the web -- for example, see <a href="http://www.freenet.org.nz/search/">this spider</a> (WARNING: NOT ANONYMOUS!). Alternately, lists of keywords or other metadata could be circulated through the network. </p> - - -<p><b id="firewall">How do I get freenet working with a Firewall/NAT?</b><br> -<ol> -<!-- :: Most of it isn't necessary anymore:: -<li>Open the <b>freenet.conf</b> or <b>freenet.ini</b> file in a text -editor. On Windows you will normally find this file in <b>c:\Program -Files\Freenet</b>, on Linux you will find it wherever you unpacked the -Freenet tarball. -<li>Find the line containing the <b>node.ipAddressOverride</b> setting and change it -to: -<pre> -node.ipAddressOverride=x.x.x.x -</pre> -...where x.x.x.x is the IP address of your NAT or Firewall (consult the -manual if you are unsure how to determine this). -<li>Find the line containing <b>node.listenPort</b> and take a note of the -number it is set to - do <i>not</i> change it. ---> -<li>Freenet ought to work "out of the box" behind most NATing device... -but following the following steps might be usefull for your node to re-establish its links faster. -<li>Configure your NAT or firewall to forward connections to the -node.listenPort number (You can find it in a file called freenet.ini in the freenet -folder), to the same port on your computer (you will probably need to know your computer's -internal IP address which will often begin with 192.168.x.x). Remember that freenet 0.7 uses UDP. -<li>Configure your NAT or firewall, if necessary, to allow outgoing -connections to any port on any host. Freenet does not use a standard -port number, to make it harder to block. -</ol> -<p><b id="connection-perm">Do I need a permanent connection to run a node?</b><br> -No, but it is preferred. You can run the software and test it from -a "transient" connection (such as provided by typical modem/ISP -setups), but for the network as a whole to be most useful, we will need -as many permanent nodes as possible (most cable modem or DSL setups are -sufficiently "permanent" for this). A later version of Freenet may take better advantage of transient nodes.</p> - -<p><b id="connections">Why does Freenet only download 1 or 2 files at a time?</b><br> -Many browsers limit the number of simultaneous connections to something far too low for efficiently browsing Freenet (since Freenet -pages often have much higher latency than web pages). This can usually -be reconfigured. For example, for Mozilla, create a file with the -following contents called user.js in the directory with prefs.js, or append to an existing user.js:</p> - -<code> -user_pref("network.http.max-connections", 200);<BR> -user_pref("network.http.max-connections-per-server", 100);<BR> -user_pref("network.http.max-persistent-connections-per-server", 10);<BR> -user_pref("network.http.max-persistent-connections-per-proxy", 50);<BR> -</code> -<p>Note that these settings will cause mozilla to use more -connections for all your browsing, which may not be desirable from a -network congestion point of view; volunteers to make mozilla allow this -sort of settings to be set per host would be welcome...</p> - -<p><b id="store-perm">Why can't Freenet store data permanently?</b><BR> -Because we can't find a way to do this without compromising Freenet's -other goals. For example, people often suggest that someone's node could -just never drop data they want to cache permanently. This, however, -won't work because even if the data is still available on their node, -there is no way to ensure that requests for that data will be routed to -that node. We have considered many other ways that Freenet could store data permanently, but they either won't work, or compromise Freenet's core goals of anonymity, and scalability.</p> - - -<p><b id="why-java">Why is Freenet implemented in Java?</b><BR> -Opinions differ about the choice of java for the reference implementation of -freenet (even among the core developers). <a href="/people.html">Ian Clarke</a> and several -other developers are java proponents and the choice for java was made. Even if everybody could be convinced -to switch to a different language reimplementing the current freenet protocol would be quite a big task, and -take up a significant amount of time, while there is only a limited about of developer-time available. Flame wars -on the development list about the language choice aren't welcome, people willing to implement freenet -in other languages however are very much encouraged to try. Don't underestimate the amount of work however. - -<p><b id="fproxy-lan">How do I allow connections to FProxy from other computers?</b><br> -If you want everyone to be able to use your node, go to <a href="http://127.0.0.1:8888/config/">fproxy's configuration page</a> and change the following parameters: -</p><code> -fproxy.bindTo=0.0.0.0<BR> -fproxy.allowedHosts=0.0.0.0<BR> -</code><p> -Of course, this leaves your node wide open, unless you control -access with a firewall of some sort. If you'd prefer to use access -controls within Freenet, then you can use lines like this:</p> -<code> -fproxy.bindTo=0.0.0.0<br> -fproxy.allowedHosts=127.0.0.1,192.168.1.0/24<br> -</code> - -</p><p><b id="fec">What is FEC?</b><br> -FEC stands for Forward Error Correction. When large files are inserted into Freenet, they are split into several small blocks -- this is called a <i>splitfile</i>. -FEC adds redundant check blocks to a splitfile, so that if some of the -blocks fall out of the network or can't be found, you might still be -able to retrieve enough of the file to reconstruct it.</p> - -<p><b id="healing">What is healing?</b><br> -When you download a splitfile that uses FEC (see previous -question), some of the blocks may have become unavailable. Healing -lets you repair the file by recalculating the data for the missing -blocks, and then reinserting them into Freenet.</p> - - -<p><b id="fec-cli">My browser can't save large files from Freenet. Can I retrieve them from the command line?</b><br> -Yes, you can. Use this command: -</p><code> -java -cp freenet.jar freenet.client.cli.Main get KEY filename<BR> -</code><p> -Be sure to specify the filename you want to save the key into. You can use the --help option to learn the other switches, such as healing percentage, HTL for the individual blocks, etc.<p> -You can also use standalone freenet tools like <a href="http://127.0.0.1:8888/SSK at CKesZYUJWn2GMvoif1R4SDbujIgPAgM/fuqid/9//">FUQID</a> (windows only, link only works if you have fproxy running on 127.0.0.1:8888), or <a href="/fcptools.html">FCPTools</a>. - -<p><b id="roadmp">Is there a future roadmap of Freenet?</b><br> -Yes, there is a provisional, unofficial roadmap of Freenet, describing the possible future development of the project <a href="/roadmap.html"> here.</a> - -<p><b id="heisenbug">What is a Heisenbug?</b><br> -The name comes from the Heisenberg Uncertainty Principle of -physics, which states that when measuring both the momentum and the -position of a particle, the product of the uncertainties is a constant. -In Freenet, the Heisenbug refers to a problem which plagued the developers for a long time and was extremely difficult to reproduce.</p> -<p>The current theory is that the Heisenbug is actually a bug in -certain Java virtual machines, particularly IBM's, which causes certain -calculations to return the wrong results; but these results match a -certain pattern. Whenever your node sees this pattern, it reports that -the Heisenbug <i>may</i> have occurred, and writes verbose information -to the logs. Since this pattern can also occur under normal -circumstances (about once in every 65,000 times), a few Heisenbug -reports may be expected. But if you're getting lots of them, -something's wrong.</p><b>Update</b>: It's turned out that the heisenbug was actually a bug in the fred -code, there was a bug in our implementation of <A HREF="http://www.counterpane.com/yarrow.html">Yarrow</A>, -a piece of code should have been synchronized (a java method of locking) but wasn't. If you're still seeing -heisenbugs being reported in your logfile and are running a current version of freenet, please report them -to the mailinglist. - -<p><b id="whatsnew">What's new? Is there a changelog?</b><br> -To see the latest changes of the builds in the stable branch, you can go to the <b><a href="http://cia.navi.cx/stats/project/freenet">changelog</b></a>. - - -<p><b id="backtrace">Why are there so many messages in my logfile with a backtrace attached?</b><br> -Fred (and freenet in general) are still very much in development, and if something goes wrong it's worthwhile -to know exactly what went wrong. - -<p><b id="stabchange">How can I change from stable to unstable?</b><br> -There is no unstable network anymore. - - -<h2>Publisher answers -</h2><p><b id="find">If I publish something in Freenet, how will people find it? Don't they have to know the key I used?</b><br> -Yes, people will have to know what key you used to publish your -information. This means you will have to announce your key in some way.</p> -<p>The most common way to do this is to send a message, containing -your key and brief description of your information, to the author of -one of the existing Freenet sites. Most of the "portal" sites which are linked from the Freenet -web interface (fproxy) have a submission form which lets you send them -messages anonymously. You could also send your key to people by using -the Freenet <a href="/lists.html">mailing lists</a>, or the IRC channel (irc.freenode.net #freenet), or by private e-mail, or by advertising your Freenet - -site on your World Wide Web site. Or if you're feeling extravagant, you -could try skywriting it. (Graffiti is not recommended, for legal -reasons.)</p> - -<p><b id="chk">How do I publish a Content Hash Key (CHK)?</b><br> -A Content Hash Key is based on the actual content contained within -it - and as such, the key will only be known after it has been inserted -into Freenet. To insert a CHK, simply insert it as "CHK@", Freenet will tell you what the actual CHK is once the insertion completes. - -</p><p><b id="update">Can Freenet documents be updated / deleted?</b><br> - -Currently, a document posted to Freenet -with the same name as one already present may actually serve to -propagate the existing document. There is also currently no means of -deleting a document from Freenet. Documents that are never requested are eventually removed through disuse.</p> -<p>One may employ a date-based redirect (DBR), though -- these are -evaluated according to the current time and date. A DBR with a -frequency of a day will point at a new target key every 24 hours. If -this new target is always inserted before the DBR rolls over, the -illusion of having the "same" document that is still updatable is -achieved. If nothing resides at the current target, it appears as if -the content were "deleted".</p> -<p>It should be noted, though, that by not going through the DBR -one can access the target corresponding to any time in the past (as -long as the content has not been "pushed out" to make room) or future -(as long as the content has been already inserted).</p> -<p>The problem is it is not clear how useful they are for documents -that change at irregular intervals. DBR sites, also, may not be -retired, as they will break soon, after future-dates insertions expire.</p> -<p>As of today, probably the best way for most cases is the use of "edition" publishing.</p> - - -<h2> Contribution answers -</h2><p><b id="idea">I have this great idea....</b><br> -Good! First step: read the <a href="/lists.html">mailing list archives</a>. -Odds are good that someone else had the same idea and discussed it with -the group. Either a flaw was found in the idea, or perhaps it was -decided to postpone implementing the idea until later. Some examples of -ideas already discussed are storing information by content hash, key -redirection, signed keys/data, use of UDP, server discovery, URLs, -document versioning, and others. If you don't see the idea discussed in -the archives, by all means bring it up in the appropriate <a href="/lists.html">mailing list</a>.</p> - -<p><b id="contribute">Can I contribute to the Freenet Project?</b><br> -Absolutely. Even if you don't have the time or skills to become a co-developer of the project, you can contribute in other ways:</p> - -<ul><li> Help test Freenet by installing and configuring the server software on your machine. -</li><li> Install the client software on your machine to test retrieving information and publishing your own. -</li><li> Work on the Freenet web site (including the FAQ). -</li><li> Contribute your ideas to the discussion lists. -</li></ul><p>If you are a developer, you can also help by designing and developing other applications to run on Freenet.</p> -<P> People that want to contribute to Freenet in <a href="/openjobs.html">any way</a>, by contributing artwork, new ideas, or even correcting spelling/grammar mistakes or ideas for adding new pages/paragraphs on this site, are also welcome to <a href="mailto:ian at locut.us">email</a>. </p> - -<p><b id="access">How can I access the code and website?</b><br> -We are using a <a href="http://subversion.tigris.org/">subversion</a> server : <a href="https://emu.freenetproject.org/svn/trunk/">Emu</a>. - -<p><b id="devtools">What tools do I need to help develop?</b><br> -To build and deploy the Freenet server, you will need Java tools compatible with Sun's JDK 1.4 or later. To retrieve and update the code at <a href="http://emu.freenetproject.org/svn/trunk/freenet">http://emu.freenetproject.org/svn/trunk/freenet</a>using <a href="http://subversion.tigris.org/">subversion</a>, -(This is not necessary if you only want to download, compile, and run -the server without contributing to its code). To do web development you -will need <i>SSH</i> (or <i>OpenSSH</i>). Further instructions for building and deploying the server are included with the code itself. -Generally speaking, joining our IRC channel is a good idea : #freenet on irc.freenode.net</p> - -<p><b id="freenethelp">Is there a Help Site that goes deeper into the questions newbies may have about Freenet, and where people can contribute too?</b><br> -Yes, an unofficial, more elaborate <a href="http://www.freenethelp.org">Freenet Help Site</a> was created, to go deeper into the questions newbies may have about the usage and inner-workings of Freenet. It's a wiki, thus everybody can contribute too it.</p> - -<p><b id="bugs">Where can I report bugs?</b><br> -You can use our <a href="https://bugs.freenetproject.org/">bug tracking system</a> or send a mail to our <a href="/lists.html">development mailing list</a>.</p> - -<h2> Security answers -</h2><p><b id="attack">Won't attack X break Freenet's anonymity?</b><br> -Short answer: Probably yes.</p> -<p>Long answer:</p> -<p>Freenet does not offer true anonymity in the way that the <i>Mixmaster</i> - -and cypherpunk remailers do. Most of the non-trivial attacks (advanced -traffic analysis, compromising any given majority of the nodes, etc.) -that these were designed to counter would probably be successful in -identifying someone making requests on Freenet.</p> -<p>On Freenet, whatever you do, your identity is still revealed to the first Freenet -Node you talk to, and even if you limit yourself to talk only to trusted -nodes (a feature that will be implemented in the future), they will -have to talk to the rest of the network at some time or another. The -anonymity that Freenet -offers is really just obscurity in the fact that it is hard to prove -that your node wasn't proxying the request for or insert of data on -behalf of somebody else (who might also just have been proxying it).</p> -<p>The problem is that the only way that you can offer true -anonymity is if the client can directly control the routing of data, -and thus encrypt it with a series of keys of the nodes it will pass -through (a la Mixmaster). Freenet's - -dynamic routing cannot offer that, so to attain true anonymity you have -to send the message through an external network of anonymous remailers -first (a future SMTP->Freenet bridge would make this possible). -There are also plans for doing mixmaster-style injection of requests -over the "standard" protocol, however this probably won't be implemented -before version 1.0, which is still some way off.</p> - -<p><b id="flooding">Is Freenet vulnerable to flooding attacks?</b><br> -Short answer: no.</p> - -<p>Long answer:</p> -<p>We don't think so. Aside from protecting freedom of speech, Freenet -is also designed to be an efficient dynamic caching system. If -information is requested a lot from a limited number of nodes, the -nodes that the requests pass through will cache the information, -lowering the load on the network. If information is inserted on a -limited set of nodes and then subsequently requested a lot from a -separate set of nodes, with repetition, the sets will close in on one -another in the network topology until they are "neighbors" and only the -originally targeted nodes are suffering from the attack.</p> -<p>In other words, in order to harm Freenet -with a flood you need to consistently change your point of entry into -the network and continually insert and request new data, and you will -still only increase the workload for the network that is linear to your -own. Given an immense will and capacity greater than the total of the -entire network, it is possible to cripple any public network (including -the Internet itself) with floods, but it is our intention to always -keep Freenet as resistant to this as theoretically possible.</p> - -<p><b id="hash">Why hash keys and encrypt data when a node operator could identify them (the data) anyway if he tried?</b><br> - -Hashing the key and encrypting the data is not meant a method to keep Freenet -Node operators from being able to figure out what type of information is -in their nodes if they really want to (after all, they can just find -the key in the same way as someone who requests the information would) -but rather to keep operators from having to know what information is in -their nodes if they don't want to. This distinction is more a legal one -than a technical one. It is not realistic to expect a node operator to -try to continually collect and/ or guess possible keys and then check -them against the information in his node (even if such an attack is -viable from a security perspective), so a sane society is less likely -to hold an operator liable for such information on the network.</p> - -<p><b id="cancer">What about hostile "cancer" nodes within the network?</b><br> -The existence of malicious nodes within the network is the most -difficult problem that a distributed network must face, and has been -the bane of many previous ideas. Many systems (such as multiplayer -gaming networks) try to avoid malicious nodes by keeping the protocol -and code closed, but we have yet to see an example of that working in -the long run. And anyway it is opposed to Freenet's philosophy.</p> -<p>Freenet -is based on a balance of positive and negative feedback loops that bring -requests for information to a node when it is functioning well, and -keep requests away from it when it is not. The key to avoiding -"cancers" is (as in the body) to make sure these loops can correctly -identify even the most carefully designed malicious node and not keep -sending requests to it. This issue is not fully dealt with by the -current test code, but you can rest assured that a number of possible -solutions (for example allowing clients to vote on the validity of the -information returned on requests, and enforcing that all information be -indexed by a hash of the contents at the lowest level) have been on the -table and discussed for some time now.</p> - - -<p><b id="attackY">What about attack Y?</b><br> -Freenet -is still in testing and there are bound to be attacks found that we have -not dealt with yet. So if you do manage to figure out a truly new kind -of attack, we are interested in hearing about it. Please keep in mind -what Freenet -is and what it is not, however. No single network can offer everybody -everything, and there are security issues (like anonymity, discussed -above) that Freenet, -by it's nature, will never deal with to extent you might wish. If this -upsets you, all of our code is freely available, so you are free to -take as much of it as you like and write your own distributed network -that suits your desires. </p> Deleted: trunk/website/pages/fasd.php =================================================================== --- trunk/website/pages/fasd.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/fasd.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,17 +0,0 @@ -<h2>FASD:A Fault-tolerant, Adaptive, Scalable,Distributed Search Engine </h2> -<br/><h3><a name ="Abstract"> Abstract </a></h3> -<br/>This paper introduces <b>FASD</b>, a fault-tolerant, adaptive, scalable, - -<br/>and distributed search layer designed to augment existing peer-to-peer -<br/>applications. The FASD layer operates as a network of identical nodes -<br/>that collectively pool their storage space to cache 'metadata keys' and -<br/>cooperatively route queries to the nodes most likely to satisfy them. A -<br/>'metadata key' is a list of weighted terms that describe the information -<br/>content of a document in the underlying network. Although completely -<br/>decentralized, FASD's approach is able to efficiently match the recall -<br/>and precision of a centralized search engine. Simulation results -<br/>indicate that latency and bandwidth consumption scale logarithmically -<br/>with the size of a FASD network. - -<br/><h2><a name ="Downloads"> Downloads </a></h2> -<br/><a href="/papers/kronfol_final_thesis.pdf">kronfol_final_thesis.pdf</a>: The thesis describing FASD and simulation results Deleted: trunk/website/pages/fcp.php =================================================================== --- trunk/website/pages/fcp.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/fcp.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,513 +0,0 @@ -<h2>Freenet Client Protocol v1.2</h2> - -<h3>Abstract</h3> -<p class="body">The FreenetClientProtocol (FCP) is designed to abstract the basics - of Freenet so that client developers do not have to track the main Freenet protocol. - FCP should be the bare bones of Freenet - metadata handling is not included - in FCP though an extension to FCP may come about at a later date to avoid writing - metadata handling libraries in many languages.</p> -<h4>Note</h4> -<p class="body">This protocol is never meant to go across a network - only via - the loopback. Nodes should not accept FCP connections from hosts other than - localhost by default.</p> - -<h3>Basics</h3> -<p class="body">By <i>default</i> FCP is port 8481, but any client that uses FCP - should leave this configurable, because this may be changed in the node's configuration - file or by some future FCP revision.</p> -<p class="body">FCP follows the FNP setup for session and presentation.</p> -<p class="body">In the following, numbers are always hex-encoded and fields in - square-brackets are optional.</p> -<p class="body">FCP allows one transaction per connection, after which the connection - is torn down. At the beginning of each connection, the client must send these - 4 bytes:</p> - -<pre>00 00 00 02</pre> - -<p class="body">These are the 2-byte session identifier and the 2-byte presentation - identifier. In the future, different identifiers may be used to allow alternate - syntaxes or encrypted FCP connections from remote hosts, for example.</p> - -<p class="body">After sending the session and presentation identifiers, the client - sends a message to initiate the transaction, then waits for one or more messages - from the node until the transaction is complete. Messages are a series of lines - terminated by LF or CRLF, in this form:</p> - -<pre>Header -[Field1=Value1] -. -. -[FieldN=ValueN] -EndMessage -</pre> - -<h3>Message Summary</h3> - -<p class="body">This is the complete set of client to node messages, with the - possible node to client responses (only the headers are listed).</p> - -<ul> - <li><code>ClientHello</code> - <ul> - <li><code>NodeHello</code></li> - </ul> - </li> - - <li><code>ClientInfo</code> - <ul> - <li><code>NodeInfo</code></li> - </ul> - </li> - - <li><code>ClientGet</code></li> - <ul> - <li><code>URIError</code></li> - <li><code>Restarted</code></li> - <li><code>DataNotFound</code></li> - <li><code>RouteNotFound</code></li> - <li><code>DataFound</code></li> - <li><code>DataChunk</code></li> - </ul> - - <li><code>ClientPut</code></li> - <ul> - <li><code>URIError</code></li> - <li><code>Restarted</code></li> - <li><code>RouteNotFound</code></li> - <li><code>KeyCollision</code></li> - <li><code>Pending</code></li> - <li><code>Success</code></li> - </ul> - - <li><code>GenerateCHK</code></li> - <ul> - <li><code>Success</code></li> - </ul> - - <li><code>GenerateSVKPair</code></li> - <ul> - <li><code>Success</code></li> - </ul> - - <li><code>ClientDelete</code></li> - <ul> - <li><code>Success</code> </li> - </ul> - - <li><code>InvertPrivateKey</code> - <ul> - <li><code>Success</code></li> - </ul> - </li> - - <li><code>GetSize</code> - <ul> - <li><code>Success</code></li> - </ul> - </li> - -</ul> - - - -<p class="body">Additionally, the node may respond to any client message with - a <code>FormatError</code>, meaning the command was not understood, and the - node may respond at any time with a <code>Failed</code>, indicating a fault - in the node itself:</p> - -<b>FormatError</b> - -<pre>(Node -> Client) - -FormatError -[Reason=<descriptive string>] -EndMessage -</pre> - -<b>Failed</b> - -<pre>(Node -> Client) - -Failed -[Reason=<descriptive string>] -EndMessage -</pre> - -<p class="body"><code>Failed</code> and <code>FormatError</code> will not be discussed - in the remainder of this document. Clients should be prepared to handle a <code>Failed</code> - at any time, and a <code>FormatError</code> as the response to any client message. - Either of these messages terminates the transaction and the connection.</p> -<hr> - -<h3>Handshaking</h3> - -<p class="body">This is totally optional for the client. Note that -this counts as a transaction and thus the connection is torn down -afterwards.</p> - -<b>ClientHello</b> - -<pre>(Client -> Node) - -ClientHello -EndMessage -</pre> - -<p class="body">In response the node sends the following message:</p> - -<b>NodeHello</b> - -<pre>(Node -> Client) - -NodeHello -Protocol=<number: protocol version number. Currently 1.2> -Node=<string: Description of the node> -[HighestSeenBuild=<number: Highest build seen in datastore>] -MaxFileSize=<hex number: largest data size node will allow> -EndMessage -</pre> - -<p class="body">The optional <code>HighestSeenBuild</code> will only be present - if a build higher than the node's current build is seen in the datastore. Client - implementors are advised, in this circumstance, to notify the user that they - should upgrade to the latest build of Freenet. The user should have the ability - to turn off this warning.</p> -<hr> - -<h3>Querying the Node's Status </h3> - -<b>ClientInfo</b> - -<p class="body"></p> - -<pre>(Client -> Node) - -ClientInfo -EndMessage -</pre> - -<p class="body">In response the node sends the following message:</p> - -<b>NodeInfo</b> - -<pre>(Node -> Client) - -NodeInfo -Architecture=<string> -OperatingSystem=<string: free form> -OperatingSystemVersion=<string> -Processors=<hex number> -JavaVendor=<string: free form> -JavaName=<string: free form> -JavaVersion=<string> -AllocatedMemory=<number> -FreeMemory=<hex number> -DatastoreMax=<hex number> -DatastoreUsed=<hex number> -DatastoreFree=<hex number> -MaxFileSize=<hex number> -MostRecentTimestamp=<hex number> -LeastRecentTimestamp=<hex number> -RoutingTime=<hex number> (0) -AvailableThreads=<hex number> -ActiveJobs=<hex number> -NodePort=<hex number> -NodeAddress=<string> -EstimatedLoad=<hex number> -EstimatedRateLimitingLoad=<hex number> -IsTransient=<true|false> -EndMessage -</pre> - -<p> Note: This list was verified by running a client and seeing -the fields and their values; older versions of this document -may have listed different fields.</p> - -<hr> - -<h3>Requesting</h3> - -<b>ClientGet</b> - -<pre>(Client -> Node) - -ClientGet -RemoveLocalKey=<true|false> -URI=<string: fully specified URI, such as freenet:KSK at gpl.txt> -HopsToLive=<number: hops to live> -EndMessage -</pre> - -<p class="body">The client is now in the <i>waiting</i> state. The node may return - one of the following messages:</p> - -<ul class="body"> -<li><code>DataFound</code>: The data has been found.</li> -<li><code>DataNotFound</code>: The transaction is terminated due to not being able to find data.</li> -<li><code>RouteNotFound</code>: The transaction is terminated due to not being able to find a route.</li> -<li><code>Restarted</code>: The client should continue waiting.</li> -<li><code>URIError</code>: Invalid Freenet URL. The transaction is terminated.</li> -</ul> - -<b>DataFound</b> - -<pre>(Node -> Client) - -DataFound -DataLength=<number: number of bytes of metadata + data> -[MetadataLength=<number: default = 0, number of bytes of metadata>] -[Timeout=<number: number of seconds by which the node will have a response>] -EndMessage -</pre> - -<p>After a <code>DataFound</code> message the data itself is sent in chunks:</p> - -<b>DataChunk</b> - -<pre>(Node -> Client) - -DataChunk -Length=<number: number of bytes in trailing field> -Data -<@Length bytes of data> -</pre> - -<p class="body">At any time when the full payload of data has not been - sent (even before the <code>DataFound</code> message), a - <code>Restarted</code> message may be sent. This means that the data - failed to verify and the transfer will be restarted. The client - should disregard all data it has recieved since it made its initial - request and return to waiting for a <code>DataFound</code> message - to begin the data transfer again. Otherwise, when the final - <code>DataChunk</code> is received, the transaction is complete and - the connection dies.</p> - -<p>Be aware that there may be a <code>DataChunk</code> that contains both meta and key data. -In this case, care is needed to extract the metadata first, then the keydata before -retrieving another <code>DataChunk</code> or the operation will appear to hang.</p> - -<b>RouteNotFound</b> - -<pre>(Node -> Client) - -RouteNotFound -Unreachable=<number: default = 0, nodes> -Restarted=<number: default = 0, nodes> -Rejected=<number: default = 0, nodes> -BackedOff=<number: default = 0, nodes> -EndMessage -</pre> - -<p> <code>RouteNotFound</code> carries some extra fields as above, the -other errors (<code>DataNotFound</code> and <code>URIError</code>) -simply terminate the connection. In a successful Request, a -<code>DataFound</code> message is returned:</p> - -<hr> - -<h3>Inserting</h3> - -<b>ClientPut</b> - -<pre>(Client -> Node) - -ClientPut -RemoveLocalKey=<true|false> -HopsToLive=<number: hops to live> -URI=<string: fully specified URI, such as freenet:KSK at gpl.txt> -DataLength=<number: number of bytes of metadata + data> -[MetadataLength=<number: default = 0, number of bytes of metadata>] -Data -<@DataLength number of bytes> -</pre> - -<p class="body">If the client is inserting a CHK, the URI may be abbreviated as - just CHK at . In this case, the node will calculate the CHK. The node must get - all of the trailing field before it can start the insert into Freenet. The node - may reply with one of the following messages:</p> - -<ul class="body"> - <li><code>URIError</code>: Invalid Freenet URL. The transaction is terminated.</li> - - <li><code>Restarted</code>: The client should continue waiting.</li> - - <li><code>RouteNotFound</code>: The transaction is terminated due to not being - able to find a route.</li> - - <li><code>KeyCollision</code>: The transaction is terminated due to a document - with the same key already existing in Freenet. This message contains a URI - field with the Freenet URI of the document.</li> - - <li><code>SizeError</code>: The transaction is terminated due to the data being - too large for the key type; all non-CHK keys have a limit of 32 kB of data. -</li> -</ul> - -<p class="body">During an insertion, multiple <code>Pending</code> messages may be returned. -These messages signal that the data is being successfully inserted, but insertion -is not complete, and the node has not received a <code>StoreData</code> message -yet:</p> - -<b>Pending</b> - -<pre>(Node -> Client) - -Pending -URI=<string: fully specified URI, such as freenet:KSK at gpl.txt> -Timeout=<number: in milliseconds> -[PublicKey=<string: public key>] -[PrivateKey=<string: private key>] -EndMessage -</pre> - -<p class="body">When the node receives a <code>StoreData</code> message (and thus - insertion is complete), a <code>Success</code> message is returned with the - Freenet URI of the new document and possibly a private/public keypair, if the - inserted document was an SVK. See the section on key generation about this.</p> - -<b>Success</b> - -<pre>(Node -> Client) - -Success -URI=<string: fully specified URI, such as freenet:KSK at gpl.txt> -[PublicKey=<string: public key>] -[PrivateKey=<string: private key>] -EndMessage -</pre> -<hr> -<h3> Key Operations </h3> - -<p class="body">These messages allow a client to generate keys. This does not - affect Freenet at all - the calculations are carried out at the node.</p> - -<p class="body">Key generation requests are done via a -<code>GenerateKey</code> message. Either a CHK or an SVK keypair can -be generated:</p> - -<b>GenerateCHK</b> - -<pre>(Client -> Node) - -GenerateCHK -DataLength=number: number of bytes of data + metadata> -[MetadataLength=<number: default = 0, number of bytes of metadata>] -Data -<@DataLength number of bytes> -</pre> - -<p class="body">The node calculates the CHK as it would do if inserting, but instead - returns it. This completes the transaction:</p> - -<b>Success</b> - -<pre>(Node -> Client) - -Success -URI=<string: fully specified URI, such as freenet:KSK at gpl.txt> -EndMessage -</pre> - -<b>GenerateSVKPair</b> -<p class="body">The format for generating SVKs is very similar but generates a - pair of keys (public and private) which are independent of any data. This is - generally used for setting up SSKs:</p> -<pre>(Client -> Node) - -GenerateSVKPair -EndMessage -</pre> - -<p class="body">The node generates a key pair and returns:</p> - -<b>Success</b> - -<pre>(Node -> Client) - -Success -PublicKey=<string: public Freenet key> -PrivateKey=<string: private Freenet key> -CryptoKey=<string: entropy for encryption> -EndMessage -</pre> - -<p>The public and private keys are returned as Freenet-base64 encoded strings. - These can be used to construct URIs for inserting SSKs:</p> - -<pre>(insert) freenet:SSK@<PrivateKey>,<CryptoKey>/<name> -</pre> - -<p> Note: the public key is not sufficient to request SSKs as the -private key is for inserting. Attempting to use the public key as -follows: </p> - -<pre>(request) freenet:SSK@<PublicKey>,<CryptoKey>/<name> -</pre> - -<p> will result in an invalid key error; there are bits added to the -end of the public key that are necessary for generating a proper -request. The only way to be sure that your request key is correct is -to use the return value of <code>GenerateCHK</code> (for CHKs) or the -<code>Pending</code>/<code>Success</code> response on insert.</p> - -<p> The use of CryptoKey in URIs is optional, but it will protect your -data from being decrypted by a dictionary attack against the name part -of the key. </p> - -<b>InvertPrivateKey</b> - -<pre>(Client -> Node) - -InvertPrivateKey -Private=<PrivateKey> -EndMessage -</pre> - -<b>Success</b> - -<pre>(Node -> Client) - -Success -Public=<PublicKey> -EndMessage -</pre> - -<p class="body"> -<code>Private</code> can be either an insert URI (must start with -freenet:SSK@) or a raw private key (ie the private value you get back -from GenerateSVKPair).</p> - -<p class="body">A <code>Success</code> message is sent on success with -the <code>Public</code> field set to the public key.</p> - -<b> GetSize </b> - -<pre>(Client -> Node) - -GetSize -URI=<string: fully specified URI, such as freenet:KSK at gpl.txt> -EndMessage -</pre> - -<b>Success</b> - -<pre>(Node -> Client) - -Success -Length=<number: size of document rounded up to the nearest power of two.< -EndMessage -</pre> - -<p class="body">This command is useful for working with splitfiles, so -that one can pre-allocate a buffer for the entire file and know where -each part of the splitfile goes inside the buffer, knowing their -lengths. -</p> - -<p class="body">One can implement an equivalent function to this for -just CHKs by base64 decoding the CHK routing key (the part before the -',') and inspecting the 3rd to last byte; it's the log2 size of the -entire document. Be careful with your base64 decoder, freenet uses a -different table than the standard one.</p> - -<hr> Deleted: trunk/website/pages/fcptools.php =================================================================== --- trunk/website/pages/fcptools.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/fcptools.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,186 +0,0 @@ - <h1>Freenet Client Protocol Tools (FCPTools)</h1> - - <p>First check the documentation for <a href="/FCPlib.html">FCPLib</a>. Everything - that applies to FCPLib also applies to FCPTools.</p> - - <h2>What are the FCPTools?</h2> - - <p>The FCPTools are command-line driven programs for inserting and retrieving - files with Freenet. Included separately is <a href="/FCPlib.html">FCPLib</a>, the - Freenet Client Protocol Library. The FCPTools are linked against FCPLib and - serve as nice examples for using the library in Freenet client programs. - Everything is released under the GNU General Public License.</p> - <p>The command-line tools are:</p> - <ul> - <li><b>fcpput</b>: Inserts single files and splitfiles into Freenet. There is - an option for generating a public and private keypair as well.</li> - <li><b>fcpget</b>: Retrieves single files (no splitfiles) from Freenet (you - can of course retrieve the key in rawmode and manually follow the Blockmap - data).</li> - - <li><b>fcpx</b>: A general informational utility.</li> - </ul> - <p>There is currently unmaintained code for fcpputsite which needs to be - rewritten to use FCPLib exclusively. I believe that a shell script written - around fcpput could work nicely as a short term substitute.</p> - <h3>Status of Development</h3> - <p>The FCPTools (and FCPLib) are works in progress, but beginning to take solid form in - preparation for a 0.9 release, which will not include a command-line fcpputsite.</p> - <p>The version in SVN is 0.4.9 and works well for what it claims to support. - Admittedly there are missing features here and there, and these will get most - of my attention in the near future. For example:</p> - - <ul> - <li>Metadata support is spotty, so not yet - supported. Further, where metadata is actually stored needs to change - (metadata stored in CHKs). - - <li>FEC inserts supported, but not FEC retrieves. - - <li>Multithreading not supported, nor even desirable for the library itself. - Any scheduler should be built on <i>top</i> of FCPLib.</li> -</ul> - <p>Some things have been improved:</p> - <ul> - <li>Thoroughly checked and fixed most, if not all memory leaks. This should - allow FCPLib to loaded into RAM for extended periods of time without - problems.</li> - - <li>Insert and retrieve logic is not redundant; it is shared. For example, - the same code that inserts data into Freenet for splitfiles is used later to - insert metadata, meaning each operation works equally well within the chain - of commands.</li> - <li>Metadata is not supported, however it is processed when required (for - example, retrieving a key containing a Redirect target).</li> - <li>All the documented functions for inserting and retrieving can be used - more than once on a handle without having to close the handle and re-open it.</li> - <li>The functions for inserting and retrieving single files is identical for - splitfiles.</li> - </ul> - <h3>Contact Information</h3> - - <p>All Freenet and FCPLib related email send to <SCRIPT language="javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%4a%61%79%20%4f%6c%69%76%65%72%69%20%3c%69%6c%6e%65%72%6f%40%67%6d%78%2e%6e%65%74%3e%22%3e%4a%61%79%20%4f%6c%69%76%65%72%69%3c%2f%61%3e%27%29%3b'))</SCRIPT>. I am currently subscribed to - Freenet-dev, Freenet-tech, and Freenet-support. On the Freenode IRC network I can be found in #freenet under the registered nick - "Jay".</p> - - <h2>Source Code</h2> - <p>There are two options for obtaining the source:</p> - <h3>SVN</h3> - <p>To be on the - bleeding edge, access the source from SVN as follows (all on one line):</p> - - <p><code>svn<br> - co https://emu.freenetproject.org/svn/trunk/apps/fcptools/<br> -</code></p> - <p>This will download the fcptools source from SVN HEAD into the directory - fcptools. From there the normal GNU/Make commands will build the source - (check INSTALL.* and README.* under the fcptools directory for all the - details).</p> - <p><a href="https://emu.freenetproject.org/svn/trunk/apps/fcptools/"> - Follow this link</a> to browse the code.</p> - - <h2>Using FCPTools</h2> - <p>Some common parameters are used by both fcpget and fcpput, but for the sake - of completeness everything is listed for all 3 programs.</p> - <h3>FCP-Put Usage:</h3> - -<pre>fcpput [-n hostname] [-p port] [-l hops to live] [-s] [-D] - [-v verbosity] [-g] [-V] [-h] freenet_uri [FILE]... - -Options: - - -n, --address host Freenet node address - -p, --port num Freenet node port - -l, --htl num Hops to live - - -a, --retry num Number of retries after a timeout - -s, --stdin Read key data from stdin - -D, --delete-local Delete key from local datastore on insert - - -v, --verbosity num Verbosity of log messages (default 2) - 0=silent, 1=critical, 2=normal, - 3=verbose, 4=debug - -f, --logfile file Full pathname for the output log file - (default stdout) - - -g, --genkeys Generate a keypair then exit - - -V, --version Output version information and exit - -h, --help Display this help and exit - - uri URI to give newly inserted key; variations: - CHK@ - KSK@<routing key> - - SSK@<private key>[/<docname>] - - file Read key data from local file - (cannot be used with --stdin) - -Examples: - -To insert a Content Hash Key (CHK) with file "gpl.txt": - fcpput CHK@ /home/hapi/gpl.txt - -To insert a Keyword Signed Key (KSK) with file "gpl.txt" against a -freenet node at address raven.cp.net with hops to live 10: - fcpput --htl 10 --address raven.cp.net KSK at gpl.txt gpl.txt - -To insert a Subspace Signed Key (SSK) with file "gpl.txt": - fcpput SSK at LNlEaG7L24af-OH~CKmyPOvJ~EM/ gpl.txt - -To insert an SSK within named document "licenses": - fcpput SSK at LNlEaG7L24af-OH~CKmyPOvJ~EM/licenses gpl.txt</pre> - -<h3>FCP-GET Usage:</h3> - -<pre>fcpget [-n hostname] [-p port] [-l hops to live] [-s] [-S] - [-v verbosity] [-V] [-h] freenet_uri [FILE] - -Options: - - -n, --address host Freenet node address - -p, --port num Freenet node port - -l, --htl num Hops to live - - -a, --retry num Number of retries after a timeout - -s, --stdout Write key data to stdout - -S, --skip-local Skip key in local datastore on retrieve - -v, --verbosity num Verbosity of log messages (default 2) - 0=silent, 1=critical, 2=normal, - 3=verbose, 4=debug - -f, --logfile file Full pathname for the output log file - (default stdout) - - -V, --version Output version information and exit - -h, --help Display this help and exit - - uri URI to retrieve; variations: - CHK@ - KSK@<routing key> - SSK@<private key>[/<docname>] - - file Write key data to local file - (cannot be used with --stdout)</pre> - - <h3>FCP-X Usage:</h3> - -<pre>fcpx [-n hostname] [-p port] [-v verbosity] [-f filename] COMMAND - -COMMAND is one of the following FCP commands: - - hello - info - -Options: - - -n, --address host Freenet node address - -p, --port num Freenet node port - - -v, --verbosity num Verbosity of log messages (default 2) - 0=silent, 1=critical, 2=normal, - 3=verbose, 4=debug - -f, --logfile file Full pathname for the output log file - (default stdout)</pre> - -<p><h1>*</h1></p> Deleted: trunk/website/pages/fec.php =================================================================== --- trunk/website/pages/fec.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/fec.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,279 +0,0 @@ - -<PRE>FCP FEC Proposal rev. 1.0 -<A HREF="mailto:giannijohansson at attbi.com">giannijohansson at attbi.com</A> 20020912 - -I. INTRODUCTION: - -This proposal presents a set of new FCP commands that can be used to -encode and decode files using forward error correction (FEC). - -FEC is a way of encoding packetized data files with extra error -recovery information which can be used to reconstruct lost packets. -In this document I will refer to the packets containing data as "data -blocks" and those containing error recovery information as "check -blocks". - -One of the objectives of this design is to separate FEC encoding and -decoding from inserting and retrieving the data and check blocks -to/from Freenet. By separating encoding and decoding from insertion -and retrieval I sidestep the problem of having to hold FCP connections -open while waiting for large amounts of data to be fetched from / -inserted into Freenet. - -For a given maximum block size, some FEC algorithms can only -practically handle files up to a certain maximum size. The design -uses segmentation to handle this case. Large files are divided into -smaller segments and FEC is only done on a per segment basis. This -compromise provides a least limited redundancy for large files. - -II. Assumptions -This proposal doesn't specify any particular FEC algorithm. -However the following assumptions are implicit in the design: - -A. For a given segment with k data blocks and n - k check blocks, it -must be possible to decode all k data blocks from any k of n data or -check blocks. - -B. Encoder and decoder implementations must be completely specified by -an implementation name and a file length. No other parameters can be -required to instantiate the encoder or decoder. - -C. Within a segment all data blocks must be the same size and all -check blocks must be the same size. The check block and data block -sizes are not required to be the same however. Smaller trailing -blocks must be zero padded to the required length. - -D. The encoder may ask for extra trailing data blocks. These extra -blocks must contain zeros. - -II. Proposed FCP FEC commands - -convention: All numbers are hexadecimal - -A. Helper messages, SegmentHeader and BlockMap - -A SegmentHeader message contains all the information necessary to FEC -encode or decode a segment of a file. SegmentHeaders may contain FEC -implementation specific fields. They are guaranteed to contain the -documented fields given in the example SegmentHeader -message below: - -SegmentHeader -FECAlgorithm=OnionFEC_a_1_2 // The FEC implementation name -FileLength=170000 // Total file length -Offset=0 // Offset from the start of the file -BlockCount=6 // Number of data blocks -BlockSize=40000 // Data block size -CheckBlockCount=3 // Number of check blocks -CheckBlockSize=3 // Check block size -Segments=1 // Total number of segments -SegmentNum=0 // Index of the current segment -BlocksRequired=6 // Blocks required to decode this segment -EndMessage - -Client code should not rely on any undocumented fields. - -BlockMap messages are used to list the CHKs of the data and check -blocks for a segment. - -Here's an example: - -BlockMap -Block.0=freenet:CHK at p2ISvZPkCwbY62xciJb~KrsOCTsSAwI,jGonMeCCz1GCHde5bc1t~w -Block.1=freenet:CHK at 1z8CubDNzLEfNfuTYM4NVJAUxU4SAwI,5cxWki4YzWyKP0s3g9~Vow -Block.2=freenet:CHK@~VW7XskmHcJMFlmG6l2c7jkTOnkSAwI,Il2ztTbQImZvVlsnuDq-8Q -Block.3=freenet:CHK at A-qK8GWofXd9JOxb4fHfVMHAUawSAwI,2D5~Mm~MjAfup3edGXy6Eg -Block.4=freenet:CHK at r-FhUu444LxUIUGi5BMuEVGM4nQSAwI,J7HpLvPscLyW3Sc6Nq2S5g -Check.0=freenet:CHK at rLdCwOXO7PAv6BDpm21ThdIwmnkSAwI,4ZX2inJ7gg0EectTxPYRSg -Check.1=freenet:CHK at EjEg1UHWsAfHHMQmRbxe2ToY0RQSAwI,xjJCPsCxpnw9lyNI2VBRGA -EndMessage - -B. FECSegmentFile -The FECSegmentFile message is used to generate the segment headers -necessary to encode a file of a given length with a specified FEC -algorithm. - -FECSegmentFile -AlgoName=OnionFEC_a_1_2 -FileLength=ABC123 -EndMessage - -If this command is successful one or more SegmentHeader messages are sent in -order -of ascending SegmentNumber. - -The client can detect when the last segment has been sent by checking the -SegmentNumber -and Segments field of each received SegmentHeader. - -On failure a Failed message is sent. - -C. FECEncodeSegment -The FECEncodeSegment message is used to create check blocks for a -segment of a file. The RequestedList field contains a comma delimited -list of the requested check blocks. If the list is empty or omitted completely -all the check blocks are sent. - -The SegmentHeader for the requested segment must sent as data in the -trailing field of the FECEncodeSegment message, preceding the raw -segment data to encode. - -FECEncodeSegment -[RequestedList=0,A,F] -DataLength=<SegmentHeader length> + <segment length> -Data - -< SegmentHeader > -< raw data > - -If the encode request is successful, the server sends a BlocksEncoded -confirmation message, followed by DataChunk messages for the encoded -blocks. Check blocks are sent in order of ascending index. - -e.g: - -BlocksEncoded -BlockCount=3 -BlockSize=40000 -EndMessage - -DataChunk -... -(3 * 40000 = 0xC0000 worth of DataChunk messages) -... - -If the requests fails a Failed message is sent. - - -Note: -The total segment size -(SegmentHeader.BlockSize * SegmentHeader.BlockCount) can exceed the -length of the data present in the last segment. In this case partial -blocks should be zero padded and extra zero filled blocks should -be sent if requested. - -D. FECDecodeSegment -The FECDecodeSegment message is used to decode missing data blocks for -a segment of a file. The RequestedList field contains a comma -delimited list of the requested data blocks. Similarly, BlockList and -CheckList contain the indices of the data blocks and check blocks that -are being sent to decode from. All index lists must be in ascending -order. - -The SegmentHeader for the segment must sent as data in the trailing -field of the FECDecodeSegment message preceding the blocks to -decode from. - -FECDecodeSegment -BlockList=0,2,3,5,6 -CheckList=9,c -RequestedList=1,4 -DataLength=<SegmentHeader length> + <total length of data and check blocks> -Data -< SegmentHeader > -< raw data blocks in order of index > -< raw check blocks in order of index > - -If the decode request is successful, the server sends a BlocksDecoded -confirmation message, followed by DataChunk messages for the decoded -blocks. The decoded data blocks are sent in order of ascending index. - -e.g: - -BlocksDecoded -BlockCount=2 -BlockSize=40000 -DataLength -EndMessage - -DataChunk -... -(2 * 40000 = 0x80000 worth of DataChunk messages) -... - -If the requests fails a Failed message is sent. - -E. FECSegmentSplitFile - -The FECSegmentSplitFile command generates a list of SegmentHeaders and -BlockMaps from SplitFile metadata. The SplitFile metadata should -be sent as data in its trailing field. - -e.g.: -FECSegmentSplitFile -DataLength=<SplitFile metadata length> -Data -<SplitFile metadata> - -If successful the FCP server sends back one or more pairs of -SegmentHeader and BlockMap messages in order of ascending segment number. - -The client can tell how many pairs are coming by inspecting the Segments -field in the first SegmentHeader. - -On failure a Failed message is sent. - -F. FECMakeMetadata -The FECMakeMetadata command creates a metadata for a SplitFile from -a list of SegmentHeader BlockMap pairs sent as data in it's trailing field. -The list must be in order of ascending segment number. - -FECMakeMetadata -Description=file -MimeType=text/plain -DataLength=<total length of all SegmentHeaders and BlockMaps> -Data -<SegmentHeader, BlockMap pairs> - -III. Usage cases -Here's a brief description of how these messages are used to -encode and decode files. - -A. Encoding -The client code sends a FECSegmentFile with the file's length and -saves the returned SegmentHeaders. - -For each segment, it calls FECEncodeSegment with the segment's data -blocks and saves the returned check blocks. - -It then inserts the data and check blocks into Freenet using the -existing ClientPut command, and saves the resulting CHK URIs. - -After the data blocks and check blocks for all segments have been -inserted, the client code sends a FECMakeMetadata command with the -SegmentHeaders and BlockMaps listing the inserted blocks. It saves -the SplitFile metadata and inserts it into Freenet. - -Done. - -A. Decoding - -The client code sends a FECSegmentSplitFile with the SplitFile metadata -and saves the SegmentHeader,BlockMap pairs. - -For each segment, it uses the CHK lists int the BlockMap to -downloads the minimum number of data and check blocks -as given by SegmentHeader.BlocksRequired. It then calls FECDecodeSegment to -decode the missing data blocks. - -Finally, it concatinates the data blocks together, possibly ignoring trailing -padding blocks. - -Done. - -III. Changes to SplitFile metadata format. - -0) Deprecate the BlockSize field, since check blocks are not necessarily the -same size as data blocks and blocks may be different sizes across segments. - -1) Add an AlgoName field. This is the name for the decoder and encoder -implementation, -that can be used to decode or re-encode the file. This replaces decoder.name -and decoder.encoder -in the previous implementation. - -2) Remove the decoder FieldSet. - -* SplitFile.Graph is currently not being used and is not implemented. - -</PRE> Deleted: trunk/website/pages/fphowto.php =================================================================== --- trunk/website/pages/fphowto.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/fphowto.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,207 +0,0 @@ -<span style='color:blue'><h2>GnuPlot with FreeNet HOWTO</h2><p></span> - -Plotting data with GnuPlot is both fun and easy! Using it for Freenet -development... well... the harder part is collecting all the numbers -you want to chart. Graphing with gnuplot is the easy part. -<span style="font-style: italic;"><br> -<br> -<span style="font-weight: bold;">"a picture says a thousand words..."</span></span> - but sometimes, it may only indicate 993 words.<br> -<br> -<span style="font-style: italic; font-weight: bold;">"Hey, Freenet </span><span - style="font-style: italic; font-weight: bold;"><span - style="font-style: italic; font-weight: bold;">already </span></span><span - style="font-style: italic; font-weight: bold;">has graphing -capabilities built in!"<br> -</span>Very true, and they should be used as much as possible. However, -when it is desirable to produce a chart containing two or more -variables, gnuplot may offer a preferable alternative. The other -solution is to stack multiple browser windows vertically, and chart one -variable per window. Also, by spooling the data (and only the data) you -want to examine into a separate datafile, freenet does not have to -retain large quantities of measurements. Specifically, it is convenient -to chart many hours of data that are captured at a one minute -resolution, in order to identify trends or spot relationships. Also of -interest - developers can aggregate measurements that are written to -Freenet's log file, using Perl or {grep,awk,sed} to cut and paste a -concise temporary datafile. It is extremely simple from there to graph -columnar data files with Gnuplot, with short typed commands or even -scripted -gnuplot operations. And Gnuplot has native support for a time dataype, -which is often a desired parameter for many purposes.<br> -<br> -<span style="font-style: italic; font-weight: bold;"></span>This HOWTO -applies to both Windows(tm) and UNIX/Linux platforms. MS Excel could be -used instead of Gnuplot for charting the data we will collect, but this -HOWTO specifically describes the use of Gnuplot. <br> -<br> -<h5 style="color: rgb(51, 153, 153); font-family: sans-serif;"><big><span - style="font-weight: bold;">First -task</span></big></h5> -<ul> - <li>Make sure Perl is installed. </li> -</ul> -<div style="margin-left: 40px;">Windows users, visit <a - href="http://www.perl.com/download.csp">www.perl.com</a> , retrieve -and install the "ActiveState" perl binary. Test that you can run Perl -from the command line (add it to your system PATH).<br> -<br> -UNIX / Linux users, get a clue ! Use your distribution's perl -installation, or build Perl from source.<br> -</div> -<br> -<ul> - <li>Also, <a href="http://lwp.linpro.no/lwp/">the LWP (libwww-Perl) -module</a> is required. </li> -</ul> -<div style="margin-left: 40px;"> -Windows users: <br> - You luck out. ActiveState's binary distribution of Perl 5.8.3 -includes the LWP module, already installed for you.<br> -<br> -UNIX / Linux users:<br> -</div> -<div style="margin-left: 40px;"> As the root user, run <span - style="font-style: italic;">perl -MCPAN -e shell</span> and then -just type in <span style="font-style: italic;">install LWP </span>. -This should perform the installation automatically for you. Of course, -it can be manually retrieved and installed from the link above ( if you -can figure out how to ).<br> -<br> -</div> -You now have HTTP / URL "screen-scraping" ability (without the screen). -Rejoice! To test it out, download and run avg-mri.pl.<br> -<br> -blackstar> <span style="font-style: italic;">perl avg-mri.pl<br> -</span><br> -Average MRI from routes = 234387ms<br> -Instant outbound qph capacity = 1059<br> -<br> -<br> -next, download and run the <a href="dump-mri.pl">dump-mri.pl</a> Perl -script like so: <br> -<br> -blackstar> <span style="font-style: italic;">perl dump-mri.pl<br> -</span><br> -This should produce a sorted list of the mRI values for the set of -connected Freenet routes. <br> -<br> -<h5 style="color: rgb(51, 153, 153); font-family: sans-serif;"><big>Second -task</big></h5> -<ul> - <li>Obtain and install <a - href="http://www.gnuplot.info/download.html">GnuPlot</a></li> -</ul> -<div style="margin-left: 40px;">UNIX / Linux users: <br> -Download gnuplot-4.0.0.tar.gz , configure, make, and install the -package. Or see if it is available for your distribution. You may wish -to specify --with-gd and --without-mouse to the configure script.<br> -<br> -Windows users: <br> -Download gp400win32.zip , unzip to C:\ . This should create -C:\gnuplot . You may wish to add C:\gnuplot\bin to your system PATH.<br> -</div> -<br> -<ul> - <li>Test GnuPlot</li> -</ul> -<div style="margin-left: 40px;">Run gnuplot from the command line. On -UNIX run <span style="font-style: italic;">gnuplot</span>, on Windows -run <span style="font-style: italic;">C:\gnuplot\bin\wgnuplot</span> -(or add wgnuplot to your path).<br> -GnuPlot will start in interactive mode. At the <span - style="font-weight: bold;">gnuplot></span> prompt, type in <span - style="font-style: italic;">f(x)=sin(x)</span> and hit enter. Then -type in <span style="font-style: italic;">plot f(x) </span>. If this -works, you are all set. For Freenet, we will only be plotting data from -a datafile. Enter the command <span style="font-style: italic;">quit</span> -to exit gnuplot. <br> -</div> -<br> -Now we will capture the data and graph the distribution of mRI values -like so:<span style="font-style: italic;"><br> -</span><br> -blackstar> <span style="font-style: italic;">perl dump-mri.pl > -mris.txt</span><br> -blackstar> <span style="font-style: italic;">gnuplot</span> -(or <span style="font-style: italic;">wgnuplot </span>for windows)<br> -<br> -(then, in the interactive gnuplot window, enter...)<br> -gnuplot> <span style="font-style: italic;">plot 'mris.txt' with -impulses</span><br> -<br> -This should produce a histogram of mRI values for the available freenet -routes ! Now you can <span style="text-decoration: underline;">see</span> -if one route is eating all your requests, or -if they are being distributed evenly.<br> -<span style="font-style: italic;"></span><br> -<div style="text-align: center;"> -<h3>Bringing It All Together</h3> -</div> -Now that you have Perl and Gnuplot installed, you can begin collecting -data from Freenet. Download collect.pl, the -Perl script that will log all the relevant -data to a file. Most people will access their freenet software at <span - style="font-weight: bold;">http://localhost:8888</span>. If you have -altered the default settings, or wish to run collect from a different -host, call this file up in an editor, and correct the <span - style="font-weight: bold;">$fproxy</span> variable. When running, once -per minute, this script will retrieve 5 small web -pages from freenet's fproxy process. A datafile is appended to each -time this script gathers the desired data. It is suggested that you -start this -script at about the same time as you launch the freenet process, in -order to gather all the data for a complete freenet session. If using -UNIX, you may wish to alter your start-freenet.sh script, adding one -line at the end to read <span style="font-weight: bold;">perl -collect.pl</span>. After you -have gathered a full session's worth of data, delete (or rename) the -data file, so as to avoid collecting excessive amounts of data on the -next run. The data can be plotted with GnuPlot at any time, while the -collection process is running. It may be helpful to integrate the -management of datafiles into the start-freenet.sh and stop-freenet.sh -scripts on UNIX platforms.<br> -<br> -The data fields produced by running this script include:<br> -<span style="font-family: monospace;"><br> -<time> </span><span style="font-family: monospace;"><outbound -bandwidth> </span><span style="font-family: monospace;"><inbound -bandwidth> </span><span style="font-family: monospace;"><#routes> -</span><span style="font-family: monospace;"><#connections> </span><span - style="font-family: monospace;"><#outbound transfers> </span><span - style="font-family: monospace;"><#inbound -transfers></span><span style="font-family: monospace;"> <queries -per minute></span><span style="font-family: monospace;"> </span><span - style="font-family: monospace;"></span><span - style="font-family: monospace;"> </span><span - style="font-family: monospace;"><#backed off routes> <average -mRI for all routes></span><br style="font-family: monospace;"> -<br> -To see all the data, download <a href="p1.gp">p1.gp</a> and start -gnuplot as such:<br> -<br> -<span style="font-weight: bold;">UNIX> </span><span - style="font-style: italic;">gnuplot -geometry 1000x500 -persist p1.gp</span><br> -<span style="font-weight: bold;">C:\Windows> <span - style="font-style: italic;"><span style="font-weight: bold;"></span></span></span><span - style="font-style: italic;">wgnuplot p1.gp<br> -</span>Note: if using Windows, -uncomment the line at the end of p1.gp that says <span - style="font-weight: bold;">#pause -1</span> by removing the '#'<span - style="font-style: italic;"><br> -</span><br> -Feel free to examine the p1.gp file - it is easy to comment out any -particular stat you don't want displayed - they appear at the bottom of -the file.<br> -<br> -To generate a PNG file, rather than a window, download <a href="p2.gp">p2.gp</a> -and run as:<br> -<span style="font-style: italic;">gnuplot p2.gp</span> (use <span - style="font-style: italic;">wgnuplot</span> on windows)<br> -<br> -you will probably want to adjust the y range of the generated file, so -edit p2.gp and alter the first non-comment line, that reads <span - style="font-style: italic;">set yrange [0:250]</span>.<br> -<br> -As you become more familiar with gnuplot, you are sure to find many new -uses for this wonderful tool.<br> Deleted: trunk/website/pages/freeapps.php =================================================================== --- trunk/website/pages/freeapps.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/freeapps.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,67 +0,0 @@ -<h1>Applications over Freenet - -</h1> -<br/><b>Here you can share ideas about new applications that can run on top of Freenet. Before posting you should do a search on "Freenet" in <a class='wiki' href='http://sourceforge.net/'>Sourceforge</a> to see if someone else hasn't already started a similiar project. <p> -<br/><b>Useful Links:</b> -<br/> -<br/>The spec of the <a href="/fcp.html">protocol</a> (FCP) which applications use to interact with Freenet - and all the other <a href="/docs.html">Developer documentation</a>. -<br/> -<br/><hr/> -<br/><a class='wiki' href='http://lookoutpx.sourceforge.net/'><b>Lookout PX</b></a> -<br/> -<br/>Lookout PX is a modular, extendable Freenet client for Windows written in C++. Plug-ins are loaded dynamically and may extend virtually every aspect of Lookout. Currently under development is a transport-independent messaging subsystem, such that any messaging system (TOF, FMB, etc.) can be implemented for Lookout with a standard interface. -<br/> -<br/>Developers familiar with MFC, Win32 programming, or Freenet in general are wanted. Anyone is welcome to contact <a class='wiki' href='mailto:delta407 at invisiblenet.net'>delta407 at invisiblenet.net</a> to get more information about the project. - -<br/> -<br/>As of yet, there is no public release of Lookout, but a roadmap is on the table and a release -- a good release -- is approaching. Check <a class='wiki' href='http://www.lookoutpx.net/'>http://www.lookoutpx.net/</a> for updates. (Plus, it is safe to expect there some kind of announcement on the freenet-tech list, in addition to informing C of E and a few others.) -<br/> -<br/><hr/> -<br/><a class='wiki' href='http://localhost:8888/SSK at d8i570BHEWgzYEGMjOsxRG5r0e4PAgM/NRAF//'><b>Not Really Anonymous Filesharing (NRAF)</b></a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work</span></b> -<br/> -<br/>This is a proposal for a hybrid filesharing system. NRAF will use Freenet as a backbone for searching and listing shares, but the shared items will not be inserted. Transfers between users will be direct, and the users will not be anonymous. -<br/> -<br/>Why would anyone want such thing? -<br/> -<br/><ul><li> Thanks to intelligent routing of Freenet NRAF will be efficient for the users, becoming eventually more efficient than the other filesharing apps. - -</li><li> It will also be efficient for Freenet, because the big mp3 and divx files will not be inserted. -</li><li> If NRAF gets popular more <b style="color:black;background-color:#ffff66">people</b> will be running nodes. Freenet in every home? -</li><li> Other filesharing apps aren't anonymous either -</li><li> It could be implemented as a plugin/module to an existing (and poupular) gnutella client. -</li></ul> -It is a win-win situation; those who want to share and leech get to do it more efficiently (even though not anonymously), and those who need anonymity for real reasons will have a more efficient Freenet, thanks to the larger number of nodes. -<br/> -<br/>And last but not least, if NRAF becomes popular, instead of blaming Freenet for facilitating copyright infringment and spreading kiddie porn the authorities will blame NRAF. -<br/> -<br/>Contact me at <a class='wiki' href='mailto:zlatinb at yahoo.com'>zlatinb at yahoo.com</a> if you are interested in such project. - -<br/> -<br/><hr/>Flame (Win32 client) -<br/> -<br/>Homepage: <a class='wiki' href='http://localhost:8888/SSK at JIAdfomIbXs7cSAlSdp7acWAuuYPAgM/eofc//'>SSK at JIAdfomIbXs7cSAlSdp7acWAuuYPAgM/eofc//</a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work</span></b> -<br/>Contact mail: <a class='wiki' href='mailto:eofc-mail at hushmail.com'>eofc-mail at hushmail.com</a> -<br/>Screenshot: <a class='wiki' href='http://localhost:8888/SSK at JIAdfomIbXs7cSAlSdp7acWAuuYPAgM/eofc//Flame.jpg'>SSK at JIAdfomIbXs7cSAlSdp7acWAuuYPAgM/eofc//Flame.jpg</a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work</span></b> -<br/> - -<br/>"So I decided to start work on a native Win32 Frost client (that I have named Flame). It won't have file exchange support but just really basic -<br/> -<br/>messaging functionality. I have been able to retrieve todays Freenet board Frost messages with it and read them in it (other boards should work too) but there are a few things to do (being able to write & insert messages and reply to messages in particular) but it is coming along nicely and I shall place it on the site once I have a more or less functional version up and running." ''(added by SebastianSpaeth - 22 Feb 2002)'' -<br/><hr/><a class='wiki' href='http://eof.sourceforge.net/'><b>Everything Over Freenet</b></a> -<br/> -<br/>Everything Over Freenet (EOF) creates gateways for other protocols (such as SMTP) to work over Freenet. -<br/> -<br/> -<br/><hr/> -<br/><a class='wiki' href='http://pktp.sourceforge.net/'><b>Money Over Freenet</b></a> -<br/> - -<br/>Non centralised anonymous payment system, in planning. -<br/> -<br/><hr/> -<br/><a class='wiki' href='http://127.0.0.1:8888/SSK at txvIBhnrQG~BSKZ9C3U3pP9pjk4PAgM/flogger/1//'><b>Flogger</b></a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work</span></b> -<br/> -<br/>A Freenet community publication system. Currently in the planning stages. -<br/>Email: <a class='wiki' href='mailto:jrandom at cryptomail.org'>jrandom at cryptomail.org</a><br/></div> -<p class="editdate">Last modification date: Tuesday 11 of February, 2003 [16:47:26] by mihi</p> - Deleted: trunk/website/pages/index.php =================================================================== --- trunk/website/pages/index.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/index.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,21 +0,0 @@ -<blockquote> -<i>"I worry about my child and the Internet all the time, even though -she's too young to have logged on yet. Here's what I worry about. I -worry that 10 or 15 years from now, she will come to me and say 'Daddy, -where were you when they took freedom of the press away from the -Internet?'"</i><br> ---Mike Godwin, <a href="http://eff.org/">Electronic Frontier -Foundation</a> -</blockquote> -<p> -<b>Press enquiries</b> should be directed to <a -href="mailto:ian at locut.us">Ian Clarke</a>. -</p> -<? -if($mode=="beginner") { - include("pages/news.php"); - include("pages/whatis.php"); -} else { - include("pages/news.php"); -} -?> Deleted: trunk/website/pages/javacompat.php =================================================================== --- trunk/website/pages/javacompat.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/javacompat.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,79 +0,0 @@ -Note: It is highly likely that this list is out of date. In general, - -<br/>the most current stable version of the Sun JVM should play nicely with Freenet. -<br/>See the <a href='/UnixHowto.html' class='wiki'>UnixHowto</a> page for info on using the Sun -<br/>JVM. -<br/> -<br/>Not all JVMs are created equal. Because of numerous reports of fred (the -<br/>freenet daemon) not working with some JVMs, this page attempts to catalogue -<br/>setups that are known to work and not to work. -<br/> -<br/>JVMs that work: -<br/> -<br/><table border="1" cellspacing="0" cellpadding="1"> <tr><th bgcolor="#99CCCC"><strong>JVM</strong> </th><th bgcolor="#99CCCC"> <strong>Platform</strong> - -<br/></th><th bgcolor="#99CCCC"> <strong>Compatibility</strong> </th> -<br/><th bgcolor="#99CCCC"> <strong>Verified by</strong> </th><th bgcolor="#99CCCC"> -<br/><strong>Notes</strong> </th></tr> -<br/><tr><td> Sun 1.4.1-b21 </td><td> Linux </td><td> 100 percent </td><td> Luke - -<br/>Reeves </td><td> 0.5pre1 </td></tr> -<br/><tr><td> Sun 1.4.0_01-b03 </td><td> Linux </td><td> 100 percent </td><td> Luke -<br/>Reeves </td><td> build 495 </td></tr> -<br/><tr><td> Sun 1.4.0-rc-b91 </td><td> Linux </td><td> Works 100 percent </td><td> <br/>Eric Norige </td><td> none </td></tr> - -<br/><tr><td> Sun 1.3.0_02 </td><td> Linux </td><td> Works 100 percent </td><td> MDA -<br/><font face="courier" size="2"></td><td> none </td></tr> -</font><br/><tr><td> Blackdown 1.3.1 </td><td> Linux </td><td> 100 percent </td><td> <br/>Michael Terry </td><td> none </td></tr> - -<br/><tr><td> IBM 1.3 </td><td> Linux </td><td> Works 100 percent </td><td> Luke -<br/>Reeves </td><td> none </td></tr> -<br/><tr><td> IBM 1.3.1 </td><td> Linux </td><td> 0 percent </td><td> Luke Reeves - -<br/></td><td> Java core dump on startup </td></tr> -<br/><tr><td> Sun 1.4.1_01-b01 </td><td> Windows 2000 </td><td> Works 100 percent -<br/></td><td> Pascal </td><td> none </td></tr> -<br/><tr><td> Sun 1.4.0 </td><td> Windows 2000 </td><td> Works 100 percent </td><td> <br/>Ian Clarke </td><td> none </td></tr> - -<br/><tr><td> Sun 1.3.1_02-b02 </td><td> Windows 2000 </td><td> Works 100 percent -<br/></td><td> Pascal </td><td> none </td></tr> -<br/><tr><td> Sun 1.4.0-b92 </td><td> Windows 98 </td><td> 100 percent </td><td> <br/>GuardianJ </td><td> none - -<br/></td></tr> -<br/><tr><td> Sun 1.1.8 </td><td> Windows 98 </td><td> 99 percent </td><td> Andrew -<br/>Rodland </td><td> DS Problems? </td></tr> -<br/><tr><td> Sun 1.3.1 </td><td> Mac OS X 10.1.4 </td><td> Works 100 percent - -<br/></td><td> MDA </td><td> none </td></tr> -<br/><tr><td> Novell 1.3.1_01 </td><td> Netware v5.1 </td><td> Works 100 percent -<br/></td><td> Pascal </td><td> none </td></tr> -<br/><tr><td> Kaffe 1.0.7 </td><td> OpenBSD </td><td> Works 90 percent - -<br/></td><td> greycat </td><td> Crashes periodically, fine otherwise. </td></tr> -<br/><tr><td> Kaffe CVS </td><td> OpenBSD </td><td> Works 98 percent -<br/></td><td> greycat </td><td> Crashes far less than 1.0.7. </td></tr> -<br/><tr><td> Sun 1.3.1_07 </td><td> OpenBSD (Linux x86 binary) </td><td> Works 100 percent, - -<br/><font face="courier" size="2">if you start it with "-classic" and not "-server" </td> -</font><br/><font face="courier" size="2"><td>mirabile</td><td> Overall more stable than Kaffe.<br />From time to time, - -</font><br/><font face="courier" size="2">java eats up all CPU. If it does for more than five minutes, kill -9 the -</font><br/><font face="courier" size="2">process, remove store/index and all routing files, and restart. </td></tr> - -</font><br/></table> -<br/>JVMs that don't work -<br/><ul> -<br/><li> Jikes 1.15 does not compile freenet properly (however the version of Jikes in CVS does, as does Jikes 1.14) -<br/></li> -<br/><li> IBM's JVMs are reported to be problematic -<br/></li> -<br/><li> Kaffe 1.0.6 doesn't work, but Kaffe 1.0.7 and CVS do, at least for some <b style="color:black;background-color:#ffff66">people</b>. (Other <b style="color:black;background-color:#ffff66">people</b> have had serious problems.) -<br/></li> - -<br/><li> Heisenbug reported for Sun's? 1.3.1-rc2-b23 -<br/></li> -<br/><li> Novell 1.3.1 appears to run however keys all come through corrupted -<br/></li> -<br/></ul> -<br/>-- Eric Norige - 20 Apr 2002<br/> - Deleted: trunk/website/pages/keys.php =================================================================== --- trunk/website/pages/keys.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/keys.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,29 +0,0 @@ -<h1> Freenet Keys - -</h1> -<br/>Freenet keys come in different varieties called key types. Typically this type is included at the beginning of a key, delimited by an at- sign (@). The types are: -<br/> -<br/><b>CHK</b>: The Content (Cryptographic?) Hash Key is the workhorse on which other key types build. Every document has a corresponding hash value that serves as it's key. Two equal documents have equal hashes, so if different people insert the same document, this yields the same CHK. At the same time the hash function is built so that two different documents are very very unlikely to have the same hash (and therefore CHK). For all practical purposes, there is a one-to-one correspondence of CHKs to documents. -<br/><div class='simplebox' align='center'> -<br/>Example: CHK at wQYjaBkpulyIBq4sbvyDL2NZ7ToPAwI,qW4hMEc6NWsx-T-etpfPAg -<br/></div> -<br/> -<br/>All the other key types usually redirect to a CHK. So fundamentally, all real content is behind a CHK. -<br/> -<br/><b>KSK</b>: These are fully free-form, so can be used to tag nice, descriptive names to content. By loose convention they are seen as a hierarchic system, with levels seperated by slashes. When you request a KSK, the Cryptographic Hash of the keyword is computed. The CHK corresponding to this hash is retrieved, and the data pointed to by that CHK is another CHK to which you're being redirected. -<br/><div class='simplebox' align='center'> - -<br/>Example: KSK at plays/Shakespeare/Coriolanus -<br/></div> -<br/> -<br/>KSK keys are deprecated for most purposes, because they can be hijacked by an attacker. If you are publishing important content in Freenet, you should seriously consider using an SSK instead (see below). -<br/> -<br/><b>SSK</b>: A Secure (or Signed) Subspace Key consists of a prefix specifying the subspace, followed by a free-form name placing the key inside the subspace. Actually each subspace has two prefixes associated with it, one used for inserting, the other for retrieval of keys. The insert prefix is normally kept secret, while the retrieval prefix is given out freely. This ensures that only the holder(s) of the secret prefix may put content into the subspace, while everybody may get content out. -<br/> -<br/>This kind of key works somewhat like a PGP keypair. You give one of them (the public key) away, and the other (the private key) you must keep in secret, for you will use it to insert things inside your namespace. -<br/><div class='simplebox' align='center'> -<br/>Example: SSK at rBjVda8pC-Kq04jUurIAb8IzAGcPAgM/TFE// -<br/></div><br/></div> -<p class="editdate">Last modification date: Monday 10 of March, 2003 [12:34:02] by greycat</p> -<br/> - Deleted: trunk/website/pages/lists.php =================================================================== --- trunk/website/pages/lists.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/lists.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,65 +0,0 @@ -<font size="+3"><B>Mailing Lists</B></font> (<a href="/mailsum.html">summary</a>)</h4><P> - -<i><b>Note</b>: We constantly get requests of people who want to become unsubscribed. </i><span style='text-decoration:underline;'>YOU</span><i> have to do that yourself! Just click on the www link provided at the bottom of every mail, enter your e-mail address in the text field in section "Subscribers" and provide your password under the unsubscribe option. (You can get your password there as well, in case you forgot it.)</i> -<br /> -<br /><a class='wiki' -href='http://emu.freenetproject.org/cgi-bin/mailman/listinfo/announce/'>Announcements</a> (<a -class='wiki' href='http://archives.freenetproject.org/list/announce.en.html'>archive</a>) -<br />Please sign up here to be notified of major Freenet developments, such as announcements of new releases or important bugfixes. This list is moderated and is very low traffic (less than one message per month). -<br /> - -<br /><a -href='http://emu.freenetproject.org/cgi-bin/mailman/listinfo/support/'>Support</a> -(<a -href='http://archives.freenetproject.org/list/support.en.html'>archive</a>) -<br />Asking for or giving advice relating to getting Freenet working, -bug reports, and suggestions on improving the user experience. Requests -for help are more likely to be heard here than in the other mailing -lists. <b>Note: </b> Emails sent to this mailing list from those not -subscribed to the list must be manually approved, and this can impose -a delay of several days. To avoid this delay, please <a -href="http://emu.freenetproject.org/cgi-bin/mailman/listinfo/support/">subscribe</a>. -<br /> -<br /><a -href='http://emu.freenetproject.org/cgi-bin/mailman/listinfo/tech/'>Tech</a> -(<a -href='http://archives.freenetproject.org/list/tech.en.html'>archive</a>) -<br /> -This is for general technical discussion of Freenet. If you want to discuss -longer-term technical ideas about Freenet, please use this list. -<br /> -<br /><a class='wiki' -href='http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl/'>Development</a> (<a -class='wiki' href='http://archives.freenetproject.org/list/devl.en.html'>archive</a>) -<br /> -This list is for active developers to discuss bugs, and the implementation -of near-term new features. Please only post to this list if you know what -you are talking about, otherwise use the tech mailing list (see above). -<br /> -<br /><a class='wiki' href='http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs'>CVS</a> -(<a class='wiki' href='http://archives.freenetproject.org/list/cvs.en.html'>archive</a>) -<br />A read-only mailing list to which CVS checkins are mailed. This will probably only be of interest to developers. -<br /> -<br /><a class='wiki' href='http://emu.freenetproject.org/cgi-bin/mailman/listinfo/darknet-tools/'>Darknet-Tools<a> (<a -class='wiki' href='http://archives.freenetproject.org/list/darknet-tools.en.html'>archive</a>) -<br />A mailing list to discuss and develop ways of extending the darknet while keeping it a darknet: -Instant messenger plugins, IRC plugins, email invitations, functionality in the node needed to -support these, and any other means of extending the darknet while keeping it a darknet as much as -possible. -<br /> -<br /><a class='wiki' -href='http://emu.freenetproject.org/cgi-bin/mailman/listinfo/chat/'>Chat</a> (<a -class='wiki' href='http://archives.freenetproject.org/list/chat.en.html'>archive</a>) -<br /> -This list is for general discussion of Freenet, topics that are not suitable -to other lists. Discussions of politics, law, philosophy, lawsuits, -programming languages, related technology that should not be part of -Freenet, and any thread that the developers and users don't deem appropriate -to the main lists should be discussed here. Questions such as "How can I prevent -my node from being used by terrorists?", or "Why don't you rewrite Freenet in C++?" -should be addressed to this list. -<br /> -<p> -<i><b>Third party tools</b>: We are hosting some other mailing lists on our server here is the <a href="http://emu.freenetproject.org/cgi-bin/mailman/listinfo/">full list</a>.</i> -<br /> -</p> Deleted: trunk/website/pages/mailsum.php =================================================================== --- trunk/website/pages/mailsum.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/mailsum.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,33 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<center><h2>Summary of some discussions on the maillist</h2> -</center> -<P> -<BR> -<P> -<LI> <span style='color:blue'><a href="http://www.freenetproject.org/index.php?page=mailsum1103"><b>November -</b></a></span><P> -<LI> <span style='color:blue'><a href="http://www.freenetproject.org/index.php?page=mailsum1203"><b>December -</b></a></span><P> -<LI> <span style='color:blue'><a href="http://www.freenetproject.org/index.php?page=mailsum0104"><b>January -</b></a></span><P> -<LI> <span style='color:blue'><a href="http://www.freenetproject.org/index.php?page=mailsum0204"><b>February -</b></a></span><P> -<LI> <span style='color:blue'><a href="http://www.freenetproject.org/index.php?page=mailsum0304"><b>March -</b></a></span><P> -<LI> <span style='color:blue'><a href="http://www.freenetproject.org/index.php?page=mailsum0404"><b>April -</b></a></span><P> - - -</td> -<tr> -<td align="right" valign="bottom"> -<BR> -<P> -<BR> -<P> -<BR> -<P> -<BR> -</td> - Deleted: trunk/website/pages/mailsum0104.php =================================================================== --- trunk/website/pages/mailsum0104.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/mailsum0104.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,62 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<center><h2>Summary of some discussions on the maillist</h2> -<P> -<h3>January</h3></center> -<P> -1) <span style='color:blue'><b>Rant -</b></span><P> -Newsbyte ranted:<br> -<i>Well, this may be a bit off topic, but what the heck. -I've just been out with some friends, and, as always when we get moderately drunk, we talked about politics, religion, philosophy etc. (when we are real drunk or when no babes are present, we usually talk about sex ;-) -<p> -Well, anyhow, being all european, and all friends (birds of a feather) we fully agreed on a lot of topics. Israel, Iraq, USA, etc...opinions didn't differ much there. But then it came to a typical european concept of free speech, which, I presume, may strike USA-citizens as a bit weird. While, seen at large, we have the same concept of free speech as in the USA, this opinion, curiously, always seem to shift to a more restricted idea of free speech when it concerns things as racism. In this respect (one of the few, I might add), I think the usa concept of it is much more honest and fair. This has undoubtably to do with our historic heritage, notably WWII. -<p> -I was argumenting that revisionistic books, as an expression of an opinion, should be allowed. Thus, not agreeing with the law(s) in most euro-countries, where such books are forbidden. To my astonishment, many of my friends agreed with this censorship, however. This is something I do not understand; you CAN NOT claim to be for free speech and expression of opinion, and then say "exept when it's *that* opinion". Allowing free speech only if you agree with it, but forbid it when you totally disagree with it, is not allowing free speech at all. I've tried to argument it, but it just didn't seem to get through to them; they started with the premise that it's wrong, and therefor it should be forbidden, whatever. The fact that this leads to hypocrytical contradictions was something they ignored too. One said: 'it's a fact, and thus it shouldn't be disputed' another said 'it hurts the jews'...but, are that, on itself, enough reasons to forbid an opinion? Is there a 'fact' so absolute, it can't be disputed? Can't anyone feel hurt be an opinion of another dude, and should we thus, forbid everything that someone claims is hurting their feelings? <p> - -These arguments do not make any sense, and what's more, to forbid an opinion is EXACTLY what ultra-right wing or despotic governments would do with the opinions that my friends (and I myself) hold dear; that of being non-racist, etc. The difference is, they start with the presumtion that they (the idea they have about it) are right, and thus oposing views can be forbidden, while I think people are allowed to have racist opinions, even when I totally disagree with them... After all, that is EXACTLY what a dictator (or ultra-right-winged-government) would do, if he ever got the power: claim something is a 'fact' and forbid oposing views. The REAL difference, thus, between a democracy and a dictatorship is that that the one alows (or should allow) diffirent opinions, while the other does not. Thus, in conclusion, this is a treat, not of democraccy, but of a dictatorship, and unworthy to be used in a democracy, IMHO. It also shows that laws are not always justified, and, again IMHO, should not ALWAYS be regarded as an absolutism, something that should be followed blindly. (Of course, it happens to be my opinion that revisionists are telling crap too, but the point is I think they have a right to express that opinion). -<p> -I got a bit worked up about it, really, because, after all, it restricts other people, because of the mere opinion of others, who think they have the right to forbid it (and have the power - which is the dangerous part, because; what if the power shifts?). -Why am I writing all this? Well, because it made it clear to me again, why I'm doing all this trouble for a project such as Freenet. -Sometimes, with all the tech babble and the problems and all that, I ask myself why I'm doing all this. And I guess, this is the answer. I'm doing this, because everyone has a right to express his opinion, and I can't stand it that others would try to impose their will on others, even with the best of intentions (as with my friends). - -<p>This project has the ultimate potential: it deprives people, and, as an extention, governments, of the *power* to impose their will/censorship on others. Are people telling crap? Well, make something that debunks what they say, point. But don't forbid it, because that's exactly what THEY would do if they are in power. <p> - -Yes, it's the potential of making the power that the government (and corporations, and, yes, my friends) seem to think they have the perogative of, to become totally obsolete, that made me interested in Freenet. With a system as Freenet (when it will be fully working ;-), they can shout and do all they want, my ideal of a free society with a free flow of opinions will be there (at least in cyberspace). There might be drawbacks, as with any technology (and it's consequences), but all by all, it's worth it. <p> -/*end rant*/ -<p> -</i> -<br> -<p> -Jay Oliveri gave his considerable input by stating that, indeed, it was completely off topic for the development list and that Newsbyte had furthered the argument for more restrictive posting to this list. To which Newsbyte responded he was glad it (the rant) had some use, followed by an emoticon that indicated a possible irony and a link to <a href="http://www.verbumvanum.org/shirky">www.verbumvanum.org/shirky</a> (chapter 3). Toad gave a little input on the devl-list too, but his/the more important and thoughtfull responses were not done on the maillist. -<p> -<br> -<p> - - - -2) <span style='color:blue'><b>Re: Stable node performance and gradual decline -</b></span><P> -Niklas Bergh 'surprised' us with a graph:<br> -<i>Also see <a href="http://iakin.poweruser.org/freenetstuff/bw2.jpg"> http://iakin.poweruser.org/freenetstuff/bw2.jpg</a> for a graph that clearly indicates the gradual decline between the 15:th and most of the 18:th (actually there was an OOM generated the 18:th which killed the node). The graph also includes a slight preview of the result of some recent speed enhancements/locking changes (not present in stable code yet). -<p> -</i> -There was no response within the thread, probably because all could fully agree with the conclusion the current network works like crap. - -<p> - - - -</td> -<tr> -<td align="right" valign="bottom"> -<BR> -<P> -<BR> -<P> -<BR> -<P> -<BR> -Donation inquiries please contact <a href="mailto:ian at locut.us">Ian Clarke</a><BR> -</td> - Deleted: trunk/website/pages/mailsum0204.php =================================================================== --- trunk/website/pages/mailsum0204.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/mailsum0204.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,102 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<center><h2>Summary of some discussions on the maillist</h2> -<P> -<h3>February</h3></center> -<P> -1) <span style='color:blue'><b>Freenet User Interface -</b></span><P> -Ian said:<br> -<i> -<p> -I really want to tackle the issue of Freenet's user friendliness (or -lack thereof) head on. -<p> -Here are some ideas: -<p> -1) Switch to a powerful templating engine such as -http://freemarker.sf.net/ which will allow us to completely separate -data from presentation, and will mean that people can work on -<p> -Cons: freemarker.jar is about 700k, which would add about 30% to the -size of the distro, still, probably worth it if it makes Freenet easy to use -<p> -2) Allow Freenet to be configured completely through the web interface, -with a "Wizard"-style interface for initial configuration. -<p> -3) Migrate FProxy over to using NIO -<p> -Cons: This may only make sense once more of Freenet's guts are converted -over to use NIO -<p> -I think the organizational problem we have been experiencing is that it -is difficult to devote developer resources to UI issues since those -closest to the development team, and Freenet's most vocal users, tend to -be sufficiently familiar with the software that they are not affected by -most usability problems, and lower level stuff therefore always seems -more urgent ("What good is it if it looks nice but doesn't work?!!"). -<p> -To address this issue, I am keen to find a volunteer to become Freenet's -user friendliness "Czar", who can focus on UI issues specifically -without succumbing to the lure of lower level hacking. -<p> -I think if we can migrate to something like FreeMarker it would allow a -good separation between developers focusing on the core code, and -developers / designers concentrating on the UI, thus reducing the degree -to which each group can inhibit the progress of the other. -<p> -Ideally I would like this UI Czar to be a paid position, however at -current funding levels, despite the massive recent influx of donations -(over $4,000 - thanks everyone!!!) after our Slashdot story two days -ago, I don't think we could do this without putting Toad's employment in -jeopardy in the medium term, which I am not willing to do. -<p> -None the less, if someone were to take on this position, and do a good -job, it would make them an excellent candidate to become Freenet -employee #2 - once sufficient funds become available (something I am -sure their efforts will help to bring about). -<p> -The suitable candidate should be comfortable with Java, but not -necessarily an expert, should have some good ideas about what is and is -not a good UI, and most importantly - have the commitment to stick with -this for at least a few months. -<p> -I don't want to scare anyone off, but unless you are willing to give at -least 15 hours a week to Freenet over at-least the next 2 months, you -probably aren't the right person. -<p> -Having said that, don't worry too much, giving up one's social life to work on Freenet seems to come naturally after a while anyway.<p> -Ian. -<p> -</i> -<br> -<p> -As usual, toad was sceptic about it, asking what exactly did this gave us and stating that substituting variables is trivial, and we already have it. However, he was a bit more enthousiastic about JMX as a possibility, as Iakin had pointed out in an earlier post. Ian responded with explaining that FreeMarker allows you to completely separate the data itself, from how you present that data. And that this is simply not even nearly possible with the current primitive variable substitution template mechanism. Toad apparently had no idea what that (or something else - a bold remark by Ian at the end, perhaps?) meant. Also, Ian had no clue what JMX meant, to the surprise of Niklas, who explained it to him a zillion times before. Niklas, lastly, repeated that JMX stands for Java Management eXtenstion and provided some links: http://article.gmane.org/gmane.network.freenet.devel/5490 http://article.gmane.org/gmane.network.freenet.devel/5541 and http://java.sun.com/products/JavaManagement/index.jsp . - - - - - - -<p> -<br> -<p> - - -<p> - - - -</td> -<tr> -<td align="right" valign="bottom"> -<BR> -<P> -<BR> -<P> -<BR> -<P> -<BR> -Donation inquiries please contact <a href="mailto:ian at locut.us">Ian Clarke</a><BR> -</td> - Deleted: trunk/website/pages/mailsum0304.php =================================================================== --- trunk/website/pages/mailsum0304.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/mailsum0304.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,63 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<center><h2>Summary of some discussions on the maillist</h2> -<P> -<h3>April</h3></center> -<P> -1) <span style='color:blue'><b>wikiwiki? <a href="http://www.freenethelp.org">www.freenethelp.org</a> - -</b></span><P> -Newsbyte said:<br> -<i> -<p> -Made a first attempt to make my <a href="http://www.freenethelp.org">www.freenethelp.org</a> more wikish - for the moment only the main page. <br> -Let me know what you think of it (if it's an improvement or not). <p> -As millenia pass bye, more will become available. <p> -Could be I will use something of Ian that he and I are discussing, if I ever figur out how to actually install and run it myself (which is not the case with the current wikish-thingy, btw). -<p> -</i> -<br> -<p> -A certain dude with the French-sounding name Anthony Le Mansec responded with saying that he was not keen on wikifarms like seedwiki, but he was convinced a wiki was really suitable for such a site, and would perfectly fit with freenet's philosophy. It would also be a target of choice for Wiki 'saboteurs', thus requiring a lot of time - at least until many users regurlarly "tend the garden". Furthermore he suggested the wiki Usemod.<p> -<b>Update:</b> The site <a href="http://www.freenethelp.org">www.freenethelp.org</a> was converted from a wikifarm to a real 'own' wiki-server (though not Usemod for various reasons). As newsbyte, eternally pessimistic about human nature, had forseen: there was and is little to no editing being done. Luckily, there also was little sabotage done (had not much use anyway, since one can always revert). That said, the site is moderately succesful with about 100 unique hits a day, only the freenet-knowledgable dudes don't seem to bother to update it, which, as newsbyte said in a run-up post, could be frustrating:<p> - -Newsbyte's latest post about the subject was: -<p> -<i>Hi there, <br> -I have slightly changed the <a href="http://www.freenethelp.org">www.freenethelp.org </a>site. Since some told me they found the login a hurdle for editing pages, and since the generic one had not much practical value, I've decide to drop it untill I can finetune it better. Added RecentChanges too, although in the beta-version of the prog it doesn't show the diff yet; hopefully this will become possible when it comes out of beta. <p> -In any case, this is a new appeal for/to everyone that is somehow involved/knows about freenet to have a look and update the stuff. -But also for the newbies: feel free to give the site more structure and weed out spellingmistakes, etc. <p> -For instance, the goal is to structure and mix together some of the ex-freesite-pages. Unofficial FAQ and Unoffical Anti-FAQ should become 'Ultimate FAQ' (already began with that), Freenet Explained and Freenet Explained2 should also be merged, etc. <p> -If you have a free moment (and even if you don't ;-), go have a look and update where possible! The site is pretty well visited, so ppl are finding it usefull (or at least are curious), but the main prob is, that it's currently not very up-to-date, which could be frustrating, especially in the 'how to start' section or when trouble-shooting.<p> -Thus, pls, give it a try and edit/update! <p> -Newsbyte</i> - - - - - - - - -<p> -<br> -<p> - - -<p> - - - -</td> -<tr> -<td align="right" valign="bottom"> -<BR> -<P> -<BR> -<P> -<BR> -<P> -<BR> -Donation inquiries please contact <a href="mailto:ian at locut.us">Ian Clarke</a><BR> -</td> - Deleted: trunk/website/pages/mailsum0404.php =================================================================== --- trunk/website/pages/mailsum0404.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/mailsum0404.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,35 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<center><h2>Summary of some discussions on the maillist</h2> -<P> -<h3>April</h3></center> -<P> -<span style='color:blue'><b>RNFs still a problem? -</b></span><P> -Ian asked:<br> -<i> -<p> -I am still seeing plenty of RNFs in 60067 (node has been up for a few hours and has been trying to do a splitfile download). Generally are other people still experiencing excessive RNFs? Under what circumstances? I would really like to get a better understanding of why they are happening. -<p> -</i> -<br> -<p> -Malcolm handley responded by stating that he was seeing a lot of RNFs when inserting data. In a recent test that he did he got 48 RNFs in the course of inserting 30 4kb blocks. (He repeatedly tried to insert blocks until he had inserted the number that he wanted and recorded the number of errors that he got on the way.) He was not sure how many he was getting when requesting data at that moment, but it was also quite a few. Someone with the nick 'Someone' said he was not getting much RNFs. But when he got them it was almost always caused by nodes restarting (according to the RNF output). - -<p> -<br> -<p> -<p> -</td> -<tr> -<td align="right" valign="bottom"> -<BR> -<P> -<BR> -<P> -<BR> -<P> -<BR> -Donation inquiries please contact <a href="mailto:ian at locut.us">Ian Clarke</a><BR> -</td> - Deleted: trunk/website/pages/mailsum1103.php =================================================================== --- trunk/website/pages/mailsum1103.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/mailsum1103.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,30 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<center><h2>Summary of some discussions on the maillist</h2> -<P> -<h3>November</h3></center> -<P> -1) <span style='color:blue'><b>A really easy way to defeat datastore probing timingattacks? -</b></span><P> -Toad said:<br> -<i>Ok, I had another crazy idea. This one is an idea to defeat the timing attacks we all know and hate. The attack goes like this: Request a file at HTL 0 from a node. The node has a 30% chance of forwarding the request to another node, if it doesn't have the file. The node returns the file quickly, and we conclude that the node must have the file in the store. Solutions to this basically involve making it look like the node didn't have the file. - -<p>One avenue of approach would be to try to emulate the slowness expected if we got the file from the next node on the chain. My suggestion: use the next node on the chain to emulate the latency of the next node on the chain! Send a special kind of request to the next node on the chain that requires it to route the request, return the datasource it would have routed to, and return the data we are sending to it. We would then send it back to the requestor in the usual way. An attacker who could surveil the network at an IP layer might be able to deduce we were sending it the data and it was returning us it through traffic analysis, but that is made harder by multiplexing, a reasonable traffic level, perhaps dividing the payload into several pieces and redirecting it through other nodes before it reaches the next node in the chain (in the hope of concealing it amidst regular traffic), or well known anti-traffic-analysis measures such as traffic padding. In any case it would be significantly better than we have now, at a moderate performance cost (it's only one extra hop in the base proposal). -<p>Thus the requesting node would not have a convincing case that we had the data in our store before they asked. Now, the question is, how important is our plausible deniability with respect to whether content was in our store before the request came in? Parts of freenet are designed to help this - for example the probabilistically not decrementing hops to live when HTL is low; but there are several ways to get around all these protections - requests at HTL 0 with timing information, announcements at HTL 0, and so on. If it is important, it may be possible to do something about it; if it is not, that may also make things easier. So, is it important?</i> -<p> -Some pointed out that a 'special request' could be used to determine that the node had the data, and was trying to conceil it. Newsbyte suggested that we could use the estimators for calculating the delay it would normally take, if the node had to retrieve it from another node. Tom Kaitchuck and Martin Stone Davis had some objections to this, but seem to have thought that it was meant to be used for every node and/or with fixed time delays. However, Newsbyte pointed out that it should only be the node which has the data in it's store who would have to fake it, and that the estimator isn't fixed. Therefor, a request would only take on 'hop' longer, as Toad already indicated in his post. Toad, however, pointed out that the difficulty were the new nodes: since they have totally unrealistic estimators, it would be difficult to implement a time delay based on the estimators from the new nodes. Ofcourse, brandnew nodes would not have any data, but still, it could pose a problem. Luckily, he had some ideas to redress the problem, for instance, new node problem would be solved with estimators in the seednodes. - - -</td> -<tr> -<td align="right" valign="bottom"> -<BR> -<P> -<BR> -<P> -<BR> -<P> -<BR> -Donation inquiries please contact <a href="mailto:ian at locut.us">Ian Clarke</a><BR> -</td> - Deleted: trunk/website/pages/mailsum1203.php =================================================================== --- trunk/website/pages/mailsum1203.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/mailsum1203.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,55 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<center><h2>Summary of some discussions on the maillist</h2> -<P> -<h3>December</h3></center> -<P> -1) <span style='color:blue'><b>Multiplexing -</b></span><P> -Toad said:<br> -<i>I am implementing multiplexing. This will bring significant benefits, -regardless of routing algorithm. The main ones:<p> - -* Dramatically reduced connection churn.<br> -* Significantly reduced memory usage.<br> -* Significantly reduced CPU usage. This is not just cosmetic; CPU usage - affects message send times, and when the CPU is pegged long-term, the - node becomes pretty much useless to both the user and the network.<br> -* Rewriting ConnectionHandler - new class MuxConnectionHandler - get rid - of dead code etc. Will be backwards compatible by using the old CH for - the old Presentation.<br> -* Protocol will be simpler to parse, resulting in fewer serious - (corruption -> connection death) bugs. Detecting where a trailer ended - etc is tricky on the old protocol. The new protocol will have an explicit - trailer ended with code X command.<br> -* Room for extensibility, can e.g. get rid of Identify message hack, - include IP address detection, etc, once the core functionality is - implemented.<br> -* Improve message send times.<br> -* Eliminate some low bandwidth DoSs.<br> -* Nodes on win9x and other connection limited environments will work - better.<p> - -I should have a prototype implementation running within a week or so.. -probably. -</i> -<br> -<p> -Ian asked the question if it would solve the primary problem afflicting Freenet and thought it wouldn't... in which case he thought we shouldn't be focusing on that. Most others, such as Simon Porter and Niklas Bergh thought it was worthwhile, since it would yield benefits in any case, even if it wouldn't help with the routing (there was some discussion if MUX would directly benefit the routing or not). NG-routing wasn't being very effective as yet, and it wasn't clear exactly why not, so seen the limited resources of the project, most thought it was a good thing to persue multiplexing, and maybe go back to NG-routing later. - - - - -</td> -<tr> -<td align="right" valign="bottom"> -<BR> -<P> -<BR> -<P> -<BR> -<P> -<BR> -Donation inquiries please contact <a href="mailto:ian at locut.us">Ian Clarke</a><BR> -</td> - Deleted: trunk/website/pages/metadata.php =================================================================== --- trunk/website/pages/metadata.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/metadata.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,361 +0,0 @@ -<h1> Freenet Metadata Spec </h1> -<p>Author: Adam Langley, Eric Norige</p> -<hr/> -<h2>Table of Contents</h2> -<ul> - <li> <a href="#Na3f">Overview</a></li> - <li> <a href="#Na8c">Part Spec</a></li> - <ul><li> <a href="#Na91">Redirect (CDC)</a></li> - <li> <a href="#Na9f">DateRedirect (CDC)</a></li> - <li> <a href="#Nae0">SplitFile (CDC)</a></li> - <li> <a href="#Nb55">Info (MC)</a></li> - <li> <a href="#Nb63">ExtInfo (MC)</a></li> - </ul> - <li> <a href="#Nb72">Examples</a></li> - <li> <a href="#Nb9a">Handling Other Commands</a></li> -</ul> - -<h2><a name="Na3b">Abstract</a></h2> - -<p>This spec is for client metadata. The purpose of this spec is to -provide convenient functionality for building web sites inside -freenet, as well as more general description of inserted content.</p> - -<h2><a name="Na3f">Overview</a></h2> - -<p>Properly formatted metadata is composed of a VersionCommand -followed by a list of Parts. A Part is a named list of -"variable=value" pairs, followed by the string "EndPart" (or "End" for -the last Part. Informally, the version command is a part whose name -is "Version", and which has a numeric field called "Revision". Any -metadata that doesn't fit neatly in the variable=value style (XML, -etc.) can be included verbatim following the last Part.</p> - -<p> For those who like grammars, here is a more formal definition: </p> - -<pre> -metadata := VERSIONPART [part ...] lastpart REST -VERSIONPART := "Version\n" "Revision=1\n" ["Encoding=gzip\n"] "EndPart\n" - //Encoding is optional -part := "Document\n" [field ...] "EndPart\n" -lastpart := "Document\n" [field ...] "End\n" -field := KEY '=' VALUE '\n' -KEY := <string not containing either '\n' or '='> - //Heirarchical key name -VALUE := <string not containing '\n'> - //value of the associated key -REST := <arbitrary data of arbitrary length, not parsed by this parser> - //useful for XML metadata or other metadata not - //storable in the Info.* keyspace -</pre> - -<h3><a name="Na69">Example 1. Abstract Metadata Format</a></h3> - -<pre> -Version -Revision=1 -EndPart -Document -Key=value -EndPart -Document -Key1=value1 -Key2=value2 -End -</pre> - -<h3><a name="Na74">Note</a></h3> -<p>"//" in a URI is reserved for metadata processing. This means that -the MSK at .....// format is gone. Document Names are the string which -comes after the "//". Each Part should have a field with key "Name". -A Part without a "Name" field should be assumed to have a Name of "". -The Part whose Name matches the Document Name should be acted -upon.</p> - -<h3> Example Name Processing </h3> - -Assume the following metadata is inserted under KSK at metadata-test: -<pre> -Version -Revision=1 -EndPart -Document -Redirect.Target=KSK at gpl.txt -EndPart -Document -Name=target1 -DateRedirect.Target=KSK at blogoffoobar -Info.Format=text/html -EndPart -Document -Name=target2 -Redirect.Target=KSK at ignored -Document -Name=target2 -Redirect.Target=CHK at ignored -Redirect.Target=CHK at blahblah -Info.Format=audio/mp3 -End -</pre> - -<p> In this case, a request for KSK at metadata-test should return the -raw metadata along with whatever data was inserted (usually an empty -file is inserted with Control documents like this). It would be nice -for the interface to indicate what names are possible, in a -directory-listing sort of interface. </p> - -<p> Requesting KSK at metadata-test// should invoke the redirect to -KSK at gpl.txt, and return results identical to requesting KSK at gpl.txt -directly. The reason for this is that the document name requested is -"", and that matches the Name of the first (non-version) Part, which -doesn't have a Name field, so is assumed to have name "".</p> - -<p> Requesting KSK at metadata-test//target2 should activate the last -redirect in the final Part and redirect to CHK at blahblah. Because -there is informational metadata here and there could also be Info.* -fields in CHK at blahblah, return both sets of metadata, allowing the -redirect's metadata (the Format=audio/mp3) to take precedence over a -Format field in the CHK's metadata. </p> - -<p> As an aside, it is recommended not to have informational metadata -in CHKs, as this reduces the likelihood of identical data resulting in -the same CHK. The best place to put informational metadata is in the -redirect. </p> - -<p> Lastly, requesting KSK at metadata-test/target3 should return an -error indicating that there is no Part matching that name, similar to -an DataNotFound error. </p> - -<h3> Restatement of document processing algorithm </h3> - -<p>The logic for following Document names should be the following -recursive(!) algorithm:</p> - -<p>To request "BaseKey//Name":</p> - -<ol> -<li> request BaseKey (recursively if necessary) </li> -<li> if it's not a control document, stop and return a URI error </li> -<li> act on the name: - <dl> - <dt> Name found: </dt> <dd>act on name, possibly requesting another key</dd> - <dt> No Name, No default: </dt> <dd>stop and return a URI error - (possibly listing valid names) </dd> - <dt> No Name, default present: </dt> <dd>act on default. If it's a - redirect to BaseKey2, request "BaseKey2//Name"</dd> - </dl> </li> -</ol> - -<br/>The order of keys in a Part is not important, and if the same Key appears twice in a part, only the last one's value is used. - -<br/> -<br/><h3><a name="Na7d">Note</a> -</h3> -<br/>All numbers are base 16 -<br/> -<br/>Control Document Commands are denoted (CDC) and metadata commands as (MC) -<br/> -<br/>There may only be one section with the same Name. -<br/> -<br/><h2><a name="Na8c">Part Spec</a> -</h2> -<br/><h3><a name="Na91">Redirect (CDC)</a> -</h3> -<br/> - -<br/><font face="courier" size="2">Redirect.Target=<URI:> -</font><br/> -<br/>The Client should redirect to the given URI. -<br/> -<br/><h3><a name="Na9f">DateRedirect (CDC)</a> -</h3> -<br/> -<br/><font face="courier" size="2"> [DateRedirect.Increment=<number: time-grain size in seconds, default=15180 (one day)>] - -</font><br/><font face="courier" size="2"> [DateRedirect.Offset=<number: time-grain in seconds since unix epoch (January 1, 1970) to start increments, default = 0>] - -</font><br/><font face="courier" size="2"> DateRedirect.Target=<URI:> -</font><br/> -<br/> -<br/><ul><li> The date format is in UNIX format - seconds from the epoch -</li></ul> -<ul><li> Only applies to KSKs and SSKs</a> -</li></ul> -<ul><li> The date must be taken UTC (TZ offset = 0) -</li></ul> -The client should take the current time (GMT) and work out the last -<br/>member of the series of times (offset, offset + i, offset + 2i, offset + 3i, - -<br/>...) which occurred. The client then replaces the part of the URI after the final -<br/>slash (/string) with <DATE>-string where <DATE> is the hex encoded number of seconds -<br/>since the epoch. -<br/> -<br/><h3><a name="Nac1">Note</a> -</h3> -<br/>"freenet:" is speced otherwise someone could do something like "http://..." -<br/> -<br/>In the case of KSKs, the human readable part is the whole key, so <tt>freenet:KSK at style</tt> becomes <tt>freenet:KSK at 3b4cf86e-style</tt> - -<br/> -<br/>In the case of SSKs, the human readable part is the document name, and <tt>freenet:SSK at aabbccddee/style</tt> becomes <tt>freenet:SSK at aabbccddee/3b4cf86e-style</tt> -<br/> -<br/> -<br/><h3> <a name="Nae0">SplitFile (CDC)</a> -</h3> -<br/><div class='simplebox' align='center'>note 12 Feb 2003: Splitfiles without FEC are outdated. </div> -<br/> - -<br/> -<br/><font face="courier" size="2"> SplitFile.Size=<hex file size> -</font><br/><font face="courier" size="2"> SplitFile.BlockCount=<hex no. of data blocks> -</font><br/><font face="courier" size="2"> <a class='wiki' href='SplitFile.CheckBlockCount= <hex. no of check blocks>'>SplitFile.CheckBlockCount= <hex. no of check blocks></a> - -</font><br/><font face="courier" size="2"> SplitFile.Block.<n>=<URI> -</font><br/><font face="courier" size="2"> <a class='wiki' href='SplitFile.Graph.<x>= a,b,c...'>SplitFile.Graph.<x>= a,b,c...</a> -</font><br/> -<br/> -<br/><ul><li> <a name="Naec"></a>0 <= n <= 65535 -</li><li> <a name="Naf2"></a>n must be sequential, starting with 1, in the metadata part - -</li><li><a name="Naf8"></a>n is represented in base 16 -</li></ul> -The document is made up of a number of pieces, allowing swarming. -<br/> -<br/><h3><a name="Nb02">Note</a> -</h3> -<br/>thanks much to thelema, oierw, mjr and others for this -<br/> -<br/> -<br/><dl><dt>Size <i>Required</i></dt><dd> This defines the final size of the original file. -</dd></dl><br/><dl><dt>BlockCount <i>Required</i></dt><dd> This defines the number of pieces of data that there are. - -</dd></dl><br/><dl><dt>CheckBlockCount <i>Optional</i></dt><dd> This defines the number of check pieces that there are. If Omitted, should default to 0. -</dd></dl><br/><dl><dt>Block.<n> <i>Required</i></dt><dd> These are the block URIs, most likely CHKs. These must be numbered 1 to BlockCount+CheckBlockCount. The first BlockCount blocks are the data blocks, and the next CheckBlockCount are the check blocks. From the above, a client can start a swarmed <b style="color:black;background-color:#ffff66">download</b> of the file. Redundant splitting is optional, and information is below. -</dd></dl><br/><dl><dt>Graph.<x> <i>Optional</i></dt><dd> For each check Block.<x>, there must be a Graph.<x> listing the data blocks that check block derives from. Graph entries for 1..BlockCount should not be given, but for BlockCount+1..BlockCount+CheckBlockCount must be given. A check block may also be derived from other check blocks, but only lower numbered ones. - -</dd></dl><br/> -<br/><h3><a name="Nb55">Info (MC) </a> -</h3> -<br/><font face="courier" size="2"> <a class='wiki' href='Info.Format=<string: MIME-type>'>Info.Format=<string: MIME-type></a> -</font><br/><font face="courier" size="2"> <a class='wiki' href='Info.Description=<string: freeform>'>Info.Description=<string: freeform></a> -</font><br/> -<br/>The Info.* namespace is reserved for Dublin Core metadata. Prepend "Info." to the keys you want to use to prevent collisions. See http://www.freenetproject.org/doc/infometadata.html for details. -<br/> -<br/>Format is the proper place to put the document's mime type. Description is a Plain description of this data, not an abstract or TOC. -<br/> - -<br/> -<br/><h3><a name="Nb63">ExtInfo (MC)</a> -</h3> -<br/> -<br/><font face="courier" size="2"> <a class='wiki' href='ExtInfo.Trailing=yes'>ExtInfo.Trailing=yes</a> -</font><br/><font face="courier" size="2"> <a class='wiki' href='ExtInfo.URI=<URI>'>ExtInfo.URI=<URI></a> -</font><br/> -<br/> -<br/>If ExtInfo.Trailing is set to yes, the metadata for this file will include all data after the final "End" in the control document. If the ExtInfo.URI parameter exists, the contents of the URI pointed to should be included in the metadata for the current document. -<br/><h2><a name="Nb72">Examples</a> -</h2> -<br/><b>Example 2. Pseudo Website</b> - -<br/><font face="courier" size="2"> Version -</font><br/><font face="courier" size="2"> Revision=1 -</font><br/><font face="courier" size="2"> EndPart -</font><br/><font face="courier" size="2"> Document -</font><br/><font face="courier" size="2"> Redirect.Target=CHK at aabbccddee -</font><br/><font face="courier" size="2"> EndPart -</font><br/><font face="courier" size="2"> Document -</font><br/><font face="courier" size="2"> Name=split -</font><br/><font face="courier" size="2"> SplitFile.Size=102400 -</font><br/><font face="courier" size="2"> SplitFile.BlockCount=3 -</font><br/><font face="courier" size="2"> SplitFile.Block.1=freenet:CHK at aabbccddee1 -</font><br/><font face="courier" size="2"> SplitFile.Block.2=freenet:CHK at aabbccddee2 -</font><br/><font face="courier" size="2"> SplitFile.Block.3=freenet:CHK at aabbccddee3 - -</font><br/><font face="courier" size="2"> Info.Format=text/plain -</font><br/><font face="courier" size="2"> EndPart -</font><br/><font face="courier" size="2"> Document -</font><br/><font face="courier" size="2"> Name=date-redirect -</font><br/><font face="courier" size="2"> DateRedirect.Increment=93a80 -</font><br/><font face="courier" size="2"> DateRedirect.Offset=a8c0 -</font><br/><font face="courier" size="2"> DateRedirect.Target=SSK at aabbccddee/something -</font><br/><font face="courier" size="2"> End -</font><br/> -<br/>This would declare a sort of website. Assume it is inserted under -<br/>freenet:SSK at aabbccddee/mysite. Accessing freenet:SSK at aabbccddee/mysite -<br/>or freenet:SSK at aabbccddee/mysite// would cause the first redirect -<br/>(without a Name) to be processed. -<br/> -<br/>If freenet:SSK at aabbccddee/mysite//split were accessed the SplitFile - -<br/>section would be processed, as would the Info section. This would -<br/>(hopefully) swarm a file, with some configurable concurrency. None of the CHKs -<br/>being swarmed need any metadata because it's included in the control document. -<br/> -<br/>If freenet:SSK at aabbccddee/mysite//date-redirect were accessed the -<br/>DateRedirect section would be processed. This would redirect to some other -<br/>URI. -<br/> -<br/><a name="Nb8b"></a><b>Example 3. TrailingInfo example </b> -<br/><font face="courier" size="2"> Version -</font><br/><font face="courier" size="2"> Revision=1 -</font><br/><font face="courier" size="2"> EndPart -</font><br/><font face="courier" size="2"> Document -</font><br/><font face="courier" size="2"> Redirect.Target=CHK at aabbccddee - -</font><br/><font face="courier" size="2"> ExtInfo.Trailing=yes -</font><br/><font face="courier" size="2"> EndPart -</font><br/><font face="courier" size="2"> Document -</font><br/><font face="courier" size="2"> Name=doc1 -</font><br/><font face="courier" size="2"> Redirect.Target=CHK at aabbccddee1 -</font><br/><font face="courier" size="2"> Info.Format=text/plain -</font><br/><font face="courier" size="2"> ExtInfo.Trailing=yes -</font><br/><font face="courier" size="2"> EndPart -</font><br/><font face="courier" size="2"> Document -</font><br/><font face="courier" size="2"> Name=doc2 -</font><br/><font face="courier" size="2"> DateRedirect.Target=SSK at aabbccddee/something -</font><br/><font face="courier" size="2"> ExtInfo.URI=CHK at eeddccbbaa -</font><br/><font face="courier" size="2"> End - -</font><br/><font face="courier" size="2"> <XML blah blah> -</font><br/><font face="courier" size="2"> blah blah -</font><br/><font face="courier" size="2"> </XML> -</font><br/> -<br/>This describes the same website as above, but with metadata in a trailing field. It's completely reasonable for multiple documents to share the same TrailingInfo metadata. (Since only one needs to be processed, this shouldn't be a problem) -<br/> -<br/><h2><a name="Nb9a">Handling Other Commands</a> -</h2> - -<br/><div class='simplebox' align='center'>This section is Deprecated pending further revision of the spec</div> -<br/> -<br/>Other commands may be inserted if they follow the general structure of -<br/>metadata commands set out above. -<br/> -<br/>These commands may set an Importance header of type string. "Required" -<br/>means that the client should ALWAYS stop processing if it doesn't -<br/>understand this extended command. "Informational" means that the -<br/>client should NEVER stop processing if it doesn't understand this -<br/>extended command. "Optional" means it's up to the client to -<br/>decide. -<br/> -<br/>If not given, Importance defaults to Informational. -<br/> -<br/>Since a client will process, for a given Name, the first -<br/>command it understands, you can do the following: - -<br/> -<br/><h3><a name="Nbae">Note</a> -</h3> -<br/>WaitRedirect is an example of an extended command, not a speced command -<br/> -<br/><a name="Nbb4"><b>Example 4. An Extended Command</b></a> -<br/> -<br/> -<br/><font face="courier" size="2"> WaitRedirect.Time=5 -</font><br/><font face="courier" size="2"> WaitRedirect.Target=CHK at gargargargar -</font><br/><font face="courier" size="2"> Redirect.Target=freenet:CHK at gargargargar -</font><br/> -<br/>The WaitRedirect will override the Redirect, if the client understands -<br/>WaitRedirects. -<br/> - -<br/>-- SebastianSpaeth - 24 Feb 2002<br/> Deleted: trunk/website/pages/news.php =================================================================== --- trunk/website/pages/news.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/news.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,45 +0,0 @@ -<!-- Please keep this to at-most 3 news items, and if it is more than a -few sentences - create a separate page and link to that (ie. Slashdot -style). Additionally, please remove obsolete news items (such as -old new build announcements) --> -<!-- removed due to large donation - its unfair to imply that the project - is at death's door -<h3>Financial Status</h3> -The project's current Paypal balance is <b><? -include("paypaltotal.txt"); -?></b>. The project requires approximately $2,300 per month to pay for -its -full time developer, Matthew Toseland. If you would like to help -support the Freenet Project, you can make a convenient donation through -our <a href="/donate.html">donations page</a>. ---> -<h3>News</h3> -<p><b>15th May, 2007 - John Pozadzides donates $10,000 to Freenet Project</b></p> -John Pozadzides, founder of <a href="http://HTMLHelp.com">HTMLHelp.com</a> and former Vice President of Sales for <a href="http://savvis.net">SAVVIS Communications</a>, has donated $10,000 to the Freenet Project to fund ongoing -development of the Freenet software. John says: -<blockquote> -More than a decade ago when I founded HTMLHelp.com I had a vision of the Internet as the ?great equalizer?. I believed that it would free us from the content filtering imposed by mega-media companies and governments. It turns out this has been true for most of us - but not all. -<p/> -I view supporting the Freenet Project as a logical extension of that original dream, this time to include people who were previously unable to freely participate. -</blockquote> -This donation will be used to fund general development, and in particular, improvements to software usability and stability. A specific -goal is the completion of Freenet's "opennet" functionality which will make it far easier for many users to get Freenet up and running. -<p/> -Anyone is free to make their own donation to the project, via a variety of convenient methods including Paypal and Google Checkout through our <a href="donate.html">donations page</a>. -<p/> -You can read John's blog entry announcing this donation <a href="http://onemansblog.com/2007/05/15/privacy-equals-freedom-support-the-freenet-project/">here</a>. -<p><b>12 March, 2007 - Google Summer of Code update</b></p> -<p>We have selected 6 students to work for us over the summer, paid for by -<a href="http://code.google.com/soc/freenet/about.html">Google Summer of Code</a>.<p> -<p>These are: -<ul> -<li><b>Swati Goyal</b> will be working on improving searching in Freenet.</li> -<li><b>Frédéric Rechtenstein</b> will be building us a blogging plugin.</li> -<li><b>Alberto Bacchelli</b> will be building a test framework and many unit tests.</li> -<li><b>Vilhelm Verendel</b> will be working on simulating the growth of the network.</li> -<li><b>Srivatsan</b> will be working on improving Freenet's connection encryption and possibly on darknet introductions.</li> -<li><b>Mladen Kolar</b> will be building a definitive C/C++ library for the <a href="http://wiki.freenetproject.org/FreenetFCPSpec2Point0">Freenet Client Protocol</a>.</li></p> -</ul><p>Congratulations to all of these students. Last year's Summer of Code yielded results including -<a href="http://wiki.freenetproject.org/Thaw">Thaw</a>, <a href="http://wiki.freenetproject.org/Freemail">Freemail</a>, -new low-level simulations and a great deal of work on the installer, packaging and general bugfixing. Even better, -two of last year's students are now core developers themselves mentoring Summer of Code students this year ! Deleted: trunk/website/pages/ngrouting.php =================================================================== --- trunk/website/pages/ngrouting.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/ngrouting.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,255 +0,0 @@ -<H2><a href="http://freenetproject.org/">Freenet</a>'s Next Generation Routing Protocol</H2> -<b>by <a href="mailto:ian at locut.us">Ian Clarke</a>, Freenet Project Coordinator, 20th July 2003</b> -<P>While Freenet has come a long way since my 1999 paper, the -fundamental ideas behind how Freenet finds information have changed -very little. Now that Freenet is maturing it is time to re-examine -the core Freenet architecture to see where it can be improved. This new -design is known as "Next Generation Routing". - -<H3>Freenet's current routing mechanism</H3> -<P>Firstly, let me recap on how Freenet works right now. Every node -in the Freenet network is required to provide a simple service to -other nodes in the system. When a node receives a request for a -particular key, it should do its best to retrieve the data -corresponding to that key as quickly as possible and send it back to -the node that requested it. Provided that every node in the Freenet -network performs this service reasonably well - Freenet will work. - -<P>In the simplest case, the recipients of the request will already -have the data cached locally, and can immediately send it to the -requester. In most cases, however, the node will need to request the -data from another node in the network which it thinks will be better -able to retrieve the data. The way Freenet makes this decision forms -the core of the Freenet algorithm. - -<P>At present, the algorithm used to select which node should be -consulted for a given key is relatively simple. In short, when a node -forwards a request for a particular key to another node in the -network, and that node is successful in retrieving the data, the -address of an upstream node (possibly the one where the data -originated) is included in the reply, this is called the "DataSource". -The requester makes a note of -the requested key, and the DataSource node passed back with that reply. -It is assumed that the upstream node is a good place to route future -requests for keys closest to the previously requested key. It is -analogous to deciding that since your friend George successfully -answered a question about France, he might also be a good person to -answer a question about Belgium. - -<P>Despite its simplicity, this approach has proved surprisingly -effective, both in simulation and in practice. One of the expected -side effects of this approach was that nodes would tend to specialize -in the retrieval of some keys to the exclusion of others. This can be -seen is somewhat analogous to the way that people specialize in -particular areas of expertise. This effect has been observed in -actual Freenet nodes deployed in the Freenet network, the following -image represents the keys stored by an actual Freenet node. The X -axis represents the "keyspace", at the left is key 0, across to the -right which is key 2<sup>160</sup>. Dark areas indicate where the -node has better knowledge. The dark strips indicate areas in which -the node has detailed knowledge about where requests for those keys -should be routed: -<p> -<center><img src="image/rthist.png" width="480" height="100"></center> -<p> -Note that when the node was first initialized keys would have been evenly -distributed across the keyspace. This is a good -indication that Freenet's current routing algorithm is performing -correctly. Nodes specialize like this due to an emergent feedback effect, -when a node successfully responds to a request for a given key - it increases -the likelihood that other nodes will route requests for similar keys in the -future. Over time this effect causes the specialization that can be seen -very clearly in the diagram above. You can see an animation of a node's datastore specializing over time -<a href="image/histanim.mpeg">here</a>. - -<H3>Next generation routing mechanism</H3> -<P>The fact that it works, of course, does not mean that it cannot be -improved upon. At the simplest level, note that -the current algorithm does not distinguish between a slow Freenet node -sitting at the end of a slow modem line in the remote Australian outback, -and a powerful node connected to a T3 in downtown Los Angeles. Also note -that while the current algorithm works, the only real way to test -improvements to the algorithm is to see how they affect a large scale -network, either in simulation, or in the real world - this leads to -a slow and cumbersome development cycle. -By making more effective use of the -information available to a Freenet node, we can dramatically improve -a node's ability to route requests in a manner likely to result in -the fastest response for that request. By avoiding guesswork, and -striving for a firm basis in statistical reality - we can even accelerate -our development effort by allowing ourselves to determine the effectiveness -of a modification based on its effect on a single node, before we deploy it. -These goals are achieved by Next Generation Routing. - -<P>The core idea behind the Next Generation Routing design is to make -Freenet nodes much smarter about deciding where to route information. -For each node reference in its routing table, a node will collect -extensive statistical information including response times for -requesting particular keys, the proportion of requests which succeed -in finding information, and the time required to establish a -connection in the first place. When a new request is received, this -information is used to estimate which node is likely to be able to -retrieve the data in the least amount of time, and that is the node -to which the request is forwarded. -<H3>DataReply estimation</H3> -<P>The most important metric is finding a way to estimate, given a -given key being requested from a given node, how long it will take to -get the data. To achieve this an algorithm was required that would -meet the following criteria: -<UL> - <LI><P>Must be able to make reasonable guesses about keys that it - has not seen before - <LI><P>Must be progressive – if a node's performance changes - over time, this should be represented, but should not be - oversensitive to recent fluctuations which may vary significantly - from the average. - <LI><P>Must be “scale free”<BR>Consider a naive - implementation of this that works by splitting the keyspace into a - number of sections and maintaining an average for each. Now consider - a node where most of its incoming requests lie within a very small - section of the keyspace. Our naïve implementation would be - unable to represent variations in response time within that small - area and would therefore limit that node's ability to accurately - estimate routing times. - <LI><P>Must be efficiently serializable -</UL> -<P>We developed a simple algorithm which meets these criteria. It -works by maintaining N “reference” points (where N is -configurable – 10 being a typical value) which are initially -evenly distributed across the keyspace. When we have a new routing -time sample for a particular key – we move the two points -closest to our new sample toward it. The amount they are moved can -be adjusted to change how “forgetful” the estimator is. -<P><center><IMG SRC="image/rte_diag.gif" NAME="Graphic1" WIDTH=335 HEIGHT=256 BORDER=0><BR CLEAR=LEFT><BR><BR> -</center> -<P>In this diagram it can be seen that two of the reference points -(blue) are being moved toward our new data sample (red). -<P>When we wish to create an estimate for a new key, we see where the -line between the reference points at either side of that key -intersects (green) and this gives us our estimated response time. -<H3>Handling different data lengths</H3> -<P> -Also consider the fact that there isn't just one timing measurement -that must be taken into account when we receive a DataReply, there -are two. The first is the time required to get the beginning -of the response, the second is the time required to transfer the data. -This raises the question of how we can combine these two timings -into a single value which can be reported to the estimator algorithm -described above. -<p> -The answer we have settled upon is to use these two numbers to -estimate what the total time between the request being sent and -the transfer being <i>completed</i> would have been had the data -been the average length of data in Freenet (which we in turn estimate -by taking the average length of data in the local datastore). This -is a single value which can be compared directly with other timing -measurements even when they were made with requests where the data -was differing sizes. -<h3>Handling DataNotFound messages</h3> -When a request has visited the number of nodes specified in its -"hops to live" field (similar to "time to live" in other protocols), -a "DataNotFound" or DNF message is returned to the requester. This indicates -that the data could not be found within the time limit specified by -the requester. There are two reasons that a DNF can be returned for some -data, either the data exists but wasn't found, or the data didn't exist -at all. In the former case, a DNF would indicate a shortcoming in the -routing ability of whichever node the request was routed to. In the latter -case, it would not - but the difficulty is that for a given DNF - there -is no easy way to tell what type of DNF it is, whether it is "legitimate" -or not. -<p> -Let, us, for a moment, assume that there was a way to identify illegitimate -DNFs. In this case, the cost in terms of the time required for such a DNF -would be the time required to receive the DNF plus the time required to -request the same data from somewhere else. We can estimate the former -by looking at how long previous DNFs took for requests sent to this node -(taking into account that this time will be proportional to the HTL of -the request <sup>ie.</sup> a request with a HTL of 10 will visit twice -as many nodes as a request with HTL 5 and will therefore take about twice -as long to return a DNF). We can estimate the latter by looking at the -average amount of time it takes to successfully retrieve some data. -<p> -Now, imagine a Freenet node with perfect routing, the only DNFs it returns -would be "legitimate" - since if the data was in the network, it would -find it. The proportion of DNFs this perfect node returned would be the -same as the proportion of DNFs for which the data simply didn't exist -in the network. Now - such a node (we assume) could not exist, however -we can approximate it by looking at the proportion of DNFs for the node -with the lowest proportion of DNFs in our routing table. -<p> -So now, we can determine the time cost of DNFs, and we can also approximate -what proportion of a node's DNFs are legitimate - and therefore should not -incur a time cost. We can therefore add an estimated routing time cost for -each node to account for DNFs. - -<h3>Handing failed connections</h3> -With nodes which are heavily overloaded - it is also possible that when -we attempt to establish a connection to them - we will be unable to do-so, -we can account for this possibility by recalling the average proportion -of failed connections for each node, and how long each took - and adding -this on to our estimated routing time for that node. - -<h3>Inherited Knowledge</h3> -One of the problems observed in the current Freenet is the time required -for a Freenet node to establish sufficient knowledge about the Freenet -network to route efficiently. This is particularly damaging to Freenet's -usability as people's first impressions of software is critical, and the -first impressions of Freenet are generally the worst impressions of Freenet -as they are formed before the Freenet node can route requests effectively. -<p> -The solution is to employ some qualified trust between Freenet nodes, allowing -them to share the information the have collected about each other, albeit in -a rather untrusting way. There are two ways that a Freenet node finds out -about new Freenet nodes. The first is when they first start up - they load -a "seednodes.ref" file which contains the routing expertise of another -experienced node. With N.G routing this information will be enriched with -actual statistical data so that even with a node first starts up, it will -already have the knowledge of an experienced node. It will then go on to -refine this knowledge according to its own experience. -<p> -The other way nodes learn about new nodes is in the "DataSource" field -of successful replies to requests for data. The DataSource field will -contain one of the upstream nodes in the request chain. The simple approach -would be to allow this DataSource node to attach statistical information -concerning its own performance to the reply - but clearly this would be -open to abuse. A refinement would be to say that any node passing back -a reply which has collected its own statistical information about the -node in the DataSource will replace the statistical data in the reply with -its own. This will mean that even if a node does put misleading -statistical information in the reply - it will probably be replaced as it -is passed back to the requester. -<h3>Benefits of Next-Generation Routing</h3> -<ul> -<li><b>Adapts to network topology</b><br> -In the old Freenet routing algorithm, a Freenet node running on a slow -modem in the middle of the Australian outback is viewed pretty much the -same way as a fast node running on a T3 in downtown San Jose. In essence, -the underlying Internet topology is ignored by Freenet, all nodes are treated -equally. In contrast, N.G routing bases its decisions on actual routing -times, this means that a node will tend to prefer routing messages to -faster nodes, on better Internet connections that are geographically -closer - unless those nodes become overloaded, which will decrease the -incentive to use them and have a load balancing effect. -<li><b>Performance can be evaluated locally</b><br> -With the old approach to Freenet's routing, the only concrete way to -evaluate its performance was by trying it. With N.G Routing we have -a simple metric of how effectively it is performing - namely the difference -between estimated routing times, and actual routing times. If a modification -to the algorithm results in closer estimates, then we know it is better. If not, -we know that it isn't. This will dramatically accelerate the development cycle -of future improvements. -<li><b>Approaching optimality</b><br> -If one accepts that in an environment where only one's own node may be trusted, -it is reasonable to say that all decisions should be based upon one's own -observations. Given this, it could be said that if we make optimal use of -prior observations while making routing decisions, then our routing algorithm -is optimal. Now clearly there will always be room for refinement -in the manner in which the new algorithm estimates routing times -</ul> -<h3>Current Status</h3> -NGRouting is now deployed in both the stable and the <a href="?page=tryunstable">unstable</a> -development branches. -<h3>Interested in helping?</h3> -In addition to joining our development effort, you can really help us to make -this all a reality by donating whatever you can spare to the project on our -<a href="/donate.html">Donations</a> page. Deleted: trunk/website/pages/openjobs.php =================================================================== --- trunk/website/pages/openjobs.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/openjobs.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,23 +0,0 @@ - -<center><h2>How Can You Help?</h2></center> -<P><LI>Produce RFC quality specs for client metadata, FCP, and FNP. -<P><LI>Write unit tests for various components of Fred (routing table, data store, ADTs, the message handler, key encoding and decoding algorithms, and so forth). -<P><LI>Come up with a smoke test suite for a newly compiled node. -<P><LI>Produce a gcj-based binary distro of Fred. -<P><LI>Produce a Kaffe-bundled distro of Fred. -<P><LI>Fix the logger so we can filter out messages we don't care about. -<P><LI>Create a royalty-free drawing or picture of a toad. -<P><LI>Scrutinise the webpages of the Freenet-site for spelling/grammar mistakes and report them. -<P><LI>Feel free to suggest additions/improvements on texts or pictures/artwork; we'll have a look at them. -<P><LI>Run a node 24/24. -<P><LI>Create Freesites and/or insert content on Freenet. -<P><LI>Spread the word, try to get Freenet in the news. -<P><LI>Donate. -<P><LI>Donate more. -<P><LI>Help coding & debugging if you can. -<P><LI>Whine less about what's wrong with it, but give specific bug-reports in stead. -<P><LI>Join #freenet on freenode for other suggestions/discussions. -<P><LI>Document the various fproxy options. -<P><LI>Create a page wich contains the most interesting topics/talks/discussions (summarised) on the maillists (especially the devl) for each month. -<P><LI>Pick up and solve a bug on our <a href="https://bugs.freenetproject.org/">Bugtracker</a> -<P> Deleted: trunk/website/pages/papers.php =================================================================== --- trunk/website/pages/papers.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/papers.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,47 +0,0 @@ -<h3>Papers</h3> - -<a href="/22c3vid.html">Video of Small World talk, Berlin, December 2005</a><br> -This is a video of a talk given by Ian Clarke and Oskar Sandberg at the Chaos Computer Congress in Berlin, December 2005, describing the (then) new architecture for Freenet 0.7. You can also download the <A -href="http://freenetproject.org/papers/ccc/ccc-slideshow.pdf.bz2">slideshow</a>, -and the source for the Java <a -href="http://freenetproject.org/papers/ccc/ccc-freenet-demo.tar.bz2">demo</a> -(requires Java 1.5). -<p> - -<a href="http://www.math.chalmers.se/~ossa/lic.pdf">Searching in a Small World</a> (PDF)<br> -Oskar Sandberg's licentiate thesis describing a simple decentralized mechanism for constructing small world -networks that is inspired by Freenet's original design. Part II of the thesis describes the basis for -the new Darknet architecture. -<p> -<a href="http://www.math.chalmers.se/~ossa/swroute.pdf">Distributed routing in Small World Networks</a> (PDF)<br> -A paper by Oskar Sandberg describing the theoretical basis for the new "Darknet" routing mechanism employed -by Freenet 0.7. -<p> -<a href="http://events.ccc.de/congress/2005/fahrplan/events/492.en.html">Chaos Computer Congress Talk</a> -(slideshow)<br> -This is a <a href="http://freenetproject.org/papers/ccc/ccc-slideshow.pdf.bz2">slideshow</a> for a talk given -at the Chaos Computer Congress on 30th Dec 2005 in Berlin, Germany by Ian -Clarke and Oskar Sandberg. It described the new "darknet" approach to be employed in Freenet 0.7. A Java -demonstration to accompany the talk is <a -href="http://freenetproject.org/papers/ccc/ccc-freenet-demo.tar.bz2">also</a> available. -<p> -<a href="/ngrouting.html">Next Generation Routing Algorithm</a><br> -This article describes Freenet's "Next Generation" routing algorithm. This was a novel -approach which had nodes making routing decisions based on sophisticated analysis of -the time required to route previous requests. This algorithm was promising, but -was eventually dropped in favour of a much simpler approach in Freenet 0.7. -<p> -<a href="/papers/freenet-ieee.pdf">Protecting Freedom of Information -Online with Freenet</a><br> -An IEEE Internet Computing article describing the Freenet architecture -circa 2002 - probably the best introduction to the theory behind -Freenet. -<P> -<a href="/papers/ddisrs.pdf"> -FreeNet White Paper</a><br> -Original white paper by Ian Clarke, Division of Informatics, University of Edinburgh 1999. -<p> -<hr> -<p> -See also all the other <a href="http://wiki.freenetproject.org/FreenetSpecifications">Developer documentation</a>.<p> -And an unofficial, more elaborate <a href="http://www.freenethelp.org">Freenet Help Site</a> was created, to go deeper into the questions newbies may have about the usage and inner-workings of Freenet. Deleted: trunk/website/pages/people.php =================================================================== --- trunk/website/pages/people.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/people.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,30 +0,0 @@ -<h3>People</h3> -<p><b>Note:</b> This is an incomplete list, a large number of people have -contributed to the project. </p> - -<p><b>Ian Clarke</b><br> -Freenet is based on Ian's paper "A Distributed Decentralised Information -Storage and Retrieval System". Ian started the Freenet Project around July of -1999, and continues to coordinate the project. In his day job, Ian is the -founder and CEO of <a href="http://thoof.com/">Thoof</a>.</p> - -<p><b>Matthew Toseland</b><br> -Matthew has been working on Freenet since before the 0.5 release. His work -and that of others has resulted in dramatic improvements to the performance -and stability of the network.</p> - -<p><b>Oskar Sandberg</b><br> -Oskar was also one of the earliest contributors to the Freenet project, and -continues to play a core role in ongoing development.</p> - -<p><b>Florent Daignière</b><br> -Florent has been our system administrator since around the time 0.7 was started, -and has helped on other matters like the current installer.</p> - -<p><b>Scott Miller</b><br> -Scott is responsible for the implementation of much of the cryptography -elements within Freenet.</p> - -<p><b>Steven Starr</b><br> -Steven helps with administration of Freenet Project Inc, and is an advisor -to the project on business and publicity matters.</p> Deleted: trunk/website/pages/philosophy.php =================================================================== --- trunk/website/pages/philosophy.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/philosophy.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,145 +0,0 @@ -<h1> The Philosophy behind Freenet </h1> -<h3> By Ian Clarke </h3> -<p> -</p><h3> 1. A Disclaimer </h3> There are -many reasons why people get involved in the Freenet Project. Some share -the views outlined in this document; some share variations of these -views, which are also served by what we are trying to achieve; and some -just enjoy the technical challenge. These are the ideas which motivated -me to architect the system in the first place, but not necessarily the -views that everyone involved in the Freenet project holds. <p> - -</p><h3> 2. Suggested prior reading </h3> -For this document to make sense, you should probably know what Freenet is. You can get a good overview on the <a href="/whatis.html">What is Freenet?</a> page. -<p> -</p><h3> 3. The importance of the Free flow of information </h3> -Freedom of speech, in most western cultures, is generally considered to -be one of the most important rights any individual might have. Why is -the freedom to share ideas and opinions so important? There are several -ways to answer this question. <p> -</p><h3> 3.1 Communication is what makes us human </h3> -One of the most obvious differences between mankind and the rest of the -animal kingdom is our ability to communicate sophisticated and abstract -concepts. While we constantly discover that animal's communication -ability is more sophisticated than previously assumed, it is unlikely -that any other animal approaches our own level of ability in this area. <p> - -</p><h3> 3.2 Knowledge is good </h3> -Most people, given the option of knowing something and not knowing -something, will choose to have more information rather than less. Wars -have been won and lost over who was better-informed. This is because -being better-informed allows us to make better decisions, and generally -improve our ability to survive and be successful. <p> -</p><h3> 3.3 Democracy assumes a well informed population </h3> -Many people today live under democratic governments, and those who -don't, probably want to. Democracy is an answer to the question of how -to create leaders, while preventing them from abusing that power. It -achieves this by giving the population the power to regulate their -government through voting, yet the ability to vote does not necessarily -mean that you live in a democratic country. For a population to -regulate their government effectively it must know what their -government is doing, they must be well informed. It is a feedback loop, -but this loop can be broken if the government has the power to control -the information the population has access to. <p> -</p><h3> 4. Censorship and freedom </h3> -Everyone values their freedom, in fact, many consider it so important -that they will die for it. People like to think that they are free to -form and hold whatever opinions they like, particularly in western -countries. Consider now that someone had the ability to control the -information you have access to. This would give them the ability to -manipulate your opinions by hiding some facts from you, by presenting -you with lies and censoring anything that contradicted those lies. This -is not some Orwellian fiction, it is standard practice for most western -governments to lie to their populations, so much so, that people now -take it for granted, despite the fact that this undermines the very -democratic principles which justify the government's existence in the -first place. <p> -</p><h3> 5. The solution </h3> The only way -to ensure that a democracy will remain effective is to ensure that the -government cannot control its population's ability to share -information, to communicate. So long as everything we see and hear is -filtered, we are not truly free. Freenet's aim is to allow two or more -people who wish to share information, to do so. <p> - -</p><h3> 6. Isn't censorship sometimes necessary? </h3> -Of course no issue is black and white, and there are many who feel that -censorship is a good thing in some circumstances. For example, in some -European countries propagating information deemed to be racist is -illegal. Governments seek to prevent people from advocating ideas which -are deemed damaging to society. There are two answers to this however. -The first is that you can't allow those in power to impose "good" -censorship, without also enabling them to impose "bad" censorship. To -impose any form of censorship a government must have the ability to -monitor and thus restrict communication. There are already criticisms -that the anti-racism censorship in many European countries is hampering -legitimate historical analysis of events such as the second world war. <p> The second argument is that this "good" censorship is -counter-productive even when it does not leak into other areas. For -example, it is generally more effective when trying to persuade someone -of something to present them with the arguments against it, and then -answer those arguments. Unfortunately, preventing people from being -aware of the often sophisticated arguments used by racists, makes them -vulnerable to those arguments when they do eventually encounter them. </p><p> Of course the first argument is the stronger one, and would -still hold-true even if you didn't accept the second. Basically, you -either have censorship, or you don't. There is no middle-ground. </p><p> -</p><h3> 7. But why is anonymity necessary? </h3> -You cannot have freedom of speech without the option to remain -anonymous. Most censorship is retrospective, it is generally much -easier to curtail free speech by punishing those who exercise it -afterward, rather than preventing them from doing it in the first -place. The only way to prevent this is to remain anonymous. It is a -common misconception that you cannot trust anonymous information. This -is not necessarily true, using digital signatures people can create a -secure anonymous pseudonym which, in time, people can learn to trust. -Freenet incorporates a mechanism called "subspaces" to facilitate this. -<h3> 8. And what of copyright? </h3> - -Of course much of Freenet's publicity has centered around the issue of -copyright, and thus I will speak to it briefly. The core problem with -copyright is that enforcement of it requires monitoring of -communications, and you cannot be guaranteed free speech if someone is -monitoring everything you say. This is important, most people fail to -see or address this point when debating the issue of copyright, so let -me make it clear: <p> -</p><center>You cannot guarantee freedom of speech and enforce copyright law</center> -<p> -It is for this reason that Freenet, a system designed to protect Freedom of Speech, must prevent enforcement of copyright. -</p><p> -</p><h3> 9. But how will artists be rewarded for their work without copyright? </h3> -<p> Firstly, even if copyright were the only way that artists could be -rewarded for their work, then I would contend that freedom is more -important than having professional artists (those who claim that we -would have no art do not understand creativity: people will always -create, it is a compulsion, the only question is whether they can do it -for a living). </p><p> Secondly, it could be questioned whether copyright is -effective even now. The music industry is one of the most vocally -opposed to enhancements in communication technology, yet according to -many of the artists who should be rewarded by copyright, it is failing -to do so. Rather it has allowed middle-men to gain control over the -mechanisms of distribution, to the detriment of both artists and the -public. </p><p> -</p><h3> 10. Alternatives to Copyright </h3> - -Fortunately it won't come to this. There are many alternative ways to -reward artists. The simplest is voluntary payment. This is an extension -of the patronage system which was frequently used to reward artists -prior to copyright, where a wealthy person would fund an artist to -allow them to create full-time. The Internet permits an interesting -extension of this idea, where rather than having just one wealthy -patron, you could have hundreds of thousands, contributing small -amounts of money over the Internet. <p> We actually practice what we preach in this regard too, on the -15th of March 2001 the Freenet Project started taking donations, and -within a week we had collected over $1000. </p><p> -</p><h3> 11. More sophisticated approaches: Fairshare </h3> -Of course some people ridicule this idea on the basis (I assume) that -nobody would ever pay for something unless forced to do so (despite -significant evidence to the contrary). While I disagree with their -rather depressing outlook on humanity, there are more sophisticated -mechanisms which do appeal to people's self-interest, such as -"Fairshare", where people can buy in to artists much as a venture -capitalist will buy into an idea they like, and if that artist is -successful they will be rewarded in proportion to their original -contribution. This has the nice effect of encouraging people to give -more money to obscure artists who they believe have potential. If their -investment doesn't pay-off, then they still have the satisfaction that -they contributed to an artist whose work they enjoy. - Deleted: trunk/website/pages/roadmap.php =================================================================== --- trunk/website/pages/roadmap.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/roadmap.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,259 +0,0 @@ -<P><BR><BR> -</P> -<TABLE WIDTH=800 BORDER=0 CELLPADDING=2 CELLSPACING=0> - <COL WIDTH=1> - <COL WIDTH=0> - <COL WIDTH=100> - <COL WIDTH=832> - <COL WIDTH=0> - <COL WIDTH=1> - <TR VALIGN=TOP> - <TD ROWSPAN=13 WIDTH=1 BGCOLOR="#ffffff"></TD> - <TD COLSPAN=4 WIDTH=944 BGCOLOR="#ffffff"> - <P ALIGN=LEFT><FONT SIZE=4 STYLE="font-size: 16pt">Matthew Toesland's (Toad) provisional Roadmap:</FONT> - </P> - <UL> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Freenet 0.6 and - NGRouting</B><BR> (we may put out a 0.5.3 if the network stabilizes - enough before NGRouting is implemented). The main change in 0.6 - will be the implementation of NGRouting. This may take - considerable tweaking to get right, but should solve the load - balancing problem in a rational and empirical way, something that - will be enormously useful. It may also make routing so effective - that it can work in hostile environment situations where path - folding (passing references around) is disabled (or reduced) to - prevent harvesting, or even with fixed (possibly hardware) links. - It will also adapt the routing to the network topology, speeding - up fetching data dramatically. We will not release 0.6 until the - network is working reasonably well i.e. a lot better than it is - now, so it may well include some features listed below. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>NIOv2</B><BR> This - may be implemented before 0.6, depending on how things go. The - current NIO implementation leaves negotiations, connection - establishment, sending several important messages such as - DataRequests, and trailing field transfers, pseudo-synchronous - (meaning we internally emulate blocking I/O to minimize code - changes). Also all the HTTP based client code, and some internal - stuff in the handling of FCP inserts. Not only is this - inefficient, severely limiting to the node's load handling - capacity, and prevents us from making the default splitfile - download or upload threads 100, it also allows various denial of - service attacks which might be feasible using very little - bandwidth. NIOv2 will eliminate most of these problems (we will - probably leave making the servlets use nonblocking I/O until - last, maybe significantly later, maybe even post 1.0). - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Multiplexing</B><BR> - Currently, a trailing field transfer will block a connection. - This is a waste of system resources (i.e. the connection limit), - makes handling various DoS's harder (we could reserve one - connection for each routing table node if we had muxing), can - cause timeouts, and slows the node down by forcing it to open - more connections to the same node (which often involves expensive - negotiations). We do not need to implement a full flow control - protocol (a la WebMUX), if we impose a maximum file size in the - node (we decided to make it 1MB). - <BR> -Multiplexing will bring significant benefits, regardless of routing algorithm. The main ones: -<BR>* Dramatically reduced connection churn. -<BR>* Significantly reduced memory usage. -<BR>* Significantly reduced CPU usage. This is not just cosmetic; CPU usage affects message send times, and when the CPU is pegged long-term, the node becomes pretty much useless to both the user and the network. -<BR>* Rewriting ConnectionHandler - new class MuxConnectionHandler - get rid of dead code etc. Will be backwards compatible by using the old CH for the old Presentation. -<BR>* Protocol will be simpler to parse, resulting in fewer serious (corruption -> connection death) bugs. Detecting where a trailer ended etc is tricky on the old protocol. The new protocol will have an explicit trailer ended with code X command. -<BR>* Room for extensibility, can e.g. get rid of Identify message hack, include IP address detection, etc, once the core functionality is implemented. -<BR>* Improve message send times. -<BR>* Eliminate some low bandwidth DoSs. -<BR>* Nodes on win9x and other connection limited environments will work better. - - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Session protocol - version 2.0 and related changes</B><BR> Several problems: firstly, - connection restarts currently involve public key crypto - operations; they could be made a lot lighter. Secondly, the - current session protocol wouldn't work at all for packet based - transports. Thirdly, Freenet TCP traffic can be identified by - various unencrypted control bytes that we use. Unfortunately, - many ISPs have already installed hardware capable of detecting - such traffic signatures - they use them for deprioritizing Kazaa - traffic to optimize interactive performance, but they could - easily be made to use it to identify or block Freenet traffic. - All of these should be fixed by session protocol version 2.0. - Also, it will enable us to implement network level IP address - detection. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Pre-mix routing</B><BR> - Entirely security related. If you request a large splitfile or a - site full of images, a node that the requests get sent to could - statistically determine the probability of you having made the - request rather than being the node it got routed through. And - HTLs give away information despite our randomizing them a little - on the client. So we add a mixmaster layer - tunnel the request - through a pair of nodes, so that the first one knows us, but not - our request, and the second one knows the request and the first - one, but not us. The nodes are chosen randomly within reasonable - bounds. This should reduce our vulnerability to such attacks. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Memory and CPU - optimization</B><BR> We need to reduce Freenet's memory, thread and - CPU footprint. Drastically. This will be profile driven but I - have several ideas about the big consumers already. Thread - footprint will be reduced by more NIO, as will CPU, but we will - need some profiling. Ideally our memory footprint should be - brought down to 64MB or so; we want people to run Freenet in the - background, 24x7, remember? - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Misc security</B><BR> - We need to increase the keysize to 256 bits (we use 128 a lot of - places), we need to look at resistance to (asymmetrical) DoS - attacks on the session level, there are probably lots of other - issues. One interesting possibility on the quasi-steganography - side would be to pass through data incoming on our port to - another process on the local machine unless/until we see a - node-specific magic string, thus making port scanning even - harder. We currently listen on all interfaces (and then reject - the connections from unwanted IP ranges) if asked to listen on - more than one - this needs fixing too. Padding messages (to - prevent information leakage to traffic analysis) is another - possibility; there may also be practical solutions to the various - timing attacks that can currently reveal whether a node served a - file from cache. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>UDP</B><BR> We may or - may not want to implement UDP support before 1.0. Advantages: it - is a message based transport, and therefore fast for messages; it - will allow users behind certain firewalls to run full nodes, and - it will give us the infrastructure for future steganographic - protocols. It also is not subject to OS level limitations on - number of simultaneous connections, and may be necessary in - relation to certain DoS attacks. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Web based config</B><BR> - The current situation with the wininstaller is very suboptimal; - we could extend the config updating infrastructure to allow a - fully java based (re-)configuration on the fly via the web - interface, and make the wininstaller completely optional, a thin - wrapper. Not necesarily a major priority. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Debugging!</B><BR> - Debugging has always been one of my main tasks. A full time - programmer can make more headway, more systematically on this - than an unsupported group of volunteers. We will need a LOT more - debugging before 1.0. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Really big - datastores</B><BR> It may become necessary to support datastores so - huge that the index does not fit in RAM, most likely we will do - this through the Berkeley DB, although several other - possibilities have been discussed. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Revocable SSKs</B><BR> - In order to have an official project freesite, or any other - important freesite really, we need to have a revocation mechanism - whereby anyone of several people can revoke a key that they do - not own (they are only trusted for revoking it if it is cracked). - Once this is done, we will set up an official project freesite. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Other client - changes</B><BR> We may implement some kind of client load manager, - which would balance request load between background splitfile - downloads and uploads, so that one splitfile gets lots of - "threads", but for several, available request "threads" - would be shared out. Background downloads should persist across - restarts. Prefetch, and transparent splitfile downloads (e.g. on - large inline images) also require this for effective operation. - On the other hand, we may not. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Performance</B><BR> - Major performance indicators include announcements working, - inserts at one node immediately being available at another given - enough HTL, latency measurements, and the stream servlets (which - probably need more work) actually working across the network. - Major releases should be based on performance more than features. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Development Tools</B><BR> - It would be very nice to have Freenet-hosted development tools - working for 1.0, so that anonymous contribution to the - development was easier. Arch and Frost are a good start. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>1.0</B><BR> We will - release 1.0 when we are confident that the network works - reasonably well, can handle the load of such a cataclysm, and we - have reasonable security in place against any known possible - asymmetrical-force attacks. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Kaffe/GCJ</B><BR> It - would be wonderful if Kaffe or GCJ would run Freenet (complete - with NIO) before 1.0, for a variety of reasons, but we won't - delay 1.0 for this nor will we spend project time getting these - to work unless absolutely necessary. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT SIZE=4><B>Post 1.0</B><BR></FONT></P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <UL> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>TUKs</B><BR> - A new key type that supports secure sites that: -<br>- are like edition sites that can be bookmarked -<br>- are like DBR sites, but don't dissapear when they aren't inserted -<br>- doesn't allow people to delete their content -<br>- allows people to backtrack to old versions without much trouble -<p>Summary: There are two parts to the proposal - a new key type and some supporting metadata. The new Time Updatable Key (TUK) contains in its payload only the latest site edition number. The TUK itself is signed by the site's owner, and nodes throughout freenet have access to the update date through standard datastore/FNP mechanisms. Whenever a TUK collision occurs, the one with the latest timestamp wins, replacing the old version. So, here we are with a new key containing a value that can be updated. Typical (proper) usage would have the TUK contain an ever increasing edition number (or milliseconds since epoch, for you DBR fans). <P> - - - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Passive Requests</B><BR> - Requests that hang around on the network waiting for the file to - become available. Faster and less load than client level - polling. Trivial application: reducing network load caused by - Frost, making it respond faster. Security implications not fully - understood yet (they will be before we implement it, also - below). - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Inverse Passive - Requests</B><BR> An idea to provide semi-permanence (availability of - files not immediately published) through a mechanism related to - passive requests. Of course it would not be true permanence, but - it would have some interesting uses and would be faster and less - load generating than the client level alternatives. Security - implications not fully understood yet. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Streaming</B><BR> - (Possibly lossy) - A stream insert is routed to a node chain by - its key; requests for the stream are routed to the same nodes. - The stream is multiplied in the request chain. If routing really - does work, we can do fun things like this and the above. - Security implications not fully understood yet. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Steganography, - etc</B><BR> Alternate transports, steganography, support for hostile - environment guerilla networks (e.g. no path folding), etc. An - eternal struggle. - </P> - <P ALIGN=LEFT STYLE="margin-bottom: 0cm"></P> - <LI><P ALIGN=LEFT STYLE="margin-bottom: 0cm"><B>Better NAT - support</B><BR> It might be possible to use NATted nodes better - through various mechanisms, we should investigate more fully - after 1.0. - </P> - </UL> - </UL> - \ No newline at end of file Deleted: trunk/website/pages/sponsors.php =================================================================== --- trunk/website/pages/sponsors.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/sponsors.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,20 +0,0 @@ -<h3>Freenet Sponsorship</h3> - -The following persons, organisations and companies have generously -sponsored this project through donations or discounts on hardware and services: -<ol> -<li><a href="http://onemansblog.com/">John Pozadzides</a><br> -John is the founder of HTMLHelp.com and former Vice President of Sales for SAVVIS Communications. John has donated $10,000 to the -Freenet Project to fund ongoing development of the Freenet software. - -<li><a href="http://www.toad.com/gnu/">John Gilmore</a><br> -John Gilmore is one of the founders of the Electronic Frontier Foundation, the Cypherpunks mailing list, and Cygnus Solutions. He created the alt.* hierarchy in Usenet and is a major contributor to the GNU project. -<p> -<li><a href="http://bytemark.co.uk/">Bytemark Hosting</a><br> -Bytemark provides discounted hosting facilities to Freenet and comes with -our highest recommendation. -</ol> -<p> - -Donation inquiries please contact <a href="mailto:ian at locut.us">Ian -Clarke</a><BR> Deleted: trunk/website/pages/stateof180204.php =================================================================== --- trunk/website/pages/stateof180204.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/stateof180204.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,73 +0,0 @@ -<h3>State of the Freenet</h3> -<h4>Ian Clarke, 18th February, 2004</h4> -The last few weeks have been very interesting indeed. Since about July 2003 Freenet's performance -inexplicably deteriorated, and since then we have been trying to find out why, and trying to find -solutions to get it back to its previously healthy performance. -<p> -Eventually we decided that the most likely explanation was simply that Freenet's users were pumping -more requests into the Freenet network than the network was capable of handling. As each node became -incapacitated through overload, it only increased the burden on other nodes in the network, resulting -in the problem spiraling out of control, until eventually the majority of the messages being sent -over the Freenet network (often over 95%) were nodes telling other nodes that they are overloaded! -<p> -After a number of failed attempts to solve the problem by making small changes to our existing load -balancing algorithm, it eventually became clear that we would need to go back to first principles, -and design a solution to the problem from the ground up. -<p> -The underlying idea behind this solution is that for the load balancing algorithm to be successful, -it would need to be able to limit the number of requests entering the network *at source*, namely -limiting the number of requests that could be created to what the network can effectively handle. -<p> -The eventual solution involved nodes adaptively estimating how many requests they can comfortably -handle, their "request quota", and then intelligently allocating this quota to the nodes that want to -send it requests for data. -<p> -We devised an algorithm that could allocate this quota in such a way that if a node wasn't using all -of its quota, that this spare quota could then be reallocated to other nodes that are more likely to -use it. This allows the total number of requests to remain under-quota, but without being so-far -under-quota that the nodes would be under-utilized. -<p> -A simple version of this algorithm was tested two weeks ago, and managed to reduce the number of -rejected requests from over 95% to less than 5%. We have now implemented a more sophisticated -version of the algorithm and are in the process of testing and tweaking it, but early results are -very positive. -<p> -We believe that this "rate limiting" scheme might be so effective as to have applications well beyond -Freenet, and my intention is to write a paper on the subject just as soon as we have gained -sufficient experience of how it operates in the real world. I think this demonstrates that while -the research nature of this project can sometimes cause frustration when things don't quite go to -plan, it also allows us to develop and explore cutting-edge ideas that have applications well beyond -the specific goals of the Freenet project. -<p> -At the very core of the project's ability to maintain this momentum, even when things aren't looking -very rosy from the users' perspective, is Matthew Toseland - the project's grossly underpaid and -extremely hardworking and talented full-time developer. Matthew asks for only ?850 per month, which -is way below what he could earn as a commercial software developer, and his full-time development -efforts, in addition to their direct effect, also serve as a catalyst for the contributions of other -volunteers. -<p> -Unfortunately, due to the recent poor performance, which we are now hopefully climbing out of, we -have been unable to do a formal release of the Freenet software. We are now optimistic that, if rate -limiting continues to be as promising as it appears to be, we will be in a position to release -Freenet 0.6, the first major release in well over a year. -<p> -The problem is that this is still 6 weeks away at an absolute minimum, and as things stand right now, -and despite the generous donations of many Freenet users, the project is almost out of funds with -which to employ Matthew. -<p> -For this reason I am appealing to supporters of the project to, once again, dig deep and if you can, -make a contribution to the project in the form of a Paypal donation, a Paypal subscription, or -through E-Gold if Paypal is not your cup of tea. -<p> -You can make a donation through the donations page on our website at: -<blockquote> - <a href="/donations.html"> - http://freenetproject.org/donations.html</a> -</blockquote> -If, for whatever reason, you would like to make a donation through other means, please contact me -directly at ian at freenetproject.org. -<p> -If you would like to try out the very latest trial version of the Rate -Limiting algorithm you will need to run the "unstable" branch of Freenet, -<a href="/tryunstable.html">this page</a> will explain how to do -this. Deleted: trunk/website/pages/switches.php =================================================================== --- trunk/website/pages/switches.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/switches.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,3 +0,0 @@ -<h2>Freenet Reference Daemon Documentation</h2> <h3>Fred,0.5,1.46,552</h3> <i>(This manual was automatically generated on Feb 5, 2003 1:16:03 PM. If you have updated Freenet since then, you may wish to regenerate it.)</i> FRED (Freenet REference Daemon) is the standard implementation of Freenet. This is the node, which serves as a router, data cache, and personal gateway all rolled into one. For FRED to run, it requires a configuration file to be present - this can be created either during the installation, by starting the node with the --config switch (see below), or running the freenet.config.Setup class manually. See the <a href="docs.html"> project documentation pages</a> for more information, or ask pointed and specific questions on the <a href="lists.html">mailing lists</a>. <h4>Command line switches: </h4> <table width="500" border="0" cellspacing="0" cellpadding="1"><tr><td><i>Name:</i></td><td><b>help</b>(--help | -h)</td></tr><tr><td><i>Arguments:</i></td><td></td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> prints this help message. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>system</b>(--system)</td></tr><tr><td><i>Arguments:</i></td><td></td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> prints JVM properties. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>version</b>(--version | -v)</td></tr><tr><td><i>Arguments:</i></td><td></td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> prints out version info. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>manual</b>(--manual)</td></tr><tr><td><i>Arguments:</i></td><td></td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> prints a manual in HTML. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>export</b>(--export | -x)</td></tr><tr><td><i>Arguments:</i></td><td>{file}|-</td></tr><tr><td><i>Default val:</i></td><td>-</td></tr><tr><td><i>Description:</i></td><td> exports a signed NodeReference. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>seed</b>(--seed | -s)</td></tr><tr><td><i>Arguments:</i></td><td>{file}|-</td></tr><tr><td><i>Default val:</i></td><td>-</td></tr><tr><td><i>Description:</i></td><td> seeds routing table with refs. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>config</b>(--config | -c)</td></tr><tr><td><i>Arguments:</i></td><td>{file}</td></tr><tr><td><i>Default val:</i></td><td>freenet.conf</td></tr><tr><td><i>Description:</i></td><td> generates or updates config file. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>paramFile</b>(--paramFile | -p)</td></tr><tr><td><i>Arguments:</i></td><td>{file}</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> path to a config file in a non-default location. </td></tr><tr><td colspan=2><hr></td></tr></table> <h4>Configuration options: </h4> These can reside either in the configuration file or be given as command line arguments. <br> <table width="600" border="0" cellspacing="0" cellpadding="1"><tr><td> <i>Name:</i></td><td><b>ipAddress</b>(-- ipAddress)</td></tr><tr><td><i>Arguments:</i></td><td>xxx.xxx.xxx.xxx</ td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> The IP address of this node as seen by the public Internet. You only need to override this if it cannot be autodetected, for example if you have a NAT (a.k.a. IP Masquerading) firewall/router, in which case you will need to set it to the IP address or DNS name of the internet-side interface of the router, which needs to be static (www.dyndns.org and similar services can help here if you have a dynamic IP). </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>listenPort</b>(- -listenPort)</td></tr><tr><td><i>Arguments:</i></td><td>{port no.}</td></tr><tr><td><i>Default val:</i></td><td>{random}</td></tr><tr><td><i>Description:</i></td><td> The port to listen for incoming FNP (Freenet Node <b style="color:black;background-color:#ffff66">Protocol</b>) connections on. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>clientPort</b>(- -clientPort)</td></tr><tr><td><i>Arguments:</i></td><td>{port no.}</td></tr><tr><td><i>Default val:</i></td><td>8481</td></tr><tr><td><i>Description:</i></td><td> The port to listen for local FCP (Freenet Client <b style="color:black;background-color:#ffff66">Protocol</b>) connections on. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>fcpHosts</b>(-- fcpHosts)</td></tr><tr><td><i>Arguments:</i></td><td>{host list}</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> A comma-separated list of hosts that may connect to the FCP port (clientPort). If left blank, only the localhost will be allowed. If you set this, make sure localhost is included in the list or access won't be allowed from the local machine. May be given as IP addresses or host names. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>adminPassword</b>(--adminPassword)</td></tr><tr><td><i>Arguments:</i></td><td>{string}</ td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> If this is set then users that can provide the password can can have administrative access. It is recommended that you do not use this without also using adminPeer below in which case both are required. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>adminPeer</b>(-- adminPeer)</td></tr><tr><td><i>Arguments:</i></td><td>{Identity FieldSet}</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> If this is set, then users that are authenticated owners of the given PK identity can have administrative access. If adminPassword is also set both are required. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>transient</b>(-- transient)</td></tr><tr><td><i>Arguments:</i></td><td>yes|no</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Transient nodes do not give out references to themselves, and should therefore not receive any requests. Set this to yes if you cannot receive incoming connections, or cannot keep the computer continuously online. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>doAnnounce</b>(- -doAnnounce)</td></tr><tr><td><i>Arguments:</i></td><td>yes|no</td></tr> <tr><td><i>Default val:</i></td><td>true</td></tr><tr><td><i>Description:</i></td><td> If this is true, the node will automatically announce to all nodes in the {seedFile} file, as specified by {announcementDelay}, etc. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>seedFile</b>(-- seedFile)</td></tr><tr><td><i>Arguments:</i></td><td>{file}</td></tr><tr><td><i>Default val:</i></td><td>seednodes.ref</td></tr><tr><td><i>Description:</i></td> <td> A file containing one or more node references which will be incorporated into the node's routing table on startup. A reference is only added if there is no previously existing reference to that node. When this node announces, it will announce to the nodes listed in this file. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>diagnosticsPath</b>(--diagnosticsPath)</td></tr><tr><td><i>Arguments:</i></td><td>{dir}</td></tr><tr><td><i>Default val:</i></td><td>stats</td></tr><tr><td><i>Description:</i></td><td> The directory in which to save diagnostics data. Defaults to {storePath}/stats if left blank. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>storeType</b>(-- storeType)</td></tr><tr><td><i>Arguments:</i></td><td>{string}</td></tr> <tr><td><i>Default val:</i></td><td>freenet</td></tr><tr><td><i>Description:</i></td><td> Datastore implementation. Put "native" (without the quotes) if you want the new native filesystem datastore, which stores the files in a directory. Put "convert" to convert from an old monolithic store to a native store. Note that convert uses lots of disk space while doing the conversion (approximately twice the datastore size), and the resulting store may be (temporarily) slightly larger than the old one due to block size mismatch (this will be fixed as soon as the node tries to add a file to the store). </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>nodeFile</b>(-- nodeFile)</td></tr><tr><td><i>Arguments:</i></td><td>{file}</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> The path to the file containing the node's private key, DSA group, cipher key, etc. Defaults to node_{port} in the current directory. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>storeFile</b>(-- storeFile)</td></tr><tr><td><i>Arguments:</i></td><td>{file}{,..}</td></ tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> The path to the single directory containing the data store. The total maximum size of the files in the directory is given by {storeSize}. It will create new files in this dir, and DELETE OLD ONES. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>storeSize</b>(-- storeSize)</td></tr><tr><td><i>Arguments:</i></td><td>{bytes}</td></tr><tr><td><i>Default val:</i></td><td>268435456</td></tr><tr><td><i>Description:</i></td><td> The byte size of each data store file. If there is more than one file, the total size of the store is the product of the number of files and {storeSize}. The maximum sized file that will be cached is 1/200th of this value, so we recommend the default 256MB, to cache the largest common file size on freenet, 1MB plus some headers </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>storeBlockSize</ b>(--storeBlockSize)</td></tr><tr><td><i>Arguments:</i></td><td>{bytes}</td></tr><tr><td><i>Default val:</i></td><td>4096</td></tr><tr><td><i>Description:</i></td><td> Size of blocks in the underlying filesystem for purposes of calculating space usage when storeType=native. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>storeCipherName</b>(--storeCipherName)</td></tr><tr><td><i>Arguments:</i></td><td>{ string}</td></tr><tr><td><i>Default val:</i></td><td>Twofish</td></tr><tr><td><i>Description:</i></td><td> The name of a symmetric cipher algorithm to encrypt the datastore contents with. Supported algorithms are "Twofish", "Rijndael", and "null", "none", or "void" (for no encryption). </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>storeCipherWidth </b>(--storeCipherWidth)</td></tr><tr><td><i>Arguments:</i></td><td>{ integer}</td></tr><tr><td><i>Default val:</i></td><td>128</td></tr><tr><td><i>Description:</i></td><td> The width in bits of the cipher key to use for the datastore. The allowed values for this will depend on the cipher algorithm. Twofish allows 64, 128, 192, or 256, while Rijndael allows 128, 192, or 256. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>routingDir</b>(- -routingDir)</td></tr><tr><td><i>Arguments:</i></td><td>{directory}</td> </tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> The directory in which to store the routing table files. Defaults to parent dir of storeDir. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>useDSIndex</b>(- -useDSIndex)</td></tr><tr><td><i>Arguments:</i></td><td>true|false</td></tr><tr><td><i>Default val:</i></td><td>true</td></tr><tr><td><i>Description:</i></td><td> Use a datastore index file. Shorter startup time, but we have to run checkpoints, which lock the datastore, causing a hiccup </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>bandwidthLimit</ b>(--bandwidthLimit)</td></tr><tr><td><i>Arguments:</i></td><td>{bytes/ sec}</td></tr><tr><td><i>Default val:</i></td><td>100000</td></tr><tr><td><i>Description:</i></td><td> The maximum number of bytes per second to transmit, totaled between incoming and outgoing connections. Ignored if either inputBandwidthLimit or outputBandwidthLimit is nonzero. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> inputBandwidthLimit</b>(--inputBandwidthLimit)</td></tr><tr><td><i> Arguments:</i></td><td>{bytes/sec}</td></tr><tr><td><i>Default val:</i></td><td>0</td></tr><tr><td><i>Description:</i></td><td> If nonzero, specifies an independent limit for incoming data only. (overrides bandwidthLimit if nonzero) </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> outputBandwidthLimit</b>(--outputBandwidthLimit)</td></tr><tr><td><i> Arguments:</i></td><td>{bytes/sec}</td></tr><tr><td><i>Default val:</i></td><td>0</td></tr><tr><td><i>Description:</i></td><td> If nonzero, specifies an independent limit for outgoing data only. (overrides bandwidthLimit if nonzero) </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> averageBandwidthLimit</b>(--averageBandwidthLimit)</td></tr><tr><td><i> Arguments:</i></td><td>{bytes/sec}</td></tr><tr><td><i>Default val:</i></td><td>0</td></tr><tr><td><i>Description:</i></td><td> The maximum number of bytes per second to transmit (averaged over a week), totaled between incoming and outgoing connections. Error to define it if any of (average)inputBandwidthLimit or (average)outputBandwidthLimit is nonzero. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> averageInputBandwidthLimit</b>(--averageInputBandwidthLimit)</td></tr><tr><td><i>Arguments:</i></td><td>{bytes/sec}</td></tr><tr><td><i>Default val:</i></td><td>0</td></tr><tr><td><i>Description:</i></td><td> If nonzero, specifies an independent limit for incoming data only (averaged over a week). (overrides averageBandwidthLimit if nonzero) </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> averageOutputBandwidthLimit</b>(--averageOutputBandwidthLimit)</td></tr> <tr><td><i>Arguments:</i></td><td>{bytes/sec}</td></tr><tr><td><i> Default val:</i></td><td>0</td></tr><tr><td><i>Description:</i></td><td> If nonzero, specifies an independent limit for outgoing data only (averaged over a week). (overrides bandwidthLimit if nonzero) </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> maxNodeConnections</b>(--maxNodeConnections)</td></tr><tr><td><i> Arguments:</i></td><td>{int}</td></tr><tr><td><i>Default val:</i></td><td>60</td></tr><tr><td><i>Description:</i></td><td> The maximum number of incoming and outgoing connections to allow at the same time. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> maxConnectionsPerMinute</b>(--maxConnectionsPerMinute)</td></tr><tr><td> <i>Arguments:</i></td><td>{int}</td></tr><tr><td><i>Default val:</i></td><td>60</td></tr><tr><td><i>Description:</i></td><td> The maximum number of outgoing connections established in a one minute period. Deprecated and ignored. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> maxConnectionsMinute</b>(--maxConnectionsMinute)</td></tr><tr><td><i> Arguments:</i></td><td>{milliseconds}</td></tr><tr><td><i>Default val:</i></td><td>60000</td></tr><tr><td><i>Description:</i></td><td> The length of the period over which there must be at most maxConnectionsPerMinute connections. Deprecated and ignored. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> maxRequestsPerInterval</b>(--maxRequestsPerInterval)</td></tr><tr><td><i>Arguments:</i></td><td>{int}</td></tr><tr><td><i>Default val:</i></td><td>300</td></tr><tr><td><i>Description:</i></td><td> The maximum number of outgoing connections established per maxRequestsInterval. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> maxRequestsInterval</b>(--maxRequestsInterval)</td></tr><tr><td><i> Arguments:</i></td><td>{milliseconds}</td></tr><tr><td><i>Default val:</i></td><td>60000</td></tr><tr><td><i>Description:</i></td><td> The length of the period over which there must be at most maxRequestsPerInterval connections. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>logLevel</b>(-- logLevel)</td></tr><tr><td><i>Arguments:</i></td><td>{word}</td></tr><tr><td><i>Default val:</i></td><td>normal</td></tr><tr><td><i>Description:</i></td><td> The error reporting threshold, one of: Error: Errors only Normal: Report significant events Minor: Report minor events Debug: Report events only of relevance when debugging </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>logFile</b>(-- logFile)</td></tr><tr><td><i>Arguments:</i></td><td>{filename}|NO</td></ tr><tr><td><i>Default val:</i></td><td>freenet.log</td></tr><tr><td><i>Description:</i></td><td> The name of the log file (`NO' to log to standard out) </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>logFormat</b>(-- logFormat)</td></tr><tr><td><i>Arguments:</i></td><td>{tmpl.}</td></tr><tr><td><i>Default val:</i></td><td>d (c, t): m</td></tr><tr><td><i>Description:</i></td><td> A template string for log messages. All non-alphabet characters are reproduced verbatim. Alphabet characters are substituted as follows: d = date (timestamp), c = class name of the source object, h = hashcode of the object, t = thread name, p = priority, m = the actual log message </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>logDate</b>(-- logDate)</td></tr><tr><td><i>Arguments:</i></td><td>{tmpl.}</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> A template for formatting the timestamp in log messages. Defaults to the locale specific fully specified date format. The template string is an ordinary Java date/time template - see: http://java.sun.com/products/jdk/1.4/docs/api/java.text.SimpleDateFormat .html </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>rtMaxRefs</b>(-- rtMaxRefs)</td></tr><tr><td><i>Arguments:</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>50</td></tr><tr><td><i>Description:</i></td><td> The number of references allowed per node in the routing table. This should not be set too high. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>rtMaxNodes</b>(- -rtMaxNodes)</td></tr><tr><td><i>Arguments:</i></td><td>{integer}</td></ tr><tr><td><i>Default val:</i></td><td>50</td></tr><tr><td><i>Description:</i></td><td> The number of unique nodes that can be contained in the routing table. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>maxRoutingSteps</b>(--maxRoutingSteps)</td></tr><tr><td><i>Arguments:</i></td><td>{ integer}</td></tr><tr><td><i>Default val:</i></td><td>40</td></tr><tr><td><i>Description:</i></td><td> The maximum number or node refs that will be used to route a request before RNFing. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>messageStoreSize </b>(--messageStoreSize)</td></tr><tr><td><i>Arguments:</i></td><td>{ integer}</td></tr><tr><td><i>Default val:</i></td><td>1000</td></tr><tr><td><i>Description:</i></td><td> The number of outstanding message replies the node will wait for before it starts to abandon them. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>failureTableSize </b>(--failureTableSize)</td></tr><tr><td><i>Arguments:</i></td><td>{ integer}</td></tr><tr><td><i>Default val:</i></td><td>1000</td></tr><tr><td><i>Description:</i></td><td> The number keys that failed to be retrieved the node should key track of. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>failureTableTime </b>(--failureTableTime)</td></tr><tr><td><i>Arguments:</i></td><td>{ milliseconds}</td></tr><tr><td><i>Default val:</i></td><td>1800000</td></tr><tr><td><i>Description:</i></td><td> The amount of time to keep keys cache keys that could not be found and automatically fail requests for them. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>minCP</b>(-- minCP)</td></tr><tr><td><i>Arguments:</i></td><td>{number between 0 and 1}</td></tr><tr><td><i>Default val:</i></td><td>0.01</td></tr><tr><td><i>Description:</i></td><td> Lower bound on Contact Probability of nodes in the Routing Table. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> failuresLookupARK</b>(--failuresLookupARK)</td></tr><tr><td><i>Arguments :</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>20</td></tr><tr><td><i>Description:</i></td><td> Number of consecutive failures required to trigger an ARK lookup. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>minARKDelay</b>( --minARKDelay)</td></tr><tr><td><i>Arguments:</i></td><td>{milliseconds} </td></tr><tr><td><i>Default val:</i></td><td>900000</td></tr><tr><td><i>Description:</i></td><td> Minimum time that a node in the routing table must have been uncontactable for before we can trigger an ARK lookup. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> routeConnectTimeout</b>(--routeConnectTimeout)</td></tr><tr><td><i> Arguments:</i></td><td>{millis}</td></tr><tr><td><i>Default val:</i></td><td>10000</td></tr><tr><td><i>Description:</i></td><td> The time to wait for connections to be established and authenticated before passing by a node while routing out. Connections that are by passed are still finished and cached for the time set by {connectionTimeout} (in milliseconds). </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>maxHopsToLive</b>(--maxHopsToLive)</td></tr><tr><td><i>Arguments:</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>25</td></tr><tr><td><i>Description:</i></td><td> When forwarding a request, the node will reduce the HTL to this value if it is found to be in excess. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>announcementHTL</b>(--announcementHTL)</td></tr><tr><td><i>Arguments:</i></td><td>{ integer}</td></tr><tr><td><i>Default val:</i></td><td>15</td></tr><tr><td><i>Description:</i></td><td> The number of nodes that each announcement message should besent to. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> announcementAttempts</b>(--announcementAttempts)</td></tr><tr><td><i> Arguments:</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>3</td></tr><tr><td><i>Description:</i></td><td> The number of attempts to make at announcing this node per initial peer. Zero means the node will not announce itself. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> announcementPollInterval</b>(--announcementPollInterval)</td></tr><tr><td><i>Arguments:</i></td><td>{milliseconds}</td></tr><tr><td><i>Default val:</i></td><td>900000</td></tr><tr><td><i>Description:</i></td><td> The time between polling for 1 hours no incoming requests to force reannouncement. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> announcementThreads</b>(--announcementThreads)</td></tr><tr><td><i> Arguments:</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>3</td></tr><tr><td><i>Description:</i></td><td> If we run out of seed nodes, we can use other nodes from therouting table to announce to. However, since the trust levelof these nodes is unknown, this is not recommended for thetruly paranoid. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> announcementUseRT</b>(--announcementUseRT)</td></tr><tr><td><i>Arguments :</i></td><td>yes|no</td></tr><tr><td><i>Default val:</i></td><td>true</td></tr><tr><td><i>Description:</i></td><td> announce to nodes from routing table?. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>initialRequests</b>(--initialRequests)</td></tr><tr><td><i>Arguments:</i></td><td>{ integer}</td></tr><tr><td><i>Default val:</i></td><td>10</td></tr><tr><td><i>Description:</i></td><td> The number of keys to request from the returned close values after an Announcement (this is per announcement made). </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> initialRequestHTL</b>(--initialRequestHTL)</td></tr><tr><td><i>Arguments :</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>15</td></tr><tr><td><i>Description:</i></td><td> The hops that initial requests should make. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>doLoadBalance</b>(--doLoadBalance)</td></tr><tr><td><i>Arguments:</i></td><td>yes|no</td></tr><tr><td><i>Default val:</i></td><td>true</td></tr><tr><td><i>Description:</i></td><td> Whether to emply load balancing algorithms against the network. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>localIsOK</b>(-- localIsOK)</td></tr><tr><td><i>Arguments:</i></td><td>yes|no</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> set yes to allow permanent nodes with non-internet-resolvable addresses. Do not use this except in a local testing network. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>dontLimitClients </b>(--dontLimitClients)</td></tr><tr><td><i>Arguments:</i></td><td>yes| no</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> set yes to not bandwidth throttle connections to LocalInterfaces<a href='tiki-editpage.php?page=LocalInterfaces' class='wiki'>?</a> i.e. FCP and mainport. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> mainportURIOverride</b>(--mainportURIOverride)</td></tr><tr><td><i> Arguments:</i></td><td>URI</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> URI to mainport servlet, e.g. for SSL tunneling. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> distributionURIOverride</b>(--distributionURIOverride)</td></tr><tr><td> <i>Arguments:</i></td><td>URI</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> URI to distribution servlet, e.g. for SSL tunneling. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>aggressiveGC</b> (--aggressiveGC)</td></tr><tr><td><i>Arguments:</i></td><td>{seconds}</ td></tr><tr><td><i>Default val:</i></td><td>0</td></tr><tr><td><i>Description:</i></td><td> How often to do aggressive garbage collection. May impact performance but should reduce working set. Set to 0 to disable. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> configUpdateInterval</b>(--configUpdateInterval)</td></tr><tr><td><i> Arguments:</i></td><td>{minutes}</td></tr><tr><td><i>Default val:</i></td><td>5</td></tr><tr><td><i>Description:</i></td><td> How often to check for config file changes. Set to 0 to disable. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>services</b>(-- services)</td></tr><tr><td><i>Arguments:</i></td><td>service_0,service_1 ,...</td></tr><tr><td><i>Default val:</i></td><td>mainport, distribution</td></tr><tr><td><i>Description:</i></td><td> A comma delimited list of services that are run when the node starts. If you don't know what this means, just accept the defaults. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>distribution. class</b>(--distribution.class)</td></tr><tr><td><i>Arguments:</i></td><td>{class name}</td></tr><tr><td><i>Default val:</i></td><td>freenet.node.http.DistributionServlet</td></tr><tr><td> <i>Description:</i></td><td> The Java class of the distribution servlet. You shouldn't need to touch this. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>distribution. port</b>(--distribution.port)</td></tr><tr><td><i>Arguments:</i></td><td>{port number}</td></tr><tr><td><i>Default val:</i></td><td>8891</td></tr><tr><td><i>Description:</i></td><td> The port that the distribution servlet listens for HTTP requests on. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>distribution. params.unpacked</b>(--distribution.params.unpacked)</td></tr><tr><td><i> Arguments:</i></td><td>{directory}</td></tr><tr><td><i>Default val:</i></td><td>.</td></tr><tr><td><i>Description:</i></td><td> A directory containing (some of) the files needed for the Distribution Servlet - for example, a CVS tree, or where the UNIX tarball was unpacked. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>distribution. allowedHosts</b>(--distribution.allowedHosts)</td></tr><tr><td><i> Arguments:</i></td><td>{list of IP addresses}</td></tr><tr><td><i>Default val:</i></td><td>*</td></tr><tr><td><i>Description:</i></td><td> These IP addresses will be allowed to access the distribution pages generated by the DistributionServlet. Default * means everyone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>distribution. params.distribDir</b>(--distribution.params.distribDir)</td></tr><tr><td><i>Arguments:</i></td><td>{directory}</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> Directory used by the node to store redistributibles for the Distribution Servlet - there is rarely any need to override this. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>authTimeout</b>( --authTimeout)</td></tr><tr><td><i>Arguments:</i></td><td>{millis}</td></tr><tr><td><i>Default val:</i></td><td>30000</td></tr><tr><td><i>Description:</i></td><td> How long to wait for authentication before giving up (in milliseconds) </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> connectionTimeout</b>(--connectionTimeout)</td></tr><tr><td><i>Arguments :</i></td><td>{millis}</td></tr><tr><td><i>Default val:</i></td><td>600000</td></tr><tr><td><i>Description:</i></td><td> How long to listen on an inactive connection before closing (if reply address is known) </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>hopTimeExpected</b>(--hopTimeExpected)</td></tr><tr><td><i>Arguments:</i></td><td>{ millis}</td></tr><tr><td><i>Default val:</i></td><td>4000</td></tr><tr><td><i>Description:</i></td><td> The expected time it takes a Freenet node to pass a message. Used to calculate timeout values for requests. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>hopTimeDeviation </b>(--hopTimeDeviation)</td></tr><tr><td><i>Arguments:</i></td><td>{ millis}</td></tr><tr><td><i>Default val:</i></td><td>7000</td></tr><tr><td><i>Description:</i></td><td> The expected standard deviation in hopTimeExpected. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>maximumThreads</ b>(--maximumThreads)</td></tr><tr><td><i>Arguments:</i></td><td>{integer }</td></tr><tr><td><i>Default val:</i></td><td>120</td></tr><tr><td><i>Description:</i></td><td> Should we use thread management? If this number is defined and non-zero, this specifies the max number of threads in the pool. If this is overrun connections will be rejected and events won't execute on time. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> doRequestTriageByDelay</b>(--doRequestTriageByDelay)</td></tr><tr><td><i>Arguments:</i></td><td>true/false</td></tr><tr><td><i>Default val:</i></td><td>true</td></tr><tr><td><i>Description:</i></td><td> If true, above 3000ms ticker delay requests will be rejected, above 1000ms, requests except those in the datastore will be rejected, and above 500ms, requests except those in the most successful keyspace segment will be rejected. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>overloadLow</b>( --overloadLow)</td></tr><tr><td><i>Arguments:</i></td><td>{float between 0 and 1}</td></tr><tr><td><i>Default val:</i></td><td>0.85</td></tr><tr><td><i>Description:</i></td><td> The node will start to selectively reject requests above this load level. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>overloadHigh</b> (--overloadHigh)</td></tr><tr><td><i>Arguments:</i></td><td>{float between 0 and 1}</td></tr><tr><td><i>Default val:</i></td><td>0.9</td></tr><tr><td><i>Description:</i></td><td> The node will reject all QueryRequests<a href='tiki-editpage.php?page=QueryRequests' class='wiki'>?</a> above this load level. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> requestDelayCutoff</b>(--requestDelayCutoff)</td></tr><tr><td><i> Arguments:</i></td><td>{milliseconds}</td></tr><tr><td><i>Default val:</i></td><td>1000</td></tr><tr><td><i>Description:</i></td><td> The node will reject nearly all incoming queries when routingTime is over this value. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> successfulDelayCutoff</b>(--successfulDelayCutoff)</td></tr><tr><td><i> Arguments:</i></td><td>{milliseconds}</td></tr><tr><td><i>Default val:</i></td><td>3000</td></tr><tr><td><i>Description:</i></td><td> The node will reject ALL incoming queries above this routingTime. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>blockSize</b>(-- blockSize)</td></tr><tr><td><i>Arguments:</i></td><td>{bytes}</td></tr><tr><td><i>Default val:</i></td><td>4096</td></tr><tr><td><i>Description:</i></td><td> What size should the blocks have when moving data? </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>streamBufferSize </b>(--streamBufferSize)</td></tr><tr><td><i>Arguments:</i></td><td>{ bytes}</td></tr><tr><td><i>Default val:</i></td><td>16384</td></tr><tr><td><i>Description:</i></td><td> The default size of stream buffers. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>maximumPadding</ b>(--maximumPadding)</td></tr><tr><td><i>Arguments:</i></td><td>{bytes}</td></tr><tr><td><i>Default val:</i></td><td>65536</td></tr><tr><td><i>Description:</i></td><td> The maximum number of bytes of padding to allow between messages and in Void messages. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> logInboundContacts</b>(--logInboundContacts)</td></tr><tr><td><i> Arguments:</i></td><td>true/false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Set true to enable inbound contact monitoring. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> logOutboundContacts</b>(--logOutboundContacts)</td></tr><tr><td><i> Arguments:</i></td><td>true/false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Set true to enable outbound contact monitoring. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> logInboundRequests</b>(--logInboundRequests)</td></tr><tr><td><i> Arguments:</i></td><td>true/false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Set true to enable per host inbound request monitoring. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> logOutboundRequests</b>(--logOutboundRequests)</td></tr><tr><td><i> Arguments:</i></td><td>true/false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Set true to enable per host outbound request monitoring. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>logOutputBytes</ b>(--logOutputBytes)</td></tr><tr><td><i>Arguments:</i></td><td>true/ false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Set true to.count TCP bytes sent for diagnostics. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>watchme</b>(-- watchme)</td></tr><tr><td><i>Arguments:</i></td><td>true/false</td></tr> <tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Debugging only, setting this to true will remove your anonymity!. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> logInboundInsertRequestDist</b>(--logInboundInsertRequestDist)</td></tr> <tr><td><i>Arguments:</i></td><td>true/false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Set true to enable logging of inbound InsertRequest<a href='tiki-editpage.php?page=InsertRequest' class='wiki'>?</a> key distribution. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>watchmeRetries</ b>(--watchmeRetries)</td></tr><tr><td><i>Arguments:</i></td><td>{integer }</td></tr><tr><td><i>Default val:</i></td><td>3</td></tr><tr><td><i>Description:</i></td><td> Number of times watchMe will attempt to initialize. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> logSuccessfulInsertRequestDist</b>(--logSuccessfulInsertRequestDist)</td></tr><tr><td><i>Arguments:</i></td><td>true/false</td></tr><tr><td><i> Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Set true to enable logging of successful inbound InsertRequests' key distribution. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> defaultResetProbability</b>(--defaultResetProbability)</td></tr><tr><td> <i>Arguments:</i></td><td>{probability}</td></tr><tr><td><i>Default val:</i></td><td>0.05</td></tr><tr><td><i>Description:</i></td><td> The node will have this probability, on average (it varies according to load unless you set doLoadBalance=no), of resetting the datasource. Increase this to get more load, reduce it to get less load. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>FECTempDir</b>(- -FECTempDir)</td></tr><tr><td><i>Arguments:</i></td><td>{directory}</td> </tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> Dir. used for FEC temp files. You don't need to set this. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> FECInstanceCacheSize</b>(--FECInstanceCacheSize)</td></tr><tr><td><i> Arguments:</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>1</td></tr><tr><td><i>Description:</i></td><td> Number of FEC instances to cache. Set to 1 unless you expect more than one simultaneous FEC operation. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> FECMaxConcurrentCodecs</b>(--FECMaxConcurrentCodecs)</td></tr><tr><td><i>Arguments:</i></td><td>{integer}</td></tr><tr><td><i>Default val:</i></td><td>1</td></tr><tr><td><i>Description:</i></td><td> Number of concurrent FEC encodes/decodes allowed. Each codec can use up to 24Mb of memory. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>FEC.Encoders.0. class</b>(--FEC.Encoders.0.class)</td></tr><tr><td><i>Arguments:</i></td><td>{class name}</td></tr><tr><td><i>Default val:</i></td><td>OnionFECEncoder</td></tr><tr><td><i>Description:</i></ td><td> Default FEC encoder implementation. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>FEC.Decoders.0. class</b>(--FEC.Decoders.0.class)</td></tr><tr><td><i>Arguments:</i></td><td>{class name}</td></tr><tr><td><i>Default val:</i></td><td>OnionFECDecoder</td></tr><tr><td><i>Description:</i></ td><td> Default FEC decoder implementation. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>tempDir</b>(-- tempDir)</td></tr><tr><td><i>Arguments:</i></td><td>{directory}</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> The directory used for temporary files. Used currently by fproxy and the FCP FEC mechanism, if their individual temp dirs are not set. If this is left unset, it will create a tempdir in the datastore (if the datastore is native). </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>publicNode</b>(- -publicNode)</td></tr><tr><td><i>Arguments:</i></td><td>true/false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> Disables anonymity threatening servlets and infolets on a multi-user machine. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b> filterPassThroughMimeTypes</b>(--filterPassThroughMimeTypes)</td></tr><tr><td><i>Arguments:</i></td><td>comma delimited list of MIME types</td></tr><tr><td><i>Default val:</i></td><td>text/plain,image/jpeg,image/gif,image/png</td></tr><tr> <td><i>Description:</i></td><td> safe MIME types that will be passed through to the browser without query or filtering. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.class</ b>(--mainport.class)</td></tr><tr><td><i>Arguments:</i></td><td> interface class</td></tr><tr><td><i>Default val:</i></td><td>freenet.interfaces.servlet.MultipleHttpServletContainer </td></tr><tr><td><i>Description:</i></td><td> Name of the interface class to run the mainport service. You do not need to change this. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.port</b>(--mainport.port)</td></tr><tr><td><i>Arguments:</i></td><td>port number</td></tr><tr><td><i>Default val:</i></td><td>8888</td></tr><tr><td><i>Description:</i></td><td> Port to run the main Freenet HTTP interface on... this is the port that is accessed by your web browser when you are browsing freenet via fproxy, or looking at the various status monitors. This is normally only accessible from localhost, and is different from the public FNP port that other freenet nodes talk to, the FCP port that client programs talk to, and the distribution port that you can run a freenet distribution website on. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport. allowedHosts</b>(--mainport.allowedHosts)</td></tr><tr><td><i>Arguments: </i></td><td>Comma delimited list of IP addresses, netmasks or hostnames</td></tr><tr><td><i>Default val:</i></td><td>127.0.0.0/8</td></tr><tr><td><i>Description:</i></td><td> List of IP addresses (for example "192.168.1.7"), DNS names ("erica" or "www.nsa.gov") or netmasks ("192.168.1.0/24") of hosts (computers) that should be allowed to access the main web interface of your freenet node. Defaults to localhost (127.0.0.0/8) only. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport. bindAddress</b>(--mainport.bindAddress)</td></tr><tr><td><i>Arguments:</ i></td><td>IP address or "*"</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> IP address of one interface for the main freenet web interface to listen on, or "*" to listen on all interfaces. Will be automatically determined from mainport.allowedHosts if not given<dl><dt> leave it alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name</dt><dd></i></td><td><b>mainport.params. servlet.1.uri</b>(--mainport.params.servlet.1.uri)</td></tr><tr><td><i> Arguments:</i></td><td>path</td></tr><tr><td><i>Default val:</i></td><td>/</td></tr><tr><td><i>Description:</i></td><td> Path within mainport for fproxy. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.method</b>(--mainport.params.servlet.1.method)</td></tr><tr><td><i>Arguments:</i></td><td>HTTP method</td></tr><tr><td><i>Default val:</i></td><td>GET</td></tr><tr><td><i>Description:</i></td><td> HTTP method for fproxy. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.class</b>(--mainport.params.servlet.1.class)</td></tr><tr><td> <i>Arguments:</i></td><td>servlet class</td></tr><tr><td><i>Default val:</i></td><td>freenet.client.http.FproxyServlet</td></tr><tr><td><i> Description:</i></td><td> servlet class to run fproxy. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.name</b>(--mainport.params.servlet.1.name)</td></tr><tr><td><i>Arguments:</i></td><td>string</td></tr><tr><td><i>Default val:</i></td><td>Freenet HTTP proxy (fproxy)</td></tr><tr><td><i>Description:</i></td><td> name of first servlet on mainport (normally fproxy - "Freenet HTTP proxy (fproxy)"). Leave this alone.). </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.params.requestHtl</b>(--mainport.params.servlet.1.params. requestHtl)</td></tr><tr><td><i>Arguments:</i></td><td>integer HTL value between 0 and maxHopsToLive</td></tr><tr><td><i>Default val:</i></td><td>15</td></tr><tr><td><i>Description:</i></td><td> hops to live (HTL) of requests made by fproxy </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.params.passThroughMimeTypes</b>(--mainport.params.servlet.1. params.passThroughMimeTypes)</td></tr><tr><td><i>Arguments:</i></td><td> comma delimited list of MIME types</td></tr><tr><td><i>Default val:</i></td><td></td></tr><tr><td><i>Description:</i></td><td> MIME types regarded as safe that are passed to the browser without filtering or warning in fproxy. The default is empty (""), which means to use the node global default filterPassThroughMimeTypes </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.params.filter</b>(--mainport.params.servlet.1.params.filter)</ td></tr><tr><td><i>Arguments:</i></td><td>true|false</td></tr><tr><td><i>Default val:</i></td><td>true</td></tr><tr><td><i>Description:</i></td><td> Whether to run the anonymity filter to remove HTML and CSS tags that might cause your browser to damage your anonymity </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.params.filterParanoidStringCheck</b>(--mainport.params.servlet .1.params.filterParanoidStringCheck)</td></tr><tr><td><i>Arguments:</i></td><td>true|false</td></tr><tr><td><i>Default val:</i></td><td>false</td></tr><tr><td><i>Description:</i></td><td> whether to make the anonymity filter really paranoid; currently this causes strings in CSS to be removed if they contain colons (":") </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.1.params.maxForceKeys</b>(--mainport.params.servlet.1.params. maxForceKeys)</td></tr><tr><td><i>Arguments:</i></td><td>integer</td></ tr><tr><td><i>Default val:</i></td><td>100</td></tr><tr><td><i>Description:</i></td><td> Number of key overrides Fproxy should track... these are the confirmation pages you get when you go to some file that fproxy doesn't know how to handle </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.2.uri</b>(--mainport.params.servlet.2.uri)</td></tr><tr><td><i> Arguments:</i></td><td>path</td></tr><tr><td><i>Default val:</i></td><td>/servlet/nodeinfo/</td></tr><tr><td><i>Description:</i> </td><td> Path within mainport for the Node Info Servlet - this contains infolets which present pages of information about the node as well as the default front page </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.2.method</b>(--mainport.params.servlet.2.method)</td></tr><tr><td><i>Arguments:</i></td><td>HTTP method</td></tr><tr><td><i>Default val:</i></td><td>GET</td></tr><tr><td><i>Description:</i></td><td> HTTP method for Node Info Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.2.class</b>(--mainport.params.servlet.2.class)</td></tr><tr><td> <i>Arguments:</i></td><td>servlet class</td></tr><tr><td><i>Default val:</i></td><td>freenet.node.http.NodeInfoServlet</td></tr><tr><td><i> Description:</i></td><td> servlet class to run Node Info Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.2.name</b>(--mainport.params.servlet.2.name)</td></tr><tr><td><i>Arguments:</i></td><td>string</td></tr><tr><td><i>Default val:</i></td><td>Web Interface</td></tr><tr><td><i>Description:</i></td><td> name of (usually) Node Info Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.3.uri</b>(--mainport.params.servlet.3.uri)</td></tr><tr><td><i> Arguments:</i></td><td>path</td></tr><tr><td><i>Default val:</i></td><td>/servlet/images/</td></tr><tr><td><i>Description:</i></ td><td> Path within mainport for the Images - this serves static images needed by fproxy and the Node Info Servlet </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.3.method</b>(--mainport.params.servlet.3.method)</td></tr><tr><td><i>Arguments:</i></td><td>HTTP method</td></tr><tr><td><i>Default val:</i></td><td>GET</td></tr><tr><td><i>Description:</i></td><td> HTTP method for Images Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.3.class</b>(--mainport.params.servlet.3.class)</td></tr><tr><td> <i>Arguments:</i></td><td>servlet class</td></tr><tr><td><i>Default val:</i></td><td>freenet.client.http.ImageServlet</td></tr><tr><td><i> Description:</i></td><td> servlet class to run Images Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.3.name</b>(--mainport.params.servlet.3.name)</td></tr><tr><td><i>Arguments:</i></td><td>string</td></tr><tr><td><i>Default val:</i></td><td>Server Images</td></tr><tr><td><i>Description:</i></td><td> name of (usually) Images Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.4.uri</b>(--mainport.params.servlet.4.uri)</td></tr><tr><td><i> Arguments:</i></td><td>path</td></tr><tr><td><i>Default val:</i></td><td>/</td></tr><tr><td><i>Description:</i></td><td> Path within mainport for the Insert Servlet - used to insert files into freenet from the web interface </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.4.method</b>(--mainport.params.servlet.4.method)</td></tr><tr><td><i>Arguments:</i></td><td>HTTP method</td></tr><tr><td><i>Default val:</i></td><td>POST</td></tr><tr><td><i>Description:</i></td><td> HTTP method for Insert Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.4.class</b>(--mainport.params.servlet.4.class)</td></tr><tr><td> <i>Arguments:</i></td><td>servlet class</td></tr><tr><td><i>Default val:</i></td><td>freenet.client.http.InsertServlet</td></tr><tr><td><i> Description:</i></td><td> servlet class to run Insert Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.4.name</b>(--mainport.params.servlet.4.name)</td></tr><tr><td><i>Arguments:</i></td><td>string</td></tr><tr><td><i>Default val:</i></td><td>Insert Proxy</td></tr><tr><td><i>Description:</i></td><td> name of (usually) Insert Servlet. Leave this alone. </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.4.params.insertHtl</b>(--mainport.params.servlet.4.params. insertHtl)</td></tr><tr><td><i>Arguments:</i></td><td>integer between 0 and maxHopsToLive</td></tr><tr><td><i>Default val:</i></td><td>15</td></tr><tr><td><i>Description:</i></td><td> Hops-to-Live<a href='tiki-editpage.php?page=Hops-to-Live' class='wiki'>?</a> value (HTL) of inserts through the web interface </td></tr><tr><td colspan=2><hr></td></tr><tr><td><i>Name:</i></td><td><b>mainport.params. servlet.4.params.splitFileThreads</b>(--mainport.params.servlet.4.params .splitFileThreads)</td></tr><tr><td><i>Arguments:</i></td><td>integer</ td></tr><tr><td><i>Default val:</i></td><td>10</td></tr><tr><td><i>Description:</i></td><td> Number of threads to allocate to insert a splitfile through the web interface </td></tr></table></dd></dl><br/></div> - - Deleted: trunk/website/pages/tools.php =================================================================== --- trunk/website/pages/tools.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/tools.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,98 +0,0 @@ -<h1>Tools</h1> -<h2>Freenet 0.7 applications</h2> -<br /> -<p><a class='wiki' href='http://jtcfrost.sf.net/'><b>Frost</b></a><br /> -<br /> -Frost is a filesharing and message board application for Freenet. Visit the <a class='wiki' href='http://127.0.0.1:8888/SSK at XeMBryjuEaxqazEuxwnn~G7wCUOXFOZlVWbscdCOUFs,209eycYVidlZvhgL5V2a3INFxrofxzQctEZvyJaFL7I,AQABAAE/frost-1/'>Frost freesite</a>. <b><span style='color:#FF0000;'>You must be running Freenet for this link to work.</span></b> -</p> - -<p><a class='wiki' href='http://downloads.freenetproject.org/alpha/Thaw/'><b>Thaw</b></a><br /> -<br /> -Thaw is a filesharing application, to add stuff to, and download stuff from, Freenet. New versions are featuring "index" support, to learn about it, I suggest you visit the <a class='wiki' href='http://wiki.freenetproject.org/Thaw'>Thaw's wiki page</a>.</b> -</p> - -<p><a class='wiki' href='http://www.freenet.org.nz/pyfcp/'><b>pyFreenet</b></a><br /> -<br /> -pyFreenet is an API and a set of tools to access freenet from the python programing language. Tools are currently command-line only. -</p> - -<p><a class='wiki' href='http://wiki.freenetproject.org/FreenetJsite'><b>jSite</b></a><br /> -<br /> -jSite is a graphical application that you can use to create, insert and manage your own Freenet sites. -</p> - -<p><a class='wiki' href='http://127.0.0.1:8888/USK at DWB7AD1mBr5HNatdWvbqBe5FdZ3Zt~eS3nPHdp1Yg~g,HK1~x4rUgH6NyIT87CymSWcIHLP2Yc6dPQ417n1gnBY,AQABAAE/fuqid/1/'><b>FUQID</b></a> <b><span style='color:#FF0000;'>You must be running Freenet for this link to work.</span></b><br /> -<br /> -FUQID is the Freenet Utility for Queued Inserts and Downloads. It is a Windows application for adding stuff to, and downloading stuff from, Freenet. It will also work on Linux using <a href="http://www.winehq.com/">Wine</a>. -</p> -<br /> -<hr/> -<h2>Freenet 0.5 applications</h2> -<br /> -Pleas notice that many of these tools are outdated and unmaintained. All development efforts are currently focused on freenet 0.7. -<br />A variety of people have written some excellent tools and clients for use with Freenet. -<br /><p> -<h3><a href="/fphowto.html">Development Aides</a></h3> -<p> -<br /><h3>Freenet Publishing & Retrieval Tools</h3> - -<br /><a class='wiki' href='http://127.0.0.1:8888/SSK at M7yZgrl8gwtAe1xEcR5Xyv4tFsoPAgM/fiw/9//'><b>Freesite Insertion Wizard</b></a> <b><span style='color:#FF0000;'>You must be running Freenet 0.5 for this link to work.</span></b> -<br /> -<br />FIW is a feature packed Java AWT application for inserting freesites. It contains a lot of help at each stage of the process, and includes site verification to increase availability of the inserts. -<br /> -<br /><a class='wiki' href='http://127.0.0.1:8888/SSK at kWu5Osv~VAI3-kH7z8QIVxklv-YPAgM/fishtools/52//'><b>FishTools</b></a> <b><span style='color:#FF0000;'>You must be running Freenet 0.5 for this link to work.</span></b> -<p> -<br /><a class='wiki' href='http://127.0.0.1:8888/SSK at CKesZYUJWn2GMvoif1R4SDbujIgPAgM/fuqid/12//'><b>Freenet Utility for Queued Inserts and Downloads</b></a> <b><span style='color:#FF0000;'>You must be running Freenet 0.5 for this link to work.</span></b> -<br /> -<br />FUQID is a Windows program (but it will run in Wine under Linux) for inserting and downloading large files. It offers fast native CHK calculation and FEC decoding and a simple, highly configurable interface, better than FProxy. -<br /> -<br />Freesite insertion tools written in Python (standalone binaries are available for Windows). Includes FEC support for alternative handling of large files. -<br /> -<br /><a href='/fcptools.html' class='wiki'><b>FCPTools</b></a> -<br /> -<br />The FCPTools are command-line driven programs for inserting and retrieving files with Freenet. Included separately is <a href='/FCPlib.html'><b>FCPLib</b></a>, the Freenet Client Protocol Library. The FCPTools are linked against FCPLib and serve as nice examples for using the library in Freenet client programs. Everything is released under the GNU General Public License. -<br /> -<br /><hr><h3>Message Board Tools and File Sharing tools -</h3> -<br /><a class='wiki' href='http://jtcfrost.sf.net/'><b>Frost</b></a> -<br /> -<br />Frost is a file-sharing tool for Freenet, it also has chat forums which allow people to chat anonymously over Freenet. It now supports FEC (which makes downloads more reliable). -<br /> -<br /><a class='wiki' href='http://127.0.0.1:8888/SSK at h~ixmz11-tDOox9O1gQyjkzAUCcPAgM/fmb/5//'><b>Freenet Message Board</b></a> <b><span style='color:#FF0000;'>You must be running Freenet 0.5 for this link to work.</span></b> -<br /> -<br />FMB is an excellent Usenet-like tool which allows secure messages to be exchanged via Freenet, it is somewhat similar to Frost, but employs a more sophisticated "outbox" based approach. -<br /> -<br />It seems that the original author does not have the time to release new versions of it, some other Freenet users created modified versions. For more information visit <a class='wiki' href='http://127.0.0.1:8888/SSK at rjYFfgPHfolmcStiaoxESFfBXz8PAgM/FMBwishlist/11//'>FMB Wishlist</a>. <b><span style='color:#FF0000;'>You must be running Freenet 0.5 for this link to work.</span></b> - -<br /> -<br /><a class='wiki' href='http://www.storrow.org/Software/FreeNews/'><b>FreeNews</b></a> -<br /> -<br />FreeNews is an NNTP server that uses Freenet as its storage medium. It allows you to use your favorite newsreader to read Text Over Freenet messages, like frost uses. -<br /> -<p><a class="wiki" href="http://www.smash-designs.de/~bombe/freemule.html"><b>freeMule</b></a></p> -<p>freeMule is a file-sharing application modelled after the most famous file-sharing application eMule.</p> -<br /><hr><h3>Misc Tools -</h3> - -<br /><a class='wiki' href='http://127.0.0.1:8888/SSK at UjHShzjg6iS5UNGGb4IpFPhHGeoPAgM,p7qut8fPyia~CgO7noQdLA/pm4pigs/10//'><b>pm4pigs</b></a> <b><span style='color:#FF0000;'>You must be running Freenet 0.5 for this link to work.</span></b> -<br /> -<br /> -pm4pigs is a freenet client written in python for sending and receiving encrypted messages. -<br /> - -<br /><a class='wiki' href='http://sf.net/projects/liberator'><b>Liberator</b></a> -<br /> -<br />Liberator is a Unix command-line client designed to be easy to script (or cron). It's written in perl so it should be as portable as needed. -<br /> -<br /><b>Update:</b> new versions written in OCaml will be released in binary form for Win32, Linux/x86, Linux/PPC, and OSX. -<br /> - -<br /><a class='wiki' href='http://127.0.0.1:8888/SSK at fgbuxwSCCjOJHsUI-9-uijD1haQPAgM/flinks/11//'><b>Flinks</b></a> <b><span style='color:#FF0000;'>You must be running Freenet 0.5 for this link to work.</span></b> -<br /> -<br />Flinks is an application to help people gather, manage, and share links in freenet. Currently, several indicies generate flinks data (<a class='wiki' href='http://127.0.0.1:8888/SSK at -w495UL3mfSlWC2c~nRAuG2fAWwPAgM/TFEE//'><b>The Freedom Engine Engine</b></a>, <a class='wiki' href='http://127.0.0.1:8888/SSK at Sc6qV~D6iFhaYord6HtbjJ8MaEYPAgM/YoYo//'><b>YoYo</b></a>, and the <a class='wiki' href='http://127.0.0.1:8888/SSK at rjYFfgPHfolmcStiaoxESFfBXz8PAgM/FreenetHelp//'><b>Freenet Help Index</b></a>, among others (<b><span style='color:#FF0000;'>You must be running Freenet 0.5 for those links to work.</span></b>)), so you can go to their page and download their links, allowing you to essentially build your own index with sites you like.<p> - -<br /><hr/> -<br /><h2>Other tools? Want to contribute? -</h2> -<br />If you want to develop a tool or client for Freenet please publish your idea <a href="/freeapps.html">here</a>. There you can also find a list of projects related to Freenet in their early stages of development.<br /> - Deleted: trunk/website/pages/tryunstable.php =================================================================== --- trunk/website/pages/tryunstable.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/tryunstable.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,26 +0,0 @@ -<h3>Try out the Unstable Branch</h3> -This page will provide a quick explanation of how you can run the bleeding-edge -unstable branch of Freenet. -<p> -Here are the steps: -<ol> -<li>Install Freenet as normal for your platform -<li>Rename the <b>freenet.jar</b> file in your Freenet folder to -<b>freenet-stable.jar</b>. -<li>Download <a href="http://freenetproject.org/snapshots/freenet-unstable-latest.jar"> -http://freenetproject.org/snapshots/freenet-unstable-latest.jar</a> and save it -in your Freenet folder as <b>freenet.jar</b> (this will overwrite the -existing freenet.jar file if you failed to follow the previous step). -<li>Download <a -href="http://freenetproject.org/snapshots/unstable.ref">http://freenetproject.org/snapshots/unstable.ref</a> -and save it in your Freenet folder as <b>seednodes.ref</b> (this should -overwrite the existing seednodes.ref file) -<li>If there is a line in your <b>freenet.conf</b> or <b>freenet.ini</b> -file starting with "routingTableImpl" delete it or comment it out by -prepending a '#'. -<li>Start Freenet as you normally would. -</ol> -<p> -If you would like to discuss Freenet's ongoing development, you are welcome to -join us on #freenet on irc.freenode.net or join one of our -<a href="/lists.html">mailing lists</a>. Deleted: trunk/website/pages/unixhowto.php =================================================================== --- trunk/website/pages/unixhowto.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/unixhowto.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,188 +0,0 @@ -<h3>Crash Course</h3> - -<br/>This needs work...but it's a start. -<br/> -<br/>The following applies to Unix/Linux/OS X users. (Someone write an equivalent for Windows?) -<br/> -<br/><ol> -<br/><li>Get Sun's Java runtime environment. Other Java Virtual Machines are likely to be -<br/>unreliable/buggy for Freenet. -<br/><a href="http://java.sun.com/">http://java.sun.com/</a> and <b style="color:black;background-color:#ffff66">download</b> the source. -<br/> - -<br/> -<br/><li>Make sure that your server's hostname is valid. I got weird fatal errors -<br/>from Freenet and finally traced it to that -- I had arbitrarily named the -<br/>machine "halflife" and that wasn't a valid DNS name. Freenet shouldn't care, or - -<br/>it should at least provide more meaningful error messages when this happens, -<br/>but oh well. Do a reverse lookup on your server IP: -<br/> -<br/><font face="Courier" size="2"> -<br/>nslookup your-ip -<br/></font> -<br/> -<br/>and set your hostname to be whatever that resolves to (in my case, something -<br/>like "dhcp-182-blahblah.mydomain.com"). Edit -<br/>/etc/sysconfig/network-scripts/ifcfg-eth0 and set this in the HOSTNAME= line. -<br/>That will make it do the right thing after your next reboot, but to get it to -<br/>take effect right away, type (as root) hostname your-hostname. -<br/> -<br/><li>Get the latest freenet snapshot from <a href="http://downloads.freenetproject.org/">here.</a> Its name will be freenet-yyyymmdd.tgz where yyyy=year, mm=month, and dd=date (probably today's date, the developers update it ALL the time.) - -<br/> -<br/><li>Unpack it (tar -xzf name-of-archive.tgz) and run the start script (sh start-freenet). It will -<br/>start prompting you for info. In most if not all cases, you can just hit return -<br/>to accept the defaults for each configuration question. One of the most important ones, however, -<br/>is the transient/non-transient question. If your IP address changes often (i.e., you are dialing into -<br/>an ISP with your modem, or you are on a network with short DHCP lease times), then PLEASE specify -<br/>"transient" here. Otherwise, other nodes will waste their resources trying to connect to your node's -<br/>old IP information and this degrades performance across the whole Freenet network. -<br/> -<br/><li>When it finishes -<br/>building the config, Freenet should start up and stay running. You might get -<br/>some warning messages but that's ok, usually. Type ps ax after a minute or so -<br/>and see if it's still running. It takes awhile (30 seconds maybe?) to start up fproxy, so -<br/>be patient. You can type -<br/> -<br/><font face="Courier" size="2"> -<br/>watch netstat -anp - -<br/></font> -<br/> -<br/>and wait for a listening service on port 8888 to appear. This means fproxy is ready. -<br/> -<br/><li>Bring up a web browser and go to <b>http://localhost:8888</b> and you should get the Freenet gateway page. From there, go to -<br/>the Freedom Engine (or one of the other portals) and start surfing. The more you use it, and the longer you -<br/>leave it running, the better it will get (your requests will go faster and -<br/>you'll find stuff with more success). -<br/> -<br/><li>If you want to be able to use fproxy from a remote machine, edit -<br/>freenet.conf and add the following lines: -<br/> -<br/><font face="Courier" size="2"> -<br/>mainport.bindAddress=* - -<br/>mainport.allowedHosts=127.0.0.1,ip-you-want-to-connect-from -<br/></font> -<br/> -<br/>You can add other IPs, comma-separated (no spaces). Make sure you leave -<br/>127.0.0.1 (localhost) in there. -<br/> -<br/><li>Restart freenet by typing "sh stop-freenet.sh" followed by "sh start-freenet.sh". -<br/>You should be good to go. -<br/></ol> -<br/>-- MB -<br/> -<br/><h3>The Masochistic Way</h3> -<br/> -<br/>Here's what I did, or at least what I can remember, for OpenBSD: -<br/> -<br/><ol> - -<br/><li>Install <a href="http://www.kaffe.org/">Kaffe</a>. -<br/><font face="courier" size="2"><ul> -</font><br/><font face="courier" size="2"><li>mkdir /usr/local/src -</font><br/><font face="courier" size="2"><li>cd /usr/local/src -</font><br/><font face="courier" size="2"><li>cvs -d:pserver:readonly at cvs.kaffe.org:/cvs/kaffe login -</font><br/><font face="courier" size="2"> <ul> -</font><br/><font face="courier" size="2"> <li>The password is <b>readonly</b>. - -</font><br/><font face="courier" size="2"> </ul> -</font><br/><font face="courier" size="2"><li>cvs -d:pserver:readonly at cvs.kaffe.org:/cvs/kaffe co kaffe -</font><br/><font face="courier" size="2"><li>cd kaffe -</font><br/><font face="courier" size="2"><li>./configure --with-includes=/usr/local/include --with-libraries=/usr/local/lib --with-engine=jit3 -</font><br/><font face="courier" size="2"><li>Edit <b>libtool</b> and change <b>need_version=no</b> to <b>need_version=yes</b> - -</font><br/><font face="courier" size="2"><li>gmake -</font><br/><font face="courier" size="2"><li>gmake install -</font><br/><font face="courier" size="2"></ul> -</font><br/> -<br/><li>Create a Freenet user account. -<br/><font face="courier" size="2"><ul> -</font><br/><font face="courier" size="2"><li>Choose a partition with lots of space. -</font><br/><font face="courier" size="2"><li>vipw -</font><br/><font face="courier" size="2"><li>mkdir ~freenet - -</font><br/><font face="courier" size="2"><li>chown freenet ~freenet -</font><br/><font face="courier" size="2"><li>vi ~freenet/.profile -</font><br/><font face="courier" size="2"> <ul> -</font><br/><font face="courier" size="2"> <li>Set PATH so that java will be in it. -</font><br/><font face="courier" size="2"> <li>Set CLASSPATH so that ~freenet/freenet.jar and ~freenet/freenet-ext.jar will be in it. - -</font><br/><font face="courier" size="2"> </ul> -</font><br/><font face="courier" size="2"><li>Everything else is done as the freenet user. -</font><br/><font face="courier" size="2"></ul> -</font><br/> -<br/><li><b style="color:black;background-color:#ffff66">Download</b> the three files you need. -<br/><font face="courier" size="2"><ul> -</font><br/><font face="courier" size="2"><li>su - freenet - -</font><br/><font face="courier" size="2"><li>wget http://downloads.freenetproject.org/freenet-ext.jar -</font><br/><font face="courier" size="2"><li>wget http://downloads.freenetproject.org/freenet-latest.jar -</font><br/><font face="courier" size="2"><li>mv freenet-latest.jar freenet-DATE.jar -</font><br/><font face="courier" size="2"><li>ln -s freenet-DATE.jar freenet.jar -</font><br/><font face="courier" size="2"> <ul> -</font><br/><font face="courier" size="2"> <li>I keep multiple versions because sometimes one of them's bad. - -</font><br/><font face="courier" size="2"> </ul> -</font><br/><font face="courier" size="2"><li>wget http://downloads.freenetproject.org/seednodes/seednodes.ref -</font><br/><font face="courier" size="2"> <ul> -</font><br/><font face="courier" size="2"> <li>Or if you prefer, get someone else's seednodes.ref file. -</font><br/><font face="courier" size="2"> </ul> -</font><br/><font face="courier" size="2"></ul> -</font><br/> -<br/><li>Configure the node. - -<br/><font face="courier" size="2"><ul> -</font><br/><font face="courier" size="2"><li>java freenet.node.Main --config -</font><br/><font face="courier" size="2"><li>Optionally, edit freenet.conf by hand to change things you want changed. -</font><br/><font face="courier" size="2"></ul> -</font><br/> - -<br/><li>Start the node. -<br/><font face="courier" size="2"><ul> -</font><br/><font face="courier" size="2"><li>nohup java freenet.node.Main & -</font><br/><font face="courier" size="2"></ul> -</font><br/></ol> -<br/> -<br/>That's just the fundamentals. In actual practice, running Freenet on OpenBSD required a bit more tweaking than this. For example, I had to put <b>kern.maxfiles=4096</b> in <b>/etc/sysctl.conf</b>, and <b>:openfiles-max=512:</b> in the <b>default</b> stanza in <b>/etc/login.conf</b>. And I had to use ksh for freenet's shell, instead of bash. And maybe some other changes, all of which I've forgotten by now. - -<br/> -<br/>Here's what I actually have in ~freenet/.profile: -<br/> -<br/><pre> -<br/>CLASSPATH=$HOME/freenet.jar:$HOME/freenet-ext.jar -<br/>export CLASSPATH -<br/>ulimit -n 400 -<br/> -<br/>case $SHELL in -<br/><font face="courier" size="2"> */bash) source ~/.bashrc ;; -</font><br/><font face="courier" size="2"> */ksh) export ENV=$HOME/.kshrc ;; - -</font><br/>esac -<br/></pre> -<br/> -<br/>~freenet/.kshrc just has <b>set -o vi</b> in it. Here's the actual shell script that I run to start freenet<dl><dt> I cleverly named it <b>run</b></dt><dd> -</dd></dl><br/> -<br/><pre> -<br/>#!/bin/sh -<br/> -<br/># Increase number of open files permitted from 64 to 128. - -<br/>ulimit -n 400 -<br/># Let process use 256 MB memory (data segment size; this also pull up the -<br/># virtual memory size, -v, which we can't do directly). -<br/>ulimit -d 262144 -<br/> -<br/>while true; do -<br/><font face="courier" size="2"> pids=`ps xw | grep -v grep | grep -q java | awk '{print $1}'` - -</font><br/><font face="courier" size="2"> [ -z "$pids" ] && break -</font><br/><font face="courier" size="2"> kill `echo $pids` -</font><br/><font face="courier" size="2"> sleep 2 -</font><br/>done -<br/> -<br/>nohup java -mx 224M freenet.node.Main & -<br/></pre><br/> - Deleted: trunk/website/pages/whatis.php =================================================================== --- trunk/website/pages/whatis.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/whatis.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,49 +0,0 @@ -<h3>What is Freenet?</h3> Freenet is free software which lets you -publish and obtain information on the Internet without fear of -censorship. To achieve this freedom, the network is entirely -decentralized and publishers and consumers of information are anonymous. -Without anonymity there can never be true freedom of speech, and without -decentralization the network will be vulnerable to attack. - -<p> Communications by Freenet nodes are encrypted and are -"routed-through" other nodes to make it extremely difficult to determine -who is requesting the information and what its content is. - -<p> Users contribute to the network by giving bandwidth and a portion of -their hard drive (called the "data store") for storing files. Unlike -other peer-to-peer file sharing networks, Freenet does not let the user -control what is stored in the data store. Instead, files are kept or -deleted depending on how popular they are, with the least popular being -discarded to make way for newer or more popular content. Files in the -data store are encrypted to reduce the likelihood of prosecution by -persons wishing to censor Freenet content. - -<p> The network can be used in a number of different ways and isn't -restricted to just sharing files like other peer-to-peer networks. It -acts more like an Internet within an Internet. For example Freenet can -be used for: - -<ul> -<li>Publishing websites or 'freesites' -<li>Communicating via message boards -<!-- -<li>Playing simple turn-based games like Chess -for gosh's sake remove this turn-based idiosyncrasy.--> -<li>Content distribution -</ul> -<p> - -Unlike many cutting edge projects, Freenet long ago escaped the science -lab, it has been downloaded by over 2 million users since the project -started, and it is used for the distribution of censored information all -over the world including countries such as <a -href="http://freenet-china.org">China</a> and the Middle East. Ideas -and concepts pioneered in Freenet have had a significant impact in the -academic world. Our 2000 paper "Freenet: A Distributed Anonymous -Information Storage and Retrieval System" was the most cited computer -science paper of 2000 according to <a -href="http://citeseer.nj.nec.com/articles2000.html">Citeseer</a>, and -Freenet has also inspired papers in the worlds of law and philosophy. -Ian Clarke, Freenet's creator and project coordinator, was selected as -one of the top 100 innovators of 2003 by MIT's Technology Review -magazine. Deleted: trunk/website/pages/whatsnew.php =================================================================== --- trunk/website/pages/whatsnew.php 2007-12-16 20:44:03 UTC (rev 16604) +++ trunk/website/pages/whatsnew.php 2007-12-16 20:46:27 UTC (rev 16605) @@ -1,1222 +0,0 @@ -<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> -<tr> -<h2>What's new?</h2><p> -<h3>Changelog for the stable branch</h3><br> - -<LI> <span style='color:blue'>Date: 2006-06-29 01:52</b></a></span><P> -<b>Mandatory build 844</b><p> -<pre> -Freenet 0.7 build 844 is now available. It should show up through the -auto-update system in half an hour or so. Please upgrade ASAP! This -build will become mandatory at midnight GMT. This build fixes a serious -and long standing bug in a "time dependant averager" class used widely -in 0.7. One result of this bug was that nodes would sometimes have high -bwlimitDelayTime while having low actual bandwidth usage, but it -probably had other consequences. - -Please upgrade! -</pre> -<hr> -<LI> <span style='color:blue'>Date: Fri, 23 Jun 2006 20:11:00</b></a></span><P> -<b>Mandatory build 839</b><p> -<pre> -Please upgrade your 0.7 nodes to version 839. This should be available -through the auto-update system, or you can download the jar. This build -will automatically become mandatory at midnight BST. It fixes some load -limiting bugs which combined with recent bugfixes may have caused the -backoff problems we have been having over the last few days. Thank you. -</pre> -<hr> -<p> -<LI> <span style='color:blue'>Date: Sat, 14 Jan 2006 03:08:00</b></a></span><P> -<b>Fproxy works in 0.7!</b><p> -<pre> -Build 349 of Freenet 0.7 now has (minimal) fproxy support. It's -insecure, user hostile and probably buggy, and there are no KSKs, but it -works! - -See here for instructions on how to run a node: -http://wiki.freenetproject.org/FreenetAlphatestNodeInstallation - -You will need to get a few people to peer with; join #freenet on -irc.freenode.net and ask around, you should be able to get some -connections. - -Fproxy runs on the listen port plus 2001. So if your listen port is -5000, your fproxy port is 7001 (and your testnet port is 6000). - -Lets see if we can get a little content! - -Note that it is still possible that it may be necessary to change the -URL format, the datastore format, or make other disruptive changes that -would wipe content. When I am confident that this will not be necessary -I will post to that effect. -</pre> -<hr> -<p> -<LI> <span style='color:blue'>Date: Mon, 22 Nov 2004 16:14:37 +0000</b></a></span><P> -<b>Build 5100</b><p> -<pre> -Freenet stable build 5100 is now available. The snapshots have been -updated. Please upgrade. - -Changes: -- Removed the (primary) failure table. This may have been causing many - fast DNFs recently on files that may well actually be available, but - which through getting requests and failing have gotten into the - failure tables on many nodes. There is a risk that removing the - failure table may increase network load; if this happens, we have - various options for dealing with it. Until recently there were very - few files blocked by the failure table, but there have been recent - reports of large numbers of blocks, possibly caused by increased node - specialization. -- Minor client-layer bugfixes - NullPointerExceptions in - SegmentOutputStream turned into error messages. I haven't fixed the - underlying cause of the error messages yet, but things should work - better with the errors than with the NPEs (which were also errors!). -</pre> -<hr> - -<p> -<LI> <span style='color:blue'>Date: Tue, 26 Oct 2004 00:20:40 +0100</b></a></span><P> -<b>Build 5099</b><p> -<pre> -Stable build 5099 is now available widely. This is a stable network -reset; you WILL need to reseed if you are still on 5096 or earlier. -Thanks to all who helped to test 5097, 5098 and 5099. Thanks partly to -their efforts, this build appears to have greatly improved insert -performance relative to 5096, and there are 64 nodes of build 5099 in -the seednodes, so upgrading should be relatively uneventful. You may be -able to use the update utility on Windows, or update.sh on Linux. If -this does not work, for example if your node connects to zero nodes -after startup, download seednodes.ref manually from -http://freenetproject.org/snapshots/ , and save it over your existing -seednodes.ref . If you can't use the updater you will also need to get -freenet-latest.jar, which replaces freenet.jar. In any case you will -need to turn off the node before updating. If you have any problems -contact us. - -The changes in this build are numerous, the highlights: -- Much better insert performance due to numerous bug fixes, some of - which were quite serious, and some minor architectural changes - relating to inserts. -- New simulator application merged to stable. Not usable by most end - users, but has been producing a lot of interesting results for us. - Please do not try to slashdot us on the simulation; when we have - some more results we will put up a page showing our findings, with - lots of graphs. -- Lots of minor code cleanups. -- A few other minor changes. - -</pre> -<hr> - -<p> -<LI> <span style='color:blue'>Date: Fri, 24 Sep 2004 19:53:55 +0100</b></a></span><P> -<b>Build 5096</b><p> -<pre> -Freenet stable build 5096 is now available. The snapshots have been -updated. Please upgrade to 5096, test it, and report any bugs that you -find. You can do this by using the update utility on windows (on the -start menu), or by running update.sh in linux, or by downloading the new -jar from http://freenetproject.org/snapshots/freenet-latest.jar. Either -way, it's probably a good idea to shut down the node before doing so -(and turn it back on afterwards!). - -There are many changes in this build, here are some of them: -- 5095 is now mandatory. Queueing wasn't really working adequately until - 5095. However the overwhelming majority of nodes at least in my RT are - 5095, so there is hopefully no problem here... -- Lots of work on timeouts, in response to recent problems with inserts. - It is likely that the recent insert problems have been caused by - insert timeouts being wrong, partly by not taking queueing into account. -- A major routing bugfix in the estimator smoothing code. This is used - mostly when a node is relatively young. -- New, optional, but enabled by default, super-fast routing estimators. - These are slightly lower precision than the original estimators, and - were developed as part of the recent simulation efforts. These are - based on double precision arithmetic (64 bits, 53 of which are - "mantissa" i.e. actual value, we can use), which is accelerated in - hardware by most modern CPUs, instead of 160-bit BigIntegers. We - believe that doubles provide sufficient precision; the simulations - suggest there are no serious bugs in the changeover of this particular - code. 53 bits should be enough even for a very large network... In any - case the new code is 3-4x faster (in terms of CPU usage, not routing - effectiveness or how fast it learns). This is a big part of freenet's - overall CPU usage, so expect improvements, especially on low end - machines. Turn this off by setting useFastEstimators=false in - freenet.conf/freenet.ini. -- Also you can use doEstimatorSmoothing to enable or disable estimator - smoothing; the results from the simulations on estimator smoothing are - unclear at present. -- Transfer failures are handled better by Fproxy, there is now a proper - error message instead of the unfriendly exception messages we have - been seeing reported on devl and support recently. -- Much improved Current Downloads page thanks to Iakin (Niklas Bergh). - And related bugfixes. -- Partial fixes and workarounds for the "Too high probability" bug. I - don't think we have finally fixed the cause of this bug, but at least - it will be recovered from virtually instantly. We may have fixed it - completely however. -- We now have a histogram of the versions of only connected nodes, as - well as the histogram of versions of all nodes in the routing table. -- Added some missing images for the "simple" theme - (UITemplateSet=simple). -- Lots of routing refactoring by Thelema (Edgar Friendly). -- Workaround for an infinite loop bug in queueing that I haven't been - able to reproduce and fix yet. Will log an error if it happens. -- Workaround for a bug in some Sun JVMs, that causes - BigInteger.toString(16) to cause an NPE. We now use our own code to - dump BigIntegers. -- Fix a rare NPE in MuxConnectionHandler -- Extra checks for invalid MRIs -- Added a method to AutoRequestor to calculate the CHK we would get if - inserting a file, given a specific content type, by Vesa Salento. I - think this may make freenet.client.cli.Main computechk work correctly, - but I haven't tested this. -- Paranoia to ensure we never send an HTL over our limit. I don't think - current builds do this; I know some older ones did. -- start-freenet.sh was still not setting LD_ASSUME_KERNEL for some - systems. Fixed it. -- Many other minor fixes. -</pre> -<hr> - -<p> -<LI> <span style='color:blue'>Date: Fri, 03 Sep 2004 20:35:39 +0100</b></a></span><P> -<b>Build 5095</b><p> -<pre> -Freenet stable build 5095 is now available. Please upgrade, test, and -report bugs. - -To upgrade: -On Windows, use the update option on the start menu, if it is there. -On linux, stop the node, run update.sh, and start it. -On any platform, stop the node, fetch -http://freenetproject.org/snapshots/freenet-latest.jar and overwrite -your existing freenet.jar with it, then restart the node. - -This bug fixes some more queueing bugs, which may have caused the node -to go into an infinite loop running the queue, or responding very -slowly, using 100% CPU, not responding to the web interface, and not -sending any requests. - -I apologize for the recent flood of new stable builds; queueing was a -fairly significant change architecturally despite not being much code; -thus we have some new bugs, some of which are quite significant. Not -much work has been done to optimize queueing's CPU usage yet; if you -have problems with this please tell us, and we will be more likely to -do something about it. Optimizations would probably introduce more bugs, -so haven't been an immediate priority... -</pre> -<hr> - -<LI> <span style='color:blue'>Date: Thu, 26 Aug 2004 21:37:57 +0100</b></a></span><P> -<b>Build 5092</b><p> -<pre> -Freenet stable build 5092 is now available. The snapshots have been -updated. Please upgrade, test, report bugs. - -To upgrade: -On Windows, use the update option on the start menu, if it is there. -On linux, stop the node, run update.sh, and start it. -On any platform, stop the node, fetch -http://freenetproject.org/snapshots/freenet-latest.jar and overwrite -your existing freenet.jar with it, then restart the node. - -The md5sum of the above jar is, as of this notice, <> - -Major changes: Lots! -- Implemented request queueing. Requests are held for up to a time that - depends on the request (3-10 secs for requests, 3-20 for inserts, 60 - for local requests that haven't been tried yet), and this is used to - prevent RNFs and route the right request to the right node. In - practice this should mean "instant" RNFs don't happen, and RNFs on the - whole are much less common. New diagnostics: requestsQueued, - queueAvailableNodes, requestQueueingSuccess. Initial implementation, - may not be as fast as could be achieved with more work. Please tell me - if it causes unacceptable CPU usage on support at freenetproject.org -- Fixed a major bug that probably caused most of the transfer timeouts. - This will not eliminate them instantly, but one of the causes if not - the main cause has been fixed. Messages were getting lost on slow - links. -- Increased timeouts, mostly to compensate for the fact that a request - at htl 1 may get forwarded to several additional hops. This was - causing problems with inserts. -- Fixed another bug which was causing problems with inserts. -- Don't update the MRI too often. Doing so gives away a lot of - information to attackers and makes some queueing optimizations more - difficult. -- Eradicate all remaining traces of transient support. Transient is now - deprecated and doesn't do anything. -- Give old version nodes a chance every 24 hours if they haven't - contacted us. They might have upgraded... -- Optimizations and other changes to connection opener management code to - reduce CPU usage and prevent it from blocking e.g. message sends while - it decides which connections to open, which can be relatively - expensive. -- Minor routing changes - refactoring, sort order, nodes that haven't - yet Identify'd, fixed the "No point 0" bug (the new estimators - wouldn't serialize from StoreData or seednodes because of a typo and a - more complex bug). -- Make start-freenet.sh work on Darwin. Hopefully. :) -- Minor datastore bugfix. I think. :) -- Fix automatic download of freenet-ext.jar for the distrib servlet - (it's over 1MB and must be fetched as a splitfile). -- Default Open Connections page to less heavy "connections" mode. -- Synchronization, logging, refactoring, indenting, comments, etc. -</pre> -<hr> - - -<LI> <span style='color:blue'>Date: Wed, 11 Aug 2004 02:07:09 +0100</b></a></span><P> -<b>Build 5091</b><p> -<pre> -Stable build 5091 is now available. Please upgrade. - -To upgrade: -On Windows, use the update option on the start menu, if it is there. -On linux, stop the node, run update.sh, and start it. -On any platform, stop the node, fetch -http://freenetproject.org/snapshots/freenet-latest.jar and overwrite -your existing freenet.jar with it, then restart the node. - -Major Changes: -* Fix an NPE in fproxy when downloading KSKs. -* Reduce memory usage when reseeding. -* Save the overall rate limiting averages to disk, and load them on the - next startup. This should smooth out the startup spike. -* Slight improvement to load estimation. -* Some changes to the distribution servlet (let it download the new - freenet-ext.jar as a splitfile, untested). -</pre> -<hr> - - -<LI> <span style='color:blue'>Date: Fri, 06 Aug 2004 19:49:50 +0100</b></a></span><P> -<b>Build 5090</b><p> - -<pre> -Stable build 5090 is now available. The snapshots have been updated. -Please upgrade ASAP, unless you are using the unstable branch. You can -do this on Windows by using the update option on the start menu. On -Linux, OS/X etc, you can update by using the update.sh script (and -restart the node). You can alternatively shut down your node and -download http://freenetproject.org/snapshots/freenet-latest.jar over -your existing freenet.jar, then restart your node. If you are currently -on a build prior to 5089, then you will also need to reseed. - -CHANGELOG: -Routing: -* Fixed a major 4 month old bug that was causing Route Not Found errors - to happen more quickly and more often than they should. This probably - did other bad things too. -* Most of the global estimators were wiped on startup resulting in - less accurate routing and possibly rate limiting. -* When reseeding, don't include nodes so old that we won't talk to them. -Rate limiting: -* Improvements to globalQuota (rate limiting's "how many total requests - should we aim for?" function): Average globalQuota, not the load put - into it (otherwise we have inertia in the wrong place which makes - oscillations worse), calculate the maximum number of requests we can - handle based on bandwidth usage and probability of success and don't - let globalQuota get any higher than that (should smooth rate - limiting). -* Use a longer time period for the various averages and counters used - by rate limiting. This should reduce the effects of long-lived - requests on rate limiting. -* Add a new form of high-level bandwidth limiting, which predicts the - expected outbound bandwidth usage based on current request rate and - probability of an incoming request causing a transfer. Should smooth - out rate limiting. -Padding: -* Don't send RequestInterval's on FNP messages. Don't parse them if we - receive them. They are unnecessary as all nodes on the new stable - network understand the new (small, fixed size) MRI messages. We can - therefore reduce the padding interval from 200 bytes to 160 bytes. -UI changes: -* Two new values on the General infolet. -* Minor HTML fixes on the Open Connections page. -Misc: -* Fix runaway receiving transfers count on the Open Connections page. - This was a reporting bug, we were not really receiving hundreds (in - some cases) of files. -* If a config file parameter is misspelled or otherwise corrupt, we used - to throw a ClassCastException and refuse to start. This is a fairly - common support problem. Now we provide a much more informative message - to stderr and the log file, and attempt to use the default value for - the param. -* Accept multipliers (kKmMgG) on integers and shorts (different kinds of - whole number options) in the config, as well as on longs. Practical - upshot: You can now do "outputBandwidthLimit=10k". -* Don't start the node if another node is running. This is enforced - using locking a lock file. -* Don't change the node file unless the address detected has actually - changed, and add synchronization to prevent race in the address - redetect function. Both of these fix the node renaming error messages - sometimes seen shortly after startup. -* Get rid of WriteSelectorLoop.fixKeys, cause of the fixKeys error - messages. Hopefully this is unnecessary. It was a workaround for - perceived issues in NIO, which probably don't exist. :) -* Fix some NullPointerException's. -* Delete some useless code, including code for backwards compatibility - with 5084. Some of the nastier bugs in 5085-5088 came from this code. -* Minor bug fixes (hopefully) in diagnostics. -* Bug fix relating to message construction, probably wouldn't cause - problems in this build but did in 5088. -* Minor improvements to the Distribution Servlet: Use the right size - bucket (slight efficiency improvement), support temp dir and distrib - dir on different volumes. -* Logging improvements -* Update copyright notices on freenet/support/CPUInformation/*CPUInfo. -New diagnostic variables: -* outputBytesMRI (bytes used for sending low level MRI messages) -* outputBytesPaddingOverhead (bytes used only for padding messages out - to a "safe" size) -* outputBytesTrailerChunksInsert (bytes used to send files for inserts) -* requestTransferTime (time taken by successful file transfers) -* requestCompletionTime (total time taken by successful requests) -</pre> -<hr> - -<LI> <span style='color:blue'>Date: Wed, 04 Aug 2004 21:56:21 +0100</b></a></span><P> -<b>Build 5089</b><p> - -<pre> -Stable build 5089 is now available. Please upgrade. You will probably -need to reseed. The current seednodes.ref at -http://freenetproject.org/snapshots/ will be sufficient. - -To upgrade: -On Windows, use the update option on the start menu, if it is there. -On linux, stop the node, run update.sh, and start it. -On any platform, stop the node, fetch -http://freenetproject.org/snapshots/freenet-latest.jar and overwrite -your existing freenet.jar with it, then restart the node. - -This is a mandatory upgrade. In other words, it will not talk to 5088 -and earlier. This is in the hope that the network will heal from the -recent unpleasantness with a full reset. It appears that the causes of -the recent problems were: -1) Major changes in routing in 5085 -2) Major changes in rate limiting in 5085 -3) Fairly nasty bugs and bugfixes from 5085 to 5087. - -Also the code mostly ran reasonably on unstable, before it was merged; -unstable consists only of nodes with most of the routing and rate limiting -changes. - -I think that resetting the network will fix the recent problems, so we are -resetting the network. Thanks to everyone who participated in the first -phase of the reset; the new stable network starts off with 35 nodes -instead of no nodes because of you. - -For changelog of crappy builds 5086 to 5088; see maillist. -</pre> - -<hr> - - -<LI> <span style='color:blue'>Date: Fri, 23 Jul 2004</b></a></span><P> -<b>Build 5085</b><p> -<pre> -This is the result of more than 2 months work, and has many changes: - -Some major changes to a critical part of the routing algorithm, the -KeyspaceEstimators. The new implementation is faster and much more -accurate. There are also many other changes to the routing code. There -may be a readjustment period on the network for a while as people -upgrade and the network sorts itself out. Your routing table will be -reset on upgrade: the nodes will still be there but because of the -algorithm change, the node will need to discover what their specialities -are all over again. Sorry, it was not possible to make this backwards -compatible. Many other minor routing improvements, many of them as a -result of simulation (by running several nodes simultaneously on one -machine, and running tests). - -Firewalled nodes will now automatically pick up their IP address from -the nodes they are connected to (once enough nodes have upgraded). Thus -you no longer need to specify an address in the config file or use -dyndns. This should make Freenet significantly easier to use for new -users on firewalled/NATted setups. You will still need to forward the -listenPort for maximum performance as we have not yet implemented -automatic port forwarding (it would require us to borrow some code for -Universal Plug and Play from other GPL'd Java apps; we may do this -later). - -Several fairly significant rate limiting fixes and improvements. Nodes -were comparing two averages over different time periods when calculating -their current request capacity, and sending the wrong Minimum Request -Interval to the requesting node. This caused significant problems in our -simulations. Also we now send "keepalive" messages occasionally, -including the MRI, so that nodes don't get out of date when the MRI -changes quickly (for example on startup). - -Fixed a number of long running bugs affecting inserts, mostly at the -client end. Especially inserts of large files. If you gave up trying to -insert something because of timeouts, try it again on 5085. - -Use a limit of 80 connections by default on Windows 98/ME, not 40. This -should make nodes on such operating systems work slightly better. If you -have problems with running out of sockets you may need to reduce the -limits. - -New diagnostics, new scripts, updates to scripts, improvements to -announcements (but still not working properly), fixes for -NullPointerExceptions (if you don't know what these are you don't want -to), improvements to the routing table status pages, always overwrite -the old logfile unless told otherwise in the config file (logOverwrite) -to prevent the disk filling up, two new stats, node_<number> renamed to -node, and loads of internal refactoring (moving code around, deleting -dead code). -</pre> - -<hr> - -<LI> <span style='color:blue'>Date: Wed, 02 Jun 2004</b></a></span><P> -<b>Build 5084</b><p> - - -Freenet stable build 5084 is now available. Please upgrade ASAP, if you -are running a stable branch node (if you're not, you'll know). You can -do this by running the update.sh script on POSIX like systems such as -Linux or MacOS/X (stop the node first, then update it, then start it), -or on Windows, you can run the update option on the menu, if there is -one, or on any platform, stop the node, download -http://freenetproject.org/snapshots/freenet-latest.jar over your -existing freenet.jar, and then start the node up again.<p> - -Two changes only in this build:<p> -* Fix a NullPointerException that prevented the node from starting up - sometimes if it had bad seednodes.<p> -* Make 5083 mandatory. The reason for the stable network's recent bad - performance is probably because the network consists of many 5083 - nodes and many 5082 nodes. Because 5083 makes some fairly drastic - changes to how HTL is used (and some routing changes), the two builds - don't get along very well with one another. We can improve the - situation by making 5083 mandatory.<p> -<hr> - - - - -<LI> <span style='color:blue'>Date: Sat, 29 May 2004 21:31:54 +0100 -</b></a></span><P> -<b>Build 5083</b><p> - - -Freenet stable build 5083 is now available. All stable branch users -should upgrade. This build will be made mandatory in the fairly near -future, so it is a good idea to upgrade soon. If you don't know which -branch you're on you're probably running stable. If on linux, MacOS/X, -or other POSIX like system, use the scripts:<p> -./stop-freenet.sh<br> -./update.sh<br> -./start.sh<p> -If on Windows, use the update link on the start menu, or -freenet-webinstall.exe. On any OS, you can shut down the node and fetch -the new jar from http://freenetproject.org/snapshots/freenet-latest.jar -which you can then copy over your existing freenet.jar, and then restart -the node.<p> - -Changes include:<p> -* 5082 is made mandatory. 5083 will be made mandatory by the next stable - build, because of the major changes (especially the next item). The - overwhelming majority of seednodes run 5082 now, so hopefully this - won't be too big a problem.<p> -* maxHopsToLive is now 20, and HTL is used slightly differently.<p> -* Use a completely different algorithm for the probability running - averages in NG Routing. The old one was inaccurate and alchemical.<p> -* Use different algorithms for smoothing data and estimating request - rates for rate limiting. This should eliminate (or greatly reduce) - the oscillations in received queries that we have seen recently on - both networks. It should also make rate limiting more accurate and - stable.<p> -* Fix some major bugs, for example: We were not calling the callbacks on - expired messages. Now we do, with a separate thread for it.<p> -* Open more connections simultaneously on startup. Should speed up the - process of nodes getting wired into the network on startup.<p> -* Nodes that are limited by threads (usually these are high bandwidth - nodes) should behave better (reject less queries and connections).<p> -* Show more detail on the per node routing table pages linked from the - routing table page.<p> -* Improve input bandwidth predicting load estimator: assume that our - input bandwidth is at least equal to our output limit.<p> -* New experimental option doReserveBandwidthForSuccess, which throttles - bandwidth usage to try to improve routing success. Feel free to - experiment with this if you have some idea what you are doing; it WILL - result in your node processing fewer queries and less traffic however.<p> -* Various optimizations and locking improvements.<p> -* Improve renaming code in datastore.<p> -* Fix on-the-fly update of maxOpenConnectionsNewbieFraction.<p> -* logDetail renamed to logLevelDetail in freenet.client.cli.Main<p> -* Add some RFC3330 local/invalid/LAN/testing addresses to the node's IP - validation code. This affects which connections are throttled (if a - connection is from a LAN address, it shouldn't be throttled), and - whether the node accepts a detected IP address.<p> -* New diagnostics: receivedTransferSize, sentTransferFailureSize, - sentTransferSuccessSize.<p> -* Refactoring, removal of dead or useless code, logging changes, etc - etc.<p> -Full changes are available from the CVS list or from browsing the CVS -repository via our web site. -You may see the following message after starting a 5083 node, the first -time:<p> -"Caught java.io.IOException: Invalid magic 1072614716 should be 17025 - -format change?"<p> -This is due to the changes to routing, which incompatibly changed the -routing table format. Your routing table's estimators will therefore be -reset. This message should only happen the first time you start the node -after upgrading. If it happens after that, something is wrong. The -seednodes estimator format also changed, so when reseeding you may see -messages like:<p> -Caught freenet.node.rt.EstimatorFormatException: Wrong impl: -SelfAdjustingDecayingRunningAverage reading tcp/freenetfarm.dnsalias.com:35985, -sessions=1, presentations=3, ID=DSA(b078 8b64 9e69 0302 b2e2 53c6 7610 dbd1 1641 5580), -version=Fred,0.5,STABLE-1.50,5079 from FieldSet :(<p> - -This just means that the seednodes format has changed. It will still use -the nodes, hopefully, but it won't use the estimators.<p> -<hr> - - - -<LI> <span style='color:blue'>Date: Sat, 15 May 2004 21:00:12 +0100</b></a></span><P> -<b>Build 5082</b><p> - -Freenet stable build 5082 is now available. The snapshots have been -updated. Please upgrade ASAP. Stable branch users should upgrade at -least weekly as Freenet is still at a relatively early phase of -development. You can use the update option on the start menu, or -freenet-webinstall.exe to update your node on Windows. Or under Linux, -MacOS/X or other POSIX-like systems, you can use update.sh:<p> -./stop-freenet.sh<br> -./update.sh<br> -./start-freenet.sh<p> - -Please remember to stop the node before updating, and start it again -afterwards.<br> -You can also get the jar directly from -http://freenetproject.org/snapshots/freenet-latest.jar - -<p> -Details of this build:<br> -Various bug fixes, some of them pretty serious. Comes to a fairly small -amount of actual code though. Lots more changes are being tested and -debugged on unstable.<p> -* Rate limiting was almost completely broken due to a stupid bug. Fixed - it.<p> -* Major routing fix: many of our running averages were, for various - reasons, at 0.999999999999 or so. With the current running average - implementation for probabilities, the result of this is that the - running average will never change (because the closer it is to 0.0 or - 1.0, the less sensitive it is). We were supposed to be doing bounds - checking to ensure that this wasn't a problem; there was a bug in the - bounds checking :(. The result of this bug was that some of the major - factors in the NGRouting calculation were very often completely wrong! - The current implementation is suboptimal, there is a replacement - being tested on unstable, but the code merged in this build should be - much better than the previous builds!<p> -* Fixed a NullPointerException that would cause the web interface to - stop working after a while.<p> -* Show some more useful detail next to probability running averages on - the per node pages linked from the routing table page.<p> -* Don't leak a temp file when an insert fails.<p> -* A minor optimization in DSAPublicKey.equals(), and some minor code - style changes.<p> -<hr> - - -<LI> <span style='color:blue'>Date: Thu, 13 May 2004 04:25:10 +0100</b></a></span><P> -<b>Build 5081</b><p> - - -Freenet stable build 5081 is now available. Please upgrade, unless you -are running an unstable build. Users of the stable network should -upgrade weekly on average. The snapshots are updating. You can get the -new build by using freenet-webinstall.exe on Windows, or update.sh on -Linux/*nix/MacOS X. Don't forget to shut down the node before updating -and start it up afterwards.<p> -Changelog: Fixed lots of bugs:<p> - -* The routing table was being overrun by nodes with no contact details.<p> -* Reseeding caused a NullPointerException and never worked (thanks - Conrad).<p> -* Many inserts would never finish.<p> -* Several inaccuracies fixed and improvements made to rate limiting.<p> -* The "latest build" indicator was very easily spoofable. Now it is - rather less easy to spoof.<p> -* Fproxy threads would hang forever if an exception happened during the - request, e.g. if out of disk space.<p> -* We should cache late-arriving data, if we are still searching. -* hops.png had a border on some pages.<p> -* Vary the minRequestInterval randomly slightly to prevent oscillation - (and make traffic analysis harder).<p> -* build.xml will now build (with ant) everything, including - freenet-ext.jar, if you have the source for Contrib.<p> -* Update CVS details in build.xml because sf changed the CVSROOT.<p> -* Don't send whether we are transient in our node reference. Firstly, it - is irrelevant: all that matters now is whether the node is - contactable; all nodes will either do their share or will be dropped - from people's routing tables. Secondly, it's a breach of privacy - (although a minor one given the first reason).<p> -* DataSent was not being sent until after the padding had been sent, - when a SendData failed. This meant the parent state didn't know the - send had failed for some time, which could cause problems.<p> -* Handle various unexpected or late messages better.<p> -* Some minor refactoring, logging, indenting, comments, etc.<p> -<hr> - - - -<LI> <span style='color:blue'>Date: Tue, 04 May 2004 00:30:22 +0100</b></a></span><P> -<b>Build 5078</b><p> - -Freenet stable build 5078 is now available. The snapshots have been -updated. All stable branch users should upgrade ASAP.<p> - -Changelog:<p> -* Make 5077 mandatory. This is a fairly significant change. 5077 made - huge changes, including some fundamental changes to how freenet - routes ("bidirectional routing" - all connected nodes may be routed to); - for the network to work effectively, we need the whole of stable to be - running more or less the same code.<p> -* Lots of bugfixes.<p> -* New, cleverer startup script for unix-like systems.<p> -<hr> - - - - - - -<LI> <span style='color:blue'>Date: Sun, 25 Apr 2004 02:08:22 +0100</b></a></span><P> -<b>Build 5077</b><p> - -Stable build 5077 is now available. The snapshots have been updated. -All users of the stable branch should upgrade ASAP. This build has far -too many changes to list exhaustively (but I tried, you can see the -results in the commit comments). Some highlights:<p> -* Fixed a HUGE bug which was preventing inserts from working at all - well. This may well be responsible for much of Freenet's woes. It has - been around at least since the native datastore rewrite..<p> -* Major changes to how and to where we route - "bidirectional routing". - Basically this means that the routing table is a superset of the set - of connected nodes, and if a node is connected, we will try to route - to it. Even if it is a transient. This should significantly improve - performance and reduce the number of Route Not Found errors.<p> -* Improved announcements<p> -* Fixed a major rate limiting bug.<p> -* Fixed many less significant bugs.<p> -* New diagnostics and config options<p> -* Substantial reduction in memory usage. Many leaks eliminated.<p> -* Fixed two major bugs that would cause splitfile downloads in fproxy to - hang, and made some related improvements.<p> -* Improvements to the HTTP interface to the node (diagnostics etc are - themed, better routing table status page, etc)<p> -* Fixed bug with ZIP files in manifests.<p> -* New linux-specific option doCPULoad, to attempt to throttle requests - based on actual measured overall system CPU usage. I found this - useful, others might; a Windows implementation is not likely. It is - not possible to do this in a cross platform manner.<p> -* Workaround for a major NIO bug on Windows (which caused 100% CPU - usage).<p> -* Major bug fix relating to cancelling messages (messages that were - supposed to be cancelled weren't getting cancelled).<p> -* Tons of refactoring - much code tidied up, split into more manageable - pieces, or outright deleted due to not being needed.<p> -* Lots of optimizations.<p> -* Linked to the new FIND is Not Dolphin index instead of Dolphin, it is - more appropriate for the stable branch as it indexes stable sites - only.<p> -* And much more!<p> -<hr> - - - - -<LI> <span style='color:blue'>Date: Wed, 17 Mar 2004 16:09:24 +0000</b></a></span><P> -<b>Build 5076</b><p> - -Freenet stable build 5076 is now available. The snapshots have been -updated. You can get the build via the update.sh script on Linux, BSD, -or OS/X, or use the freenet-webinstall.exe utility to update on Windows, -or get the jar from -http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> -Major changes:<p> -* Make 5074 mandatory. Most nodes seem to have upgraded... This is - necessary for the next item.<p> -* Send the minRequestInterval on the IdentifyPacketMessage, a message - that is exchanged when a connection is opened. This will improve the - accuracy of rate limiting.<p> -* Fix a serious bug in the new NGRoutingTable discard-sort order (i.e. - the algorithm that decides which node to drop when we want to drop a - node from the routing table). The bug would have caused new nodes that - can't be connected to, to persist in the routing table forever. It was - introduced in 5075.<p> -<hr> - - -<LI> <span style='color:blue'>Date: Sat, 13 Mar 2004 18:54:08 +0000</b></a></span><P> -<b>Build 5075</b><p> - -Freenet stable build 5075 is now available. The snapshots have been -updated. You can get the build via the update.sh script on Linux, BSD, -or OS/X, or use the freenet-webinstall.exe utility to update on Windows, -or get the jar from -http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> -Major changes:<p> -* New algorithm for deciding which nodes to drop from the routing table. -* New load measurement based on predicting future downlink bandwidth - usage. Won't affect the node much at present, it could be combined - with limits on local clients to prevent nodes from getting high - messageSendTime's when they request lots of data.<p> -* Increase the default estimated file size (for rate limiting, load - balancing, etc) to 350kB.<p> -* Tweaks to the rate limiting code.<p> -* Make logInputBytes and logOutputBytes work again.<p> -* Fix a rare NullPointerException when accepting a new FNP connection - and the connection times out.<p> -<hr> - - -<LI> <span style='color:blue'>Date: Sat, 06 Mar 2004 02:53:49 +0000</b></a></span><P> -<b>Build 5074</b><p> - -Freenet stable build 5074 is now available. The snapshots will have been -updated sometime in the next few hours. Once that has happened, you can get -build 5074 via the update.sh script on Linux, BSD, or OS/X, or use the -freenet-webinstall.exe utility to update on Windows, or get -the jar from http://freenetproject.org/snapshots/freenet-latest.jar . -All stable branch users should upgrade.<p> - -Major changes:<p> -* Fixed a major memory leak.<p> -* Fixed a minor routing problem (the overall probability estimators, - used for various purposes, were always exactly 1.0).<p> -* Fixed a more major routing problem (very high routing table churn caused - by us being too quick to poach references from requestors).<p> -* Lots of changes to the HTML interface to the node; hirvox has been - doing lots of good work on this. The new template system will be much - more flexible.<p> -* New diagnostic var inputBytes.<p> -* Lots of minor changes, optimizations, etc.<p> - -<hr> - - - -<LI> <span style='color:blue'>Date: Wed, 03 Mar 2004 16:15:27 +0000</b></a></span><P> -<b>Build 5073</b><p> - - -Freenet stable build 5073 is now available. The snapshots are being -updated. You can get it via the update.sh script on Linux, BSD, or OS/X, -or use the freenet-webinstall.exe utility to update on Windows, or get -the jar from http://freenetproject.org/snapshots/freenet-latest.jar . -All stable branch users should upgrade. The snapshots have been updated. -<p> -Changelog:<p> -* Fixed a fairly major deviation from freenet's original design goals: - the attacker must not be able to probe for data without causing it to - be distributed more widely. Specifically, if the requestor cancels a - transfer, we should still transfer the data. Of course this means that - nodes can DoS the network by requesting data and then cancelling the - transfer; we will instigate some sort of blacklisting to try to - discourage this, but it is not an immediate priority.<p> -* Fix a NullPointerException in the TransferInsert state. -<p> -<hr> - - - -<LI> <span style='color:blue'>Date: Thu, 26 Feb 2004 01:16:18 +0000</b></a></span><P> -<b>Build 5072</b><p> - - -Freenet stable build 5072 is now available. The snapshots are being -updated. You can get it via the update.sh script on Linux, BSD, or OS/X, -or use the freenet-webinstall.exe utility to update on Windows, or get -the jar from http://freenetproject.org/snapshots/freenet-latest.jar . -All stable branch users should upgrade. The snapshots should have been -updated soon. -<p> -This fixes a bug that went into 5071 by mistake, that could cause the -node not to start, or other bad things. Please upgrade. Apologies for -releasing a new stable build so soon after the first one.<p> - -<hr> - - - -<LI> <span style='color:blue'>Date: Wed, 25 Feb 2004 21:46:11 +0000</b></a></span><P> -<b>Build 5071</b><p> - - - -Freenet stable build 5071 is now available. The snapshots have been -updated. You can get it via the update.sh script on Linux, BSD, or OS/X, -or use the freenet-webinstall.exe utility to update on Windows, or get -the jar from http://freenetproject.org/snapshots/freenet-latest.jar . -All stable branch users should upgrade. - -The main change in this build is a fix for a memory leak. This may not -be fully fixed yet but is drastically reduced from 5070. Also there is a -significant rate limiting fix, and lots of minor fixes. Please upgrade.<p> - -<hr> - - - - -<LI> <span style='color:blue'>Date: Thu, 19 Feb 2004 02:26:34 +0000</b></a></span><P> -<b>Build 5070</b><p> - - -Freenet stable build 5070 is now available. The snapshots have been -updated. You can get it via the update.sh script on Linux, BSD, or OS/X, -or use the freenet-webinstall.exe utility to update on Windows, or get -the jar from http://freenetproject.org/snapshots/freenet-latest.jar . -All stable branch users should upgrade.<p> - -The main change in this build is significant work on the rate limiting -algorithm. We now average the requests per hour and load values before -estimating the target global queries per hour. This should improve -things significantly and prevent oscillations in load, and help nodes -with less CPU power to handle as many requests as they can, and no more. -There were several other minor changes; for a detailed changelog check -the CVS list.<p> - -<hr> - - - -<LI> <span style='color:blue'>Date: Sun, 15 Feb 2004 01:08:54 +0000</b></a></span><P> -<b>Build 5069</b><p> - - - -Freenet stable build 5069 is now available. The snapshots will have been -updated sometime in the next few minutes; if you don't get 5069, try -again in an hour's time. If it's still 5068, complain to -support at ... You can get it via the update.sh script on -Linux, BSD, or OS/X, or use the freenet-webinstall.exe utility to update -on Windows, or get the jar from -http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -A large number of bugfixes, some of them major, and a number of larger -changes, are present in this build. Details:<p> -* Fixed a major bug in stats that was causing us to dramatically - underestimate our used bandwidth resulting in effectively no controls on - the number of trailers transferring, resulting in too many requests - accepted, too many parallel transfers, and most of them running really - slowly and eventually failing.<p> -* Fixed another major bug that resulted in one request for a reasonably - available file causing a large number of transfers; certain send - failure modes were not being handled properly, with the result that we - continued to receive the file (thus allowing it to propagate through - the network), but forgetting about it so that when it does complete, - it does not get committed, and moving on to request the file from - another node, so we end up transferring many copies, most of which end - up in the temp dir and never leave it; this bug wasted a lot of - bandwidth and also disk space.<p> -* Implemented new rate limiting algorithm. Joint effort by me and ian. - Should be much better behaved than the old one, involves less - "alchemy". Each node we are connected to is sent a different minimum - request interval, depending on how many requests it makes, but all - have a reasonably fair quota, which will increase quickly if needed. - This data is included on the Open Connections page at max detail.<p> -* Lots of improvements and bugfixes to the rate limiting system: all FNP - messages now carry the request interval, and we can read it from - IdentifyPacketMessage's (although we don't write it yet). The code to - detect nodes violating the minimum request intervals has been - significantly improved, and we now have a message so that nodes can - tell other nodes that they have violated their quota, with some - debugging info. However this is not necessarily all wrapped up yet. - When it is, we will implement some enforcement mechanisms such as - banning nodes which persistently violate the request intervals.<p> -* Many minor optimizations and fixes.<p> -* Opera (the browser) users who have read and acted on the warning, i.e. - configured opera to respect MIME types, can now set - mainport.params.servlet.1.params.dontWarnOperaUsers=true to get rid of - the warning page.<p> - -<hr> - - - - -<LI> <span style='color:blue'>Date: Tue, 10 Feb 2004 13:34:17 +0000</b></a></span><P> -<b>Build 5068</b><p> - - - -Freenet stable build 5068 is now available. Upgrade using -freenet-webinstall.exe or update.sh , or download the jar from -http://freenetproject.org/snapshots/freenet-latest.jar . All users of -the stable network/branch should upgrade immediately.<p> - -This fixes a major bug in 5067 and a minor one, one that caused -NullPointerException's in routing after we had been up for a while, and -one optimization.<p> - -<hr> - - - -<LI> <span style='color:blue'>Date: Tue, 10 Feb 2004 01:25:59 +0000</b></a></span><P> -<b>Build 5067</b><p> - - -Freenet stable build 5067 is now available. Upgrade using -freenet-webinstall.exe or update.sh , or download the jar from -http://freenetproject.org/snapshots/freenet-latest.jar . All users of -the stable network/branch should upgrade immediately.<p> - -This fixes two major bugs in 5066:<p> -* High-level bandwidth limiting was effectively disabled by the low - level bandwidth limiting having too low a multiplier. This lead to - large numbers of simultaneous transfers, resulting in nodes rejecting - all queries for ages, slow transfers, and more transfer failures.<p> -* An accidentally committed patch changed the name of a part of the - format used by Fred to convey routing data when reseeding.<p> - -<hr> - - - - - -<LI> <span style='color:blue'>Date: Sun, 08 Feb 2004 02:31:14 +0000</b></a></span><P> -<b>Build 5066</b><p> - -Freenet stable build 5066 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade. You will also need to reseed your node: get -a new seednodes.ref from -http://freenetproject.org/snapshots/seednodes.ref . This build is not -compatible with older stable builds. -<p> -We have merged several weeks' work in this build. Specifically, rate -limiting, which is a new way of balancing load on Freenet, and a bug fix -in the datastore, which could have been quite nasty (causing the LRU -list in the datastore to be wrong, and the node to get jammed for a -while every time a file was committed). Subjectively, the unstable -network seems to work fairly well with this code, although there are a -few concerning stats, so we decided it needs wider testing. Hopefully -the stable branch will work significantly better as a result of the new -code. Of course it will initially as it is small, the test comes when it -gets bigger. Please upgrade and reseed. -<P> - -<HR> - - - - -<LI> <span style='color:blue'>Date: Tue, 27 Jan 2004 21:02:21 +0000</b></a></span><P> -<b>Build 5065</b><p> - -Freenet stable build 5065 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -The main change here is to reduce the maximum HTL to 10. Ian suggested -this could reduce the network load, on the basis of experimental -evidence from last year that if data isn't found at HTL 7-13, it -probably won't be found at all. I believe this was found by Cruft's -spider originally... If it doesn't work, we msay revert it.<p> - -<hr> - -<LI> <span style='color:blue'>Date: Tue, 27 Jan 2004 01:58:35 +0000</b></a></span><P> -<b>Build 5064</b><p> - -Freenet stable build 5064 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -The main change is the implementation of a defence against a very nasty -denial of service attack. Detail: if a node requests a file from us, -and we transfer the data from another node, or as is more common, a -chain of other nodes, and then it terminates the transfer, then we would -previously continue to receive the data, on the grounds that we might -need it - it will be useful, and also on the grounds that closing a -connection is expensive. The latter reason no longer exists given -multiplexing. The overriding concern now is that the transfer will use -up bandwidth and cause overload on many nodes throughout the network, -and the attack uses very little bandwidth to cause this. Thus it is more -important to prevent the attack than to get the file, as an attacker -could relatively easily use it to propagate garbage data to a large -fraction of the network, overwhelm the network, destroy specialization -and generally produce the symptoms we have been seeing. However there is -no evidence that an attack along such lines has in fact been mounted; we -should eliminate that possibility.<p> - -Future work:<p> -1. We need to punish the node in some other way - it has put us through -a lot of work, only to cancel the request. This can happen naturally -sometimes, due to restarts; this could however be detected by the -connection loss, but this doesn't help us much if the cancels cascade -down the chain. So we need some mechanism so that nodes which cancel a -lot of transfers will be penalized. My favourite idea would be to -implement the latest load balancing idea, request rate limiting, and -then to multiply the minimum request interval for a specific node by a -number calculated for that node, which would be a function of the -running average of transfers cancelled.<p> - -<hr> - -<LI> <span style='color:blue'>Date: Tue, 20 Jan 2004 19:55:34 +0000</b></a></span><P> -<b>Build 5063</b><p> - -Freenet stable build 5063 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -Changes:<p> -* Reduce the maximum hops to live from 25 to 20. This should reduce - overall network load.<p> -* Re-enable NGRouting. This works pretty well on unstable. However - unstable is a tiny network, so we have no real reason to think it will - work well on stable. But we may as well try it. One important feature - is 'unobtanium', a mechanism where the node when overloaded can choose - which requests it wants to accept on the basis of success probability.<p> - -<hr> - - -<LI> <span style='color:blue'>Date: Tue, 20 Jan 2004 19:40:40 +0000</b></a></span><P> -<b>Build 5062</b><p> - - -Freenet stable build 5062 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -Changes:<p> -* Reduce the HTL when we get a QueryRejected after the Accepted (this - means it is probably a route not found QR). We used to do this for all - QRs, but I think that is excessive. This should significantly reduce - the overall load. It may make routing worse. It will be interesting to - see. Hopefully the load reduction will offset the routing to fewer - nodes, and lower HTLs when we do, resulting in overall better - routing...<p> -* Don't count unconnectable nodes as backed off in the routing table - status page.<p> - -<hr> - -<LI> <span style='color:blue'>Date: Thu, 15 Jan 2004 17:44:31 +0000</b></a></span><P> -<b>Build 5061</b><p> - - -Freenet stable build 5061 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -The major change is a change to routing that takes what was done in 5060 -in the opposite direction, sort of... if every node rejects us, we will -try the backed off nodes, but we will do it only after trying all the -non-backed-off nodes. This strategy appears to have been working for -local requests, before 5060, so maybe it will work more widely. This is -also how we use backoff on NGRouting... anyway, all stable nodes should -be upgraded as soon as possible. In practice it should improve the local -node's performance irrespective of other nodes, in that it reduces the -number of RNFs and increases the chance of finding data, but it may also -increase the overall network load.. we may have taken it too far in the -other direction in 5060. The only local cost is that it may take longer -for requests to fail.<p> - - -<hr> - - - -<LI> <span style='color:blue'>Date: Thu, 15 Jan 2004 04:09:52 +0000</b></a></span><P> -<b>Build 5060</b><p> - - -Freenet stable build 5060 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -Changelog:<p> -* Make the routing algorithm treat local and non-local requests exactly - the same. We were treating local requests differently in that we would - route to nodes that were backed off for a local request, but not for a - request we were serving for another node. This was perhaps exploitable - probabilistically to identify groups of local requests, and was also - probably causing a distortion in routing...<p> -* Increase the routing table size to 100. Because of the above and - because of the fact that the overwhelming majority of queries are - rejected or time out, a larger routing table may be helpful.<p> -* Added new stats localRequestSuccessRatio and localRoutingSuccessRatio, - these may be of interest, but should probably be made optional...<p> -* Removed the non-working links on the routing table summary page.<p> -* Prevented a NullPointerException in MuxConnectionHandler, although the - underlying bug remains, it is slightly less severe...<p> - - - -<hr> - - -<LI> <span style='color:blue'>Date: Wed, 14 Jan 2004 23:05:08 +0000</b></a></span><P> -<b>Build 5058</b><p> - -Freenet stable build 5058 is now available. The snapshots have been -updated. Get it via the update.sh script on Linux, BSD, or OS/X, or use -the freenet-webinstall.exe utility to update on Windows, or get the jar -from http://freenetproject.org/snapshots/freenet-latest.jar . All stable -branch users should upgrade.<p> - -Changelog:<p> -* Force all stable branch nodes to use the classic routing - implementation. This may have been set wrong because a node switched - networks, etc. If a user really wants to run ngr on the stable network - he can edit the code and compile it him-/her-self.<p> -* Remove the NewNodeContactor, a hack used to ensure that new nodes in - the routing table are contacted regularly, which was only enabled if - NGRouting was active. This has been causing a massive amount of - traffic on the unstable branch and depending on how many nodes were - actually running NGR on stable may have caused a lot of traffic there - too. The replacement is code to route every 100th incoming FNP request, - on average, using the least-experienced-first routing algorithm, if we - are using NGR. All these changes will also be committed to unstable - where they may make more difference.<p> -* Minor cosmetic improvement to the routing table status page (nodes - only show in red if they have no connections and connections are - failing).<p> -* The routing table size to max connections ratio has been reduced from - a minimum of 4 to a minimum of 2. This means nodes on win9x can have a - 30 node routing table and nodes on OS/X can have a 50 node routing - table.<p> -* Locking fix in the classic routing table. This could have caused - various problems...<p> -* Up the lastGoodBuild to 5053 to remove ambiguity; probably no - practical impact.<p> -<P> -<hr> -<tr> -<td align="right" valign="bottom"> -Want to help? Make a summary of a discussion on the freenet maillist and send it to <a href="mailto:newsbyte at freenetproject.org">NewsByte</a> -</td> -
