lantern

🔴Lantern Latest Download https://github.com/getlantern/lantern/releases/tag/latest 🔴蓝灯最新版本下载 https://github.com/getlantern/forum/issues/833 🔴

Subscribe to updates I use lantern


Statistics on lantern

Number of watchers on Github 33110
Number of open issues 1943
Average time to close an issue 5 days
Main language Go
Average time to merge a PR 1 day
Open pull requests 38+
Closed pull requests 47+
Last commit 3 months ago
Repo Created over 7 years ago
Repo Last Updated 3 months ago
Size 1.1 GB
Organization / Authorgetlantern
Latest Release4.4.1
Contributors52
Page Updated
Do you use lantern? Leave a review!
View open issues (1943)
View lantern activity
View on github
Latest Open Source Launches
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating lantern for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

lantern Travis CI Status Coverage Status Sourcegraph

(Lantern)

If you're looking for Lantern installers, you can find all of them at the following links:

If you would like to give the latest but more UNSTABLE BETA versions a try, you can find all of them at the following links:

If you're looking for help, please visit below user forums:

| English | | | franais

Building Lantern

Prerequisites

  • Custom fork of Go is currently required. We'll eventually switch to Go 1.7 which supports what we need due to this.
  • An OSX or Linux host. Building on Windows is only partially supported with the help of Cygwin.
  • Git - brew install git, apt-get install git, etc
  • GNU Make
  • Nodejs & NPM
  • GNU C Library (linux only) - apt-get install libc6-dev-i386, etc
  • Gulp - npm i gulp-cli -g

To build and run Lantern desktop, just do:

git clone https://github.com/getlantern/lantern.git
cd lantern
make lantern
./lantern

During development, you'll likely want to do a clean build like this:

make clean-desktop lantern && ./lantern

Building Mobile

Mobile Prerequisites

Building the mobile library and app requires the following:

  1. Install Java JDK 7 or 8
  2. Install Go 1.6 or higher
  3. Install Android SDK Tools
  4. Install NDK
  5. Install Gradle

Make sure to set these environment variables before trying to build any Android components (replace the paths based on wherever you've installed the Android SDK and NDK).

export ANDROID_HOME=/opt/adt-bundle-mac-x86_64-20130917/sdk
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools:$PATH
export NDK_HOME=/opt/android-ndk-r10e
export PATH=$NDK_HOME:$PATH

Go Android Library

The core Lantern functionality can be packaged into a native Android library with:

make android-lib

Java Android SDK

The Java-based Android SDK allows easy embedding of Lantern functionality in 3rd party Android apps such as Manoto TV. The SDK can be built with:

make android-sdk

Lantern Mobile Testbed

This simple Android application provides a way to test the Android SDK. It can be built with:

make android-testbed

Lantern Mobile App

Debug

To create a debug build of the full lantern mobile app:

make android-debug

To install on the default device:

make android-install

Release

To create a release build, add the following to your ~/.gradle/gradle.properties file:

KEYSTORE_PWD=$KEYSTORE_PASSWORD
KEYSTORE_FILE=keystore.release.jks
KEY_PWD=$KEY_PASSWORD

You can find the exact values to add to your gradle.properties here.

Then it can be built with:

SECRETS_DIR=$PATH_TO_TOO_MANY_SECRETS \
VERSION=2.0.0-beta1 make android-release

Android Tips

Android Studio

To get the build working for Android Studio, you'll want to add the following dummy values to your ~/.gradle/gradle.properties file:

lanternRevisionDate="April 26, 2016"
lanternVersion=2.2.1

Uninstall for All Users

If you use adb to install and debug an app to your Android device during development and then subsequently build a signed APK and try to install it on that same device, you may receive an unhelpful error saying App Not Installed. This typically means that you tried to install the same app but signed with a different key. The solution is to uninstall the app first, but you have to uninstall it for all users. You can do this by selecting Uninstall for all users from:

Settings -> Apps -> [Pick the App] -> Hamburger Menu (...) -> Uninstall for all users.

If you forget to do this and just uninstall normally, you'll still encounter the error. To fix this, you'll have to run the app with adb again and then uninstall for all users.

Getting HTTP Connections to Use Proxy

In android, programmatic access to HTTP resources typically uses the HttpURLConnection class. You can tell it to use a proxy by setting some system properties:

System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port);
System.setProperty("https.proxyHost", host);
System.setProperty("https.proxyPort", port);

You can disable proxying by clearing those properties:

System.clearProperty("http.proxyHost");
System.clearProperty("http.proxyPort");
System.clearProperty("https.proxyHost");
System.clearProperty("https.proxyPort");

However, there is one big caveat - HttpURLConnection uses keep-alives to reuse existing TCP connections. These TCP connections will still be using the old proxy settings. This has several implications:

Set the proxy settings as early in the application's lifecycle as possible, ideally before any HttpURLConnections have been opened.

Don't expect the settings to take effect immediately if some HttpURLConnections have already been opened.

Disable keep-alives if you need to, which you can do like this:

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
// Need to force closing so that old connections (with old proxy settings) don't get reused.
urlConnection.setRequestProperty("Connection", "close");

Building Lantern for running on a server

To run Lantern on a server, you simply need to set a flag to build it in headless mode and then tell it to run on any local address as opposed to binding to localhost (so that it's accessible from other machines). You can do this as follows:

  1. HEADLESS=true make docker-linux or, if you're already running on Linux just HEADLESS=true make linux
  2. ./lantern_linux_amd64 --addr 0.0.0.0:8787 or ./lantern_linux_386 --addr 0.0.0.0:8787

Other

Generating assets

make genassets

If the environment variable UPDATE_DIST=true is set, make genassets also updates the resources in the dist folder.

An annotated tag can be added like this:

git tag -a v1.0.0 -m"Tagged 1.0.0"
git push --tags

Use make create-tag as a shortcut for creating and uploading tags:

VERSION='2.0.0-beta5' make create-tag

If you want to both create a package and upload a tag, run the create-tag task right after the packages task:

[...env variables...] make packages create-tag

Updating Icons

The icons used for the system tray are stored in src/github/getlantern/lantern/icons. To apply changes to the icons, make your updates in the icons folder and then run make update-icons.

Continuous Integration with Travis CI

Continuous builds are run on Travis CI. These builds use the .travis.yml configuration. The github.com/getlantern/cf unit tests require an envvars.bash to be populated with credentials for cloudflare. The original envvars.bash is available here. An encrypted version is checked in as envvars.bash.enc, which was encrypted per the instructions here.

Documentation for developers

Dev README

Please, go to README-dev for an in-depth explanation of the Lantern internals and cloud services.

Release README

Please visit README-release for details on building release versions of Lantern.

Translations README

More info for dealing with translations is available in README-translations.

Contributing changes

Lantern is a gost project that provides repeatable builds and consolidated pull requests for lantern.

Go code in Lantern must pass several tests:

You can find a generic git-hook file, which can be used as a pre-push (or pre-commit) hook to automatically ensure these tests are passed before committing any code. Only Go packages in src/github.com/getlantern will be tested, and only those that have changes in them.

Install by copying it into the local .git/hooks/ directory, with the pre-push file name if you want to run it before pushing. Alternatively, you can copy pre-commit.hook to pre-commit to run it before each commit.

ln -s "$(pwd)/prehook.sh" .git/hooks/prehook.sh
ln -s "$(pwd)/pre-push" .git/hooks/pre-push

Important notice

If you must commit without running the hooks, you can run git with the --no-verify flag.

lantern open issues Ask a question     (View All Issues)
  • over 1 year mac 10.12.1,lantern 3.3.5 and 3.3.6,crash no reason and without any symptoms
  • over 1 year lantern can work when using the GPRS but can not work when using the WiFi,wanna know why?
  • over 1 year 521 Origin Down
  • over 1 year Error fetching config: %v
  • over 1 year lantern不工作了,无法登陆GOOGLE和youtobe,怎么解决,望帮忙
  • over 1 year 2.2.5版不稳定?这几天经常用不了。
  • over 1 year 最新的专业版本,频繁崩溃啊
  • over 1 year Make Lantern snapable
  • over 1 year Desktop shortcut tried to open Lantern on 127.0.0.1 when default browser was Edge
  • over 1 year Latest windows version has Trojan and keylogger
  • over 1 year Are you going to fix the account recovery problem???
  • over 1 year 请问ios版本lantern什么时候出啊,不是写即将发布吗?
  • over 1 year windows 10 defender detects lantern.exe as TrojanSpy: win32/banker
  • over 1 year 为什么这么慢?
  • over 1 year ubuntu16.04LTS能装lantern吗?
  • over 1 year Errors detecting Edge
  • over 1 year Youtube视频播不了
  • over 1 year Error piping data to downstream: connection reset by peer
  • over 1 year linux系列的 deepin系统 使用不了蓝灯
  • over 1 year Win 10 下升级到3.3.2版本后 网络问题
  • over 1 year MS Edge and IE doesn't work after my uninstall
  • over 1 year 今天下载的最新版本无法支付,付款人在上海
  • over 1 year 版本3.3.5, 无法翻墙
  • over 1 year 访问Youtube 出现 Still unable to dial persistent://youtube.com:80 after 3 attempts
  • over 1 year cannot proxy Speedtest? 打开代理全部流量后,在speedtest那个测速网站怎么显示的ip还是原来的?
  • over 1 year 为什么我买的专业版比免费版的还慢,握草。why using the professional application is slower than the free type.
  • over 1 year 为什么我买了套餐,还是用免费流量,而且免费流量为0M后就不能访问国外网站了
  • over 1 year 3.3.4版就刚打开的那一会儿能翻,然后过一段时间就不行了。
  • over 1 year lantern的设备管理问题
  • over 1 year [Desktop UI] Increase size of data ticker to accommodate all languages
lantern open pull requests (View All Pulls)
  • Valencia service
  • Balancer pick dialers per different strategy resolves #3127
  • add 'SystemProxy' in Settings to resolve #3241
  • Instructions for building Lantern manually.
  • rewrite detour
  • [don't merge] add option to detour to skip loopback and LAN address
  • Updated READMEs for config process
  • Windows Firewall configuration (and Go library)
  • Dynamically generating version inside App manifest closes #3723
  • Closes #2136
  • Issue3296 noioloop
  • Release 2.0.1 issue 3560
  • obfs4
  • removed use of getlantern proxy module closes #3876
  • Fixes undefined: Resources
  • detour using eventual connection
  • Release 2.2.0
  • add issue template
  • Apply context and errors to code
  • [WIP] integrate pieces of #4168
  • App can update itself on Android
  • [WIP] Contextual logging with nested contexts and nice defer() syntax
  • [WIP] Borda reporting
  • structured error reporting
  • Also need to ignore hosts listed in /etc/hosts
  • add translations fix #4147
  • Issue 4327
  • check chained server through ping or recently proxied site fix #4268
  • [WIP] Error reporting from client to borda working end to end
  • check dialers only once after idle
  • Final borda/error reporting PR
  • Using interruptible bidirectional copying to keep idle connections fr…
  • Using an explicit patch for Go
  • Update gomobile dependencies
  • Simplify golog and errors package by calling PrintStack directly
  • align balancer.lastDialTime in 64bit boundary
  • lots of changes to fetch per-user proxies separately form global config
  • Added a short "What it is" section
lantern questions on Stackoverflow (View All Questions)
  • python urlopen error [Errno 10060] when i use proxy named lantern
  • drawing jack o’ lantern in python
  • "Lantern effect" or show only a part of a scene
Other projects in Go