|Number of watchers on Github||33110|
|Number of open issues||1943|
|Average time to close an issue||5 days|
|Average time to merge a PR||1 day|
|Open pull requests||38+|
|Closed pull requests||47+|
|Last commit||12 months ago|
|Repo Created||about 8 years ago|
|Repo Last Updated||12 months ago|
|Organization / Author||getlantern|
|Do you use lantern? Leave a review!|
|View open issues (1943)|
|View lantern activity|
|View on github|
|Fresh, new opensource launches 🚀🚀🚀|
Trendy new open source projects in your inbox! View examples
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:
brew install git,
apt-get install git, etc
apt-get install libc6-dev-i386, etc
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 the mobile library and app requires the following:
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
The core Lantern functionality can be packaged into a native Android library with:
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:
This simple Android application provides a way to test the Android SDK. It can be built with:
To create a debug build of the full lantern mobile app:
To install on the default device:
To create a release build, add the following to your
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
To get the build working for Android Studio, you'll want to add the following
dummy values to your
lanternRevisionDate="April 26, 2016" lanternVersion=2.2.1
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
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.
In android, programmatic access to HTTP resources typically uses the
HttpURLConnection class. You can tell it to use a proxy by setting some
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");
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:
HEADLESS=true make docker-linuxor, if you're already running on Linux just
HEADLESS=true make linux
./lantern_linux_amd64 --addr 0.0.0.0:8787or
./lantern_linux_386 --addr 0.0.0.0:8787
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
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
right after the
[...env variables...] make packages create-tag
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
Continuous builds are run on Travis CI. These builds use the
configuration. The github.com/getlantern/cf unit tests require an envvars.bash
to be populated with credentials for cloudflare. The original
An encrypted version is checked in as
envvars.bash.enc, which was encrypted
per the instructions here.
Please, go to README-dev for an in-depth explanation of the Lantern internals and cloud services.
Please visit README-release for details on building release versions of Lantern.
More info for dealing with translations is available in README-translations.
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
Install by copying it into the local
.git/hooks/ directory, with the
file name if you want to run it before pushing. Alternatively, you can copy
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
If you must commit without running the hooks, you can run git with the