A GNUnet web application.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
assets/css
gnunet-build
src
.gitignore
.gitmodules
COPYING
README.md
boot.properties
build-gnunet.sh
build.boot

README.md

gnunet-web

This is a port of the GNUnet secure peer-to-peer network to the browser using HTTP for browser-to-native communication and soon WebRTC for browser-to-browser communication.

Roadmap

  • Compile GNUnet using emscripten.
    • gnunet-service-peerinfo.js - Done.
    • gnunet-service-transport.js - Done, with HTTP transport.
    • gnunet-service-ats.js - Done.
    • gnunet-daemon-topology.js - Done.
    • gnunet-service-core.js - Done.
    • gnunet-service-nse.js - Done.
    • gnunet-service-dht.js - Done.
    • gnunet-service-cadet.js - Done.
    • gnunet-service-datastore.js - Done.
    • gnunet-service-peerstore.js - Done.
    • gnunet-service-fs.js - Done.
  • Write a minimal UI for the file-sharing service.
    • Search - Done.
    • Publish.
      • The user can only select one file at a time.
      • No directory support.
    • Download.
      • No URI support.
      • No directory support.
  • Release alpha.
  • Write a WebRTC transport plugin.

What You Can Do Now

You will need to install boot to follow these instructions. Currently gnunet-web only works in Chromium or Google Chrome.

Try gnunet-web pre-alpha

  1. Execute ./build-gnunet.sh
  2. Execute boot dev
  3. Open http://localhost:8000/

Each GNUnet service is running in its own Web Worker thread. The APIs used by the services to schedule tasks, communicate with each other, and load plugins are implemented as emscripten js libraries.

To debug a shared worker in chrome open chrome://inspect and click the "inspect" link next to an entry in the shared workers list.

Try out the RTCPeerConnection demo

  1. Execute boot dev
  2. Open two browsers to http://localhost:8000/webrtc.html (let's call them Alice and Bob).
  3. Alice presses "Create Offer" and waits a bit for ICE candidates to be collected.
  4. Alice sends the Local Description to Bob.
  5. Bob enters the description into the Remote Description box and presses "Set Remote Description as Offer".
  6. Bob presses "Create Answer" and waits a bit for ICE candidates to be collected.
  7. Bob sends the Local Description to Alice.
  8. Alice enters the description into the Remote Description box and presses "Set Remote Description as Answer".
  9. Alice and Bob wait for the ICE State to be connected.
  10. Alice and Bob can send messages with the input box at the bottom of the page.