summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/LICENSE.txt25
-rw-r--r--doc/README.txt79
-rw-r--r--doc/todo.txt34
3 files changed, 138 insertions, 0 deletions
diff --git a/doc/LICENSE.txt b/doc/LICENSE.txt
new file mode 100644
index 00000000..0cfdc19d
--- /dev/null
+++ b/doc/LICENSE.txt
@@ -0,0 +1,25 @@
+License for OpenVPN for Android. Please note that the thirdparty libraries/executables may have other license (OpenVPN, lzo, OpenSSL, Google Breakpad)
+
+Copyright (c) 2012-2013, Arne Schwabe
+ All rights reserved.
+
+If you need a non GPLv2 license of the source please contact me.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+In addition, as a special exception, the copyright holders give
+permission to link the code of portions of this program with the
+OpenSSL library.
+
diff --git a/doc/README.txt b/doc/README.txt
new file mode 100644
index 00000000..2127689a
--- /dev/null
+++ b/doc/README.txt
@@ -0,0 +1,79 @@
+ATTENTION
+================
+Before doing anything please read the first FAQ point in this file, espically if
+you planing to build commercial software from this client. Also make sure you
+understand the licenses of the code. OpenVPN for Android is GPL licensed. You
+_CANNOT_ build a closed sourced custom UI application without acquiring a different
+(paid) license for UI code.
+
+When in doubt mail me about it.
+
+See the file todo.txt for ideas/not yet implemented features (and the bug tracker).
+
+Build instraction:
+
+Disable Google breakcode (WITH_BREAKPAD=0 in jni/Android.mk) or checkout google breakcode
+
+svn co http://google-breakpad.googlecode.com/svn/trunk/ google-breakpad
+
+
+- Install sdk
+- Install ndk (Version r9 is tested and used by me)
+- Make sure that ndk-build is in your build path.
+
+Do cd main;./misc/build-native.(sh|bat) in the root directory of the project.
+After that build the project using "gradle build" (Or use Android Studio).
+The project is converted to gradle and building with Eclipse is no longer supported.
+
+FAQ
+
+Q: Why are you not answering my questions about modifying ics-openvpn/why do not help build my app on top
+ of ics-openvpn? I thought this is open source.
+
+A: There are many people building/wanting to build commercial VPN clients on top of my of my client. These
+ client often do not even honour the license my app or the license of OpenVPN. Even if these modified
+ software does honour the license I don't like doing upaid work/giving advise for free to commerical
+ software developers.
+
+ If you have a legitimate non commerical open source project I will gladly help you but please understand
+ my initial reservations.
+
+
+Q: How is the OpenVPN version different from normal OpenVPN
+
+A: OpenVPN for Android uses a OpenVPN 2.4 master branch + dual stack client patches.
+ A git repository of the OpenVPN source code and changes is under:
+ https://github.com/schwabe/openvpn/tree/ds10
+
+Q: what is minivpn?
+
+A: minivpn is only a executable thats links against libopenvpn which is the normal openvpn build as
+ library. It is done this way so the Android Play/Store apk will treat the library as normal library
+ and update it on updates of the application. Also the application does not need to take care of
+ keeping minivpn up to date because it contains no code. For almost all intents and purposes
+ minivpn + libopenvpn.so is the same as the normal openvpn binary
+
+Q: How to a VPN by name from an external app
+
+A: public class StartOpenVPNActivity extends Activity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main);
+
+ final String EXTRA_NAME = "de.blinkt.openvpn.shortcutProfileName";
+
+ Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
+ shortcutIntent.setClassName("de.blinkt.openvpn", "de.blinkt.openvpn.LaunchVPN");
+ shortcutIntent.putExtra(EXTRA_NAME,"upb ssl");
+ startActivity(shortcutIntent);
+ }
+}
+
+or from the shell:
+
+am start -a android.intent.action.MAIN -n de.blinkt.openvpn/.LaunchVPN -e de.blinkt.openvpn.shortcutProfileName Home
+
+Q: How to control the app from an external app?
+
+A: There is an AIDL interface. See src/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl. See the normal Android documentation how to use AIDL.
diff --git a/doc/todo.txt b/doc/todo.txt
new file mode 100644
index 00000000..25b59a47
--- /dev/null
+++ b/doc/todo.txt
@@ -0,0 +1,34 @@
+Ideas:
+
+- Do cert+key+ca => p12 inside the app, import directly to keystore
+
+- general settings dialog
+ - encryption of profiles
+
+- Give the notification a nice speed bar
+
+- The app https://play.google.com/store/apps/details?id=org.proxydroid
+ has a nice feature: auto connect. Run a profile if a specified
+ network is available (a user defined WIFI profile and/or "WIFI/2G/3G"
+ and/or "WIFI" and/or "2G/3G" - selection of more than one network type
+ is possible)
+
+- Copy/Duplicate an existing profile (to create a new one with nearly
+ exact settings)
+
+- implement an encryption for profiles, so no sensitive data has be stored in plain text
+ - encrypt/decrypt with android private storage key (+no user input required)
+
+ - hibernate when screen off and < 50 kB min
+
+
+Missing configuration options:
+
+Tap support:
+- Actually it is possible to emulate tap with tun device, a minimal implementation would have to do:
+ - generate random mac
+ - strip macs header on receive
+ - append mac header on send
+ - implement arp, possible the most difficult task ...
+ - need to chose right mac of receiver
+