NeoXiD

[Release] Own Tracker For Usage Within Companies

Recommended Posts

Hey there!

First of all, I would like to say thanks to the developers of BitTorrent Sync. The application is fantastic and can handle large amounts of data. Although, there are some features missing: Own tracker and relay servers! We would have really loved to use BT Sync within our company, but without an own tracker and potentially relay server that's a no-go...

So, I made some research and it seems like there isn't anything on the roadmap to make own trackers possible. That's why I've decided to start up Wireshark and analyze the tracker protocol. Soon I had all the necessary things together and I started working on writing a private tracker server.

Here's my result, called sync.io. It is written in NodeJS and can handle a huge amount of load. Also, as a little gimmick, I've added a web status page which shows all announced shares and their peers. So far I've tested my private tracker server with about ~50 clients and didn't have any problems at all.

Ofcourse, BitTorrent Sync does not offer the native ability to choose your own tracker server, so you will have to do some workarounds like editing your hosts file, overriding the DNS record (we did that in our company) or making some fancy firewall rules... You can read more about that at Github, were I've described everything as precisely as possible.

So, feel free to test it out! If there are any suggestions, problems or something else, I will be glad to help out. The next thing on the roadmap of sync.io is an inbuilt private relay server... :)

Regards
NeoXiD

Share this post


Link to post
Share on other sites

Great work, this seems incredibly useful.

Does the peers only announce the share to the tracker? Is any other information leaked to the tracker?

They announce a hash (identifies the share, will further analyze how it will be generated), their local IP and a unique peer identifier, which seems to be choosen randomly as soon as you start the application for the first time.

Here's a link to my test environment: http://ares.snapserv.net:4000

You will see there what information gets published. Before anyone starts with messing around there, no sensitive data is stored on my test env.

Share this post


Link to post
Share on other sites

This is a great initiative. I will consider using it. It would be nice if bittorrent clients in the future well be able to use private trackers. A notation for a share could be something like: key@domain.com

Cheers

Share this post


Link to post
Share on other sites

Thanks for the great feedback so far. If anyone wants to try it out without installing sync.io, they could also use http://ares.snapserv.net:4000 for testing purposes. To do this, one method would be overriding the DNS record for t.usyncapp.com and setting it to 176.9.229.90. Your share(s) should immediately pop up there as soon as you restart BTSync. Only use this for testing purposes, this tracker isn't always available.

 

Right now I am working on a private relay server, which will be seamlessly integrated into sync.io. So far I achieved the first few things, so that featue should probably follow soon. And I've achieved another thing: Modifying the BTSync client binary for Windows so that it will always point to 176.9.229.90. Although, this binary edit has some limitations and it seems like it would violate the ToS, which is quite unfortunate. :/

 

@frater: That would be a great idea. Because there are always 2 servers involved (relay & tracker), the following schemata could be used:

 

SADF7893ASD....@domain.com => Share: SADF7893ASD.... , Tracker: t.domain.com, Relay: r.domain.com

Share this post


Link to post
Share on other sites

So, I made some research and it seems like there isn't anything on the roadmap to make own trackers possible.

It has been hinted at by the developers that such ability will be coming to the Enterprise/"Business Grade" edition of Sync

 

That's why I've decided to start up Wireshark and analyze the tracker protocol.

Do bear in mind that "reverse engineering" "the software" (a term that BitTorrent Inc's Legal Dept have confirmed also incorporates "the protocol") is against the Terms of Use

 

Share this post


Link to post
Share on other sites

It has been hinted at by the developers that such ability will be coming to the Enterprise/"Business Grade" edition of Sync

 

Do bear in mind that "reverse engineering" "the software" (a term that BitTorrent Inc's Legal Dept have confirmed also incorporates "the protocol") is against the Terms of Use

 

 

The Terms of Use might be invalid in some countries regarding an analysis of the protocol.

Share this post


Link to post
Share on other sites

Hm, I did not know that the protocol might be also affected by this ToS? I've understood that only reverse engineering the binary would be forbidden... Anyways, thanks for the hint @GreatMarko. I just wrote a private message to an BitTorrent employee and will freeze this project until these questions are resolved.

 

Regards

NeoXiD

Share this post


Link to post
Share on other sites

I do, although I do not have enough time to work actively on it. I had some first successful tries with a private relay server, but there are still some things to improve. Still waiting for an answer, contacted some employees, but it seems like they are all still enjoying their holidays :)

Share this post


Link to post
Share on other sites

Good news, a BitTorrent Inc. employee just confirmed that sync.io does not violate the Terms of Service. Therefore I will continue with this project as soon as I have some free time left. 

Share this post


Link to post
Share on other sites

Good news, a BitTorrent Inc. employee just confirmed that sync.io does not violate the Terms of Service. Therefore I will continue with this project as soon as I have some free time left. 

 

Wow, great news!

Share this post


Link to post
Share on other sites

Good project, thanks. I've used it on osx 2 hours with 3 clients and got crash :(

 

TypeError: Cannot call method 'toString' of undefined
 
 at SyncServer.module.exports.SyncServer.handlePacket (/Users/user/Downloads/sync.io/app/lib/SyncServer.js:90:29)
    at SyncServer.module.exports.SyncServer.onMessage (/Users/user/Downloads/sync.io/app/lib/SyncServer.js:85:19)
    at Socket.<anonymous> (/Users/user/Downloads/sync.io/app/lib/SyncServer.js:4:61)
    at Socket.EventEmitter.emit (events.js:98:17)
    at UDP.onMessage (dgram.js:437:8)
 
Any suggestions?
Thanks.

Share this post


Link to post
Share on other sites

Good project, thanks. I've used it on osx 2 hours with 3 clients and got crash :(

 

TypeError: Cannot call method 'toString' of undefined
 
 at SyncServer.module.exports.SyncServer.handlePacket (/Users/user/Downloads/sync.io/app/lib/SyncServer.js:90:29)
    at SyncServer.module.exports.SyncServer.onMessage (/Users/user/Downloads/sync.io/app/lib/SyncServer.js:85:19)
    at Socket.<anonymous> (/Users/user/Downloads/sync.io/app/lib/SyncServer.js:4:61)
    at Socket.EventEmitter.emit (events.js:98:17)
    at UDP.onMessage (dgram.js:437:8)
 
Any suggestions?
Thanks.

 

 

Sorry for that issue. I've just refactored huge amounts of Sync.IO, the code is now much more readable, structured and also includes more checks, so bad stuff like that should not happen again. Still, like for every node.js application, I can highly recommend forever, a node module which keeps a process up and running. (And restarts it, if some fatal should occur)

 

Roadmap: Implement relay server support (a bit hard to test though), refactor the webinterface (code could be a bit more clean), implement a statistics page, find some better ways to use sync.io instead of messing around with DNS records and code some tests to fight against bugs.

 

Regards

NeoXiD

Share this post


Link to post
Share on other sites

NeoXiD,

 

In light of the unfortunate developments surrounding btsync 2.0 your work on a private tracker has become more important than ever to those of us who loved btsync the way it was before it was ruined.

 

I hope that you'll continue development on this important tool.

 

I've managed to get it running, however the status page does not display any information in the fields (no fields really, just column headers).  It isn't of terrible importance, but thought you should know.

 

I'm using btsync client 1.4.111

 

Warmest regards,

Mike

Share this post


Link to post
Share on other sites

NeoXiD,

 

In light of the unfortunate developments surrounding btsync 2.0 your work on a private tracker has become more important than ever to those of us who loved btsync the way it was before it was ruined.

 

I hope that you'll continue development on this important tool.

 

I've managed to get it running, however the status page does not display any information in the fields (no fields really, just column headers).  It isn't of terrible importance, but thought you should know.

 

I'm using btsync client 1.4.111

 

Warmest regards,

Mike

 

Hi Mike

 

Thanks for your message. I only barely watched the development of Sync 2.0, as I've already guessed in the past that such things are probably going to happen. I had also written a statement about that on GitHub and stopped development altogether. They've introduced new protocols, a lot of reverse engineering would be needed and with Sync 2.0 it might get even more legally questionable if you start with bypassing pro-only restrictions.

 

BitTorrent Inc. said in the past that they're going to tolerate my project for now and I'm not sure if they would still do so nowadays. I'd rather like to see a new solution/product, completely written from scratch and opensourced. Even if I'm going to create a new tracker emulator, people would still have to use closed source software and ugly hacks and workarounds. I would no longer trust BTSync for any seriously secret data and would suggest treating it like Dropbox or similar cloud storage providers, in terms of security.

 

To cut a long story short, I never expected them to release an opensource version and now it's even more unlikely - they'll probably never do, so even if you create a full working tracker/relay emulation, people would still have to use software which can't be properly audited and maybe even includes backdoors. You never know...

 

Best regards

NeoXiD

Share this post


Link to post
Share on other sites

@ywuw2486,

 

I have a few questions for you and would love the opportunity to pick your brain on your setup. Mainly, because that pretty much is EXACTLY what I was hoping to use BTSync for.

 

It looks like the BT Staff has disabled the ability for us to send/receive private messages on here.

 

Please let me know a preferred way to contact you, without you getting spammed.

 

Thanks,

 

J.


@NeoXiD,

 

After reading your most recent post, it looks like you have stopped development due to the reasons that you have outlined. That being said, what have you looked into, as far a replacing BTSync?

 

I was looking into 'Amazon Cognito' but it looks to be more of a mobile developer back-end tool than just a file syncing program.

 

J.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.