Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for I2P torrents #10

Open
TheNain38 opened this issue Jan 10, 2016 · 23 comments
Open

Add support for I2P torrents #10

TheNain38 opened this issue Jan 10, 2016 · 23 comments

Comments

@TheNain38
Copy link

It would be cool to be able to use BTFS with I2P torrents :)

Maybe #9 could be updated to add I2P support? Because libtorrent-rasterbar support I2P_proxy option: http://www.libtorrent.org/reference-Settings.html and you could also add this option allow_i2p_mixed http://www.libtorrent.org/reference-Settings.html#allow_i2p_mixed

@PlasmaPower
Copy link
Contributor

Metadata collection is done through curl, which does not support i2p as far as I can tell.

@PlasmaPower
Copy link
Contributor

However, only http and https metadata collection is done through curl. If I2P support was implemented for other types of torrents, would that work for you?

@TheNain38
Copy link
Author

It would be for I2P torrents only, not for normal torrents

@PlasmaPower
Copy link
Contributor

Sorry, I'm not quite sure how an I2P torrent is different than a normal one - is there a different format? I had assumed it was just a proxy type.

@TheNain38
Copy link
Author

Yes it is just a proxy type, but I don't know how metadata collection can be done... Maybe @str4d could help here to give some details ^^ (He is an I2P developer)

@PlasmaPower
Copy link
Contributor

Is it possible I2P torrents are already supported? Looking in libtorrent, there's already some code to check if a torrent is an I2P torrent, and code to deal with I2P torrents. Is there a difference between an I2P torrent and an I2P proxy?

@TheNain38
Copy link
Author

In libtorrent-rasterbar it is just a type of proxy. Also, when saying I2P proxy, in fact it is the address of the SAM TCP bridge which communicates with the I2P router. What I said is that I don't know how metadata collection could be done using curl...

@PlasmaPower
Copy link
Contributor

Does an I2P torrent start with http:, https:, magnet:, something else, or is it a file?

@TheNain38
Copy link
Author

It is like normal torrents, it just uses I2P trackers and also I2P peers, but it should use I2P to get the file if an url is specified

@str4d
Copy link

str4d commented Jan 21, 2016

@PlasmaPower an I2P torrent is a regular torrent running over the I2P network. In fact, if there are bridging nodes (torrent peers connected both to clearnet and I2P swarms) then a clearnet magnet link or torrent file can often be opened up with an I2P torrent client. See the documentation for further details, although most of that should be abstracted behind libtorrent. And yes, when the libtorrent documentation refers to "I2P proxy" it really means "I2P SAM API", because that is the API that libtorrent is using to make I2P connections via the user's I2P router.

If you separately wanted to connect to trackers outside of libtorrent, then you could use the I2P HTTP proxy (which by default is 127.0.0.1:4444, though a config option should be provided to change it, as with the SAM API).

@PlasmaPower
Copy link
Contributor

I think I2P support should be in the latest version of my proxy support PR. Could someone check if it works?

@donat-b
Copy link
Contributor

donat-b commented Jan 21, 2016

@PlasmaPower
Tested this command with i2pd and it didn't work.
btfs --i2p-http-proxy=http://127.0.0.1:4446 --proxy-type=i2p

@PlasmaPower
Copy link
Contributor

@donat-b If you pass -f to btfs, does it output any errors/warnings? Also, I should be able to troubleshoot it myself in ~5 hours when I'm not on a network that probably blocks i2p.

Edit: Oh, also, you might need a proxy hostname+port (specified with --proxy), from the libtorrent documentation:

The only used fields in the proxy settings structs are hostname and port.

@donat-b
Copy link
Contributor

donat-b commented Jan 21, 2016

@PlasmaPower no errors or anything suspicious. It's just not receiving anything, I guess.

@str4d
Copy link

str4d commented Jan 21, 2016

@donat-b with the config options in that PR, I believe you need to run:

btfs --proxy=127.0.0.1:7656 --proxy-type=i2p --i2p-http-proxy=127.0.0.1:4446

ie. SAM port must be specified, and I don't believe the http:// is necessary (but I could be wrong on that).

@PlasmaPower 127.0.0.1:7656 is the default SAM API port, which you could use for --proxy by default if --proxy-type=i2p (but of course listen to --proxy if set).

@PlasmaPower
Copy link
Contributor

@str4d I'll look into implementing a default, but yeah, that's what I edited into my post. Also, yes the http:// is optional.

@PlasmaPower
Copy link
Contributor

I've added a default for i2p proxies.

@PlasmaPower
Copy link
Contributor

I've gotten i2pd setup, and metadata collection through i2p is now working. However, it seems to stall whenever you try to cat a "file". I'll look into this more tomorrow.

@TheNain38
Copy link
Author

In your setup you should make sure you enabled SAM, because by default it isn't

@PlasmaPower
Copy link
Contributor

I enabled SAM and ensured that the port was open, but still nothing when I try to cat a file. Any ideas for how to investigate? The log.txt just has Azureus5.7.0.0.jar added, and there's nothing from the console when running with -f. Looking at it with -d, it would appear that the read calls are locking up as expected.

@PlasmaPower
Copy link
Contributor

Oh, also, it's really annoying because the cat process gets locked up in the D state, so it's a bit of a pain to clean up.

@donat-b
Copy link
Contributor

donat-b commented Jan 22, 2016

@PlasmaPower that's exactly the result I have.

@str4d
Copy link

str4d commented Jun 9, 2016

Just FYI, I2P has launched a development program aimed at helping developers integrate I2P into their apps. If you'd like some help with this in July during our Apps month, let me know! We are currently in APIs month, and have a contributor looking at updating/improving libtorrent's I2P support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants