Show HN: Pure JavaScript P2P file sharing in the browser
whatareyoudownloading.com
whatareyoudownloading.com
_serverless_ file sharing says title, yet the technology "requires a HTTP server". "Its completely anonymous as no data is ever stored on the server". Incorrect, only mild protection against sniffing and spoofing is provided.
The underlying code documentations speaks of "This makes it perfect for anonymity": https://github.com/ShirsenduK/WhatAreYouDownloading/tree/mas... No PKI is linked or included. Proxy service or Sender/receiver unlinkability is not provided. The used WebRTC technology limits UDP/TCP listen sockets. Browser constraints mean WebRTC offers a severely limited experience. For instance, the state of the art in UDP NAT traversal using the neighbor-invite method (beyond STUN/TURN) is not possible.
Rant Disclaimer: As an academic working on a real deployed zero-server P2P technology for 7 years, this sort of claims are a bit upsetting. Zero-server file sharing systems, with a proven effective spam/pollution prevention mechanism have been proven to be extremely difficult to build. (e.g. no-spam version of Kazaa,Gnutella) See, https://torrentfreak.com/tribler-makes-bittorrent-impossible... Tribler research group created an upcoming IETF Internet Standard on sharing/streaming which features integrated NAT/firewall puncturing (IETF PPSP work). Compliant IETF PPSP implementations are capable of doing HD-quality streaming, both on-demand and live streaming: https://datatracker.ietf.org/doc/draft-ietf-ppsp-peer-protoc...
Just read about Tribler, it sounds really interesting. All the best with it.
This, Tribler and countless other solutions will make the internet what it was meant to be, a decentralized, fault-tolorent network for information exchange. Thanks!
WebRTC defines a FTP-like 1-to-1 transfer. Would Bittorrent-like swarming be possible in WebP2P?
For example, it is easy to imagine HTTP over PPSP (instead of TCP) -- which is essentially a serverless Web.
Yes: I developed DataChannel-polyfill, the first working implementation of the DataChannels specification, too... :-)
Which, apparently, is based on this code by piranna.
Has that requirement been dropped? Or does this do something strange to get around it?
Was I wrong? Was that not important? Did I go though all that pain for nothing?
Does this WebRTC thing have an on/off switch?
There are ways to turn it off on your browser, but why would you? :). The tech is yours to be used.
Well, the tech is for every website to be used, as a visitor to the site that may or may not benefit me. I think that was the reason for the same-origin policy and is, probably the source of concern of the OP.
Personally, I use NoScript and RequestPolicy to deal with it. After all, just because JavaScript exists does not mean I want any random website to execute arbitrary code on my machine (especially not with WebRTC).
Prompts like that also do absolutely nothing to stop malicious use, hidden under a facade of legitimacy. For example, somebody could put together a demo purportedly showing "serverless pure JavaScript P2P file sharing in the browser" solely to trick people into using something harmful. (I'm not saying that's necessarily going on here, of course.)
Does anyone know of a service like that, easy enough for my father to use?
EDIT: And it's all static HTML, fantastic! I just hosted it on my server, although there doesn't seem to be much of a reason to do that, since it's all static! Thanks a lot for this.
Ideally, I would like to use something more "agnostic" like SIP or XMPP, but didn't be able yet to do it in an anonimous way, since both protocols require to create accounts somewhere that later when you register on a SIP or XMPP server it ask to confirm that you exists, so goodbye anonimity :-(
EDIT: Ok, I have just read about Gnutella design on wikipedia and although in the past I didn't understand anything (I never was too much into P2P programs since I had internet from neighbours wifi...) now I can say that yes, both Gnutella and ShareIt!/WebP2P has a lot of things on common about their purposses and how it's designed, although just by serendipity :-P This definitely it's not bad, since I can be able to learn from their errors and also I would be able to propose to extend Gnutella to support DataChannels & HTTP as transport layer, so everybody wins :-D
It works on most browsers
That would have a far greater impact than yet another file-sharing system.
The architecture would basically be a flooding P2P network with measures against spamming (machine learning?).
Also, you could also select peers for the quality of the content they forward to you.
> by @prianna
yet the link goes (correctly) to @piranna. It irks me to see people's names misspelled in attributions.