diff --git a/www.i2p2/pages/i2ptunnel.html b/www.i2p2/pages/i2ptunnel.html
index 4d7a60ee..fbee9574 100644
--- a/www.i2p2/pages/i2ptunnel.html
+++ b/www.i2p2/pages/i2ptunnel.html
@@ -1,85 +1,119 @@
{% extends "_layout.html" %}
{% block title %}i2ptunnel{% endblock %}
-{% block content %}Below is quick copy of aum's eepsite deployment guide.
-
-
+{% block content %}Description of i2ptunnel and tunneling modes
-
-- Deploy a local server
+default services
+client modes
+serrver modes
+
+
I2PTunnel
+Overview
+
+I2PTunnel a tool for interfacing with and providing services on I2P.
+ By directing an I2PTunnel to a destination, via a hostname,
+ Base32 or a full 516-byte destination key, a localhost:port
+ interface to that servie is provided. Providing a service is as simple as creating a server I2PTunnel
+ to the appropriate ip:port, a 516-byte destination key will be generated for the service and it
+ will be avaliable throughout I2P.
+ A web interface is avaliable on localhost:7657/i2ptunnel/.
+
+
+
+Default Services
+Server tunnels
-- For simplicity's sake, we will walk through the setup of a web server; however, this procedure is the same regardless what protocol of servers and/or clients you are setting up.
-- I recommend the Tiny Httpd web server , thttpd, (windows version available on site) although you can use anything that you feel comfortable with.
-- With the web server you've chosen, configure it to listen on a port of your choice, and serve its documents from a directory of your choice. For this example, we'll assume port 10880.
-- Make sure your firewall is set up so that you cannot receive incoming connections on this port (which would breach your anonymity).
-- Test the webserver, by pointing your normal browser (the one with the "direct connection") at http://localhost:10880 (changing the 10880 to the port number you have chosen).
-- Once your webserver is working, and you can access it locally with your browser, continue to the next step.
-
-
-- Open a 'Tunnel' from I2P To Your Server
+
- I2P Webserver - A tunnel pointed to a Jetty webserver run
+ on localhost:7658 for convenient and quick hosting on I2P.
+
The document root is:
+
Unix - %APPDATA%\I2P\eepsite\docroot
+
Windows - C:\Users\**username**\AppData\Roaming\I2P\eepsite\docroot
+
+
+Client tunnels
-- I2P does not deal in IP addresses. To protect your anonymity, it deals in unique addresses called destination keys.
-- A destination key works a lot like a regular IP address, except that it can't be traced to your IP address or physical location. When users place a request to speak with you, your gateways are the ones that answer for you. So the requesting user can only know the IP address of your gateways. However, gateways don't know your IP address, because gateways are the last nodes on your tunnels, and you anonymously create tunnels by way of garlic routing. (So gateways are like puppets that can't see their masters, and everyone communicates through these puppets)
-- To deploy a server on I2P, you create a destination keypair. You use the private key to authenticate your server when connecting it to I2P, and you make the public key (aka destination key) known publicly, so others can connect to your server. (indirectly, through your gateways)
-- Each service you run on I2P requires a different keypair.
-- The next steps will include the creation of your keypair.
-- For clients elsewhere in I2P to be able to access your server, you must run a 'bridge' or 'tunnel', which takes connections from these clients and forwards them to your local server
-- To activate such a tunnel, fire up your browser and open http://localhost:7657/i2ptunnel/
-- Here you'll see a list of active and non-active tunnels already set up for you, there is the eepProxy, which all sites in I2P use, ircProxy, which is the tunnel that irc.duck.i2p uses, cvs.i2p, which is a way to view and edit (for those who have access) the cvs of i2p with a special kind of program. Under that list there is a line of buttons which do not interest us right now and under that button line there's a line with a drop down menu and a button which says: "GO".
-- Click on the drop down menu and choose "Server tunnel", then press "GO".
-- Now you will configure your server tunnel which will communicate your web server to the I2P network.
-Name: server 80
the name your server tunnel will be called on the tunnel list.
-Description: server 80
same as above, the description on the tunnel list.
-Type: Server tunnel
This is unchangeable because it's exactly what we want to make, a web server tunnel, so leave it as it is. ;-)
-Target host: localhost
Here is the web server's address
-Target port: 10880
This is the port your web server listens on which we've talked about before.
-Private key file: myServer.privKey
Here you'll write the name of your server's private key, after you'll create the tunnel it will tell you what's your public key.
-Tunnel depth: [0, 1 or 2]
This will tell I2P how many routers there will be connected in a line (router-1 -> router-2 ... ). The higher: slower and more anonymous; the lower: the faster and less anonymous. Read more about it in this tunnel routing document.
-Tunnel count: [1, 2 or 3]
The higher the number, higher reliability, bigger bandwidth; the lower, lower reliability, smaller bandwidth - experiment.
-I2CP host: localhost
This address is where the tunnel talks to I2P server.
-I2CP port: 7654
The port of the address
-Other custom options: [leave blank]
Other options we don't care about.
-Start automatically? [left click to check]
Will the tunnel start automatically when I2P starts?
-Left click: Save
Click here when you're done to create the tunnel.
-- Copy the destination key and save it, people who'll want to read your site will need it.
-- If you did not check "Start automatically", you should go back to the tunnel list page and start it manually. Click "back" on the top of the page and click on "start" when you get to the tunnel list page.
-- Within a few seconds, the 'tunnel' should now be active, and remote clients should be able to reach your server anonymously. Remember to let your router "warm up" before opening clients to it.
-
+- I2P HTTP Proxy - localhost:4444 - A HTTP proxy used for browsing I2P and the regular internet anonymously through I2P.
+Browsing internet through I2P uses a random proxy specified by the "Outproxies:" option.
+
+- IRC Proxy - localhost:6668 - A IRC proxy to the default anonymous IRC-servers.
+- mtn.i2p2.i2p - localhost:8998 - The anonymous monotone
+ sourcecode repository for I2P
+
+- smtp.postman.i2p - localhost:7659 - A SMTP service provided by postman at
+ hq.postman.i2p
+ (via inproxy)
+
+- pop3.postman.i2p - localhost:7660 - The accompanying POP sevice of postman at
+ hq.postman.i2p
+ (via inproxy)
+
-
- Update Your hosts.txt File
+
+Client Modes
+Standard
+Opens a local TCP port that connects to a service (like HTTP, FTP or SMTP) on a destination inside of I2P.
+The tunnel is directed to a random host from the comma seperated (", ") list of destinations.
+
+
+HTTP
+A HTTP-client tunnel. The tunnel connects to the destination specified by the URL
+ in a HTTP request. Supports proxying onto internet if an outproxy is provided. Strips HTTP connections of the following headers:
-- To test your own server locally, you'll need to create an entry in your hosts.txt file, so I2P can translate the simple URL you place in the browser's address bar into the full public key text needed to find your server.
-- Edit your hosts.txt, and add the line myserver.i2p=blahblahblah, where myserver.i2p is an I2P 'domain' you want to associate with your site, and the blahblahblah is the text of the base64 public key you created earlier in the file myWebPubKey.txt
-- With this in place, you and others can reach your server with the simple domain name myserver.i2p in the browser's address bar.
-
+- Accept, Accept-Charset, Accept-Encoding, Accept-Language
+ and Accept-Ranges as they vary greatly between browsers and can be used as an identifier.
+
+- Referer:
+- Via:
+- From:
+
-- Surf Your Site Within I2P
- Using your secondary browser - the one you earlier configured to use localhost:4444 as a proxy - point this browser to the address http://myserver.i2p
-- You should see the main page of your webserver come up.
-
-
-- Create a Local Client Tunnel Connection
+
IRC
+Creates a connection to a random IRC server specified by the comma seprated (", ")
+list of destinations. Only a whitelisted subset of IRC commands are allowed due to anonymity concerns.
+
Whitelist:
-- We now have to think beyond just web servers.
-- As you grow into I2P and get more of a 'feel' for it, you will want to use all manner of servers and clients.
-- The beauty of I2P is that it allows standard Internet clients and servers for most protocols to be transparently 'tunneled' through the anonymous network.
-- You can run mailservers/clients, newsservers/clients - almost anything at all.
-- Now, we'll create a client tunnel. This is like the server tunnel we created earlier, but works in reverse. It listens to a port on your local machine; your local client connects to this port; the connection gets forwarded through I2P to the service on the other end.
-- To open your client tunnel for your server, type the command java -jar lib/i2ptunnel.jar -nogui -e "config localhost 7654" -e "client 10888 textofbase64key" (all one line).
-- The port 10888 is arbitrary - it just needs to be something other than the physical port your server is listening on.
-- textofbase64key is simply the contents of the public key text file myWebPubKey.txt, reproduced fully on one line (alternately, instead of textofbase64key, you can specify the name from your hosts.txt - e.g. myserver.i2p)
-- Within a minute or two of launching this command, the client tunnel from your local machine into I2P will be open and ready for use.
-- Point your regular web browser (ie, not the one you configured to use localhost:4444), and point it to http://localhost:10888
-- Verify that the mainpage of your server eventually comes up in your browser.
-- You use the same procedure for using any local client program to access a remote I2P server - just get the base64 public key (called destination key) of the remote server, choose a local port to connect to the remote server, open the tunnel, and just connect with your client to your heart's content.
-
+- MODE
+- JOIN
+- NICK
+- QUIT
+- PART
+- WALLOPS
+- ERROR
+- KICK
+- H
+- TOPIC
+
-- Share your server details with others
-
-- Using an anonymous medium (eg the one of the I2P IRC servers or ugha's wiki), post your domain name (eg www.mynick.i2p as well as your destination key. Others will then be able to reach your server remotely, without either of you jeopardizing your anonymity.
-- Remember, you can go to What's on I2P and find the latest public keys linked to their URL. You should also post your own public key and URL their. However, you will want to do this anonymously, of course. Drupal.i2p.net is currently, as of this writing, only accessible from the net. So, to access the outside WWW anonymously from inside of I2P, you will need to start up your script called startSquid. Do it the same way you have been doing these other scripts. Reconfigure your browser to proxy on localhost:5555, as defined in the script, and when the script has generated it's keys, you can access the squid proxy. Put any WWW URL (such as Google or this i2p site) into your browser's address bar and you will be surfing the World Wide Web anonymously. Now you can safely post your public key, and no one can detect your IP address.
-- Aum's website http://www.freenet.org.nz/i2p/ has a script called setupServer.py which automates all this nonsense into one simple command line . But I respect that people's tastes in user interfaces differ, and trying to write something which satisfies everyone's needs usually results in something so complex that it turns into newbie-repellent.
-- So please feel free to use and/or customize setupServer.py to taste, or write your own in Python or another language.
-- Also, you may want to write a script which handles the startup of the I2P Router, the eepProxy, plus any and all tunnels you are using. I've got such a script called startEverything.sh, which gets launched at system startup. (Be sure to search this site for template scripts to automate your I2P commands. If I create a page for one, I'll try to remember to link it here.
-- Exercise for Windows users - port setupServer.py into a MS-DOS .BAT file.
-
-
+SOCKS 4/4a/5
+Enables using the I2P router as a SOCKS proxy.
+
+SOCKS IRC
+Enables using the I2P router as a SOCKS proxy with the command whitelist specified by
+ IRC client mode.
+
+CONNECT
+Creates a HTTP tunnel and uses the HTTP request method "CONNECT"
+to build a TCP tunnel that usually is used for SSL and HTTPS.
+
+Streamr
+Creates a UDP-server attached to a Streamr client I2PTunnel. The streamr client tunnel will
+subscribe to a streamr server tunnel.
+
+
+
+
+
+Server Modes
+Standard
+Creates a destination to a local ip:port with an open TCP port.
+
+HTTP
+Creates a destination to a local HTTP server ip:port. Supports gzip for requests with
+Accept-encoding: x-i2p-gzip. Replies
+HTTP Bidirectional
+A HTTP proxy with no outproxying capabilities.
+IRC
+Creates a destination that filters the reqistration sequence of a client and passes
+the destination hash as a hostname to the IRC-server.
+Streamr
+A UDP-client that connects to a media server is created. The UDP-Client is coupled with a Streamr server I2PTunnel.
{% endblock %}
\ No newline at end of file
diff --git a/www.i2p2/static/images/I2PTunnel-streamr.png b/www.i2p2/static/images/I2PTunnel-streamr.png
new file mode 100644
index 00000000..cfd973e8
Binary files /dev/null and b/www.i2p2/static/images/I2PTunnel-streamr.png differ