Compare commits

..

No commits in common. "master" and "14.0.4" have entirely different histories.

683 changed files with 27528 additions and 208571 deletions

10
.classpath Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="lib" path="libs/jtorctl.jar"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

55
.gitignore vendored
View File

@ -1,49 +1,3 @@
# auto-generated files from Android builds
build.xml
ant.properties
default.properties
proguard.cfg
proguard-project.txt
#
releases
docs
doc
.directory
#built application files
*.apk
*.ap_
# files for the dex VM
*.dex
# Java class files
*.class
# subdirs for generated files
bin/
gen/
# Local configuration file (sdk path, etc)
local.properties
# Windows thumbnail db
Thumbs.db
# OSX files
.DS_Store
# Android Studio
*.iml
.idea/
.gradle/
build/
#tfx
.transifexrc
/external/appcompat/bin/
/external/appcompat/gen/
/external/bin/
/external/include/
/external/*-build-stamp
@ -55,14 +9,5 @@ build/
bin
gen
native
libs/jtorctl.jar
local.properties
builds
external/patches/*
obj
app/src/main/jniLibs/
app/src/main/libs/
orbotservice/src/main/libs/
orbotservice/src/main/jniLibs/

35
.gitmodules vendored
View File

@ -1,20 +1,31 @@
[submodule "external/tor"]
path = external/tor
url = https://git.torproject.org/git/tor.git
ignore = dirty
[submodule "external/libevent"]
path = external/libevent
url = https://github.com/libevent/libevent.git
ignore = dirty
[submodule "external/jtorctl"]
path = external/jtorctl
url = https://github.com/guardianproject/jtorctl
[submodule "external/ActionBarSherlock"]
path = external/ActionBarSherlock
url = https://github.com/JakeWharton/ActionBarSherlock.git
[submodule "external/openssl"]
path = external/openssl
url = https://github.com/openssl/openssl.git
ignore = dirty
[submodule "external/zstd"]
path = external/zstd
url = https://github.com/facebook/zstd.git
ignore = dirty
[submodule "external/xz"]
path = external/xz
url = https://git.tukaani.org/xz.git
ignore = dirty
url = git://git.openssl.org/openssl
[submodule "external/iptables"]
path = external/iptables
url = git://git.netfilter.org/iptables
[submodule "external/superuser-commands"]
path = external/superuser-commands
url = https://github.com/dschuermann/superuser-commands.git
[submodule "external/liballium"]
path = external/liballium
url = https://git.torproject.org/user/yawning/liballium.git
[submodule "external/obfsclient"]
path = external/obfsclient
url = https://git.torproject.org/user/yawning/obfsclient.git
[submodule "external/polipo"]
path = external/polipo
url = https://github.com/jech/polipo.git

View File

@ -5,16 +5,6 @@
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
<dictionary>
<key>LaunchConfigHandle</key>
<value>&lt;project&gt;/.externalToolBuilders/org.eclipse.cdt.managedbuilder.core.genmakebuilder.launch</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
@ -40,40 +30,10 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<filteredResources>
<filter>
<id>1451443416388</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.ui.ide.multiFilter</id>
<arguments>1.0-name-matches-false-false-external</arguments>
</matcher>
</filter>
<filter>
<id>1451443416398</id>
<name></name>
<type>26</type>
<matcher>
<id>org.eclipse.ui.ide.multiFilter</id>
<arguments>1.0-name-matches-false-false-jni</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

11
.settings/.jsdtscope Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
<attributes>
<attribute name="hide" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
<classpathentry kind="output" path=""/>
</classpath>

View File

@ -0,0 +1 @@
org.eclipse.wst.jsdt.launching.baseBrowserLibrary

View File

@ -0,0 +1 @@
Window

106
AndroidManifest.xml Normal file
View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.torproject.android"
android:versionName="14.0.4"
android:versionCode="106"
android:installLocation="auto"
>
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19"/>
<permission android:name="org.torproject.android.MANAGE_TOR" android:label="@string/permission_manage_tor_label" android:description="@string/permission_manage_tor_description" android:protectionLevel="signature"></permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
<uses-permission android:name="org.torproject.android.MANAGE_TOR"/>
<application android:name=".OrbotApp" android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:description="@string/app_description"
android:configChanges="locale|orientation|screenSize"
android:theme="@style/Theme.AppCompat"
android:allowBackup="false"
android:allowClearUserData="true"
android:largeHeap="true"
>
<activity android:name=".Orbot" android:configChanges="orientation|screenSize"
android:launchMode="singleTop"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!--
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
-->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="bridge" />
</intent-filter>
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="org.torproject.android.REQUEST_HS_PORT" />
</intent-filter>
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="org.torproject.android.START_TOR" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
<activity android:name=".OrbotDiagnosticsActivity" android:label="OrbotDiag"/>
<activity android:name=".wizard.LotsaText" android:exported="false"/>
<activity android:name=".wizard.Permissions" android:exported="false"/>
<activity android:name=".wizard.TipsAndTricks" android:exported="false"/>
<activity android:name=".wizard.ConfigureTransProxy" android:exported="false"/>
<activity android:name=".wizard.ChooseLocaleWizardActivity" android:exported="false"/>
<activity android:name=".settings.SettingsPreferences" android:label="@string/app_name"/>
<activity android:name=".settings.AppManager" android:label="@string/app_name"/>
<service android:enabled="true"
android:name=".service.TorService"
android:exported="false"
android:permission="org.torproject.android.MANAGE_TOR"
android:process=":remote"
>
<intent-filter>
<action android:name="org.torproject.android.service.ITorService" />
<action android:name="org.torproject.android.service.TOR_SERVICE" />
</intent-filter>
</service>
<receiver android:name=".OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
</application>
</manifest>

73
BUILD
View File

@ -1,6 +1,5 @@
This document explains how to properly build an Android package of Orbot from
source.
This document explains how to properly build an Android package of Orbot from source.
Orbot includes, in the external directory, git repo submodules of:
- Tor
@ -8,38 +7,76 @@ Orbot includes, in the external directory, git repo submodules of:
- LibEvent
- JTorControl: The Tor Control Library for Java
The Orbot repo also includes the Privoxy source code of a recent stable release.
Please install the following prerequisites (instructions for each follows):
ant: http://ant.apache.org/
Android Native Dev Kit or NDK (for C/C++ code):
http://developer.android.com/sdk/ndk/index.html
Android Software Dev Kit or SDK (for Java code):
http://developer.android.com/sdk/index.html
AutoMake and AutoConf tool
sudo apt-get install autotools-dev
sudo apt-get install automake
sudo apt-get install autogen autoconf libtool gettext-base autopoint
Android Native Dev Kit or NDK (for C/C++ code): http://developer.android.com/sdk/ndk/index.html
Android Software Dev Kit or SDK (for Java code): http://developer.android.com/sdk/index.html
You will need to run the 'android' command in the SDK to install the necessary
Android platform supports (ICS 4.x or android-15)
You will need to run the 'android' command in the SDK to install the necessary Android platform supports (ICS 4.x or android-15)
Be sure that you have all of the git submodules up-to-date:
./tor-droid-make.sh fetch
git submodule init
git submodule update
To begin building, from the Orbot root directory, it builds all submodules and
the project.
To begin building, from the Orbot root directory, you first need to build all external C/native dependencies:
./tor-droid-make.sh build
export NDK_BASE={PATH TO YOUR NDK INSTALL}
make -C external
At this point, you'll have Tor and Privoxy binaries that can be run on an Android handset.
You can verify the ARM binary was properly built using the following command:
file res/raw/tor
file res/raw/privoxy
You should see something like:
src/or/tor: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
This isn't enough though and we'll now sew up the binary into a small package
that will handle basic Tor controlling features.
android update project --name Orbot --target android-15 --path .
#Now you need to split and copy the tor binary into res/raw. We split it into < 1M chunks
#because some Android devices don't like resources larger than 1M.
#split --bytes=1m $DROID_ROOT/external/tor/tor/src/or/tor res/raw/tor
Now build the Android app
(gradle / android studio instructions here)
ant release
This will produce an unsigned Tor package APK.
This will produce an unsigned Tor package in ./bin/Orbot-unsigned.apk!
To produce a usable package, you'll need to sign the .apk. The basics on
signing can be found on the Android developer site:
http://developer.android.com/guide/publishing/app-signing.html
The three steps are quite simple. First, you'll generate a key. Secondly,
you'll sign the application. Thirdly, you'll verify the the apk.
Generating a signing key:
keytool -genkey -v -keystore my-release-key.keystore \
-alias orbots_key -keyalg RSA -validity 10000
Sign the apk:
jarsigner -verbose -keystore my-release-key.keystore \
bin/Orbot-unsigned.apk orbots_key
Verify the signature for the apk:
jarsigner -verify bin/Orbot-unsigned.apk
mv bin/Orbot-unsigned.apk bin/Orbot-signed-alpha.apk
You can also GPG sign the apk and generate an .asc:
gpg -ab Orbot-signed-alpha.apk
Now you should have a fully signed and production ready alpha release of Orbot!
Give bin/Orbot-signed-alpha.apk an install and send us bug reports!

506
CHANGELOG Normal file
View File

@ -0,0 +1,506 @@
NOTE: Specific #s below correspond to Trac tickets logged and maintained at https://trac.torproject.org/projects/tor/
5776a87 update to 14.0.0-RC3
bf6a1da update state when service connects
451cfed keep SOCKS port as default 9050 (instead of 'auto')
f94e27a updated to 14.0.0-RC-1
bedeb71 more fixes for hidden service configuration now multiple ports are properly configured and notification will display correctl
051cce4 don't allow the tor control port socket to timeout
f4baf4d updated to 2.0.21-stable
120da6b more wizard flow fixes
816a6b2 updating to 1.1.1
24773c3 update to OpenSSL 1.0.1h
8b5bb04 Makefile patch for Orbot
ccaec1e update 14.0.0-BETA-2
da3c955 fixes for tor setConf/control port fixes hidden service support manages socks port conflicts
9345186 remove unnecessary line
707bca4 amek sure wizard only is shown once on start (not twice!)
0fddd80 fix for missing libs folder
7abea23 removing binaries from repo
70d7792 updated changelog
2650fda update to 14.0.0-BETA-1
476dc1a update binaries for 0.2.4.22 Tor
b6116b5 switch to 0.2.4.22 version of Tor for release
148e7eb remove deletion of polipo folder
352c23b updated binaries for OpenSSL 1.0.1h
7622d2c update constant for 1.0.1h and latest openssl vuln http://ccsinjection.lepidum.co.jp/blog/2014-06-05/CCS-Injection-en/index.h
d392439 fix bridge append value from qrcode scan
d6f5720 remove synchronized - not needed, and causing blocking
f52c22a Merge branch 'amoghbl1-issue_3014_wizard_workflow'
f6750e1 sometimes text can be null
fd47e70 fix control port connections with socket timeouts
36a6349 status should update whether there is msg or not
63b4304 Merge branch 'issue_3014_wizard_workflow' of https://github.com/amoghbl1/orbot-1 into amoghbl1-issue_3014_wizard_workflow
25f6499 Merge branch 'master' of github.com:n8fr8/orbot
e2e0d26 Merge branch 'hans_feature_desc'
c1f9296 new work on binding and service starting
e2e00cc removed largeheap value
13ef143 add app description to manifest to support p2p distribution
c111030 Merge pull request #1 from amoghbl1/issue_2374_story_maker
4759d9f implemented button click function for the story maker button, also url added in strings, change to liking at review
53e82b1 general cleanup, removed log.d's
6488e6a cleaned Permissions workflow, implemented override for back button
935fa91 cleaned LotsaText workflow, implemented override for back button
f29a494 cleaned ConfigureTransProxy workflow, implemented override for back button
ea384f9 cleaned ChooseLocaleWizardActivity workflow, implemented override for back button and added toast warning message string
ffcfce7 cleaned TipsAndTricks workflow
255623a added the story maker button to the tips wizard page, also added tip string to the strings file.
23c689c added icon for story maker button to be added to the hints and tips page
cfc8a99 updated to 14.0.0-ALPHA-4
278997d simple notification of bridge settings via URL
17934e6 initial support for setting bridge through URL
96c0a54 add large heap and remote process settings back in
726cf0c work to stabilize Tor background service auto-restart tor binary process if killed by Android OS print out debug info related
11c31fa update the changelog
14.0.0 (ALPHA-2)
583c758 updated to 14.0.0-ALPHA-3
90848b0 reduce memory usage of app and make single process
ba90f73 cleanup of notification and process kill code
76ec147 add some more externalized strings
e80c3bf check if installed apps are enabled
60a822a updated to 14.0.0-ALPHA-2b
69614fb updated Tor version to 0.2.5.4-alpha heartbleed blacklists for non-updated tor nodes
53673da fix bridge/PT enable code based on bridge types
9096f8c update 14.0.0-ALPHA-2a for some testers (samsung)
42d8ca1 for some devices, the process-id is listed first
fd51281 make sure the unbind intent is not null
b814019 improvement for network state checking code
648b10c updated changelog for v14
ea919c5 add the basic proguard support
147b57a remove unused preference
0dc50cc add log max size feature
b9f14b3 ensure setConft on control port works consistently
b056e7f remove debug waiter
b2d4bb3 updated to v14-alpha-2
cbbc5e4 improve how we start/stop Tor, Polipo to find process id, do ps of all, then filter (most compat) use async service for Tor st
b31c11f updated icons with dark background
2b6ff4e update manifest for v14-alpha-1
05b6553 add binary stripping to makefile
21c1cad update binaries and torrc for obfs/PT work
144460b fixes for preference handling in multi process context
38700f9 updated to 0.2.5.3 for scramblesuit/obfs support
d3865c0 fix settings handling and add more debug output also make SOCKS a runtime config
d529334 clean up wizard context use
0178d3e add new binaries and configs for polipo and others
40546c9 change from privoxy to polipo for http proxy
a4d8669 fix variable name to obfsclient
2f7a9dd update to new obfsclient repo
000cf57 update jtorctrl jar
f485015 install obfsclient binary
d003826 update binaries
4d3754b remove obfsproxy, update obfsclient
7af85b5 small updates to Makefile for NDK
2c2d094 Integrate obfsclient/liballium into the build process
43c259a Update the obfsclient submodule to include Android fixes
a6af878 liballium/obfsclient should be sourced from tp.o repos
13.0.6
89fc2e6 updated to 13.0.6-RC-3
b9eeb37 ensure Service has foreground priority so it is not killed (and improve onBind() calls to reset state if it is killed)
3824bc5 improving control port connection code adding additional logging for problems with Samsungs
fa6c101 bump version to 13.0.6-RC-2
cc020f5 small tweaks to Tor binary startup code
16799ef add automapresolve to ensure .onion address are handled
06d5a6f improve process lookup code
cd8b7e4 connect to "localhost" instead of 127.0.0.1
4673f04 update UI on rebind of service
c68ce2c fixes for transproxy to fix DNS leaks in some cases latest RC was leaking DNS due to updates iptables/xtables binary and need
915ff8a updated to 13.0.6-RC-1
3413b34 fixes for getting process id of Tor process
e9d0fea updates resources and tx config for tagalog
10938ed update string resources from transifex
5326d2b updated string values for components
8d73be6 bump to 13.0.6-BETA-8
af95098 remove "persistant" flag, as its only for system apps
831a52a improved logging and exit code reporting for transproxy
f853271 fix Service init/bind logic also remove updates for background drawing to save memory
8445f2e ensure appmgr doesn't fail on loading apps also don't load icons to improve memory usage
227253d updates to optimize resource memory usage
ed76f8b update to 13.0.6-BETA-7
60a79a2 more updates to install clean-up process
f885059 fix problem with UI rotation and screen update
efb9a8c update to 13.0.6-BETA-6
bf8a92c use AbsolutePath instead of Canonical; fix kill code
e1b1ca0 add constants for folder names
e8116f4 ensure existing files are deleted before upgrade
25f4ac8 adding new small icon
981123f update to 13.0.6-BETA-5
b6a9b48 ensure existing binaries are removed before install problems may be caused by soft links or old bins
ef14ac5 fix large icon incorrect display in alert dialogs
bab67b7 small fixes for the wizard with new UI
3d1f391 updates for icons, backgrounds and improved drawing code to solve issues related to outofmemory
9d1311c updated to dark icon
b329920 update to BETA-4 for Permission changes
c9bf8d2 fix Shell calls so that we close() shell when done
e78486a update to support specific permissions for Service this is an attempted fix for Samsung S3/Note3 issues
7990644 update version to 13.0.6-BETA-3
917ea6e fix for mikeperry transproxy leak bug find https://lists.torproject.org/pipermail/tor-talk/2014-March/032503.html
fc0554f fix for binary version upgrade support
4ed6ea1 updated pre-built binaries
7229c52 updated to openssl 1.0.1g
6bce7d5 fix ant build script and target
e5b70ba improve shell command, root and permissions handling
b734c6c add new library for superuser/shell commands
dda5633 updated to 13.0.6-BETA-1
298f73c update Tor version code
75d3ecb update language wizard display to be more clear
fe44c29 add binaries (for non NDK developers)
05bf5b7 add/update translations from transifex
344e914 add transifex tx config
8140b32 a little bit of cleanup of new binary installs
e25dc08 fixes the menus for appcompat library
cc8d3e1 update to return to binaries as ZIPd res/raw stop using the libs/armeabi hack method
b59bd1a remove binary apps/libs
445f63f updates ant build for new actionbarcompat
765a3bf updated graphic
8c20759 removed ABS depdency in favor of AppCompat
d0d7880 Signed-off-by: Nathan Freitas <nathan@freitas.net>
75a0d34 Signed-off-by: Nathan Freitas <nathan@freitas.net>
e5fdf28 updated binaries from new build script
57ef1c3 Fix building of openssl on newer systems
b5a043a updated Makefile to not build libevent TESTS
dab37b5 setting to 4.6 for compat
1a346cf updated makefile
02c389c updated obfsclient external
06b46f1 updated to only build tor binary and not tests, etc
d311f71 13.0.6 minor UI updates, Tor version update
a24eacd add hi-res icon for the web
f322f6b add new graphics and icons
806fe40 update external commit tags
27d5945 remove redundant iptables rules for transproxy
4e1357b add new background graphics state change to main UI
714af31 updated icon and main graphics
dc58c40 updated binaries built from "make -C external"
13.0.5 (includes v12 changes as well)
d605b45 add obfsclient build but don't include binary yet
0aa4294 add new obfsclient module
c1cb30d remove issue with service launching via explicit intent
87411be fix code for finding existing processes
16c5426 adding new bg images for next release
c3327d7 13.0.4a fix for Tor link setup
3b9d6c8 make sure Tor path link is cleanly setup and chmod'd
e55f724 bump to 13.0.4
cac2a28 updated TorBinaryInstaller now just handles resources
f538930 fix xtables installation and permission setting more fixes for running from sdcard
43625f8 bump to 13.0.3
c595963 solves problem with binaries being stored on external SDcard
649ca40 enable compiliation for all android not just armv7
591161f updated to 13.0.2
635e307 cleanup imports
db53c19 updated binary versions in strings
62a5da6 updated tor binary that works with armv5 and v7
6927126 updated torrc without automap settings (not needed)
92d19e3 ensures binary permissions are set
14fab24 bump to 13.0.1
39699e6 add new icons showing different status
d3c11be add geoip v6 file and support in TorService
e24ae6c update Makefile - try building with older toolchain
a60c614 change jtorctl path to github updated version
8c4f09e new binaries built with update Makefile
8527929 unregister receive and check for alternate library path
1fa568d peg to new repo and head with fix for empty element bug
8b8e51b remove double entry for jtorctrl
cf5e445 fixes #2848 newnym might call a null conn in service
069a9bf fixes #2847 use class name to start service
2735a59 update to 13.0.0; release candidate 1
096144b adding in binaries for UI/Android devs without NDK All binaries can be built from source using Makefile in /external
f69c1aa updated jtorctrl build
0b024c9 Merge branch 'master' of https://github.com/eighthave/orbot into hans_build_patches
d54cf74 bump to 13.0.0-alpha-1
276e6c3 remove old external openssl-static path
e0a7fbb check for both link and original path in process lookup
b48bbc1 updated AUTHORS for amoghbl1
e9396b7 use new bundled xtables binary appropriately
ca28ade add patches for iptables/xtables building on Android
76b15dd adding new iptables/xtables build from source
8b65332 clean up of error notifications
8722db9 put threading of settings reload into TorService
d2006b2 remove static openssl android and replace with real openssl
0e6bb42 add new openssl
c4d8c97 stop button for notification bar
c80c5d4 improvements on notification code
5891fee service should be unbound when activity is destroyed also some other cleanup of unused code
867ff53 remove simple server source bundle
3069fb5 run Tor from link to keep compatibility with OrbotHelper class some apps use our OrbotHelper.java class and are expecting the
17f7d46 update menu, strings, icons for ChatSecure (from Gibberbot)
198974a update to build openssl latest
468076e set to 1.0.1e release
8666b1b updating tor to 0.2.4.20
95461da adding back in jtorctrl jar file
f3cbb6e updating SDK and removing share intents
6e79596 updating to Android 18 / 4.4
420dd1e adding geoip ipv4 db back in for now
1739473 more updates for moving binaries to libs/armeabi
5870a67 update for 0.2.4.20 constant
6a125a9 more removal of share service from core Orbot moving to a separate app
a0de736 change "network conn" preference to be more clear
c58f009 remove simple jar from project (moving sharing to sep app)
5286421 remove "ShareService" from projet (moving to separate app)
a8ca927 remove simple file sharing server from build process
fbd4fdc updated to android-18
6b0b0fa more changes for executing binaries from libs/jni folder
d40016b move minimum device support to API 9 or 2.3
d6d989a updated jar for jtor control
4d6e0cc update makefile for new install process update tags for libevent and tor
d236708 removing binaries from repo binaries will now be stored in /libs/armeabi as psuedo shared libraries (actually executables) and
ca8197f update native build to include Android NDK build flags
2d34745 include note about git submodules in BUILD instructions
ddd62f2 remove spaces and tabs where 'make' complains about them
f4e73e9 updating version to 12.0.5
abe1788 another shared prefs fix
e632b3b fixes for sharing preferences across processes
9a10cdd updated orbot glow icon
a9b41a8 make orbot another background process
8f44c51 make sure binaries and config files are updated
e84ee71 added GUI support for flinging to a newnym identity
f12e556 added support for NEWNYM signalling
9dacb5b updated transproxy iptables rules to ensure clear/flush
965dab2 updated to 12.0.4
4407257 adding raw design resources
5930964 new green/tor on mode
cea338d add new Root utility for checking if root is possible
82fcea0 fixes for superuser and iptables check code
9d6f3c8 removed unneeded old iptables binaries
38e2f49 12.0.3 0.2.4.16-rc
1bc97c6 change default "disable network" pref to true
a97432c update manifest to 12.0.2
fb49463 update to latest tor 0.2.4.16-rc
5bcb607 update the readme copyright
3d387af add our new icon source CC license link
eb1c6b0 make the "check" button a bit smarter
9a2a989 updates to graphics, layouts and strings
2cfd6af update torctrl jar
79e6eec update tor to tor-0.2.4.16-rc
0a3cc50 add resources for airplane mode/network disable
2c278f3 fix for notifications and debug option for "airplane mode"
cdd75f3 disable share/send feature for this release
cfb0473 remove unneeded view and share intents
adc57ae removed android Debug code
d407f32 update Tor binary version number to ensure upgrade
5b57407 updated classpath for latest eclipse
bebb143 make Orbot just one process
21d1023 fixes for prefs/settings management
303ceb4 updates for building
edd855f new builds of binaries
42b111a updating commit peg for ndk8 fix
179ef6e updated git submodules to public https paths
1bf7bb0 updating version
74fed91 updated jtorctrl built library
515b8ce added new strings resources
bbf8d8a updating string resources from transifex
273e190 updating built binaries
4f9a502 updated Tor repo
86d8c16 updates for new UI and file sharing
8aaa8cb updated process to singletop; rev'd version
700121d add simple external module to ignore path
2ab32fc new preference value updates
b6e2507 UI and flow updates
442216f share service via http hidden service
667fa64 updated for settings return value
3ea016b updates for reading preference settings
c5627f4 cleaned up notification support and added Share service
25a895a updated tor binary version number
c4810d4 added new method for remote server interface for Share service
1576775 closed reader stream
83319c1 added message for when internet is down
63b31cd updated to android 17 target
eb3f95c updated params for tuning, including largeHeap=true
21c2797 support landscape layout and new Share intent
7df2acd cleanup of imports and unclosed streams
ba9b95a new landscape layout for tablets with log view
2b9007e updated to latest libevent and tor repos
fe591d6 updated to latest jar libs
225cd32 tuning of torrc to try to resolve bugs
aaa2ed5 updated built binary to 0.2.4.10-alpha
216a41d adding new HS/onion based file sharing service
1748cb4 added missing path to libevent include
fb0a0fa updated to 0.2.3.25
8023d16 updated locale handling to stop flashing
e2bbe4c proper spelling of Farsi
1.0.11
- Tor updated to 0.2.3.23-RC
- ActionBarSherlock updated to latest release
- libevent2 on 2.2.1-alpha
- added data up/down speed and totals display
- added new "Log" SlideDrawer log display
- added ability to copy logs by touching log (for emailing, debugging)
- fixed iptables Android 4/Jellybean compatible binary detection
- iptables add/delete now on specific rules; no more global FLUSHing
- transproxy ensures that UDP is blocked properly for all or selected apps
- wizard display is centered
- added network connectivity monitor to set Tor's DisableNetwork value
- fixed wizard tips apps recommendations; added DuckGo, Twitter, Firefox Proxymob
- insure that iptables rules are only added once, and that all are cleared
1.0.9
- Tor now updated to 0.2.3.17-beta
- Privoxy updated to 3.0.12
- tweaked layout for smaller screens
- fixed obfsproxy android patch build error
- privoxy: removed lpthread library flag since Android has it built-in
- updated strings; made notify on/off option work again
- added background view; fixed long click;
- removed unneeded landscape custom layout
- updated layout for larger screens
- updated impl of torified apps logic
- improved wizard flow on non-root devices
- removed gcc ssp hardening (not support on Android NDK)
- fixed posix thread option for Privoxy
- added docs folder and readme's
- clarified english strings for hidden srv and proxying
- moved Tor data directory to app_data from cache
- fixed notification persistence handling
- fixed relay/server mode option resolv.conf error
- fixed app list display
1.0.8 (includes 1.0.7.3 and 1.0.7.2)
- new external/Makefile and git submodules
- fixed tor control port cookie file path lookup related to #5305
- updated strings
- adding in manual locale selection
- added obfsproxy binary to res/raw and binary installation process
- added new preferences to support obfsproxy bridge configuration
- upgraded tor binary to 0.2.3.11-alpha
1.0.7
- reduced data folder size by making geoip file only installed on demand
- added options for turning of persistent notification
- enabled access to localhost ports for SOCKS, HTTP, etc even when transproxy is on
- improved handling of tor and privoxy binary upgrades
- updated openssl to 1.0.0f to address recent SSLv3 threat
- check for root mode uses "which su" command and does not look for Superuser.apk
- changed tor binary res/raw storage mechanism to use the "mp3" file ext trick
1.0.6.1
- small fixes to wizard UI
- fixed "exit" problem, after running wizard
1.0.6
- updated tablet layout graphic sizing
- stopped Orweb from being transparent proxied (not needed)
- updated to Tor 0.2.3.7-alpha binary
- geoip database now included for exit/entrace node control
- stopped iptables rule purging if transproxy is not enabled (conflicted with DroidWall and others)
1.0.5.3
- added auto-tor of wireless and usb tethering
- integrated new setup wizard
- moved large tor binary into split multiple 1M segments to fix for devices with 1M resource limit
1.0.5.1/.2
- small updates to layout of main screen to fit smaller screens
- fixed preference setting of EntryNode torrc value
1.0.5
- added exit node and "StrictExitNode" preference
- fixed tor binary installation issue related to max resource size and compression
- updated "start on boot" code to test for proper launch event
- updated to Tor 0.2.2.25-alpha binary
- moved back to single notification bar id to avoid double entries
- cleaned up progress dialog and alert handling to avoid leaky windows
- Merged __sporkbomb's patch for how transproxy all works; now does "everything but Tor"
- Added new toolbar notifications and alerts for displaying notifications and Tor messages
- Removed unused Socks client code from android.net package
- Updated wizard to show link to Gibberbot (formerly OTRchat) chat app
- Bundled iptables 1.4.7 for ARM instead of relying on installed version
- Fixed various issues related to iptables, transproxying for CyanogenMod7/Android 2.3.*
- Changed how settings changed are processed through the control port (batched instead of one by one)
- Stopped app by app flushing of iptables rules, in favor of complete flush of 'nat' and 'filter' type
- removed useless log screen (logs can be viewed/retrieved using 'alogcat' 3rd party app)
1.0.4
- Added Russian, Persian, Arabic and other .po translations (see res/values-* folders)
- Fixed incorrect try to clear iptables rules for non-root devices
- Fixed bug that stopped wizard helper from showing first time
- Added new green notification icon when Tor is connected
- Fixed app selector layout in settings
- Moved minSDK to 4 (Android 1.6); discontinued 1.5 support
- Fixed log screen touch disable tor bug
- Debugged issues around network status change causing FC/crash
- Added "Start on Boot" option
1.0.3
- Fixed spanish language issues with settings screen
- Cleaned up logging, and moved most of it to debug output only
- Small changes to iptables, transproxy settings to handle iptables 1.3 and 1.4 variations
- Added compile time variable/flag for turning on/off detailed control port output to Android stdout
- Hidden services now support through option in settings
- removed double apostrophes from value/strings.xml files
1.0.2
- Added "check" yes/no dialog prompt
- Debugged iptables/transprox settings on Android 1.6 and 2.2
- Added proxy settings help screen and fixed processSettings() NPE
1.0.1
- Found and fixed major bug in per-app trans proxying; list of apps was being cached and iptables rules were not properly updated as the user changed the selection in the list
1.0.0 - 2010-08-10
- Added "Proxy Settings" help screen
- Handle potential null pointers on process settings where service not yet active
0.0.9x - 2010-08-03
- Revised Orbot install wizard
- Integrated Tor 0.2.2.14 and iptables 4.x binary
- Fixed "got root" detection method
- Fixed Per App Torification handling so it updates on exit from Settings screen
0.0.8x - 2010-07-15
- Updated Settings & App configuration screens
- Changed progress dialog display
- Significant application re-arch
- Fixed force stop crash on install
- Integrated Tor 0.2.2.13-alpha-dev binary
- Fixed su shell cmd error handling & root perms issue
- #1570: Added new setup wizard on install to clarify root / non-root capabilities
- #1716: Per-app traffic routing prefs not persisted
- #1509: Help window is too big for the screen on android 1.6
- #1513: Orbot can't be told to exit <-- added 'Exit' menu option
- #1530: Capture sh cmd stout for debugging errors <-- updated debug log screen
- #1531: Don't loop ad infinitum in Orbot fails <-- only retries 3 times now
- #1272: Orbot should store Tor files in the cache
- #1273: Info should mention anonymity problems with ProxySurf
0.0.5x
- #1388: Error parsing PID from output of "ps"
- #1277, #1278: Enabling bridges issues
- #1279: Misleading message when initialization is finished
- #1292: Tor version in About screen is wrong
0.0.3x - 2010-03-15
- Added Start/Stop menu item for non-touch activation
- Improved parsing and validation of settings screen
- UI now compatible with landscape mode (#1276)
- Added relay support for static/publicly accessible IP devices
0.0.3a - 2010-02-07
- Integrated iptables support for transparent proxying of outbound port
80 and DNS
- Privoxy is now used as HTTP Proxy server (cross-compiled to ARM)
- New UI layout and graphics
- Android settings screen for generated torrc file
- Improved performance and error handling
0.0.2a - 2009-11-30
- Update user interface layout and graphics
- Modified service launch, shutdown and handling
- Improved event handler on Tor Control port callbacks
- Added Help page
0.0.2 - 2009-11-27
- Major improvement to the user interface including relative layout for
different screens
- New graphics resources
- Implemented Tor Control Port using official Java library
- Added 'clear' button to the log screen
- Added 'save' and editable textbox for the settings screen
- Moved screen navigation to a pop-up menu
0.0.1-alpha - 2009-10-21
- First code release
- Major Features: Tor binary application is fully operational, UI:
Start/Stop Tor, View Message Log, View Settings (torrc)

40
INSTALL Normal file
View File

@ -0,0 +1,40 @@
Orbot: Android Onion Routing Robot
***********************************************
Android is a freely licensed open-source application developed for the
Android platform. It acts as a front-end to the Tor binary application,
and also provides an HTTP Proxy for connecting web browsers and other
HTTP client applications into the Tor SOCKS interface.
*** PreReqs ***
You need the Android Developer SDK to compile and build the APK file:
http://developer.android.com/
The project files including in this distribution are meant to be used
with Eclipse: http://eclipse.org/
*** How to use ***
Currently, Orbot will work with any application that supports using
an HTTP or SOCKS Proxy. Once you start Tor using Orbot, you can then
point your application to HTTP port 8118 or SOCKS port 9050 on localhost
IP 127.0.0.1.
If you have root access, and a version of Android with iptables that
supports the netfilter owner module, then Orbot can setup transparent
proxying for any application.
Finally, Firefox on Android is available, and we have released an
add-on named ProxyMob for configuring SOCKS proxy settings for use
with the local Tor socks proxy.
** A Few Notes **
To ensure you are connected to the Tor network, you should browse to
https://check.torproject.org/
The first time you activate Orbot, it may take a while to connect to
Tor. Check the message log to ensure you are "100% Bootstrapped".
***********************************************
/* Copyright (c) 2009,2010,2011, Nathan Freitas, The Guardian Project
* http://guardianproject.info/ */

64
LICENSE
View File

@ -41,41 +41,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****
===============================================================================
Orbot includes the Obfs4 pluggable transport:
https://gitweb.torproject.org/pluggable-transports/obfs4.git
Copyright (c) 2014, Yawning Angel <yawning at torproject dot org>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
===============================================================================
*****
*****
Orbot contains a binary distribution of Privoxy (http://www.privoxy.org/)
Copyright © 2001-2010 by Privoxy Developers <ijbswa-developers@lists.sourceforge.net>
@ -193,32 +158,3 @@ is explicitely stated in the header of every file.
The GPL also contains some obligations. If you distribute netfilter/iptables code
in binary form, you have to offer the source code, too.
===============================================================================
===============================================================================
Orbot also includes BadVPN tun2socks: https://github.com/ambrop72/badvpn
Copyright (c) 2009, Ambroz Bizjak <ambrop7@gmail.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the author nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
===============================================================================

36
README
View File

@ -1,28 +1,15 @@
Tor Android
Orbot: Android Onion Routing Robot
***********************************************
This is a project forked from Orbot for building the tor binary for Android
Orbot is a freely licensed open-source application developed for the
Android platform. It acts as a front-end to the Tor binary application,
and also provides an HTTP Proxy for connecting web browsers and other
HTTP client applications into the Tor SOCKS interface.
How to Build
***********************************************
Please see: https://raw.githubusercontent.com/n8fr8/tor-android/master/BUILD
How to Use via Gradle
***********************************************
Add the repository your list as shown:
repositories {
maven { url "https://raw.githubusercontent.com/guardianproject/gpmaven/master" }
}
and then add the dependency, setting it to the latest version (or any version) we have made available, as a release:
dependencies {
compile 'org.torproject:tor-android-binary:0.3.1.9'
}
Orbot is a component of the Guardian Project, an effort to develop
a secure, anonymous smartphone for use by human rights activists, journalists
and others around the world. Learn more: https://guardianproject.info/
***********************************************
Tor protects your privacy on the internet by hiding the connection
@ -34,3 +21,10 @@ Tor Frequently Asked Questions:
https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ
https://www.torproject.org/faq.html.en
***********************************************
/* Copyright (c) 2009-2013, Nathan Freitas, The Guardian Project
* https://guardianproject.info/ */
*****

46
add-proguard-release.xml Normal file
View File

@ -0,0 +1,46 @@
<!-- Proguard Properties -->
<property name="obfuscate.dir" value="obf" />
<property name="obfuscate.absolute.dir" location="${obfuscate.dir}" />
<property name="android-jar-preobfuscate" value="${obfuscate.absolute.dir}/original.jar" />
<property name="android-jar-postobfuscate" value="${obfuscate.absolute.dir}/postobf.jar" />
<property name="out.dex.input.absolute.dir" value="${android-jar-postobfuscate}" />
<!-- replaces the post-compile step from ant_rules_r3 -->
<target name="-post-compile" depends="-dex-obfuscate,-dex-no-obfuscate">
</target>
<target name="-dex-no-obfuscate" unless="build.mode.release">
<mkdir dir="${obfuscate.absolute.dir}" />
<jar basedir="${out.dir}/classes" destfile="${android-jar-postobfuscate}" />
</target>
<!-- Converts this project's .class files into .dex files -->
<target name="-dex-obfuscate" if="build.mode.release">
<property name="proguard-jar" value="${proguard.dir}/proguard.jar" />
<property name="proguard-conf.dir" value="" />
<property name="proguard-conf.absolute.dir" location="${proguard-conf.dir}" />
<property name="proguard-conf" value="${proguard-conf.absolute.dir}/procfg.txt" />
<path id="fullclasspath">
<path refid="android.target.classpath"/>
<pathelement path="${external.libs.dir}"/>
</path>
<property name="libraryjarpath" refid="fullclasspath"/>
<!-- Add Proguard Task -->
<taskdef resource="proguard/ant/task.properties" classpath="${proguard-jar}" />
<mkdir dir="${obfuscate.absolute.dir}" />
<delete file="${android-jar-preobfuscate}"/>
<delete file="${android-jar-postobfuscate}"/>
<jar basedir="${out.classes.dir}" destfile="${android-jar-preobfuscate}" />
<proguard>
@${proguard-conf}
-injars ${android-jar-preobfuscate}
-outjars ${android-jar-postobfuscate}
-libraryjars ${libraryjarpath}
-dump ${obfuscate.absolute.dir}/dump.txt
-printseeds ${obfuscate.absolute.dir}/seeds.txt
-printusage ${obfuscate.absolute.dir}/usage.txt
-printmapping ${obfuscate.absolute.dir}/mapping.txt
</proguard>
</target>

3
bcdroid.manifest Normal file
View File

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Sealed: true

View File

@ -1,17 +0,0 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
}
allprojects {
repositories {
google()
jcenter()
}
}

92
build.xml Normal file
View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="Orbot" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="ant.properties" />
<!-- if sdk.dir was not set from one of the property file, then
get it from the ANDROID_HOME env var.
This must be done before we load project.properties since
the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

45
docs/GSoC.txt Normal file
View File

@ -0,0 +1,45 @@
GSoC Plan
=========
A tl;dr version
---------------
I will be improving the Orbot UI/UX, and adding several features such as data statistics and also
implementing the TorCheck API. I plan on extending the ORLib library and also creating an ORLib enabled
app as a sort of primer for other third party apps to follow
The full version
----------------
Orbot UI/UX
===========
At the moment, the Orbot UI/UX is clustered and not very intuitive. I plan on improving the existing
elements of the UI and also add a variety of new features such as
* A new Set up Wizard ( which checks for iptables )
* Changes to the preferences ( should be made to follow the Android guidelines)
Orbot Core app work
===================
At the moment, Orbot displays a successful connection without actually checking the connection. This is a
pressing issue, because the user is not notified if the set-up has failed, unless he/she manually checks
the torcheck web service. This should be made automatic by making using of the TorCheck API. Also, Orbot
should be configured to show more information about the data being transmitted such as -
* Amount of data transferred
* Quality of the connection
* Number of circuits connected
ORLib
=====
Currently, ORLib is very minimal at the moment, both in term of features and support/documentation. ORLib
is very critical to the use of Orbot as it provides transparent proxying on non-rooted devices ( A major
chunk of android phones are un-rooted). I intend to -
* Improve the existing library by adding additional features
* Check for existing of Orbot
* Check status of connection to Tor
* Provide option to start Orbot via intent
* Request hidden service by port, and get return hidden service .onion address
* Create an ORLib enabled “Twitter, Status.net or other micro blogging Client” A sort of primer for
third-party apps
* Improve the documentation

90
docs/WALKTHROUGH Normal file
View File

@ -0,0 +1,90 @@
.
└── org
└── torproject
└── android
├── AppManager.java
//this is what helps us track the app-by-app torification
//and gets the app name, icon, etc for display - we have some problems here
//in normalizing the icon on the list label
//some of this code came originally from DroidWall project (yay open source)
├── boot
│ └── OnbootBroadcastReceiver.java
//i think this is a dup now and should be removed
├── HiddenServiceManager.java
//empty! but at some point i thought it would be good to aggregate HS functions here
├── OnBootReceiver.java
//this is the class registered in AndroidManifest.xml to handle Onboot events
//to start Orbot/Tor when the device boots if the user has elected to do so - what kind of permissions does this require?
// <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
// BTW, this shows up as a fairly unintrusive type perm request now in Android / in older versions (1.6 and earlier)
// it was reported "as read / monitor phone state" and paranoid Tor-types didn't like the idea of it
// in 1.6+ it has a much better UX in terms of having a more granular permisions around boot since it is a very
// common request - ah , that's awesome, i think i remember seeing sth of this sorts when i was going through the guardianproject mailing list. iirc this is something ioerror wanted
├── Orbot.java
//our wonderful main activity!
├── ProcessSettingsAsyncTask.java
//this was just added in 1.0.5.x, but it was meant to help stop the UI blocking while processing settings and prefs
//it uses the AsyncTask feature of Android, which seems to work pretty well
//for this type of non-time critical function you just want to happen in the background at some point soon-ish
├── SettingsPreferences.java
// Settings activity that loads the res/xml/preferences.xml resource up
// has some custom event handlng, onActivityResult callback result code's as well
// basically meant to tell Orbot activity if critical settings have been modified and whether
// those new settings should be applied (like iptables/transproxy changes)
├── TorConstants.java
// globals! well, constants! but yeah, just a place to put values we use a lot
├── TorifiedApp.java
// object to store a single app's metadata for display in UI and for transproxy process
├── Utils.java
// random methods that can be useful, a.k.a. another place to put stuff
├── WizardActivity.java
// our original attempt at wizard activity that didn't get far
└── WizardHelper.java
// the helper class that manages the dialog based wizard
├── service //okay the Service subpackage!
│ ├── Api.java
//this is more code taken from DroidWall, that needs to be cleaned up and paired down to just what we need it for
//this is related to 1.0.5.x changes with how we bundle and install our C binaries (tor, privoxy and iptables)
│ ├── ITorService.aidl
// the android remote interface definition file;
// this is the remote interface which the Orbot activity gets a reference to
// and that in the TorService is instantiated as the "binder"
│ ├── ITorServiceCallback.aidl
// this is the callback interface that the Orbot activity instantiates, and passes
// to the ITorService; reverse of ITorService in a sense
│ ├── TorBinaryInstaller.java
// this handles installation of binaries; uses Api.java; // tied into Wizard as well
│ ├── TorServiceConstants.java
// reusable constants for just the Service package
│ ├── TorService.java
// the main might powerful service class; Orbot and TorService are the front and backends of this whole app
// should run as a remote service, but the manifest doesn't seem to indicate that at the moment
│ ├── TorServiceUtils.java
//utility methods for the service; specificaly check for root and tools for finding processID of background binaries
│ └── TorTransProxy.java
// all the code for iptables transproxying management

BIN
docs/onionroots.xcf Normal file

Binary file not shown.

BIN
docs/orbotnewicons.xcf Normal file

Binary file not shown.

10
external/.tx/config vendored Normal file
View File

@ -0,0 +1,10 @@
[main]
host = https://www.transifex.com
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: tl-rPH, fil: tl, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, he_IL: he-rIL, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA
[orbot.stringsxml]
file_filter = ../res/values-<lang>/strings.xml
host = https://www.transifex.com
source_file = ../res/values/strings.xml
source_lang = en

1
external/ActionBarSherlock vendored Submodule

@ -0,0 +1 @@
Subproject commit c0d437ce4c47cb344e5d96414ffbf5f1a85c26d0

317
external/Makefile vendored
View File

@ -11,11 +11,6 @@ export ac_cv_func_setpgrp_void=yes
EXTERNAL_ROOT := $(shell pwd)
DEBUG ?= 0
# No-op command.
NOOP = true
# Android now has 64-bit and 32-bit versions of the NDK for GNU/Linux. We
# assume that the build platform uses the appropriate version, otherwise the
# user building this will have to manually set NDK_PROCESSOR or NDK_TOOLCHAIN.
@ -27,50 +22,25 @@ else
endif
# Android NDK setup
ANDROID_NDK_HOME ?= /opt/android-ndk
ANDROID_NDK ?= $(ANDROID_NDK_HOME)
NDK_PLATFORM_LEVEL ?= 16
NDK_TOOLCHAIN_VERSION=4.9
NDK_BASE ?= /opt/android-ndk
NDK_PLATFORM_LEVEL ?= 9
NDK_ABI ?= arm
NDK_TOOLCHAIN_VERSION=4.8
NDK_SYSROOT=$(NDK_BASE)/platforms/android-$(NDK_PLATFORM_LEVEL)/arch-$(NDK_ABI)
APP_ABI ?= armeabi
NDK_ABI ?= $(APP_ABI)
# PIEFLAGS for SDK 16/Android L must be set to -fPIE -pie, but can override for earlier targets
PIEFLAGS ?= -fPIE -pie
ifneq ($(filter arm%, $(APP_ABI)),)
NDK_ABI := arm
endif
ifneq ($(filter arm64%, $(APP_ABI)),)
NDK_ABI := arm64
endif
NDK_SYSROOT=$(ANDROID_NDK_HOME)/platforms/android-$(NDK_PLATFORM_LEVEL)/arch-$(NDK_ABI)
NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]')
ifneq ($(filter mips%, $(NDK_ABI)),)
HOST := $(NDK_ABI)el-linux-android
ifeq ($(NDK_ABI),x86)
HOST = i686-linux-android
NDK_TOOLCHAIN = $(NDK_ABI)-$(NDK_TOOLCHAIN_VERSION)
else
HOST = $(NDK_ABI)-linux-androideabi
NDK_TOOLCHAIN = $(HOST)-$(NDK_TOOLCHAIN_VERSION)
endif
ifneq ($(filter arm64, $(NDK_ABI)),)
HOST := aarch64-linux-android
endif
ifneq ($(filter arm, $(NDK_ABI)),)
HOST := arm-linux-androideabi
endif
ifneq ($(filter x86, $(NDK_ABI)),)
HOST := i686-linux-android
endif
ifneq ($(filter x86_64, $(NDK_ABI)),)
HOST := x86_64-linux-android
endif
NDK_TOOLCHAIN := $(HOST)-$(NDK_TOOLCHAIN_VERSION)
ifneq ($(filter x86%, $(NDK_ABI)),)
NDK_TOOLCHAIN := $(NDK_ABI)-$(NDK_TOOLCHAIN_VERSION)
endif
NDK_TOOLCHAIN_BASE=$(ANDROID_NDK_HOME)/toolchains/$(NDK_TOOLCHAIN)/prebuilt/$(NDK_UNAME)-$(NDK_PROCESSOR)
NDK_TOOLCHAIN_BASE=$(NDK_BASE)/toolchains/$(NDK_TOOLCHAIN)/prebuilt/$(NDK_UNAME)-$(NDK_PROCESSOR)
# include Android's build flags
TARGET_ARCH_ABI = $(APP_ABI)
#include $(ANDROID_NDK_HOME)/toolchains/$(NDK_TOOLCHAIN)/setup.mk
include $(NDK_BASE)/toolchains/$(NDK_TOOLCHAIN)/setup.mk
CC := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-gcc --sysroot=$(NDK_SYSROOT)
CXX := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-g++ --sysroot=$(NDK_SYSROOT)
@ -78,17 +48,13 @@ CPP := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-cpp --sysroot=$(NDK_SYSROOT)
LD := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-ld
AR := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-ar
RANLIB := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-ranlib
STRIP := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-strip \
--strip-unneeded -R .note -R .comment
ifeq ($(DEBUG), 1)
STRIP := $(NOOP)
else
STRIP := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-strip --strip-unneeded -R .note -R .comment --strip-debug
endif
CFLAGS = -DANDROID $(TARGET_CFLAGS)
LDFLAGS = -llog $(TARGET_LDFLAGS)
CFLAGS = -DANDROID $(TARGET_CFLAGS) $(PIEFLAGS)
LDFLAGS = -llog $(TARGET_LDFLAGS) $(PIEFLAGS)
# change 'release' to 'debug' for unoptimized debug builds
ifeq ($(APP_ABI),armeabi-v7a)
CFLAGS += $(TARGET_arm_release_CFLAGS)
@ -97,48 +63,31 @@ ifeq ($(APP_ABI),armeabi)
CFLAGS += $(TARGET_thumb_release_CFLAGS)
endif
.PHONY = clean showsetup \
assets assets-clean \
openssl-static openssl-static-clean \
libevent libevent-clean \
lzma lzma-clean \
zstd zstd-clean \
tor tor-clean
iptables iptables-clean \
tor tor-clean \
liballium liballium-clean \
obfsclient obfsclient-clean \
polipo polipo-clean
all: assets
#------------------------------------------------------------------------------#
# openssl
# Disable rc4 cipher for 64-bit archs, to avoid this link error for tor:
# external/lib/libcrypto.a(e_rc4_hmac_md5.o):e_rc4_hmac_md5.c:function rc4_hmac_md5_cipher: error: undefined reference to 'rc4_md5_enc'
OPENSSL_CONF_FLAG=
ifneq ($(findstring 64, $(NDK_ABI)),)
OPENSSL_CONF_FLAG+=no-rc4
endif
# OpenSSL's 'make depend' fails if _MIPS_SZLONG is not set:
ifneq ($(filter mips%, $(NDK_ABI)),)
ifneq ($(findstring 64, $(NDK_ABI)),)
OPENSSL_CONF_FLAG+=-D_MIPS_SZLONG=64
else
OPENSSL_CONF_FLAG+=-D_MIPS_SZLONG=32 -D__MIPSEL__
endif
endif
lib/libcrypto.a:
cd openssl && \
./Configure android -D__ANDROID_API__=$(NDK_PLATFORM_LEVEL) -DL_ENDIAN $(OPENSSL_CONF_FLAG) && \
make CC="$(CC)" ANDROID_DEV=$(NDK_SYSROOT)/usr depend && \
./Configure android -DL_ENDIAN && \
make CC="$(CC)" ANDROID_DEV=$(NDK_SYSROOT)/usr build_libs
lib/libssl.a:
cp config.sub openssl
cp config.guess openssl
cd openssl && \
./Configure android -D__ANDROID_API__=$(NDK_PLATFORM_LEVEL) -DL_ENDIAN $(OPENSSL_CONF_FLAG) && \
make CC="$(CC)" ANDROID_DEV=$(NDK_SYSROOT)/usr depend && \
./Configure android -DL_ENDIAN && \
make CC="$(CC)" ANDROID_DEV=$(NDK_SYSROOT)/usr build_libs
openssl-build-stamp: lib/libcrypto.a lib/libssl.a
@ -164,10 +113,7 @@ openssl-clean:
libevent/Makefile:
sed -i 's@\(SUBDIRS = . include\) sample test@\1@' libevent/Makefile.am
cp libevent-patch-1 libevent
-cd libevent && \
patch -N -p1 --reject-file=- < libevent-patch-1
##sed -i 's@\(AC_OUTPUT(Makefile include/Makefile\) test/Makefile sample/Makefile)@\1)@' libevent/configure.in
sed -i 's@\(AC_OUTPUT(Makefile include/Makefile\) test/Makefile sample/Makefile)@\1)@' libevent/configure.in
cd libevent && ./autogen.sh
cp config.sub libevent
cp config.guess libevent
@ -193,57 +139,40 @@ libevent-clean:
-rm -f libevent-build-stamp
-cd libevent && \
git clean -fdx
#------------------------------------------------------------------------------#
# lzma
# iptables
xz/Makefile:
cd xz && ./autogen.sh
cp config.sub xz
cp config.guess xz
cd xz && \
CC="$(CC)" CXX="$(CXX)" PKG_CONFIG_PATH="$(EXTERNAL_ROOT)/lib/pkgconfig" AR="$(AR)" RANLIB="$(RANLIB)" CFLAGS="$(CFLAGS) -std=c99" LDFLAGS="$(LDFLAGS)" \
./configure --host=$(HOST) --disable-shared --enable-static --disable-doc --disable-xz --disable-xzdec --disable-lzmadec --disable-lzmainfo --disable-lzma-links --disable-scripts --prefix=$(EXTERNAL_ROOT)
iptables/Makefile:
cp iptables-patch-1 iptables
cp iptables-patch-2 iptables
cp iptables-patch-3 iptables
-cd iptables && \
patch -N -p1 --reject-file=- < iptables-patch-1
-cd iptables && \
patch -N -p1 --reject-file=- < iptables-patch-2
-cd iptables && \
patch -N -p1 --reject-file=- < iptables-patch-3
cd iptables && ./autogen.sh
cp config.sub iptables
cp config.guess iptables
cd iptables && \
CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) -I$(EXTERNAL_ROOT)/include" LDFLAGS="$(LDFLAGS)" \
./configure --host=$(HOST) --disable-shared --enable-static
lzma: lzma-build-stamp
$(MAKE) -C xz install
iptables-build-stamp: iptables/Makefile
$(MAKE) -C iptables
touch iptables-build-stamp
cp iptables/iptables/xtables-multi bin/xtables
lzma-build-stamp: xz/Makefile
touch lzma-build-stamp
iptables: iptables-build-stamp
lzma-clean:
-rm -rf include/lzma
-rm -f include/lzma.h
-rm -f lib/liblzma.a
-rm -f lib/liblzma.la
-rm -f lzma-build-stamp
-cd xz && \
iptables-clean:
-rm -f iptables-build-stamp
-rm bin/xtables
-cd iptables && \
git clean -fdx
#------------------------------------------------------------------------------#
# zstd
zstd: zstd-build-stamp
$(MAKE) -C zstd/lib CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" PREFIX="$(EXTERNAL_ROOT)" libzstd.a-mt
$(MAKE) -C zstd/lib CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" PREFIX="$(EXTERNAL_ROOT)" libzstd.pc
test -d lib || mkdir lib
test -d lib/pkgconfig || mkdir lib/pkgconfig
test -d include || mkdir include
cp zstd/lib/libzstd.a lib
cp zstd/lib/libzstd.pc lib/pkgconfig
cp zstd/lib/zstd.h include
cp zstd/lib/common/zstd_errors.h include
cp zstd/lib/deprecated/zbuff.h include
cp zstd/lib/dictBuilder/zdict.h include
zstd-build-stamp:
touch zstd-build-stamp
zstd-clean:
-rm -f include/zstd.h include/zstd_errors.h include/zbuff.h include/zdict.h
-rm -f lib/libzstd.a
-rm -f lib/pkgconfig/libzstd.pc
-rm -f zstd-build-stamp
-cd zstd && \
git clean -fdx
#------------------------------------------------------------------------------#
# tor
@ -255,20 +184,20 @@ tor/Makefile: tor/configure
cp config.sub tor
cp config.guess tor
cd tor && \
CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) PKG_CONFIG_PATH="$(EXTERNAL_ROOT)/lib/pkgconfig" CFLAGS="$(CFLAGS) -D_FORTIFY_SOURCE=2 -fwrapv -fno-strict-aliasing -fno-strict-overflow" LDFLAGS="$(LDFLAGS)" \
CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) -D_FORTIFY_SOURCE=2 -fPIE -fwrapv -fno-strict-aliasing -fno-strict-overflow" LDFLAGS="$(LDFLAGS)" \
LIBS="-L$(EXTERNAL_ROOT)/lib" CFLAGS="-I$(EXTERNAL_ROOT)/include -I$(EXTERNAL_ROOT)/include/event2" \
./configure \
--host=$(HOST) \
--disable-asciidoc \
--enable-static-libevent --with-libevent-dir=$(EXTERNAL_ROOT) \
--enable-static-openssl --with-openssl-dir=$(EXTERNAL_ROOT) \
--disable-linker-hardening --disable-gcc-hardening --disable-tool-name-check --disable-systemd --disable-module-dirauth
--disable-linker-hardening --disable-gcc-hardening
tor-build-stamp: tor/Makefile
$(MAKE) -C tor all-am
touch tor-build-stamp
tor: lzma zstd libevent openssl tor-build-stamp
tor: libevent openssl tor-build-stamp
test -d bin || mkdir bin
cp tor/src/or/tor bin
@ -277,26 +206,140 @@ tor-clean:
-rm -f tor-build-stamp
-cd tor && \
git clean -fdx
-cd tor && \
git reset HEAD --hard
#------------------------------------------------------------------------------#
#create and clean assets: FYI - tor is stored as a ZIP file with an so extension
#in the libs directly, so it is handled like a shared library for local installation
# liballium
assets: tor
install -d ../tor-android-binary/src/main/libs/$(APP_ABI)
-$(STRIP) bin/tor
-zip ../tor-android-binary/src/main/libs/$(APP_ABI)/tor.so bin/tor
liballium/Makefile:
cd liballium && mkdir m4
cd liballium && ./autogen.sh
cp config.sub liballium
cp config.guess liballium
cd liballium && \
CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS) -I$(EXTERNAL_ROOT)/include" LDFLAGS="$(LDFLAGS)" \
./configure \
--host=$(HOST) \
--disable-shared
liballium-build-stamp: liballium/Makefile
$(MAKE) -C liballium all-am
touch liballium-build-stamp
liballium: liballium-build-stamp
test -d lib || mkdir lib
test -d include || mkdir include
test -d include/allium || mkdir include/allium
cp liballium/.libs/liballium-1.0.a lib
cp liballium/include/* include/allium/
liballium-clean:
-rm -f include/allium
-rm -f lib/liballium-1.0.a
-rm -f liballium-build-stamp
-cd liballium && \
git clean -fdx
#------------------------------------------------------------------------------#
# obfsclient
obfsclient/Makefile:
cd obfsclient && \
./autogen.sh
cp config.sub obfsclient
cp config.guess obfsclient
cd obfsclient && \
CC="$(CC)" CPP="$(CPP)" CXX="$(CXX)" AR="$(AR)" RANLIB=$(RANLIB) \
CFLAGS="$(CFLAGS) -I$(EXTERNAL_ROOT)/include -I$(EXTERNAL_ROOT)/include/event2" \
CPPFLAGS="$(CFLAGS) -D_FORTIFY_SOURCE=2 -fPIE -fwrapv -fno-strict-aliasing -fno-strict-overflow" \
CXXFLAGS="$(CFLAGS) -D_FORTIFY_SOURCE=2 -fPIE -fwrapv -fno-strict-aliasing -fno-strict-overflow -I$(NDK_BASE)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/include -I$(NDK_BASE)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/$(APP_ABI)/include" \
LDFLAGS="$(LDFLAGS)" \
libevent_CFLAGS="-I$(EXTERNAL_ROOT)/include" libevent_LIBS="-L$(EXTERNAL_ROOT)/lib" \
liballium_CFLAGS="-I$(EXTERNAL_ROOT)/include" liballium_LIBS="-L$(EXTERNAL_ROOT)/lib" \
LIBS="-L$(EXTERNAL_ROOT)/lib -levent -lallium-1.0 -L$(NDK_BASE)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/$(APP_ABI)/ -lgnustl_static" \
./configure \
--host=$(HOST) \
--with-openssl=$(EXTERNAL_ROOT)
obfsclient-build-stamp: obfsclient/Makefile
$(MAKE) -C obfsclient
touch obfsclient-build-stamp
obfsclient: openssl libevent liballium obfsclient-build-stamp
test -d bin || mkdir bin
cp obfsclient/obfsclient bin
obfsclient-clean:
-rm -f bin/obfsclient
-rm -f obfsclient-build-stamp
-cd obfsclient && \
git clean -fdx
#------------------------------------------------------------------------------#
# polipo
polipo-build-stamp:
$(MAKE) CC="$(CC)" -C polipo
touch polipo-build-stamp
polipo: polipo-build-stamp
test -d bin || mkdir bin
cp polipo/polipo bin
polipo-clean:
-rm -f bin/polipo
-rm -f polipo-build-stamp
#------------------------------------------------------------------------------#
# JTorControl library
jtorctl/bin/jtorctl.jar:
test -d jtorctl/bin || mkdir jtorctl/bin
cd jtorctl && \
javac -source 1.6 -target 1.6 net/freehaven/tor/control/TorControlConnection.java -d bin
cd jtorctl/bin && \
jar cvf jtorctl.jar *
jtorctl-build-stamp: jtorctl/bin/jtorctl.jar
touch jtorctl-build-stamp
jtorctl: jtorctl-build-stamp
test -d bin || mkdir bin
cp jtorctl/bin/jtorctl.jar bin
jtorctl-clean:
-rm -rf jtorctl/bin
-rm jtorctl-build-stamp
#------------------------------------------------------------------------------#
#create and clean assets: FYI - tor is stored as a ZIP file with an mp3 extension
#in order to stop Android OS (older devices) from trying to compress/decompress it
#this is related to a bug in compression of assets and resources > 1MB
assets: tor polipo jtorctl iptables obfsclient
install bin/jtorctl.jar ../libs
install -d ../res/raw
-$(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-strip --strip-debug bin/polipo
-zip ../res/raw/polipo.mp3 bin/polipo
-$(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-strip --strip-debug bin/obfsclient
-zip ../res/raw/obfsclient.mp3 bin/obfsclient
-$(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-strip --strip-debug bin/tor
-zip ../res/raw/tor.mp3 bin/tor
-$(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-strip --strip-debug bin/xtables
-zip ../res/raw/xtables.mp3 bin/xtables
assets-clean:
-rm ../tor-android-binary/src/main/libs/$(APP_ABI)/tor.so
-rm ../res/raw/polipo.mp3
-rm ../res/raw/obfsclient.mp3
-rm ../res/raw/tor.mp3
-rm ../res/raw/xtables.mp3
-rm ../libs/jtorctl.jar
#------------------------------------------------------------------------------#
# cleanup, cleanup, put the toys away
##clean: openssl-clean libevent-clean tor-clean polipo-clean assets-clean
clean: openssl-clean libevent-clean lzma-clean zstd-clean tor-clean
clean: openssl-clean libevent-clean tor-clean polipo-clean jtorctl-clean liballium-clean obfsclient-clean assets-clean
#------------------------------------------------------------------------------#
# debugging stuff

11
external/appcompat/.classpath vendored Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry exported="true" kind="lib" path="libs/android-support-v4.jar"/>
<classpathentry exported="true" kind="lib" path="libs/android-support-v7-appcompat.jar"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

33
external/appcompat/.project vendored Normal file
View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>android-support-v7-appcompat</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,4 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.source=1.6

20
external/appcompat/AndroidManifest.xml vendored Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v7.appcompat">
<uses-sdk android:minSdkVersion="7"/>
<application />
</manifest>

10
external/appcompat/README.txt vendored Normal file
View File

@ -0,0 +1,10 @@
Library Project including compatibility ActionBar.
This can be used by an Android project to provide
access to ActionBar on applications running on API 7+.
There is technically no source, but the src folder is necessary
to ensure that the build system works. The content is actually
located in libs/android-support-v7-appcompat.jar.
The accompanying resources must also be included in the application.

Binary file not shown.

Binary file not shown.

15
external/appcompat/project.properties vendored Normal file
View File

@ -0,0 +1,15 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-19
android.library=true

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="50%p" android:toYDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="-50%p" android:toYDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0" android:toYDelta="50%p"
android:duration="@android:integer/config_mediumAnimTime"/>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0" android:toYDelta="-50%p"
android:duration="@android:integer/config_mediumAnimTime"/>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/abc_search_url_text_pressed"/>
<item android:state_selected="true" android:color="@color/abc_search_url_text_selected"/>
<item android:color="@color/abc_search_url_text_normal"/> <!-- not selected -->
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 875 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Some files were not shown because too many files have changed in this diff Show More