|
Here I'll introduce some of the client programs, meaning applications for the Freenet Client Protocol. Entropy also supports this protocol of Freenet, so programs designed to use it should work with Entropy as well. The only major difference is the default FCP port number, which is 8482 for Entropy (while it is 8481 for Freenet). You can either configure the clients for Entropy to use port 8482, or -- if you don't use Freenet at all -- configure Entropy to use port 8481 (changing the line fcpport=8482 in entropy.conf).
Samizdat
Samizdat is a NNTP gateway for Entropy (and Freenet). It is designed so that you can use a standard newsreader (such as Mozilla Newsgroups, KNode, or Tin) to read and post news articles securely and anonymously. You will just have to create a new news server entry for localhost using port (or service) number 1119 (usually news is on port 119, but that is a privileged port). Then you choose a phantasy email address and/or name and can subscribe the configured news groups. While samizdat and samizdat-nntp daemons are running, they will collect new messages or insert your postings in the background.
You will find Samizdat, just like Entropy, on our CVS server under the module name samizdat. If you don't want to use CVS, you can also download a tarball here, and for the Windows users who do not have a compiler environment (CYGWIN) installed, here's a pre-compiled binary of the latest release:
samizdat-0.95.tar.gz, 108.3K bytes, date 2003-09-06 20:18:53.
Windows binary: samizdat-0.95.zip, 162.7K bytes, date 2003-11-01 21:16:32.
Frost
Frost is a Java program, that is something between a message board (comparable to discussion forums) and a file sharing client. There's a search function, too. However, quite different from other P2P networks such as Gnutella, E-Donkey oder Morpheus/KaZaa, these searches take place on your own machine after downloading a list of keys from the network.
That is why your own node must run for some time before it can find some of the lists (so called index files). Only then a search can be successful. In other words: after starting Frost you should look for some time at the log outputs and wait. At some point Frost will output a series of stars and then dots (.), showing that a list of keys is stored at your local drive. Also texts on the message boards take some time to arrive. Frost looks backward from today up to three days back. I suggest you manually add a board by the name of 'test' (without the quotes) and write a "Hello World" there, just see if you can upload and thus -- most probably -- also download messages.
Frost is available at http://jtcfrost.sourceforge.net/. A recent ZIP archive is available here, too: frost.zip, 291.7K bytes, date 2002-11-12 22:03:52
Starting Frost requires Java (J2RE oder J2SDK) to be installed an is then done by simply entering:
java -jar frost.jar
The Java 2 Runtime or the Development Kit can be found at e.g. Sun: http://java.sun.com/j2se/downloads.html. The J2SE 1.2.x should be sufficient for this version of Frost, but any newer (1.3.1 or 1.4.x) should work just as well. As far as I can tell, JDK1.1.8 is not sufficient, because Frost requires some functions out of the Java 2 Swing library.
After starting Frost, don't forget to change the settings, so that Frost uses port number 8482 to look for an FCP server. After some minutes (perhaps after hours) you should see the first messages and file lists appear on your node.
A final hint: The search function accepts wildcards (* as a placeholder for 'anything') as well as a special function *age1, *age2 to only look for files from the recent 1, 2 etc. days.
goFrost (Good Old Frost)
goFrost is a "fork" based on an old version of Frost. It was written by some Anonymous and published on the Entropy network. The sourcecode is inside the archive, and you can (and should) take a look at what you're going to run:
gofrost_beta_1.0w.zip, 603.4K bytes, 2005-06-23 17:47:36 MD5: 15ff50bfc275655b54a256056aafeda2 SHA1: dedccca4ad72c5817b6193aae70018ee158cd88c
Here's the original posting from Entropy's "test" board:
board=test
from=Anonymous
subject=Re: gofrost_beta_1.0i.zip and rar
date=2003.12.27
time=16:33:17GMT
--- message ---
----- Anonymous ----- 2003.12.27 - 16:26:36GMT -----
Hello,
we've testing the goFrost-Application on the Entropy Net and it seems to work
well.
So we offering it now. The gofrost.jar include all sources!
we are hopefull that we haven't include much bugs inside our first announce.
Please give us a try and some responds if it works for you.
**************************************************************************
install the goFrost beta 1.0i:
put the goFrost.jar and the run_goFrost.bat in old your goFrost directory
or just use the extracted folder of the goFrost beta 1.0i, it included all
nessesarys
Linux:
#--------------linux start script for goFrost.jar-----------------
#!/bin/sh
java -cp .;gofrost.jar org.freenet.gofrost.frost "$@"
or
java -cp .;gofrost.jar org.freenet.gofrost.frost logoff "$@"
#------------------------------
the gofrost.jar include all sources
thx and bye
==================================================
board gofrost-announce
publicKey SSK@XGfp0S0JsuxE4YFCwp8KMrNkqotPAgM
board gofrost (unkeyed!)
===============================================================
****************************************************
gofrost_beta_1.0i.zip
486420
2003.12.27
CHK@_lo2ip1p_~o_yRO12DGazIu6oiDAakP,zQId24ckYYImxfnYI34FjC
gofrost-announce
md5: a532c9192c7fe16456571aa2ea7f4afa
****************************************************
gofrost_beta_1.0i.rar
477584
2003.12.27
CHK@x0LVAKOApKTtbtFJ14BJVsD1QxKAakP,c6JA0lI1Z5XmSe8iJ7FM3D
gofrost-announce
md5: 40bdff35a03aecc401b763b595421945
****************************************************
btw:
please, if you knowing how to compile a java-app than extract the
jarfile, remove *.class and *.nbattrs (Netbeans) and compile the
source by your self.
sorry, there is no buildscript at the moment!
<attached>gofrost_beta_1.0i.rar *
CHK@x0LVAKOApKTtbtFJ14BJVsD1QxKAakP,c6JA0lI1Z5XmSe8iJ7FM3D</attached>
<attached>gofrost_beta_1.0i.zip *
CHK@_lo2ip1p_~o_yRO12DGazIu6oiDAakP,zQId24ckYYImxfnYI34FjC</attached>
Freenet Tools
The most important tools for those who want to insert their own content as a website into Freenet or Entropy, are the Freenet Tools (or similiar tools from other authors :). For Freenet, there are some such programs linked from their http://freenetproject.org) pages. Not many of them will work with Entropy out-of-the-box, as they sometimes specialize on minor deviations in the FCP interface. Specificially the newer tools, supporting the FEC FCP v1.1 will fail with Entropy, as Entropy does not yet fully support the changes to the Freenet Client Protocol. So I suggest you use ft for Entropy for now, since I can help you there with problems or questions.
The latest version is always on the CVS server. For the first checkout of my Freenet Tools, you have to be logged in into CVS first:
cvs -d :pserver:anonymous@stop1984.com:/home/cvs login
The password is empty, so just hit ENTER when the server asks for it. Then do the checkout with:
cvs -z2 -d :pserver:anonymous@stop1984.com:/home/cvs co ft
and you will receive a directory ./ft with some files. Future updates are then, as with entropy itself, rather simple by just changing to the ft directory and entering the simple CVS command line:
cvs -z2 up -dAP
If anything new came down, you should do a:
make
The makefile also creates some symbolic links to the ft binary. They are more convenient to use for some of you and here's the list of commands:
- fcphello - or ft hello
This sends a ClientHello to the Freenet node and displays the reply, wich is a set of version numbers for the protocol and the node. Use this to check if a node is up and running.
fcphello -p8482 -n192.168.77.15 says "Hello!" to the node at the (local class C-net) address 192.168.77.15.
- fcpkey - or ft key
Asks the node to create private/public key pair to be used for creating a new freesite. Note that Fred (the Freenet reference implementation) does not return the last part of the sub space key (SSK), that is to be appended in external references: PAgM. For Entropy the last part is BCMA. You only need to keep this in mind, if you want to reference your own keys from other places before you actually used them and saw the final key names. I prefer to keep the private and public keys in two files, e.g. mykey.pub and mykey.priv, so that I can later access the keys from a command line like ft/fcpputsite SSK@`cat ~/mykey.priv`/mysite html/mysite; your mileage may vary.
- fcpchk - or ft chk
Let the node create the conten hash key (CHK@) for a file. This command does not actually insert data into freenet but can be used to get the CHK@ key of some file before publishing it.
fcpchk -p8489 MyFile.jpg
would send the contents of the local file MyFile.jpg to the Freenet node listening on port 8489 for FCP connections and print out the resulting CHK@ key.
- fcpput - or ft put
Actually insert some file into Freenet under a certain key or under its CHK@. This is the insert workhorse for files and also does the work of splitting up large files into chunks (256K by default). The result is a fully qualified Freenet key name on success.
fcpput -p8482 -s 0x200000 mymovie.avi ~/files/movies/matrix.avi would insert a file from the directory $HOME/files/movies with the name matrix.avi into Freenet using the key freenet:KSK@mymovie.avi and use a chunks size of 2MB (specified as hex number in this case).
fcpput -p8482 CHK@ gpl.txt would insert a file named gpl.txt from the current working directory into Entropy, printing out the resulting content hash key.
- fcpget - or ft get
Retrieve a single key from the Freenet network or local store. This is similiar to specifying a key in a web browser after the http://127.0.0.1:9999/ gateway (or http://127.0.0.1:8888/ for Freenet). However, it does not support FEC while it mercilessly requests the chunks of a key forever -- or until you hit ^C to abort the retrieval.
fcpget KSK@gpl.txt anothername.txt
would retrieve the GNU public license text (the commonly used test key) to a local file anothername.txt. If you leave off a filename, the file is not stored. Use - to output the contents of a key to stdout.
- fcpputsite - or ft putsite
Inserts an entire directory or tree of directories into Entropy or Freenet as a Entropy-site or Freesite. The only things you must specify are a private SSK@ key of some previously generated key pair, some site pathname appended after a slash '/' and finally a source pathname, where your index.html (and probably more) files can be found.
fcpputsite SSK@aqV2~Ew1jOrazVab1v9cDfsAhtI/mysite ~/html/mysite
would insert a collection of files found below $HOME/html/mysite to some sub space key in Freenet. Look at the list below for a whole lot of possible options.
- fcpgetsite - or ft getsite
Retrieves an entire Freesite or Entropy-site with all files, creating a local mirror of the directories below some specified path name.
fcpgetsite SSK@rBjVda8pC-Kq04jUurIAb8IzAGcPAgM/TFE ~/html/TFE
would retrieve all files below The Freedom Engine's map space to a local directory (tree) at $HOME/html/TFE.
fcpgetsite -p8482 SSK@zTUhBCd1OFBS~058O6Wrh39BUJvBCMA/pullmoll tmp/pullmoll
would retrieve all files below pullmoll's site from the DBR (date based redirect) to you local directory tree at ./tmp/pullmoll and below. Any date based or static (CHK@) redirects of both, the map space and files below the map space, will be solved. The retrieval is only finished when it completes or when the node died. If some files are not found, you will have to stop by hitting ^C at some point.
Now for the list of possible options of ft. There are always long options, beginning with a double dash, and for most options there's also a one letter version:
| -a or --again {n} |
In theory this would limit the number of tries to go when inserting or retrieving a single file or site. It isn't really used for now: all commands loop until they succeed, you stop them or the node dies. |
| -v or --verbose {n} |
Sets the verbosity for this run of the freenet tools. The possible range for {n} is from 0 (no output) to 4 (debug mode). |
| -n or --address {addr} |
Define the IP address (e.g. 192.168.77.11) or hostname (e.g. allah.localnet.offline) of the machine where your Freenet node is listening. This is usually 127.0.0.1 (and the default), unless you openend up the FCP port on some other machine to external access. |
| -p or --port {port} |
Defines the port number where your Freenet listens for incoming FCP connections. This is 8481 unless you changed it in your freenet.conf/ini, i.e. when running multiple instances of Freenet on one machine. |
| -s or --size {bytes} |
Set the chunk size for file insertions. The default is 1MB (1048576 or 0x100000). Warning: to get compatible map spaces to prior versions, use -s0x40000. A good choice for e.g. movies (CD size) seems to be between 2M and 4M (i.e. between 0x200000 and 0x400000), though only data stores larger than 256MB can handle such chunks. |
| -l or --htl {n} |
Set the hops-to-live count for this insertion or retrieval. The default is 5, which is sufficient in good network conditions. For first time inserts you might want to choose higher values such as 10 or 15. |
| -w or --wiggle {n} |
Set the 'wiggle' factor for hops-to-live, that is the files are requested or inserted with HTL values varying by +/-[wiggle/2]. This option is for the paranoid who want to hide their node's activities (even more). |
| -i or --insert-threads {n} |
Defines the number of threads (actually number of pipes openend in parallel) for a putsite or getsite command. The default is 5 and increasing it far beyond 20 may crash your Freenet node or actually slow things down more probably than speeding them up. |
| -t or --threads {n} |
Defines the number of threads (actually number of pipes openend in parallel) for inserting split chunks of a large(r) file. This value has a meaning only if your file or files consist of multiple chunks. The default is 3. |
| -D or --default {filename} |
Defines the default document's filename for the putsite command. The pre-defined value for this is index.html. If you don't want to copy your e.g. index.htm or homepage.htm file, use this switch to change the name. |
| -d or --no-dbr |
Sites are usually inserted using the date based redirect scheme with a 24 hour (= 86400 seconds) modulo for updates. This switch turns off the insertion of the DBR meta data fields and thus makes a site edition based or one shot. Be careful to not pollute your already known SSK@ key space by inserting an unchangeable -d map space. |
| -f or --future {n} |
For date based redirect insertions, put the site under a key that lies {n} days (actually {n} times modulo for the site) in the future. The default for -f is 1, meaning you usually insert a site for the next day at some point during this day. |
| --meta-only |
Insert only the meta data for a site. The content hash keys of all files of a site are calculated by calling ft chk only rather than actually inserting them. This can be useful if all inserts worked but your node died before finishing the meta data. It might also be useful to establish a larger layout of directories and populate them with contents afterwards. Be sure to show some kind of indication to the user, what files he can expect to find in such cases, thoug. |
| --delete |
Delete keys from the local store before inserting them. I am not sure if and how well this switch works. It was one of the last things I added some weeks ago, before I left ft alone for some time (and now published it for you to use). Handle with care (Doesn't seem to work with the current Fred). |
| -R or --raw |
Don't follow redirects, but rather print the raw data for a key |
The latest source code for the Freenet Tools is available here: ft-0.2.25.tgz, in this 41'201 bytes size gzipped tar-ball of 2005-07-19 13:57:06. Extract the archive archive into an empty directory and build the binary and links with make or gmake. You can then copy or move the binary (ft) and the symbolic links mentioned above to some directory on your search path (perhaps your ~/bin directory).
Finally, here are the Windows binaries for those, who do not want to install CYGWIN: ft-0.2.25.zip ZIP archive, 54'478 bytes of 2005-07-19 13:45:02. The archive contains a copy of the cygwin1.dll, too.
|