[freenet-cvs] r12636 - in trunk/website: . image image/frost image/install image/jsite image/thaw includes pages pages/en pages/sv
mathias at freenetproject.org
mathias at freenetproject.org
Fri Apr 13 16:17:03 UTC 2007
Author: mathias
Date: 2007-04-13 16:17:03 +0000 (Fri, 13 Apr 2007)
New Revision: 12636
Added:
trunk/website/image/Freenet-architecture-small.png
trunk/website/image/Freenet-darknet_peers.png
trunk/website/image/add_peers.png
trunk/website/image/frost/
trunk/website/image/frost/choose-identity.png
trunk/website/image/frost/clean-start.png
trunk/website/image/frost/main-window.png
trunk/website/image/frost/select-version.png
trunk/website/image/install/
trunk/website/image/install/1-langselect.png
trunk/website/image/install/10-Successful_installation.png
trunk/website/image/install/10-Web_browser_window.png
trunk/website/image/install/11-FProxy_home.png
trunk/website/image/install/2-about.png
trunk/website/image/install/3-acceptLicense.png
trunk/website/image/install/4-Install_directory.png
trunk/website/image/install/5-select_packages.png
trunk/website/image/install/6-Install_packages.png
trunk/website/image/install/7-install_progress.png
trunk/website/image/install/7-progress_install.png
trunk/website/image/install/8-create_shortcuts.png
trunk/website/image/install/9-Install_finished.png
trunk/website/image/jsite/
trunk/website/image/jsite/default-file.png
trunk/website/image/jsite/project-details.png
trunk/website/image/jsite/project-files.png
trunk/website/image/jsite/project-insert.png
trunk/website/image/jsite/select-project.png
trunk/website/image/pdf.icon.jpg
trunk/website/image/thaw/
trunk/website/image/thaw/download-keys.png
trunk/website/image/thaw/main-window.png
trunk/website/image/video.icon.png
trunk/website/includes/
trunk/website/includes/22c3vid.inc.php
trunk/website/includes/architecture.inc.php
trunk/website/includes/common.inc.php
trunk/website/includes/connect.inc.php
trunk/website/includes/content.inc.php
trunk/website/includes/developer.inc.php
trunk/website/includes/documentation.inc.php
trunk/website/includes/donate.inc.php
trunk/website/includes/download.inc.php
trunk/website/includes/faq.inc.php
trunk/website/includes/freemail.inc.php
trunk/website/includes/frost.inc.php
trunk/website/includes/index.inc.php
trunk/website/includes/install.inc.php
trunk/website/includes/jsite.inc.php
trunk/website/includes/language.inc.php
trunk/website/includes/languages.inc.php
trunk/website/includes/lists.inc.php
trunk/website/includes/mailsum.inc.php
trunk/website/includes/menu.inc.php
trunk/website/includes/news.inc.php
trunk/website/includes/ngrouting.inc.php
trunk/website/includes/papers.inc.php
trunk/website/includes/people.inc.php
trunk/website/includes/philosophy.inc.php
trunk/website/includes/sponsors.inc.php
trunk/website/includes/thaw.inc.php
trunk/website/includes/tools.inc.php
trunk/website/includes/understand.inc.php
trunk/website/includes/whatis.inc.php
trunk/website/pages/en/
trunk/website/pages/en/22c3vid.php
trunk/website/pages/en/FCPlib.php
trunk/website/pages/en/Freeplot.php
trunk/website/pages/en/applications.php
trunk/website/pages/en/architecture.php
trunk/website/pages/en/connect.php
trunk/website/pages/en/content.php
trunk/website/pages/en/developer.php
trunk/website/pages/en/documentation.php
trunk/website/pages/en/donate.php
trunk/website/pages/en/donatethanks.php
trunk/website/pages/en/download-old.php
trunk/website/pages/en/download.php
trunk/website/pages/en/fairshare.php
trunk/website/pages/en/faq.php
trunk/website/pages/en/fasd.php
trunk/website/pages/en/fcp.php
trunk/website/pages/en/fcptools.php
trunk/website/pages/en/fec.php
trunk/website/pages/en/fphowto.php
trunk/website/pages/en/freeapps.php
trunk/website/pages/en/freemail.php
trunk/website/pages/en/frost.php
trunk/website/pages/en/index.php
trunk/website/pages/en/install.php
trunk/website/pages/en/jsite.php
trunk/website/pages/en/keys.php
trunk/website/pages/en/lists.php
trunk/website/pages/en/mailsum.php
trunk/website/pages/en/mailsum0104.php
trunk/website/pages/en/mailsum0204.php
trunk/website/pages/en/mailsum0304.php
trunk/website/pages/en/mailsum0404.php
trunk/website/pages/en/mailsum1103.php
trunk/website/pages/en/mailsum1203.php
trunk/website/pages/en/menu.php
trunk/website/pages/en/metadata.php
trunk/website/pages/en/news.php
trunk/website/pages/en/ngrouting.php
trunk/website/pages/en/openjobs.php
trunk/website/pages/en/papers.php
trunk/website/pages/en/people.php
trunk/website/pages/en/philosophy.php
trunk/website/pages/en/roadmap.php
trunk/website/pages/en/sponsors.php
trunk/website/pages/en/stateof180204.php
trunk/website/pages/en/switches.php
trunk/website/pages/en/thaw.php
trunk/website/pages/en/tools.php
trunk/website/pages/en/tryunstable.php
trunk/website/pages/en/understand.php
trunk/website/pages/en/unixhowto.php
trunk/website/pages/en/whatis.php
trunk/website/pages/en/whatsnew.php
trunk/website/pages/sv/
trunk/website/pages/sv/index.php
trunk/website/pages/sv/menu.php
trunk/website/pages/sv/news.php
trunk/website/pages/sv/openjobs.php
trunk/website/pages/sv/philosophy.php
trunk/website/pages/sv/roadmap.php
trunk/website/pages/sv/whatis.php
Modified:
trunk/website/.htaccess
trunk/website/index.php
trunk/website/style.css
Log:
Added multiple language support for the website. Now each page-file needs a corresponding inc-file in /includes
Modified: trunk/website/.htaccess
===================================================================
--- trunk/website/.htaccess 2007-04-13 16:05:06 UTC (rev 12635)
+++ trunk/website/.htaccess 2007-04-13 16:17:03 UTC (rev 12636)
@@ -1,5 +1,7 @@
RewriteEngine on
RewriteCond %{REQUEST_URI} !-f
+RewriteRule ^(.+)\.html?lang=(.+)$ /index.php?page=$1&lang=$2 [L]
+RewriteRule ^(..)/(.+)\.html /index.php?page=$2&lang=$1 [L]
RewriteRule ^(.+)\.html?mode=(.+)$ /index.php?page=$1&mode=$2 [L]
RewriteRule ^(.+)\.html$ /index.php?page=$1 [L]
Added: trunk/website/image/Freenet-architecture-small.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/Freenet-architecture-small.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/Freenet-darknet_peers.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/Freenet-darknet_peers.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/add_peers.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/add_peers.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/frost/choose-identity.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/frost/choose-identity.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/frost/clean-start.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/frost/clean-start.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/frost/main-window.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/frost/main-window.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/frost/select-version.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/frost/select-version.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/1-langselect.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/1-langselect.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/10-Successful_installation.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/10-Successful_installation.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/10-Web_browser_window.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/10-Web_browser_window.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/11-FProxy_home.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/11-FProxy_home.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/2-about.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/2-about.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/3-acceptLicense.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/3-acceptLicense.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/4-Install_directory.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/4-Install_directory.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/5-select_packages.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/5-select_packages.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/6-Install_packages.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/6-Install_packages.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/7-install_progress.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/7-install_progress.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/7-progress_install.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/7-progress_install.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/8-create_shortcuts.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/8-create_shortcuts.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/install/9-Install_finished.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/install/9-Install_finished.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/jsite/default-file.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/jsite/default-file.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/jsite/project-details.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/jsite/project-details.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/jsite/project-files.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/jsite/project-files.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/jsite/project-insert.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/jsite/project-insert.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/jsite/select-project.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/jsite/select-project.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/pdf.icon.jpg
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/pdf.icon.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/thaw/download-keys.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/thaw/download-keys.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/thaw/main-window.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/thaw/main-window.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/image/video.icon.png
===================================================================
(Binary files differ)
Property changes on: trunk/website/image/video.icon.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/website/includes/22c3vid.inc.php
===================================================================
--- trunk/website/includes/22c3vid.inc.php (rev 0)
+++ trunk/website/includes/22c3vid.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/22c3vid.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/architecture.inc.php
===================================================================
--- trunk/website/includes/architecture.inc.php (rev 0)
+++ trunk/website/includes/architecture.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/architecture.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/common.inc.php
===================================================================
--- trunk/website/includes/common.inc.php (rev 0)
+++ trunk/website/includes/common.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,139 @@
+<?php
+
+function setLanguage() {
+ global $lang;
+
+ $lang = $_GET['lang'];
+
+ if(!isset($lang))
+ {
+ $languages = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
+ foreach ($languages as $language) {
+ $lang_array = split(";q=", trim( $language ) );
+ $lang = trim( $lang_array[0] );
+ if( !isset( $lang_array[1] ) )
+ $q = 1;
+ else
+ $q = trim($lang_array[1]);
+ $lang_q["$lang"] = (float)$q;
+ }
+
+ arsort($lang_q);
+ $i = 0;
+ $lang_index = Array();
+ foreach($lang_q as $lang => $q) {
+ $lang_index[$i] = $lang; //add to a new array the index key/language
+ $i++;
+ }
+
+ }
+ else
+ {
+ $lang_q[$lang] = '1' ;
+ }
+
+ //return $lang_index; // uncomment for returning array with keys={0..n-1}, values={most..least preferred}
+ return $lang_q;
+
+}
+
+function selectPage($lang_q, $page) {
+
+ if (isset($page))
+ {
+ #echo "common - page exists ".dirname(__FILE__).'/'.$page.'.inc.php';
+ if (file_exists(dirname(__FILE__).'/'.$page.'.inc.php')) {
+ #echo "file exists";
+ include dirname(__FILE__).'/'.$page.'.inc.php'; // include file with $pages-array
+ foreach ( $lang_q as $aLang => $relevance ) // loop through each language
+ {
+ foreach ( $pages as $userlang => $path ) // loop through each language-file
+ {
+ if ($aLang == $userlang) { // if we have a match, set file-include to $path
+ $file = $path;
+ if (file_exists($_SERVER['DOCUMENT_ROOT'].$file)) // if file exists, break loop
+ {
+ break 2;
+ }
+ }
+ }
+
+ }
+ if (!isset($file))
+ {
+ $file = $pages['en']; //if no match, default to english
+ }
+ }
+ }
+ return $file;
+
+}
+
+function otherLanguages() {
+
+ include dirname(__FILE__).'/languages.inc.php'; // Include language descriptions
+
+ global $page;
+
+
+ if (isset($page))
+ {
+ if (file_exists(dirname(__FILE__).'/'.$page.'.inc.php'))
+ {
+ include dirname(__FILE__).'/'.$page.'.inc.php';
+
+ $out .= '<div id="additionalLang">:: ';
+
+ foreach ( $pages as $userlang => $path )
+ {
+ foreach ( $languages as $abbr_lang_name => $full_lang_name )
+ {
+ if ($userlang == $abbr_lang_name)
+ {
+ $out .= '<a href="'.$abbr_lang_name.'/'.($page ? $page : "index").'.html">'.$full_lang_name.'</a> :: ';
+ }
+ }
+ }
+
+ $out .= '</div>';
+ }
+ }
+ return $out;
+
+}
+
+if (isset($_REQUEST["lang"]))
+{
+ $lang_q = array( $_REQUEST["lang"] => '1' );
+ $lang = $_REQUEST["lang"];
+}
+else
+{
+ $lang_q = setLanguage();
+}
+
+if (isset($_REQUEST["page"])) {
+ $page = htmlentities($_REQUEST["page"]);
+ $file = selectPage($lang_q, $page);
+ if(!file_exists($file) )
+ {
+ header('HTTP/1.0 404 Not Found');
+ if(empty($_SERVER["HTTP_REFERER"]) || empty($_SERVER["REQUEST_URI"])){
+ header("Location: /");
+ }else{
+ echo "<html><head><title>404</title><head>";
+ echo "<body>404 error - broken link</body>";
+ $to="webmaster";
+ $subject="404 error";
+ $content="\nA 404 error has occurred on the website : may you fix it ?\nFrom : ".$_SERVER["HTTP_REFERER"]."\nTo : ".$_SERVER["REQUEST_URI"]."\nAt : ".date("D M j Y g:i:s a T"."\nUser-agent : ".$_SERVER["HTTP_USER_AGENT"]);
+ @mail($to,$subject,$content,"svn-build");
+ }
+ die;
+ }
+} else {
+ $page = "index";
+ $lang_q = setLanguage();
+ $file = selectPage($lang_q, $page);
+}
+
+?>
\ No newline at end of file
Property changes on: trunk/website/includes/common.inc.php
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/website/includes/connect.inc.php
===================================================================
--- trunk/website/includes/connect.inc.php (rev 0)
+++ trunk/website/includes/connect.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/connect.php')
+
+?>
Added: trunk/website/includes/content.inc.php
===================================================================
--- trunk/website/includes/content.inc.php (rev 0)
+++ trunk/website/includes/content.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/content.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/developer.inc.php
===================================================================
--- trunk/website/includes/developer.inc.php (rev 0)
+++ trunk/website/includes/developer.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/developer.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/documentation.inc.php
===================================================================
--- trunk/website/includes/documentation.inc.php (rev 0)
+++ trunk/website/includes/documentation.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/documentation.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/donate.inc.php
===================================================================
--- trunk/website/includes/donate.inc.php (rev 0)
+++ trunk/website/includes/donate.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/donate.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/download.inc.php
===================================================================
--- trunk/website/includes/download.inc.php (rev 0)
+++ trunk/website/includes/download.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/download.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/faq.inc.php
===================================================================
--- trunk/website/includes/faq.inc.php (rev 0)
+++ trunk/website/includes/faq.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/faq.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/freemail.inc.php
===================================================================
--- trunk/website/includes/freemail.inc.php (rev 0)
+++ trunk/website/includes/freemail.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/freemail.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/frost.inc.php
===================================================================
--- trunk/website/includes/frost.inc.php (rev 0)
+++ trunk/website/includes/frost.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/frost.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/index.inc.php
===================================================================
--- trunk/website/includes/index.inc.php (rev 0)
+++ trunk/website/includes/index.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,8 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/index.php',
+'sv' => 'pages/sv/index.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/install.inc.php
===================================================================
--- trunk/website/includes/install.inc.php (rev 0)
+++ trunk/website/includes/install.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/install.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/jsite.inc.php
===================================================================
--- trunk/website/includes/jsite.inc.php (rev 0)
+++ trunk/website/includes/jsite.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/jsite.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/language.inc.php
===================================================================
--- trunk/website/includes/language.inc.php (rev 0)
+++ trunk/website/includes/language.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,9 @@
+<?
+ $languages = array(
+ 'sv' => 'Svenska',
+ 'no' => 'Norsk',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch',
+ 'en' => 'English');
+
+?>
\ No newline at end of file
Added: trunk/website/includes/languages.inc.php
===================================================================
--- trunk/website/includes/languages.inc.php (rev 0)
+++ trunk/website/includes/languages.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,9 @@
+<?
+ $languages = array(
+ 'sv' => 'Svenska',
+ 'no' => 'Norsk',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch',
+ 'en' => 'English');
+
+?>
\ No newline at end of file
Added: trunk/website/includes/lists.inc.php
===================================================================
--- trunk/website/includes/lists.inc.php (rev 0)
+++ trunk/website/includes/lists.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/lists.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/mailsum.inc.php
===================================================================
--- trunk/website/includes/mailsum.inc.php (rev 0)
+++ trunk/website/includes/mailsum.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/mailsum.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/menu.inc.php
===================================================================
--- trunk/website/includes/menu.inc.php (rev 0)
+++ trunk/website/includes/menu.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,11 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/menu.php',
+'de' => 'pages/de/menu.php',
+'sv' => 'pages/sv/menu.php',
+'no' => 'pages/no/menu.php',
+'da' => 'pages/da/menu.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/news.inc.php
===================================================================
--- trunk/website/includes/news.inc.php (rev 0)
+++ trunk/website/includes/news.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/news.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/ngrouting.inc.php
===================================================================
--- trunk/website/includes/ngrouting.inc.php (rev 0)
+++ trunk/website/includes/ngrouting.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/ngrouting.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/papers.inc.php
===================================================================
--- trunk/website/includes/papers.inc.php (rev 0)
+++ trunk/website/includes/papers.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/papers.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/people.inc.php
===================================================================
--- trunk/website/includes/people.inc.php (rev 0)
+++ trunk/website/includes/people.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/people.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/philosophy.inc.php
===================================================================
--- trunk/website/includes/philosophy.inc.php (rev 0)
+++ trunk/website/includes/philosophy.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,8 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/philosophy.php',
+'sv' => 'pages/sv/philosophy.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/sponsors.inc.php
===================================================================
--- trunk/website/includes/sponsors.inc.php (rev 0)
+++ trunk/website/includes/sponsors.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/sponsors.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/thaw.inc.php
===================================================================
--- trunk/website/includes/thaw.inc.php (rev 0)
+++ trunk/website/includes/thaw.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/thaw.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/tools.inc.php
===================================================================
--- trunk/website/includes/tools.inc.php (rev 0)
+++ trunk/website/includes/tools.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/tools.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/understand.inc.php
===================================================================
--- trunk/website/includes/understand.inc.php (rev 0)
+++ trunk/website/includes/understand.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,7 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/understand.php')
+
+?>
\ No newline at end of file
Added: trunk/website/includes/whatis.inc.php
===================================================================
--- trunk/website/includes/whatis.inc.php (rev 0)
+++ trunk/website/includes/whatis.inc.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,8 @@
+<?php
+
+$pages = array(
+
+'en' => 'pages/en/whatis.php',
+'sv' => 'pages/sv/whatis.php')
+
+?>
\ No newline at end of file
Modified: trunk/website/index.php
===================================================================
--- trunk/website/index.php 2007-04-13 16:05:06 UTC (rev 12635)
+++ trunk/website/index.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -1,135 +1,62 @@
<?
-if (isset($_REQUEST["page"])) {
- $page = htmlentities($_REQUEST["page"]);
- if(!file_exists("pages/".escapeshellcmd($page).".php") )
- {
- header('HTTP/1.0 410 Likely to be gone');
- if(empty($_SERVER["HTTP_REFERER"]) || empty($_SERVER["REQUEST_URI"])){
- header("Location: /");
- }
- /* else{
- echo "<html><head><title>404</title><head>";
- echo "<body>404 error - broken link</body>";
- $to="webmaster";
- $subject="404 error";
- $content="\nA 404 error has occurred on the website : may you fix it ?\nFrom : ".$_SERVER["HTTP_REFERER"]."\nTo : ".$_SERVER["REQUEST_URI"]."\nAt : ".date("D M j Y g:i:s a T"."\nUser-agent : ".$_SERVER["HTTP_USER_AGENT"]);
- @mail($to,$subject,$content,"svn-build");
- }
- */
- die;
- }
-} else {
- $page = "index";
-}
-#include_once "config.inc.php";
-#$a=mysql_connect("mysql4-f", $mysql_user, $mysql_password);
-#$a=mysql_select_db("f978_access");
-#$a=mysql_query("INSERT INTO access VALUES (\"".mysql_real_escape_string($_SERVER["REMOTE_ADDR"])."\", \"".mysql_real_escape_string($_SERVER["HTTP_REFERER"])."\", NOW())");
-#$a=mysql_close();
+include 'includes/common.inc.php';
-$modes = array("beginner"=>FALSE, "user"=>FALSE, "developer"=>FALSE);
-if (isset($_GET["mode"])) {
- $mode = htmlentities($_GET["mode"]);
- setcookie("mode", $mode, time()+60*60*24*30);
-} elseif (!isset($_REQUEST["mode"])) {
- $mode = "beginner";
-} else {
- $mode = htmlentities($_REQUEST["mode"]);
-}
-
-$modes[$mode]=TRUE;
-
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META name="verify-v1" content="xaEIQxVVIFnpATgCaqfqrDfmoUnHpMhig0LfSGbfIzE=" />
- <title>The Freenet Project - <?= $page." - ".$mode ?></title>
+ <title>The Freenet Project - <?= $page ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="language" content="en" />
<meta name="robots" content="index,follow" />
<meta name="keywords" content="gnu, fsf, gpl, fdl, free software, coding, freenet, The Free Network Project, network, decentralized, DHT, anonymous, EFF, Electronic Frontier Foundation, freedom, freedom of speech, liberty, philosophy, java, censorship, encryption, peer-to-peer, file sharing, internet, Ian Clarke, Matthew Toseland, Oskar Sandberg, Florent Daigniere, Scott Miller, Steven Starr" />
<meta name="description" content="The Free Network Project : A Distributed Anonymous Information Storage and Retrieval System" />
- <link href="style.css" rel="stylesheet" type="text/css">
- <script type="text/javascript" language="javascript">
- var users=new Image();
- users.src="image/users.gif";
- var users_ovr=new Image();
- users_ovr.src="image/users_ovr.gif";
- var beginners=new Image();
- beginners.src="image/beginners.gif";
- var begin_ovr=new Image();
- begin_ovr.src="image/begin_ovr.gif";
- var developers=new Image();
- developers.src="image/developers.gif";
- var devel_ovr=new Image();
- devel_ovr.src="image/devel_ovr.gif";
- function rollOn(page) {
- if(document.images){
- eval('document.images["'+page+'"].src='+page.slice(0,5)+'_ovr.src');
- }
- }
- function rollOff(page) {
- if(document.images){
- eval('document.images["'+page+'"].src='+page+'.src');
- }
- }
- function sideOn(page) {
- eval('document.images["'+page+'"].src='+page.slice(0,5)+'_ovr.src');
- }
- function sideOut(num) {
- cell=document.getElementById('mn'+num);
- cell.bgColor="#ffffff";
- }
- function sideOvr(num) {
- cell=document.getElementById('mn'+num);
- cell.bgColor="#c7d6f1";
- }
- </script>
+ <link href="/style.css" rel="stylesheet" type="text/css">
+
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000033" alink="#000000" leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>
-<table width="100%" border="0" cellspacing="0" cellpadding="0">
-<tr>
- <td height="51" rowspan="2" align="left" background="image/hdr_bg_tall.gif"><a href="http://freenetproject.org/"><img border="0" alt="The Freenet Project" src="image/title.gif" width="414" height="51"></a></td>
+<div id="top">
+ <a href="http://freenetproject.org/"><img border="0" alt="The Freenet Project" src="/image/title.gif" width="414" height="51"></a>
+</div>
- <td height="31"> </td>
-</tr>
-
-<tr>
- <td height="20" align="right" valign="bottom" background="image/hdr_bg_short.gif"><?
- foreach($modes as $m => $k) {
- if(!$k) {
- echo "<a href=\"/index.php?".$page."&mode=".$m."\" onMouseOver=\"rollOn('";
- echo $m."s');\" onMouseOut=\"rollOff('".$m."s');\"><img border=0 name=".$m;
- echo "s alt=".$m."s src=\"image/".$m."s.gif\"></a>";
+<div id="menu">
+ <?
+ // Include language specific menu-file
+
+ $menu = selectPage($lang_q, 'menu');
+ if(file_exists($menu))
+ {
+ include("$menu");
}
- }?></td>
-</tr></table>
-
-<table width="100%" border="0" cellspacing="15" cellpadding="0">
-<tr>
-<td valign="top">
- <table border="0" cellspacing="5" cellpadding="0">
- <? include("menu.php"); ?>
- </table>
+ else
+ {
+ include("pages/en/menu.php");
+ }
+ ?>
<br>
<div align="center">
- <a href="http://www.cafeshops.com/freenetproject"><img width="83" height="82" border="0" src="image/freenet-mug.gif" alt="Freenet Store"><br>
+ <a href="http://www.cafeshops.com/freenetproject"><img width="83" height="82" border="0" src="/image/freenet-mug.gif" alt="Freenet Store"><br>
<font size="-2">Visit the Freenet Store!</font></a>
</div>
<br>
<div align="center">
<a href="http://sourceforge.net"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=978&type=1" width="88" height="31" border="0" alt="SourceForge.net Logo"></a>
</div>
-</td>
+</div>
-<td valign="top" align="left" class="body" width="100%"><? include ("pages/".escapeshellcmd($page).".php"); ?></td>
-</tr>
-</table>
-<center><font size=-1>This website is licensed under the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License</a></font></center>
+<div id="content"><? include (escapeshellcmd($file)); ?>
+
+<div id="footer">
+<p><? echo otherLanguages(); ?></p>
+<p>
+This website is licensed under the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License</a>
+</div>
+</div>
+</p>
<div class="hideit">Send spam to <a href="mailto:catchme at freenetproject.org">catchme at freenetproject.org</a> ! :)</div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script><script type="text/javascript">_uacct = "UA-354970-1";urchinTracker();</script>
Added: trunk/website/pages/en/22c3vid.php
===================================================================
--- trunk/website/pages/en/22c3vid.php (rev 0)
+++ trunk/website/pages/en/22c3vid.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,6 @@
+<h2>22nd Chaos Computer Congress lecture on Freenet 0.7</h2>
+In December 2005, Ian Clarke and Oskar Sandberg presented the new design for Freenet in Berlin. Here is the talk they gave:
+<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>
Added: trunk/website/pages/en/FCPlib.php
===================================================================
--- trunk/website/pages/en/FCPlib.php (rev 0)
+++ trunk/website/pages/en/FCPlib.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,402 @@
+ <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>
Added: trunk/website/pages/en/Freeplot.php
===================================================================
--- trunk/website/pages/en/Freeplot.php (rev 0)
+++ trunk/website/pages/en/Freeplot.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,212 @@
+<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>
Added: trunk/website/pages/en/applications.php
===================================================================
--- trunk/website/pages/en/applications.php (rev 0)
+++ trunk/website/pages/en/applications.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,64 @@
+<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@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@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@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@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@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@-w495UL3mfSlWC2c~nRAuG2fAWwPAgM/TFEE//'><b>The Freedom Engine Engine</b></a>, <a class='wiki' href='http://127.0.0.1:8888/SSK@Sc6qV~D6iFhaYord6HtbjJ8MaEYPAgM/YoYo//'><b>YoYo</b></a>, and the <a class='wiki' href='http://127.0.0.1:8888/SSK@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/>
+
Added: trunk/website/pages/en/architecture.php
===================================================================
--- trunk/website/pages/en/architecture.php (rev 0)
+++ trunk/website/pages/en/architecture.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,24 @@
+<h3>Freenet architecture</h3>
+<p>
+In order to connect to Freenet, you have to exchange Node references with other users of Freenet. The references
+must be added on both sides to be established. That is, you need to add his/hers, and he/she needs to add yours.
+</p>
+<p>
+You should have at least three nodes that are connected to you, ideally at least five to seven. The nodes
+that are connected directly to you are the only nodes on freenet that might see what kind of traffic that passes
+through to your Freenet node. These are also the only nodes that you can see on the network, the others are hidden
+from you.
+</p>
+<img src="/freenet/image/Freenet-architecture-small.png">
+<br/>
+<span style="font-size:75%;font-style:italic;">Figure 1: Visible Freenet connections</span>
+<p>
+<span style="font-weight:bold;">Node A</span> in the figure also has a number of nodes connected to it, but they are all
+(except from your own node) invisible to you. The traffic routing algorithm is therefore only able to direct traffic to one
+of the few nodes that you know of that it thinks is most able to find what you are looking for.
+</p>
+The traffic is encrypted, so it is quite difficult for the nodes that you connect to to see what your Freenet-traffic
+consists of, but it is far from impossible. It is therefore important that you connect only to people you know. If
+that is not possible, then at least people you've talked to.
+</p>
+<p>
Added: trunk/website/pages/en/connect.php
===================================================================
--- trunk/website/pages/en/connect.php (rev 0)
+++ trunk/website/pages/en/connect.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,91 @@
+<h2>Connecting to Freenet</h2>
+<p>
+In order to connect to Freenet, you have to exchange Node references with other users of Freenet. The references
+must be added on <span style="font-weight:bold;">both sides</span> to be established. That is, you need to add his/hers, and he/she needs to add yours.
+</p>
+<p>
+<span style="font-weight:bold;">Note:</span> You cannot use Freenet without peers.
+</p>
+<p>
+<span style="font-style:italic;">When you have a freshly connected node, the routing tables are empty, and therefore requests are sent
+out in a random fashion. <span style="font-weight:bold;">This makes some (or all) requests time out before retrieving anything.</span> It takes a couple of days for your
+Freenet-node to get up to speed, so please don't get discouraged by this.
+</span>
+</p>
+<p>
+You should have at least three nodes that are connected to you at all times, ideally at least five to seven. Since some nodes may
+be unreachable at times, you need to connect to some more nodes to get the expected number. The nodes
+that are connected directly to you are the only nodes on freenet that might see what kind of traffic that passes
+through to your Freenet node. These are also the only nodes that you can see on the network, the others are hidden
+from you.
+</p>
+<img src="/image/Freenet-architecture-small.png">
+<br/>
+<span style="font-size:75%;font-style:italic;">Figure 1: Visible Freenet connections</span>
+<p>
+<span style="font-weight:bold;">Node A</span> in the figure also has a number of nodes connected to it, but they are all
+(except from your own node) invisible to you. The traffic routing algorithm is therefore only able to direct traffic to one
+of the few nodes that you know of that it thinks is most able to find what you are looking for.
+</p>
+The traffic is encrypted, so it is quite difficult for the nodes that you connect to to see what your Freenet-traffic
+consists of, but it is far from impossible. It is therefore important that you connect only to people you know. If
+that is not possible, then at least people you've talked to.
+</p>
+<p>
+There are a number of ways to add peer node references.
+</p>
+
+<h3>Fproxy</h3>
+<p>Connecting peer nodes with FProxy can be done in several ways. Common for all these are that they are all done under the
+<span style="font-weight:bold;">Darknet</span> menu item or using the <a href="http://127.0.0.1:8888/darknet/">
+http://127.0.0.1:8888/darknet/</a> link. Below is the thing that makes it all happen:</p>
+
+<img src="/image/add_peers.png">
+<p>As you can see, there are three ways of getting a node reference from someone else:</p>
+<ul>
+<li>Pasting it "as is", in the top field,</li>
+<li>an URL pointing at the reference, such as <a href="http://dark-code.bulix.org/">http://dark-code.bulix.org/</a> or</li>
+<li>a file, containing the reference.</li>
+</ul>
+<p>bulix.org is a so called <span style="font-weight:bold;">paste-bin</span>, where you can add your node reference, make sure that
+the <span style="font-weight:bold;">private</span> box is checked, and press <span style="font-weight:bold;">Paste</span>.</p>
+<p>The paste-bin then returns an URL (e.g. http://dark-code.bulix.org/yuf01h-34676?raw), which can be shared with others. Make sure that
+you add <span style="font-weight:bold;">?raw</span> to the link. This makes the link point only to the actual pasted data, with no extra
+design elements.</p>
+<p>Your own Freenet reference can be found on the <a href="http://127.0.0.1:8888/darknet/">
+http://127.0.0.1:8888/darknet/</a> page, under the caption <span style="font-weight:bold;">My reference</span>.
+It might look something like this (cut for screen purposes):</p>
+
+<pre>
+lastGoodVersion=Fred,0.7,1.0,1010
+sig=7c7edc8c5250e42ac4cb161b216b70de7019221f1b331f0f92bd67439[...]609660f0d4
+identity=5tBtS3R59nfOTvc1be~V0sSfkWir8EW38YeocP0gsYM
+myName=FreenetTestInstall
+location=0.02970997399122577
+testnet=false
+version=Fred,0.7,1.0,1016
+physical.udp=83.255.75.223:13762
+ark.pubURI=SSK at M1wjFha2tujYo50QQF~5Fqz5anVEiIzI9VrA8IrhAsQ,5M[...],AQACAAE/ark
+ark.number=0
+dsaPubKey.y=JhlWYVx8rA0y0x1Fb3y9TfqXDYiIsnkEka8PLsePerpCELTIn[...]laHe2bkl0O7Dg
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4[...]ofeLdX7xhehuk
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVn[...]Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+End
+</pre>
+<p>Remember that both you and the node you are connecting to must add references to make the connection work. This means that if you
+add a persons node reference on your side, but that person does not add your reference on his/her side, the connection
+<span style="font-weight:bold;">does not work</span>.</p>
+<h3>Darknet peers</h3>
+<p>When you have a number of connections, you can visit the Darknet-page. It should look something like this:</p>
+<img src="/image/Freenet-darknet_peers.png">
+<p>There are a number of status messages that can be seen here:</p>
+<ul>
+<li>CONNECTED - the node is connected and ready to take your request</li>
+<li>BACKED OFF - the node is choked with traffic and unable to respond</li>
+<li>DISCONNECTED - the node is not connected to your node, and probably turned off</li>
+<li>NEVER CONNECTED - the connection between the nodes has not been established. This can be because of firewall problems/restrictions
+, one side not adding the other sides node reference or that the nodes has not been online at the same time yet in order to confirm
+the connection. If the problem persists over a long time and both sides have added each other, try to redo the connection.</li>
+</ul>
+<p>In the Idle-column, you can see how much time has passed since the last status message.</p>
\ No newline at end of file
Added: trunk/website/pages/en/content.php
===================================================================
--- trunk/website/pages/en/content.php (rev 0)
+++ trunk/website/pages/en/content.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,16 @@
+<h2>Content</h2>
+<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.
Added: trunk/website/pages/en/developer.php
===================================================================
--- trunk/website/pages/en/developer.php (rev 0)
+++ trunk/website/pages/en/developer.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1 @@
+<h2>Developer</h2>
\ No newline at end of file
Added: trunk/website/pages/en/documentation.php
===================================================================
--- trunk/website/pages/en/documentation.php (rev 0)
+++ trunk/website/pages/en/documentation.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,55 @@
+<h2>Documentation</h2>
+<p>
+The documentation on Freenet is forever changing, since
+this is a project in development. However, here under
+the Documentation menu, you may find usage documents on
+how to setup Freenet and use the most popular Freenet
+tools as well as a user driven Wiki and an extensive
+Frequently Asked Questions department.
+</p>
+<ul>
+<li><span style="font-weight: bold;">Install</span><br/>
+Contains detailed instructions on how to
+install Freenet using the new installer.
+</li>
+<li><span style="font-weight: bold;">Connect</span><br/>
+How to connect to Freenet.
+</li>
+<li><span style="font-weight: bold;">Content</span><br/>
+Freenet as a Content Distribution System.
+</li>
+<li><span style="font-weight: bold;">Understand</span><br/>
+Explains the workings of Freenet, and a
+glossary with the most frequently used terms.
+</li>
+<li><span style="font-weight: bold;">Freemail</span><br/>
+How to setup Freenets own anonymous email service.
+</li>
+<li><span style="font-weight: bold;">Frost</span><br/>
+Frost is the oldest and most used messaging and file
+sharing tool in the Freenet suite. This describes how
+to set it up and use it for the first time.
+</li>
+<li><span style="font-weight: bold;">jSite</span><br/>
+jSite is a Freenet website (a.k.a. Freesite) insertion
+tool.
+</li>
+
+<li><span style="font-weight: bold;">Thaw</span><br/>
+Thaw is a filesharing utility and upload/download manager.
+It is used as a graphical interface for Freenet filesharing.
+</li>
+
+<li><span style="font-weight: bold;">FAQ</span><br/>
+The Frequently Asked Questions department holds both
+philosophical and technical questions on how to avoid
+and solve problems with Freenet.
+</li>
+
+<li><span style="font-weight: bold;">Wiki</span><br/>
+The Freenet Wiki is a user driven space where new features
+may be described before finding its way into the website.
+It is a good source of information about all sorts of
+Freenet related issues.
+</li>
+
Added: trunk/website/pages/en/donate.php
===================================================================
--- trunk/website/pages/en/donate.php (rev 0)
+++ trunk/website/pages/en/donate.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,167 @@
+<h2>Donations</h2>
+<!-- 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.
+
Added: trunk/website/pages/en/donatethanks.php
===================================================================
--- trunk/website/pages/en/donatethanks.php (rev 0)
+++ trunk/website/pages/en/donatethanks.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,6 @@
+<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>.
+
Property changes on: trunk/website/pages/en/donatethanks.php
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/website/pages/en/download-old.php
===================================================================
--- trunk/website/pages/en/download-old.php (rev 0)
+++ trunk/website/pages/en/download-old.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,111 @@
+<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>
Added: trunk/website/pages/en/download.php
===================================================================
--- trunk/website/pages/en/download.php (rev 0)
+++ trunk/website/pages/en/download.php 2007-04-13 16:17:03 UTC (rev 12636)
@@ -0,0 +1,106 @@
+<h2>Download Freenet 0.7</h2>
+<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 not least being that
+it is significantly faster.</small>
+</p>
+<h3>Important note for first time users</h3>
+
+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>
+
+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 <b>irc.freenode.net</b> and join the channel
+<b>#freenet-refs</b>, to see if anyone will connect to you.
+
+<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/alpha/installer/freenet-win32.exe">freenet webinstall</a></big><br>
+<br>
+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. <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
+<ul>
+<li><b>Windows XP Professional</b>,</li>
+<li><b>Windows 2000 Professional</b> or</li>
+<li><b>Windows NT 4.x</b>.</li></b>
+</ul>
+Windows 95, 98 and ME (Millennium Edition) don't work as well; in particular, the installer won't run on those operating systems.<br>
+If the installer doesn't work (something seriously wrong) then please let us know, install Java, and try the Linux instructions below.
+
+<h3>Mac OSX, Unix, and Linux</h3>
+You need to have a recent <b>Java Runtime Environment</b> (JRE). 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 1.5 update 4. Generally, we recommend using Java 1.5.
+
+<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>
+
+<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
+<pre>http://127.0.0.1:8888/</pre> in your web browser to access Freenet's user
+interface. <BR> <BR> </P>
+
+<h3>So it's running, what do I do?</h3>
+
+You need to get connected. If you know anyone running Freenet, ask them
+for their reference, and give them yours. If you visit <pre>http://127.0.0.1:8888/darknet/</pre>
+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>
+If you don't know anyone running Freenet, visit #freenet-refs on
+irc.freenode.net and ask nicely to exchange references with someone.
+You will find a tool like <a
+href="http://dark-code.bulix.org/">