I2Phex

From I2P Wiki
Jump to navigation Jump to search

I. Introduction

About I2Phex

I2Phex is a Gnutella file sharing client. For comparison, Gnutella clients on the public internet include Shareaza, Bearshare, and Limewire.

The original Gnutella program was created in year 2000 by Nullsoft, an AOL owned company, and AOL quickly said "No. We own Time Warner Music. No piracy programs." but it was too late because they had released it under the GPL. Hazzah!

The Gnutella network was popular on the clearnet from 2000 to ~2010, but as it is not anonymous at all (every user can see the IP addresses of some others users), a lot of users were busted by anti piracy organizations in several countries, a lot of users left Gnutella for BitTorrent, direct download sites (ie. MegaUpload), and (a smaller part) for anonymous networks.

I2Phex is easier to use than iMule, but less powerful and less secure. After playing with I2Phex, consider to upgrade to iMule.

Quotation from the release notes 2011: "I2Phex should be still considered experimental, and could contain serious bugs. Using it for activity which requires strong anonymity is very strongly discouraged."

This page may interest you too: I2Phex changelog.

Comparisons between I2Phex and iMule

As of 2016-10:

Items The best is Comments
The easier to install I2Phex
The easier to use (GUI) I2Phex
The largest number of files shared iMule
The largest number of users online iMule
The most cross-platform compatible I2Phex Coded in Java (iMule in C++)
The less centralized network iMule I2Phex need and use Gnutella webcache(s)
The most relevant to share thousands (and more) files I2Phex (iMule is restricted by it's DHT size)
The most reliable software iMule
The 'most' anonymous iMule
The most secure iMule

Screenshot

(feature: search)

II. Quick start guide

How to get I2Phex

Plugin

Standalone

  • Note: currently (2016-07-01) the latest version (v3.2.7.0.0)[1] is only downloadable from iMule-Nachtblitz, hash:
    ed2k://|file|i2phex_3.2.7.0.0.zip|12802430|DF32D9D3F65C8349E5601982083F102C|h=HGJAW2UFXTVDRZRYXUE3WWKB7I5S4NVI|/

Trick : if the download of the file is interrupted, you may use the command line tool EepGet that resume the interrupted download. Example of command line to enter: "eepget http://echelon.i2p/i2phex/filename.zip". Under Windows : you must go inside the I2P folder to get eepget to work, usually: "cd C:\Program Files (x86)\I2P\")

Now can follow the next steps.

Setup I2P

There is nothing to do (I2Phex does not use SAM bridge to talk to I2P).

Run I2Phex

Extract I2Phex then run it:

  • On Windows, you can start I2Phex by double-clicking "run.bat".
  • On Linux, you may start I2Phex from a GUI by double-clicking "run.sh", however if the I2Phex splash screen does not appear, then open a terminal window, go into the I2Phex software directory then enter "sh run.sh"

Wait for it to connect to peers (15 minutes).

How to set I2Phex to your language

Menu Settings > Options > User interface > Language.

There is 10 languages available (2014).

If you can not get connected with other peers

If your tab "Gnutella Net" keeps being empty:

Currently (2015-12) I2Phex has very few users (< 5). Some I2P users wanting to try I2Phex do post their address to this (forum.i2p) thread, you may post yours too : A few working hosts

Where to get your I2Phex address : tab "Gnutella Net", at the bottom of this window right click onto the line "My Address", then click "Copy".

Where to paste the I2Phex address of a other peer : tab "Gnutella Net", at the bottom of this window, under "Favorites" paste the (very long) address then click "Add" (if nothing happen this mean the address is malformed). Now select the pasted address then click "Connect".

If connect fail:

  • Remember that the other peer must be online and it's I2Phex running.
  • If in the column "Status" you see the error message "Error 503: This node only accept ultrapeer nodes", one of both may have to use a trick (to force "ultrapeer nodes", this will order your I2Phex node to become a peer-server of the network) : Menu Settings > Options > Network > [x] Force to be an Ultrapeer (This mean "force your I2Phex peer to be also a server of the I2Phex network for other peers to help them to discover others peers", this disable the internal automatic decision). If new users come in the future (example : more than 5 users connected), you should disable the "Force to be an Ultrapeer" to make the I2phex network work better (in order to let it normally : a peer does automatically set itself as ultrapeer according the performances of the network).

How to share your files

You can offer files for other users too : menu "View" > "Library" > in the left windows, click the mouse right button > select "Add folder" > choose a folder to share then click "Select" ( {OK} thank you ! :-) ), you can share several folders.

<!> Be careful : DO NOT SHARE your private folders nor files !

III. Misc

Copy/paste I2Phex addresses easier

"It is extremely inconvenient to select these huge destinations in the browser" (from a web page such as a forum): just double-click or triple-click the text and it will select the entire line, then you can copy and paste it.

Browse host

The browse host feature does not work, for some reasons (ref). It is a known bug with I2Phex (#225, http://sourceforge.net/p/phex/bugs/ ). Read also.

From I2Phex v3.2.7.0.0 the feature is disabled by default.

Up to I2Phex v3.2.6.106.0 the "browse host" feature (allow other peers to browse your shared directories) is enabled by default. Other users will be able to see the names of your shared folders (and files inside).

How to Browse a host:

  • To browse the folders of other peers : right click with the mouse on the line of a peer.
  • If the remote host that you want to browse is not listed in the "Gnutella Net" tab, click the tab "Search", button "Browse Host", copy/paste the address of the how you want to browse then click the button "Browse Host".
  • Note: to see how your shared folders look like to other users : menu View > Library. The library tab, on the left side, shows the directories structure that the other peers may see.

If your privacy requires it, you may disable it :-( : menu Settings > Options > Sharing > Download/Sharing Settings > [ ] Allow browsing of directories.

However, directories will help a lot the other users to discover the files your share, if possible do not disable this feature.

Note: Browse host feature is confirmed working up to I2Phex v3.2.0.103.0 (2008 build).

Recommendation to organize your shared folders

(!) A good practice would be to create on your hard disk a folder where you put all the files shareable. Then you can share this main folder without fear to do a mistake (like sharing the wrong folder or sub folder), and without forget to share folders.

Example for Windows :

  • C:\Shared_P2P\
  • C:\Shared_P2P\eBooks\
  • C:\Shared_P2P\Incoming\
  • C:\Shared_P2P\Movies\
  • C:\Shared_P2P\Musics\
  • C:\Shared_P2P\Softwares\
  • C:\Shared_P2P\Torrents\

Chat feature

The chat feature inside I2Phex is (definitively) disabled for privacy reason, you may use the I2P's main IRC network (channel #torrents).

Do you want to help the I2Phex network to work ?

  • A easy way to help the I2Phex network to get more users and run better is to let it run the more often you can.
  • A second way is to share some files as examples for the I2Phex new users.

Filtering sick/spam content

I2Phex has a feature to filter text strings. It is enabled by default when you run a search.

If you have hide the feature and want to display it again: menu View > Search Filter > Filter Rules.

  • [ ] Default Filter: Hides adult content
  • [ ] Default Filter: Hides Scam files
  • [X] Default Filter: Block Known Spam
  • [X] Default Filter: Block really nasty files

The button "Edit rules..." allows you to create and change search rules.

Where are saved my I2Phex configuration files ?

If your I2Phex is installed as a I2P plugin software:

  • GNU/Linux: /home/yourusername/.i2p/plugins/i2phex/
  • Windows: write me !

If your I2Phex is installed as a standalone software:

  • GNU/Linux: /home/yourusername/.i2phex/
  • Windows: write me !

IV. Known issues

GUI

  • On Linux, I2Phex v3.2.6.106.0 and v3.2.7.0.0 : when attempting to launch I2Phex from a GUI by double clicking 'run.sh', the splash screen and I2Phex does not appear. But if I run it from a Terminal it is okay. Solution: unknown, write it if you know.
  • On Linux, I2Phex v3.2.6.106.0 plugin version: when attempting to launch I2Phex, the splash screen is visible for a brief moment before disappearing. Attempting to start the application again only results in a repeat of this process. This is a known issue (ref), "if the I2P user is not the user running X, it won't work" (ref).

Misc

  • I2Phex v3.2.x.x.x Loose connection with peers: several times a day I2Phex disconnects from peers and does not reconnect to (even if they are up). You must manually reconnect: tab "Gnutella Net" > "Favorites" area > select the line of a peer previously added then click "Connect" button. This issue (related to I2Phex v3.2 source code) is fixed in Phex v3.4.x, a Java developper is needed to upgrade the I2Phex source code.
  • I2Phex v3.2.x.x.x does not publish its address in the webcache (request type: "Put destination") even after 12 hours uptime. This is a known issue of I2Phex v3.2.x.x.x, this part of the software is not reliable. Quitting then restarting I2Phex several times often help. Note: I2Phex is coded to put its address in webcaches every 90 minutes (but often fail to do it).

Weakness of SHA-1

SHA-1 is a cryptographic hash function, used to produce hash values (checksums) about the files. It is known to be weak (this might be used in order a corrupted file shows the same SHA-1 as the file you want to download, but have a different content).

V. Advanced subjects

Privacy (addresses and hops)

Comparison between I2Phex and iMule:

  • By default I2Phex relies totally on I2P: you see the I2P addresses of the people with who you exchange files.
  • By default iMule add hops between the users (compared to I2Phex 3.2.6.106.0).

If you decide to use I2Phex durably, you should change these settings: menu Settings > Options > General settings > I2P > change the values of "Inbound lenght" and "Outbound lenght" from 1 (default) to 2 or 3 (3 hops will make the transferts slower than 2).

You may read this talk "I2Phex : need to change the default tunnel length ?" on forum.i2p (may 2014).

In the past (2005) there was discussion about the number of hops to use with I2Phex (ref: "Security client tunnel config").

A user ("Ha") wrote in 2005 this interesting list:

Here's my quick take on the issue and it will be interesting to see other people's opinions:   
- Non copyrighted sharing of files: 0 hops   
- Copyrighted sharing of files: 1 hops   
- Sharing of a massive amount of copyrighted material: 2 hops   
- Sharing of censored material, legal 'unpopular' material, 'unpopular' opinions in a 'western' country: 3 hops   
- Sharing of illegal material (depending on the area such as beastaily, illegal drawings or stories, 'obscenene' pornography, snuff films) in a western country: 4 hops   
- Sharing of illegal/outlawed material in a dictatorship: Don't do it.

Are you a Java developer ?

If you are a Java developer, you may be interested to get the bounty offered to port the latest Phex code (v3.4.2 2009) to I2Phex (v3.2.6 2008).

How to run I2Phex headless

I2Phex with GUI use (at least) 150 MB, and without GUI use (at least) 100 MB[2].

To run I2Phex standalone without any GUI:

Tested with Linux:

  • From a terminal window go the I2Phex software folder, then enter the following text: cd lib && java -Xmx384m -Djava.awt.headless=true -jar phex.jar

This tip was found in the source code (file "build-and-run-headless.sh").

How to make a I2Phex standalone software from the plugin ?

  • Install I2Phex as a plugin to the I2P router console
  • (Linux) copy the files from /home/yourusername/.i2p/plugins/i2phex/ to your own directory
  • (Linux) go into the directory /home/yourusername/i2p/lib/
  • (Linux) copy the files: i2p.jar jbigi.jar mstreaming.jar streaming.jar to your own directory (.../i2phex/lib/)
  • uninstall the I2Phex plugin
  • you can now run I2Phex as a standalone software (but you loose the software auto-upgrade feature).

From where does I2Phex automatically get its first peers addresses ?

I2Phex tries to connect to webcaches eepsites addresses hardcoded inside I2Phex (a "webcache" is a eepsite that list the address of current I2Phex users):

As of I2Phex v3.2.6.106.0 there are 2:

  • #1 The webcache of Complication ("nowhereville.i2p=GGoZ1EK..."), officially shutdown in january 2014 (ref).
  • #2 http://jwebcache.i2p (operated by Echelon. Partially working on 2014-10-15: tabs "Destinations" and "Webcaches" displays empty pages. Any Java developer wanted to try to fix this, see this bug report on trac.i2p2.i2p. See also).

If you are a advanced user, you may try to run a webcache too, software : http://echelon.i2p/jwebcache/ However I2Phex will only be able to use it after adding the address in the source code then recompile it.

From I2Phex v3.2.7.0.0 the webcaches are :

  • #1 http://jwebcache.i2p (operated by Echelon. Running fine since 2015)
  • #2 The webcache of Complication ("nowhereville.i2p=GGoZ1EK..."), officially shutdown in january 2014 (ref).

How to host a Gnutella webcache server

There are 2 softwares able to run Gnutella webcache servers for I2Phex (inside I2P).

Before to run one, please note that I2Phex will only be able to use it if you recompile it, because the addresses of webcaches are hardcoded inside the source code (file: "src/main/java/phex/gwebcache/GWebCacheContainer.java").

Jwebcache

Unmaintained since 2014 (v0.2.6 by Zzz). Wrote by Complication (from 2007 to v0.2.4, 2009) in Java programming language, compatible with Gwebcache protocol v1.

For Windows and Linux.

Mirror: http://echelon.i2p/jwebcache Can also run as a I2P plugin: http://plugins.i2p/plugins/jwebcache/

Note: it is not required to create a I2P tunnel because when Jwebcache start ("run.sh" or "run.bat") it automatically open a I2P tunnel and shows in the console window the B64 and B32 addresses where to reach it. Jwebcache is a I2P lib application, it connects to the I2P router direct via I2Pcp and opens a tunnel on its own.

When the I2P router does shut down, it happen that Jwebcache v0.2.7 does not recreate a tunnel[3]. A trick would be to develop a feature inside Jwebcache making it restart every 24 hours.
Update: Zzz claims that he fixed this issue in Jwebcache v0.2.8 (2016).

Pebcache

Unmaintained since 2009 (v0.x.x, that should have been released as v0.1.6), the last official release was v0.1.5 in 2008. Wrote by Blub in Python programming language.

For Windows and Linux.

Mirror: http://echelon.i2p/pebcache

Archive of the official eepsite: http://eepsites.i2p/Content/Search/ViewCached.aspx?CachedURL=pebcache.i2p%2findex

Seedless (to develop)

Call to developper(s) :

As noticed by Sponge (the developer of Seedless, a webcache technology) in 2011 : "As I mentioned long ago, might be nice if Seedless was used, then there would be no need to run any webcache." (ref).

VI. See also

VII. References

  1. http://zzz.i2p/topics/1750-i2phex-v3-2-7-0-0-release-notes
  2. Checked 2015-12 on Linux with v3.2.7.0
  3. Issue confired with Jwebcache v0.2.6 and v0.2.7

VIII. External links