This port is based on Rufus BitTorrent client version 0.6.5
Rufus_0.6.5_src.zip MD5: 8737014dfebe2ae5b09d51c24f422b9e

Comments standard:
------------------
Rawn: Gave up on this, because else some classes would be nearly unreadable, because mayor parts would just be comments...

Code additions / changes:
#I2P: description
New/changed Code
#/I2P

Code removal
#I2P: description
#old code
#/I2P


New sourcecode:
---------------
logger.py
	Rawn: A simple logger; used instead of printing everything out. Theres probably an inbuilt alternative to this in Python, but I know this class, and it works well, so I used it instead for now.

BitTorrent/eep.py
	httpproxy access module

BitTorrent/Logger.py 
	Logger class, used by SamServer.py

BitTorrent/SamBuffer.py
	Buffer for SAM messages, used by SamServer.py

BitTorrent/SamServer.py
	Complete rewrite for SAM, aims to be a drop-in replacement of RawServer.
	Rawn: rewrote it another time, this time it speaks to "BitTorrent/SAM.py" instead of speaking directly with SAM.

BitTorrent/SAM.py
	Rawn: Interacts with SAM, acts as a "bundler" for the different torrent down-/uploads, to make it possible for I2PRufus to just use one local destination/one SAM session for all of them.

New other files:
----------------

HACKING.txt

Changed sourcecode:
-------------------
Rawn: Be aware, that some minor changes aren't included here. (like giving a parameter to a class, to pass it further down...)
Rawn: All files now contain any fixes / updates up to Rufus 0.6.9
Rawn: Be also aware, that this is Chaos-like and probably doesn't contain everything, which was done. And I am really thinking, of stopping to log anything ehre at all, because it will get too big in the future anyway. (And because theres not everything documented here anyway)

BitTorrent/__init__.py
	Rawn: changed the name of the app from "rufus" to "I2PRufus"

BitTorrent/download.py
	Use httpproxy, adjust some defaults, store the own destination in
	config['ip']
	Rawn: removed all "print" statement, and enabled access to the central logger class, to use that one instead	

BitTorrent/Encrypter.py
	Checks if connections still exist before using them, shouldn't be needed.
	Rawn: Now uses the logger

BitTorrent/HTTPHandler.py
	Some error wrappers

Bittorrent/logger.py
	Rawn: disabled logging to file, to prevent every torrent using it's own log file

BitTorrent/Rerequester.py
	Use httpproxy, disable compact mode, some verbosity.
	Rawn: Use (if returned on a request) the given information of the available Leechers/Seeders, _if_ scraping failed for all trackers

BitTorrent/track.py
	Tracker code, still has issues due to bugs in SamServer

btconfig.py
	Rawn: removed the config-parameters for version-checking and reverseDNS/Flags, and added some for SAM + eep-proxy IP/Port
	Rawn: added parameter for tunnel settings and the loglevel

Btsession.py
	Use httpproxy
	Rawn: added two global class variables for SAMs IP+Port and the IP+Port from the eep-proxy and appended them to the other config-vars for the bt-client, so that they get used
	Rawn: Now uses the central logger, too.
	
DownloaderFeedback.py
	replaced  the "rec["ip"], rec["port"] = c.get_address()" with 
		rec["ip"] = c.get_address()
		rec["port"] = ''

friend.py
	Rawn: removed some IP-checks

friendspanel.py:
	Rawn: removed IP-Check and added one for destinations, fixed some smaller things
	Rawn: renamed some labels mentioning "IPs"

g3peerid.py
	defnax: Added an identifier for I2PSnark, to allow Rufus to correctly detect and display that client

g3rpcserver.py
	Rawn: removed the dialog for the refferer from the webinterface

g3rss.py
	Rawn: Added some code to generate a so-called "ProxyHandler", causing the rss-parser to use the eep-proxy instead of trying to fetch the rss-feed directly
	Rawn: removed the "open url in default browser" function. It wasn't working for me anyway, and I don't now if it's a sane idea anyway. For some/most I2P-users the default browser might be the non-anonymous one...

g3taskbar.py
	Rawn: changed "Rufus" to "I2PRufus" in some strings

optiondlg.py
	Rawn: added a Dialog for configuring the Sam and eep-proxy Ip/port
	Rawn: changed the about screen
	Rawn: removed the maxport/minport, the version-checking, the reverseDNS, the Flags and some IP-binding configs
	Rawn: added configs for tunnel settings, and logging

peerlist.py
	Rawn: commented all the ReverseDNS and Flag stuff out
	Rawn: removed the lowering of the "ip" (in I2PRufus a I2P destination, lowering renders it useless)
	Rawn: renamed the IP column to "Peer Destinations"

Rufus.py
      changed the homepage address and similiar things
	Rawn: removed everything, that had something to do with version checking
	Rawn: changed the version to 0.0.4
	Rawn: removed everything, that was responsible for the reverseDNS function
	Rawn: checks the class, which is in "BitTorrent/SAM.py" for failures, and resets/reconnects it, if necessary.
	Rawn: uses the logger
scrape.py
	Rawn: Changed some code, to let it poll all available trackers once in a while

statuspanel.py
	Rawn: removed all references to the reverseDNS function
	Rawn: renamed the IP column to "Destination"

urlfetch.py
	Rawn: changed the code which fetches files from urls to support proxys (dropped refferer support)
	Rawn: removed the field "Refferer" from the dialog for fetching a torrent from an URL, because we don't support Refferer pretending anymore because of the above changes. This will be changed back in the future

Changed other files:
--------------------
Changelog.txt
btconfig.ini

Completly useless files:
------------------------
peerlistdns.py -> was responsible for reverseDNS
BitTorrent/SamBuffer.py -> acted as a buffer for messages to SAM

Known Issues:
--------------------
Rawn:
It should get tested on Linux, because I am really unsure, what is enabled/disabled on Linux. (Rufus does switch between alternative modules based on whats available, and activates/deactivates things, dpeending on which OS it runs on. Ugly in my personal opinion, but well...
The trackerId isn't correctly stored for each tracker. Doesn't seem to cause problems, although it should.
The interval for tracker requests isn't used correctly.
Transfer-speeds fluctuate a lot. Don't know though, if this is fixable or mostly just normal for I2P. (I guess though, that some improvements can be archieved; the behaviour of sending bunches of pieces together seems a little bit strange, probably something in RawServer.py wasn't ported correctly. (I rewrote SamServer.py based on an already ported "SamServer.py", which defnax put into I2PRufus, so I don't know too much about the original version.)
In generell anything beyond normal operation, like bandwidth limiting, queueing, long time behaviour, [...] is unknown to me, I don't know, if everything works actually correctly or just pretends to do so... (Although it behaved well until now, except for the fluctuation in transfer speeds)
I also don't have any clue, if Rufus is still trying to connect to normal websites or similiar things, or if it includes any harmful information in any query/response. The app is simply to big to know this in such a short time. -> Temporary solution: At least prevent direct internet access from the comp on which it runs. It shouldn't send anything insane to other gnutella peers though. Up to now (0.0.4) I haven't encountered anything strange. If it's not really hidden somewhere, there _shouldn't_ be any calls anymore, which don't use the proy. Fear the searchpanel though... ;))
The friendlist has some bugs.
I don't know, if this is an issue, but it should probably get noted somewhere: The class used for logging is currently a class, which I once wrote myself. There is probably an inbuilt logger in Python, which one could use nstead, but in contrast to this class, I don't know the inbuilt one, so I choosed my old own class.

some ideas for the next version:
--------------------------------
Rawn:
Clean up the changes, which I did to scrape.py, to allow repeated scrapes.
Add some code to the logger, to make it possible, to change the loglevel for single classes for debugging. (This time I should _really_ do that... -_-)
A quick look at the friendlist, to eliminate any obvious bug. But I don't want to dive into this too deep right now.
Remove all the unneeded settings in BitTorrent/download.py and in generall try to clean the whole thing up a little bit, by removing other unneeded things. (And this, too... Problem is time and the liklihood to brake things while doing this... :/)
-> I really don't have much time on my hands currently, so this could take anything from a few days to weeks or even one or two months...