Coder Social home page Coder Social logo

android's Introduction

PIA logo

Private Internet Access

Private Internet Access is the world's leading consumer VPN service. At Private Internet Access we believe in unfettered access for all, and as a firm supporter of the open source ecosystem we have made the decision to open source our VPN clients. For more information about the PIA service, please visit our website privateinternetaccess.com.

Android Application

With this application, consumers can easily enable and communicate with the Private Internet Access services. It provides interfaces for authenticating, purchasing plans, updating servers, getting connectivity updates, handling VPN profiles etc.

Installation

Requirements

  • Git (latest)
  • Android Studio (Stable channel)
  • Gradle (latest)
  • ADB installed
  • NDK (latest)
  • Android 4.1+

Download Codebase

Using the terminal:

git clone https://github.com/pia-foss/android.git *folder-name*

type in what folder you want to put in without the **

or use a graphical interface like Android Studio's to clone the repo.

In the Terminal or Command Prompt, navigate to the cloned folder and once there type in:

git submodule init

This will initialize the submodules of our project. Then:

git submodule update --recursive

This will download and install the required submodules in our project.

Next is to download the Open VPN submodules. Next:

cd openvpnTunnel/

This will moves you into our Open VPN code folder. Next:

git submodule init

This will initialize the submodules of this project. Then:

git submodule update --recursive

This will download and install the remaining submodules in this project.

Building

Once the project is cloned and submodules are updated, the project will build once opened in Android Studio. This will require building the binaries for the underlying modules and configurations. This can take a while for certain computers and is only done on complete clean and rebuilds. You can see progress in the gradle console. Once completed, the app will be able to be run on a device connected to the computer or an emulator running on your computer.

Please note that Android 4.x emulators are broken with VPNs and will not connect.

Documentation

Architecture

com.privateinternetaccess.android is the package name for the PIA section of the app.

de.blinki.openvpn contains all of PIA VPN's OpenVPN implementation.

All similar UI elements and model classes are keep together. All activities and fragments are keep together by the area of the app they are in.

Code structure via packages:

  • ui - application UI classes and elements
  • model - application model elements including handlers, interfaces, events and POJOs.
  • pia - API, handlers, interfaces, model and tasks relating to Private Internet Access account, server and connection information
  • tunnel - Bridging elements with OpenVPN.
  • receivers - Broadcast receivers used in PIA VPN.

Significant Classes and files

  • PIABuilder - Initializes the required notification channels, vpn logs cache, services and more. Should be initialized on Application.onCreate()
  • PIAFactory - Creates instances of interfaces that let you control the VPN, get account information and handle connection elements.
  • PiaOvpnConfig - Generates the vpn configuration to send to OpenVPN.
  • ConnectionResponder - Handles IP grabbing, port forwarding and MACE for all connections.

Authors

  • Harrison Frede - half47/slai47
  • Arne Schwabe - Arne
  • Tommie Podzemski - tommie
  • Justin Simpson - justin

Contributing

By contributing to this project you are agreeing to the terms stated in the Contributor License Agreement. For more details please see our Contribution Guidelines or CONTRIBUTING.

Licensing

The source code is licensed under the GPLv3. See LICENSE for more information.

Acknowledgements

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (https://www.openssl.org/)

© 2002-2017 OpenVPN Inc. - OpenVPN is a registered trademark of OpenVPN Inc.

android's People

Contributors

jaspws avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.