diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/LICENSE.txt | 25 | ||||
-rw-r--r-- | doc/README.txt | 79 | ||||
-rw-r--r-- | doc/todo.txt | 34 |
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 + |