sandstorm-io / sandstorm

Sandstorm is a self-hostable web productivity suite. It's implemented as a security-hardened web app package manager.
https://sandstorm.io
Other
6.76k stars 705 forks source link

Feature Request: Enable bittorrent clients in sandstorm apps #57

Open ripdog opened 10 years ago

ripdog commented 10 years ago

I would love to be able to replace my rtorrent+nginx+rutorrent setup with a sandstorm app, so I do hope this will be possible one day. Thanks!

kentonv commented 10 years ago

This sounds like another example of what we want to solve with "device drivers" (something we've been thinking about lately). A "device driver" is a sandstorm app that has direct network access, but which must be approved by the server's administrator. They would be used to interface with external protocols, like IRC, WebRTC, telephony, or even bittorrent -- these can be thought of as the "devices" of the cloud. A device driver's job would be to turn that protocol into semantic capabilities (Cap'n Proto interfaces) which could then be granted to other apps via the powerbox.

memento commented 8 years ago

Hi, How far did you go inot the "device driver" path ? I could definately use a bittorrent client on my sandstorm instance.

paulproteus commented 8 years ago

Hi! Short answer: not there yet; it'll be some time longer, like a lot more than a week, before we feel confident that this tech works fully. We have part of the "plumbing" ready for now, but aren't happy with the user interface yet.

memento commented 8 years ago

Hi! I see. Do you need any help for beta or even alpha testing ? I'd be glad to participate

memento commented 8 years ago

What's the name of your future app, BTW ?

kentonv commented 8 years ago

@memento - Currently everyone is a beta tester. :) We do weekly releases that include all the latest features. But this one isn't ready yet.

We intend to port Transmission to Sandstorm once we're ready. We actually probably won't write a BitTorrent device driver for this, but instead will have Transmission request a "full network access" capability. Only the server administrator is able to grant such a capability, though, so Transmission will only work on your own personal server, not on Oasis. TBH, it would be costly (in terms of compute, bandwidth, and legal bills) for Oasis to support BitTorrent clients, so this limitation is probably for the best.

memento commented 8 years ago

Hi, Still very interested. Any help needed ? What's your repository ?

Have a great day

timmarinin commented 7 years ago

@kentonv: is this issue blocked by something?

kentonv commented 7 years ago

@marinintim Technically it's now possible for an application to request IP networking as a capability through the powerbox. However, it will take some significant effort to port Transmission to use this capability. The most direct approach would require making Cap'n Proto API calls from Transmission code, but this would have to be instrumented at an extremely low level which is hard. An easier approach would be to implement some sort of in-app network proxy which converts regular connections into Cap'n Proto IpNetwork calls, but our previous attempt to implement this failed (we couldn't fully convince Linux to redirect all traffic through the proxy).

Probably some hybrid approach is needed, in which the low-level networking code in Transmission is instrumented to connect (non-transparently) through a proxy, which in turn makes the appropriate Cap'n Proto calls.

This is a fairly complex project and unfortunately does not seem like it would pay for itself, so it's tough to say when we'll be able to spend time on it. If someone wants to volunteer and is comfortable working in low-level C/C++, we could provide instructions on what to do!

timmarinin commented 7 years ago

@kentonv: maybe I could try? Proxy idea seems interesting.

kentonv commented 7 years ago

@marinintim By all means. Let me know if you have any questions. (Email kenton@sandstorm.io for faster response time.)