[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r928 - GNUnet-docs/WWW/test
From: |
durner |
Subject: |
[GNUnet-SVN] r928 - GNUnet-docs/WWW/test |
Date: |
Tue, 14 Jun 2005 10:48:50 -0700 (PDT) |
Author: durner
Date: 2005-06-14 10:48:46 -0700 (Tue, 14 Jun 2005)
New Revision: 928
Modified:
GNUnet-docs/WWW/test/user_afs.php3
Log:
Reformat
Modified: GNUnet-docs/WWW/test/user_afs.php3
===================================================================
--- GNUnet-docs/WWW/test/user_afs.php3 2005-06-14 17:33:18 UTC (rev 927)
+++ GNUnet-docs/WWW/test/user_afs.php3 2005-06-14 17:48:46 UTC (rev 928)
@@ -35,9 +35,9 @@
LI(extlink_("#GUI","gnunet-gtk"));
echo "</ul></li></ul>\n";
-P();
ANCHOR("concepts"); H3("Concepts");
+BP();
W("Sharing files in GNUnet is not quite as simple as in traditional file
sharing systems.");
W("For example, it is not sufficient to just place files into a specific
directory to share them.");
W("In addition to anonymous routing GNUnet attempts to give users a better
experience in searching for content.");
@@ -46,14 +46,18 @@
W("GNUnet enables content providers to group related content and to establish
a reputation.");
W("Furthermore, GNUnet allows updates to certain content to be made
available.");
W("This section is supposed to introduce users to the concepts that are used
to achive this goals.");
+EP();
ANCHOR("files"); H4("Files");
+BP();
W("A file in GNUnet is just a sequence of bytes.");
W("Any file-format is allowed and the maximum file size is theoretically
2<sup>64</sup> bytes, except that it would take an impractical amount of time
to share such a file.");
W("GNUnet itself never interprets the contents of shared files, except when
using %s to obtain keywords.",
intlink_("/libextractor/index.php", "libextractor"));
+EP();
ANCHOR("keywords"); H4("Keywords");
+BP();
W("Keywords are the most simple mechanism to find files on GNUnet.");
W("Keywords are case-sensitive and the search string must always match exactly
the keyword used by the person providing the file.");
W("Keywords are never transmitted in plaintext, for details see the %s paper.",
@@ -61,13 +65,17 @@
W("Since providing keywords by hand for each shared file is tedious, GNUnet
uses %s to help automate this process.",
intlink_("/libextractor/index.php", "libextractor"));
W("Starting a keyword search on a slow machine can take a while since the
keyword search involves computing a fresh RSA key to fomulate the request.");
+EP();
ANCHOR("directories"); H4("Directories");
+BP();
W("A directory in GNUnet is a list of file identifiers with meta-data.");
W("The file identifiers provide sufficient information about the files to
allow downloading the contents.");
W("Once a directory has been created, it cannot be changed since it is treated
just like an ordinary file by the network.");
+EP();
ANCHOR("namespaces"); H4("Namespaces");
+BP();
W("A namespace is a set of files that were signed by the same pseudonym.");
W("A pseudonym is essentially a public-private RSA key.");
W("Note that a pseudonym is NOT bound to a GNUnet peer.");
@@ -75,69 +83,83 @@
W("Files (or directories) that have been signed and placed into a namespace
can be updated.");
W("Updates are identified as authentic if the same secret key was used to sign
the update.");
W("Namespaces are also useful to establish a reputation, since all of the
content in the namespace comes from the same entity (which does not have to be
the same person).");
+EP();
ANCHOR("advertisements"); H4("Advertisements");
+BP();
W("Advertisements are used to notify other users about the existence of a
namespace.");
W("Advertisements are propagated using the normal keyword search.");
W("When an advertisement is received (in response to a search), it is NOT
displayed immediately.");
W("Instead, the namespace is added to the list of namespaces available in the
namespace-search dialogs of <tt>gnunet-gtk</tt> and printed by
<tt>gnunet-pseudonym</tt>.");
W("Whenever a namespace is created, an appropriate advertisement can be
generated.");
W("The default keyword for the advertising of namespaces is
<tt>namespace</tt>.");
+EP();
ANCHOR("collections"); H4("Collections");
+BP();
W("A collection is an automatically managed namespace.");
W("The root of the namespace points to a directory with all of the files
inserted by the user since the collection was initiated.");
W("The root is updated sporadically each time a new file is inserted.");
W("The construction of the directory and the update of the namespace are done
automatically by GNUnet on each insertion and does not require work from the
user.");
W("Collections are advertised under the keyword <tt>collection</tt>.");
+EP();
ANCHOR("example"); H4("Example");
+BP();
W("Here is how to start a collection:");
+EP();
PRE("$ gnunet-pseudonym -a -C NICKNAME -D DESCRIPTION -r AUTHORNAME\n" .
"$ gnunet-insert FILENAME\n" .
"$ gnunet-search collection\n" .
"$ gnunet-gtk");
+BP();
W("In <tt>gnunet-gtk</tt> select <tt>Advanced-Search Namespace</tt>.");
W("In the dialog, select the NICKNAME from the list of namespace
identifiers.");
W("The search key identifier will be filled out automatically to point to the
root of the namespace.");
W("The search should yield a directory which contains the file FILENAME.");
W("After inserting additional files, additional directories with more files
will show up in the search.");
W("To stop the collection, use");
+EP();
PRE("$ gnunet-pseudonym -E");
+BP();
W("Note that the UI may not always be very pretty for collections since this
is a new feature.");
-P();
+EP();
ANCHOR("configuration");H3("File-sharing options in gnunet.conf");
+BP();
W("This section describes the options in gnunet.conf that relate to anonymous
file sharing.");
W("Most options are in the configuration file for the gnunetd daemon, the
others are specfically marked as client options.");
+EP();
ANCHOR("gnunet.conf.diskquota");H4("FS: DISKQUOTA");
+BP();
W("Use this option to specify how much space GNUnet is allowed to use on the
drive.");
W("This does not include indexed files.");
W("The value is specified in MB, the default is 1024.");
W("Note that whenever you change this value, GNUnet may have to reorganize the
database, which can take quite some time on the next start (obviously depending
on the previous size of the database).");
-BR();
+P();
W("Large amounts of storage space may also have some impact on memory use, a
typical value is around 250 kb memory per gigabyte of storage space.");
W("Note that indexing files (instead of inserting, indexing is the default,
insertion can be enforced with the <tt>-n</tt> switch) is much cheaper; the
files will cause less memory usage, use less space in the database and the
operation will be faster.");
-P();
+EP();
ANCHOR("gnunet.conf.indexdirectory"); H4("FS: INDEX-DIRECTORY");
+BP();
W("This option specifies the name of the directory where indexed files are
either copied to or symlinked from.");
W("When a file is indexed with the option <tt>-l</tt> and if <tt>gnunetd</tt>
and the inserting process run on the same machine, then a symbolic link is
created from the index-directory to that file.");
W("Without the <tt>-l</tt> option or if <tt>gnunetd</tt> runs on a different
machine, a copy of the file is made instead.");
W("Note that the indexing process does a lot more than just this, thus moving
files over to the index directory by hand will NOT share these files.");
+EP();
-
-P();
ANCHOR("gnunet.conf.activemigration");H4("FS: ACTIVEMIGRATION");
+BP();
W("Setting this option to <tt>YES</tt> allows <tt>gnunetd</tt> to migrate data
to the local machine.");
W("Setting this option to <tt>YES</tt> is highly recommended for efficiency.");
W("Its also the default.");
@@ -146,9 +168,10 @@
W("If you put illegal content on your machine yourself, setting this option to
YES will probably increase your chances to get away with it since you can
plausibly deny that you inserted the content.");
W("Note that in either case, your anonymity would have to be broken first
(which may be possible depending on the size of the GNUnet network and the
strength of the adversary).");
-P();
+EP();
ANCHOR("gnunet.conf.searchtimeout");H4("FS: SEARCHTIMEOUT");
+BP();
W("This is a client option respected by <tt>gnunet-search</tt> and
<tt>gnunet-gtk</tt>.");
w("After how many seconds should <tt>gnunet-search</tt> give up searching?");
W("<tt>gnunet-search</tt> will exit after this period of time.");
@@ -156,45 +179,49 @@
W("For typical values <tt>gnunet-search</tt> will retransmit the search query
multiple times in the given search interval.");
W("The default is 300 seconds.");
-P();
+EP();
ANCHOR("gnunet.conf.extractors");H4("FS: EXTRACTORS");
+BP();
W("This is a client option respected by <tt>gnunet-insert</tt> and
<tt>gnunet-gtk</tt>.");
W("This option specifies which additional extractors <tt>gnunet-insert</tt>
should use for keyword extraction.");
W("The default set of extractors from your local libextractor installation is
always used.");
W("Typically, an extractor for splitting keywords at word boundaries is added
here.");
-P();
+EP();
ANCHOR("gnunet.conf.databasetype");H4("MODULES: sqstore");
+BP();
W("Which database type should be used for content?");
W("Valid types are "sqstore_sqlite" and "sqstore_mysql".");
W("The libraries and header files for the specified type must have been
available at compile time.");
W("If the type is changed, you must stop <tt>gnunetd</tt> and run
<tt>gnunet-update</tt> to convert the database.");
-BR();
+P();
W("The <tt>mysql</tt> module requires manual setup, described %s.",
extlink_("#mysql","here"));
W("The sqlite databases only requires the installation of the respective
database (with header files) before running configure.");
+EP();
ANCHOR("mysql");H4("Setting up the mysql database");
+BP();
W("Note: The mysql module does NOT work with mysql v3.23.49 due to a bug in
mysql.");
W("All later versions should be fine, including the 4.0.x series.");
W("As of this writing, the current development version is 4.0.16-log on
debian/unstable.");
-P();
+EP();
H5("Highlights");
-
+BP();
W("Pros:");
-BR();
+EP();
echo "<ul><li>";
W("On up-to-date hardware where mysql can be used comfortably, the overall
performance is fairly good (according to our tests).");
echo "</li><li>";
W("It is often possible to recover the mysql database from internal
inconsistencies.");
echo "</li></ul>";
-P();
+BP();
W("Cons:");
-BR();
+EP();
echo "<ul><li>";
W("Memory usage");
echo "</li><li>";
@@ -203,67 +230,93 @@
H5("Setup Instructions");
+BP();
W("First, you must have mysql including the development files (headers)
installed on the system when you configure GNUnet.");
W("Not all binary distributions contain the mysql module, so you may also have
to compile GNUnet by hand.");
W("After you have mysql installed and GNUnet compiled with mysql support, do
the following:");
+EP();
echo "<ol><li>";
+BP();
W("In /etc/gnunet.conf, set");
+EP();
PRE("DATABASETYPE = \"mysql\"");
echo "</li><li>";
+BP();
W("Then access mysql as root (root of the database, not of the system):");
+EP();
PRE("$ mysql -u root -p ");
+BP();
W("and do the following.");
W("[You should replace \$USER with the username that will be running the
gnunetd process].");
+EP();
PRE("CREATE DATABASE gnunet;\n" .
"GRANT select,insert,update,delete,create,alter,drop ON gnunet.* TO
address@hidden;\n" .
"SET PASSWORD FOR address@hidden(\"\$the_password_you_like\");\n" .
"FLUSH PRIVILEGES;");
echo "</li><li>";
+BP();
W("In the \$HOME directory of \$USER, create a ".my.cnf" file with
the following lines:");
+EP();
PRE("[client]\n" .
"user=\$USER\n" .
"password=\$the_password_you_like");
+BP();
W("Note that .my.cnf file is a security risk since it exposes the password.");
W("You may want to keep the file in a place where it is not easily accessed.");
W("The \$HOME/.my.cnf can be a symbolic link.");
W("It is also possible not to use any password if database security is no
concern.");
W("Note that $USER has only priviledges to mess up GNUnet′s tables,
nothing else (unless you give him more, of course).");
+EP();
echo "</li><li>";
+BP();
W("Finally, you may want to briefly try if the DB connection works.");
W("First, login as \$USER.");
W("Then use:");
+EP();
PRE("# mysql -u \$USER -p\n" .
"mysql> use gnunet;");
+BP();
W("If you get the message "Database changed" it probably works.");
W("If you get "ERROR 2002: Can′t connect to local MySQL server
through socket ′/tmp/mysql.sock′ (2)" it may be resolvable by
"ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock"");
W("[So there may be some additional trouble depending on your mysql setup.]");
echo "</li></ol>";
-P();
+EP();
H5("REPAIRING TABLES");
+BP();
W("Its probably healthy to check your tables for inconsistencies every now and
then.");
W("If you get odd SEGVs on gnunetd startup, it might be that the mysql
databases have been corrupted.");
P();
W("The tables can be verified or fixed in the following ways:");
+EP();
echo "<ol><li>";
+BP();
W("by shutting down mysqld (mandatory!) and running");
+EP();
PRE("# myisamchk -r *.MYI");
+BP();
W("in /var/lib/mysql/gnunet/ (or wherever the tables are stored).");
+EP();
echo "</li><li>";
+BP();
W("Another repair command is <tt>mysqlcheck</tt>.");
W("The usable command may depend on your mysql build/version.");
+EP();
echo "</li><li>";
+BP();
W("by executing ");
+EP();
PRE("mysql> REPAIR TABLE data1024of?");
+BP();
W("for each table in the gnunet database (USE gnunet; SHOW TABLES;)");
+EP();
echo "</li></ol>";
-P();
+BP();
W("If you have problems related to the mysql module, your best friend is
probably the mysql manual.");
W("The first thing to check is that mysql is basically operational, that you
can connect to it, create tables, issue queries and so on.");
-P();
+EP();
HR();
-P();
@@ -271,18 +324,23 @@
ANCHOR("commands");H3("Commands for File Sharing");
IMG("afs_small.png", "Anonymous file sharing logo", "RIGHT", 150, 115);
+BP();
W("The only useful application that is currently available for GNUnet is
anonymous file-sharing.");
W("The GUI interface is described %s.",
extlink_("#GUI","here"));
W("For shell-gurus, five shell commands provide the interface:");
+EP();
ANCHOR("gnunetinsert");H4("gnunet-insert");
+BP();
W("The command <tt>gnunet-insert</tt> can be used to add content to the
network.");
W("The basic format of the command is");
+EP();
PRE("$ gnunet-insert [-n] [-k KEYWORDS]* [-m TYPE:VALUE] FILENAME
[FILENAMES]*");
+BP();
W("The option -k is used to specify keywords for the file that should be
inserted.");
W("You can supply any number of keywords, and each of the keywords will be
sufficient to locate and retrieve the file.");
W("The -m option is used to specify meta-data, such as descriptions.");
@@ -308,39 +366,45 @@
W("There is no need for an additional encrypted copy of the file to stay
anywhere on the drive.");
W("This is very different from other systems, such as %s, where each file that
is put online must be in Freenet’s database in encrypted format, doubling
the space requirements if the user wants to preseve a directly accessible copy
in plaintext.",
extlink_("http://www.freenetproject.org/","Freenet"));
-BR();
+P();
W("Thus indexing should be used for all files where the user will keep using
this file (at the location given to gnunet-insert) and does not want to
retrieve it back from GNUnet each time.");
-BR();
+P();
W("The option <tt>-n</tt> may be used if the user fears that the file might be
found on his drive (assuming the computer comes under the control of an
adversary).");
W("When used with the <tt>-n</tt> flag, the user has a much better chance of
denying knowledge of the existence of the file, even if it is still (encrypted)
on the drive and the adversary is able to crack the encryption (e.g. by
guessing the keyword.");
-BR();
+P();
W("gnunet-insert has a ton of additional options to handle namespaces and
directories.");
W("See the man-page for details.");
W("If you want to remove a file that you have indexed from the local peer, use
the tool <tt>gnunet-delete</tt> to un-index the file.");
+EP();
-P();
HR();
-P();
ANCHOR("gnunetsearch");H4("gnunet-search");
+BP();
W("The command <tt>gnunet-search</tt> can be used to search for content on
GNUnet.");
W("The format is:");
+EP();
PRE("$ gnunet-search [-t TIMEOUT] KEYWORD [AND KEYWORD]*");
+BP();
W("The -t option specifies that the query should timeout after approximately
TIMEOUT seconds.");
W("A value of zero is interpreted as <i>no timeout</i>.");
W("If multiple words are passed as keywords and are <strong>not</strong>
separated by an <tt>AND</tt>, gnunet-search will concatenate them to one bigger
keyword.");
W("Thus,");
+EP();
PRE("$ gnunet-search Das Kapital");
+BP();
W("and");
+EP();
PRE("$ gnunet-search \"Das Kapital\"");
+BP();
W("are identical.");
W("You can use AND to separate keywords.");
W("In that case, gnunet-search will only display results that match all the
keywords.");
@@ -348,44 +412,52 @@
P();
W("Search results are printed by gnunet-search like this:");
+EP();
PRE("$ gnunet-download -o "COPYING" --
gnunet://afs/N8RCF3TETLRU9CV1PAS7M2H9QDB36AE3.K9JO8IP7KTNFO23S3VB4TFUKLD7SO5AS.0466DC92.17992\n"
.
"=> The GNU Public License <= (mimetype: text/plain)");
+BP();
W("The first line is the command you would have to enter to download the
file.");
W("The argument passed to <tt>-o</tt> is the suggested filename (you may
change it to whatever you like).");
W("The <tt>--</tt> is followed by key for decrypting the file, the query for
searching the file, a checksum (in hexadecimal) finally the size of the file in
bytes.");
W("The second line contains the description of the file; here this is
"The GNU Public License" and the mime-type (see the options for
gnunet-insert on how to change these).");
-P();
-HR();
-P();
+EP();
ANCHOR("gnunetdownload");H4("gnunet-download");
+BP();
W("In order to download a file, you need the three values returned by
<tt>gnunet-search</tt>.");
W("You can then use the tool <tt>gnunet-download</tt> to obtain the file:");
+EP();
PRE("$ gnunet-download -f FILENAME -- GNUNETURL");
+BP();
W("FILENAME specifies the name of the file where GNUnet is supposed to write
the result.");
W("Existing files are overwritten.");
W("If you want to download the GPL from the previous example, you do the
following:");
+EP();
PRE("$ gnunet-download -o \"COPYING\" --
gnunet://afs/N8RCF3TETLRU9CV1PAS7M2H9QDB36AE3.K9JO8IP7KTNFO23S3VB4TFUKLD7SO5AS.0466DC92.17992");
+BP();
W("If you ever have to abort a download, you can continue it at any time by
re-issuing <tt>gnunet-download</tt> with the same filename.");
W("In that case, GNUnet will <strong>not</strong> download blocks again that
are already present.");
W("GNUnet’s %s will ensure file integrity, even if the existing file was
not downloaded from GNUnet in the first place.",
intlink_("encoding.php3","file-encoding mechanism"));
W("You may want to use the <tt>-V</tt> switch (must be added before the
<tt>--</tt>) to turn on verbose reporting.");
W("In this case, <tt>gnunet-download</tt> will print the current number of
bytes downloaded whenever new data was received.");
-P();
+EP();
HR();
-P();
+BP();
W("The option -c CONFIGFILE can be passed to each of the commands to override
the default location of the configuration file.");
W("The option -v shows the current version number.");
W("Use -h to get a short description of the options.");
-P();
+EP();
ANCHOR("gnunetdelete");H4("gnunet-delete");
+BP();
W("<tt>gnunet-delete</tt> can be used to un-index files that were inserted
into GNUnet (works only for files that were inserted locally and that are still
present on the local drive).");
+EP();
ANCHOR("gnunetdirectory");H4("gnunet-directory");
+BP();
W("Directories are shared just like ordinary files.");
W("If you download a directory with <tt>gnunet-download</tt>, you can use
<tt>gnunet-directory</tt> to list its contents.");
W("The contents of a directory are File Identifiers (FIs).");
@@ -404,9 +476,10 @@
W("To create a directory from the command line, you must use
<tt>gnunet-insert</tt>.");
W("The main use of the FI database is for building directories (and namespace
entries) with <tt>gnunet-gtk</tt>.");
-P();
+EP();
ANCHOR("gnunetpseudonym");
H4("gnunet-pseudonym");
+BP();
W("By default this tool lists all locally available pseudonyms.");
W("With the <tt>-C NICK</tt> option it can also be used to create a new
pseudonym.");
W("A pseudonym is the virtual identity of the entity in control of a
namespace.");
@@ -416,8 +489,9 @@
W("With the <tt>-D NICK</tt> option pseudonyms can be deleted.");
W("Once the pseudonym has been deleted it is impossible to add content to the
corresponding namespace.");
W("Deleting the pseudonym does not make the namespace or any content in it
unavailable.");
-P();
+EP();
H5("Advertising namespaces");
+BP();
W("Each namespace is associated with meta-data that describes the namespace.");
W("This meta-data is provided by the user at the time that the pseudonym was
created.");
W("The meta-data is published in what is called a namespace advertisement.");
@@ -429,8 +503,9 @@
W("When a pseudonym is created, the namespace is by default advertised under
the keyword <tt>namespace</tt>.");
W("When a keyword-search finds a namespace advertisement, it is automatically
stored in the local GNUnet state-database.");
W("The advertisement is preserved for tools like <tt>gnunet-pseudonym</tt> and
<tt>gnunet-gtk</tt> that can reproduce them when appropriate.");
-P();
+EP();
H5("Meta-data in the namespace advertisement");
+BP();
W("While the namespace is uniquely identified by its ID, another way to refer
to the namespace is to use the NICKNAME.");
W("The NICKNAME can be freely chosen by the creator of the namespace and hence
conflicts are possible.");
W("If a GNUnet client learns about more than one namespace using the same
NICKNAME, the ID is appended to the NICKNAME go get a unique identifier.");
@@ -442,11 +517,11 @@
P();
W("Note that currently all of the meta-data must be provided at the time where
the namespace is created and cannot be updated later.");
W("Furthermore, the namespace advertisement can only be published under a
single keyword (this is purely a UI limitation).");
-P();
+EP();
-P();
ANCHOR("GUI");H4("gnunet-gtk");
+BP();
W("<tt>gnunet-gtk</tt> is not yet available for GNUnet 0.7.x.");
/*
W("<tt>gnunet-gtk</tt> is the GTK+ interface for GNUnet.");
@@ -497,7 +572,7 @@
W("Select the file and press <tt>ok</tt>.");
W("Next you will have to provide a description and keywords and choose if you
want to <tt>index</tt> or <tt>insert</tt> the file (choose index if the file
will not be moved or deleted to safe space):");
IMG("gtk-insert2.png", "choose file to insert", "CENTER",408, 428);
-BR();
+P();
IMG("gtk-insert3.png", "adding keywords", "CENTER",408,428);
P();
W("Finally, press ok and watch GNUnet making the file available:");
@@ -518,7 +593,7 @@
W("<tt>gnunet-gtk</tt> also offers the option to search a given namespace.");
W("Just as <tt>gnunet-pseudonym</tt> can print a list of all known namespace
advertisements, the namespace search in <tt>gnunet-gtk</tt> offers access to
the list of advertised namespaces and the respective meta-data.");
IMG("gnunet-namespace-search.png", "Searching a namespace.", "CENTER", 658,
348);
-P();
+EP();
*/
include("html_footer.php3");
?>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r928 - GNUnet-docs/WWW/test,
durner <=