Giter VIP home page Giter VIP logo

dluffymonkey / outline-client Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jigsaw-code/outline-client

0.0 0.0 0.0 377.97 MB

Outline clients, developed by Jigsaw. The Outline clients use the popular Shadowsocks protocol, and lean on the Cordova and Electron frameworks to support Windows, Android / ChromeOS, Linux, iOS and macOS.

Home Page: https://getoutline.org/

License: Apache License 2.0

Ruby 0.53% Shell 4.00% Objective-C 9.09% Swift 7.92% Java 12.11% TypeScript 29.99% JavaScript 14.10% HTML 0.34% CSS 0.14% Dockerfile 0.35% Batchfile 1.67% NSIS 1.06% C# 7.77% Python 0.83% C++ 8.30% CMake 0.27% Go 0.92% AIDL 0.61%

outline-client's Introduction

Outline Client

Build Status

The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS. The Outline Client is designed for use with the Outline Server software, but it is fully compatible with any Shadowsocks server.

The client's user interface is implemented in Polymer 2.0. Platform support is provided by Cordova and Electron, with additional native components in this repository.

Requirements for all builds

All builds require Node 16, in addition to other per-platform requirements.

๐Ÿ’ก NOTE: if you have nvm installed, run nvm use to switch to the correct node version!

After cloning this repo, install all node dependencies:

npm install

Building the web app

Outline clients share the same web app across all platforms. This code is located in the src/www directory. If you are making changes to the shared web app and do not need to test platform-specific functionality, you can test in a desktop browser by running:

npm run action gulp build browser
npx cordova run browser

The latter command will open a browser instance running the app. Browser platform development will use fake servers to test successful and unsuccessful connections.

UI components are located in src/www/ui_components. The app logic is located in src/www/app.

Tip: Build with (export BUILD_ENV=development; npm run action gulp -- build browser) to enable source maps.

Building the Android app

Additional requirements for Android:

๐Ÿ’ก NOTE: If you're running linux, you can automatically set up the development environment by running bash ./tools/build/setup_linux_android.sh

To build for android, run:

npm run action gulp build android

To rebuild after modifying platform dependent files, run:

npx cordova platform rm android && npm run action gulp build android

If this gives you unexpected Cordova errors, run:

npm run clean && npm ci && npm run action gulp build android

Cordova will generate a new Android project in the platforms/android directory. Install the built apk by platforms/android/app/build/outputs/apk/<processor>/debug/app-<processor>-debug.apk (You will need to find the corresponding <processor> architecture if you choose to install the apk on a device).

To learn more about developing for Android, see docs/android-development.

Building for Android with Docker

A Docker image with all pre-requisites for Android builds is included. To build:

  • Install dependencies with ./tools/build/build.sh npm ci
  • Then build with ./tools/build/build.sh npm run action gulp -- build android

Apple (macOS and iOS)

Additional requirements for Apple:

  • An Apple Developer Account. You will need to be invited to join the "Jigsaw Operations LLC" team
  • XCode 13+ (download)
  • XCode command line tools: xcode-select --install

To build for macOS (OS X), run:

npm run action gulp build osx

To build for iOS, run:

npm run action gulp build ios

To open the macOS project on XCode:

open ./platforms/osx/Outline.xcodeproj

To open the iOS project on XCode:

open ./platforms/ios/Outline.xcodeproj

To learn more about developing for Apple, see docs/apple-development

Electron

Unlike the Android and Apple clients, the Windows and Linux clients use the Electron framework, rather than Cordova.

Additional requirements for building on Windows:

  • Cygwin. It provides the "missing Unix pieces" required by build system such as rsync (and many others). Besides the default selected Unix tools such as bash and rsync, please also make sure to install git during Cygwin installation as well. You will need to clone this repository using git in Cygwin instead of the native Windows version of git, in order to ensure Unix line endings.

To build the Electron clients, run (it will also package an installer executable into build/dist):

npm run action src/electron/build [windows|linux]

To run the Electron clients, run:

npm run action src/electron/start [windows|linux]

Error reporting

To enable error reporting through Sentry for local builds, run:

export SENTRY_DSN=[Sentry development API key]
[platform-specific build command]

Release builds on CI are configured with a production Sentry API key.

CI Environment Variables

For your CI to run smoothly, you'll need the following in your ENV:

  • SENTRY_DSN - url required to enable sentry integration. Same across all platforms.
  • RELEASES_REPOSITORY - the username and repository name of the repository you're pushing releases to. In our case, Jigsaw-Code/outline-releases
  • RELEASES_DEPLOY_KEY - an ssh secret key for the matching releases repository public deploy key - how to set this up
  • ANDROID_KEY_STORE_CONTENTS - the base64'd contents of your android keystore.jkr file
  • ANDROID_KEY_STORE_PASSWORD - the password required to unlock your android keystore. We assume your key and keystore password are the same.
  • IOS_MATCH_GIT_BASIC_AUTHORIZATION - the base64'd username and access token necessary to access your fastlane iOS credentials match repository
  • IOS_MATCH_PASSWORD - the password needed to open your match repository

Support

For support and to contact us, see: https://support.getoutline.org.

outline-client's People

Contributors

alalamav avatar andylizi avatar aurangz avatar bemasc avatar cjhenck avatar cotsog avatar daniellacosse avatar dependabot[bot] avatar ekcnl avatar fingerliu avatar fortuna avatar gillespiej avatar grantasl19 avatar gurakarm avatar joeytwiddle avatar jsoref avatar jyyi1 avatar kklem0 avatar lgg avatar mpmcroy avatar ohnocassio avatar ohnorobo avatar pyy avatar quinnypig avatar siberiawind avatar ssrlive avatar toinetoine avatar trevj 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.