UWNetworksLab / uProxy-p2p

Internet without borders
https://www.uproxy.org/
Apache License 2.0
865 stars 182 forks source link
browser-extension peer-to-peer proxy-server university-of-washington webrtc

uProxy

uProxy is a browser extension that lets users share their internet connection.

Status

Slack Status Travis Status

Please read the uProxy Coding Guide to learn more about contributing to uProxy. For a high level technical overview of uProxy, see the uProxy Design Doc.

Tools

uProxy is built using the following tools:

To manage dependencies we use:

Build

Prerequisites

Building

First, to install required NPMs and configure the build/ directory for TypeScript compilation, execute:

yarn

Then, to compile the TypeScript code and build uProxy and all of the demo apps, execute:

grunt

Having problems? To clean up from a partial, broken, or extremely out-dated build, try executing this command before repeating the above steps:

yarn run clean

IDE

Visual Studio Code supports TypeScript compilation, search, and refactoring out of the box - just point it at the directory containing your uProxy clone.

Run

uProxy

Chrome

These are the steps to try uProxy in the Chrome browser.

You need both the uProxy Chrome App and the uProxy Extension.

You can use grunt build_chrome from the root directory of the repository to re-compile just Chrome components.

Firefox

These are the steps to try uProxy in the Firefox browser.

You can use grunt build_firefox from the root directory of the repository to compile just Firefox comonents.

Demo apps

These can be found at build/src/samples/. They are a mix of web sites, browser extensions (Chrome and Firefox), and Node.js apps.

To run web apps:

To run Chrome apps:

To run Firefox add-ons:

To run Node.js apps:

Note: until freedom-for-node supports core.rtcpeerconnection, this sample will not work

More on the demo apps themselves:

Development and re-building uProxy

uProxy uses the Grunt build system for its build tasks. Here is a list of uProxy's Grunt commands:

The easiest way to stay current is to pull changes, run grunt build to build your distribution, and re-run as you make changes to the files.

Before submitting any changes to the repository, make sure to run grunt test to make sure it passes all unit tests. Failing tests are enough to immediately reject submissions. :)

uProxy for Mobile

The development for mobile platforms uses the Cordova Chrome Apps (CCA) tool, also known as the Chrome Apps for Mobile Toolchain. You can find the platform-specific information below:

Layout of files

Configuration and setup files

Source code

Dynamically created directories (grunt clean should remove them)