{"id":13438745,"url":"https://github.com/schwabe/ics-openvpn","last_synced_at":"2026-01-07T12:15:37.495Z","repository":{"id":28992333,"uuid":"32519119","full_name":"schwabe/ics-openvpn","owner":"schwabe","description":"OpenVPN for Android","archived":false,"fork":false,"pushed_at":"2025-04-26T18:59:25.000Z","size":54080,"stargazers_count":3522,"open_issues_count":41,"forks_count":1220,"subscribers_count":222,"default_branch":"master","last_synced_at":"2025-04-27T05:00:04.800Z","etag":null,"topics":["android","openvpn"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schwabe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-03-19T12:09:36.000Z","updated_at":"2025-04-27T03:58:45.000Z","dependencies_parsed_at":"2023-10-10T21:25:41.845Z","dependency_job_id":"33a28b2e-fc4c-491a-aa02-023009df6618","html_url":"https://github.com/schwabe/ics-openvpn","commit_stats":null,"previous_names":[],"tags_count":210,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwabe%2Fics-openvpn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwabe%2Fics-openvpn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwabe%2Fics-openvpn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schwabe%2Fics-openvpn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schwabe","download_url":"https://codeload.github.com/schwabe/ics-openvpn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251089620,"owners_count":21534523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","openvpn"],"created_at":"2024-07-31T03:01:08.079Z","updated_at":"2026-01-07T12:15:37.490Z","avatar_url":"https://github.com/schwabe.png","language":"C","funding_links":["https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS\u0026cmd=_s-xclick"],"categories":["C","網路連線","Apps"],"sub_categories":["VPN"],"readme":"OpenVPN for Android\n=============\n![build status](https://github.com/schwabe/ics-openvpn/actions/workflows/build.yaml/badge.svg)\n\nNote to other developers \n------------------------\nThis is a spare time project that I work on my own time and pick to work what I want.\nYou are free use the source code of this app with the conditions (GPL) that are attached to it\nbut do not expect any support or anything that I do not feel like to provide. \n\nThe goal of this project is about providing an open-source OpenVPN app for Android. It is \nNOT about creating a library to be used in other projects.\n\nIf you build something on top of this is app you MUST publish your source code according to\nthe license of this app (GPL).\n\nThis not personal against other developers or your software and projects. The reason that I am not \nhelping or spending time to really into issues that are not part of this app itself  is that this \nis just a spare time project of mine. The number of apps that use my code is quite large and\nthe majority of them violates the license of my app. People create new apps that do not publish \ntheir source code.\n\nI am just not willing to be the unpaid support for other people trying to make money of my code \nfor free anymore. That is just not something I want to do in my spare time, so I tend to close\nthese tickets quite quickly. \n\nWhen the project started, I tried to help people but most people were just taking advantage of me \nand promises about open sourcing their app when they were finished were not fulfilled and \nI was just often ghosted when asking for the promises. Some people had even the audacity to \ncome then back a year or two later and demand help with critical bug fixes when their app broke\nwith some newer Android versions. Over the time, I simply lost confidence in people that were \nhesitant to share their source code and play with open cards.\n\nThat being said, I am happy to work together with people that are have are reproducing bugs in\nthis app that they observed in their open-sourced fork to improve this app. \n\nDescription\n------------\nWith the new VPNService of Android API level 14+ (Ice Cream Sandwich) it is possible to create a VPN service that does not need root access. This project is a port of OpenVPN.\n\n\u003ca href=\"https://f-droid.org/repository/browse/?fdid=de.blinkt.openvpn\" target=\"_blank\"\u003e\n\u003cimg src=\"https://f-droid.org/badge/get-it-on.png\" alt=\"Get it on F-Droid\" height=\"80\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://play.google.com/store/apps/details?id=de.blinkt.openvpn\" target=\"_blank\"\u003e\n\u003cimg src=\"https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png\" alt=\"Get it on Google Play\" height=\"80\"/\u003e\u003c/a\u003e\n\nCode Transparency\n-----------------\nFingerprint of the code transparency key used to be able to verify that\napks generated by the Play are not modified (https://developer.android.com/guide/app-bundle/code-transparency): \n\n    19 62 43 6C 96 B4 9D 12 75 83 B1 22 DA 14 F4 5D 2B 78 5D A4 13 1F 04 BE 73 A0 88 32 15 59 18 8D\n\nFull signing certificate (also under misc/code-transparency.pem):\n\n    -----BEGIN CERTIFICATE-----\n    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\n    -----END CERTIFICATE-----\n\n\nDeveloping\n---------------\nIf you want to develop on ics-openvpn please read the [doc/README.txt](https://github.com/schwabe/ics-openvpn/blob/master/doc/README.txt) *before* opening issues or emailing me. \n\nAlso please note that before contributing to the project that I would like to retain my ability to relicense the project for different third parties and therefore probably need a contributer's agreement from any contributing party. To get started, [sign the Contributor License Agreement](https://www.clahub.com/agreements/schwabe/ics-openvpn).\n\nYou can help\n------------\nEven if you are no programmer you can help by translating the OpenVPN client into your native language. [Crowdin provides a free service for non commercial open source projects](https://crowdin.net/project/ics-openvpn/invite) (Fixing/completing existing translations is very welcome as well)\n\nFAQ\n-----\nYou can find the FAQ here (same as in app): https://ics-openvpn.blinkt.de/FAQ.html\n\nControlling from external apps\n------------------------------\n\nThere is the AIDL API for real controlling (see developing section). Due to high demand also \nacitvies to start/stop, pause/resume (like a user would with the notification)  exists\n  \n - `de.blinkt.openvpn.api.DisconnectVPN`\n - `de.blinkt.openvpn.api.ConnectVPN`\n - `de.blinkt.openvpn.api.PauseVPN`\n - `de.blinkt.openvpn.api.ResumeVPN`\n\nThey use `de.blinkt.openvpn.api.profileName` as extra for the name of the VPN profile.\n\nYou can use `adb` to to test these intents:\n\n    adb -d shell am start -a android.intent.action.MAIN -n de.blinkt.openvpn/.api.ConnectVPN --es de.blinkt.openvpn.api.profileName myvpnprofile\n\n\nNote to administrators\n------------------------\n\nYou make your life and that of your users easier if you embed the certificates into the .ovpn file. You or the users can mail the .ovpn as a attachment to the phone and directly import and use it. Also downloading and importing the file works. The MIME Type should be application/x-openvpn-profile. \n\nInline files are supported since OpenVPN 2.1rc1 and documented in the  [OpenVPN 2.3 man page](https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage) (under INLINE FILE SUPPORT) \n\n(Using inline certifaces can also make your life on non-Android platforms easier since you only have one file.)\n\nFor example `ca mycafile.pem` becomes\n```\n  \u003cca\u003e\n  -----BEGIN CERTIFICATE-----\n  MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n  [...]\n  -----END CERTIFICATE-----\n  \u003c/ca\u003e\n```\n\nMinimal UI mode/Managed configuration\n-------------------------------------\nThe app allows configuration via configuration that is provided by a central device management. See\nthe [app_restrictions.xml](main/src/main/res/xml/app_restrictions.xml) for the available options to \nconfigure app behaviour and configuration profiles.\n\nOne particular thing that can be enabled is the minimal mode that restricts the app to a single default\nVPN Profile:\n\n![Screenshot of minimal mode](misc/minimal_ui_mode.png)\n\nFootnotes\n-----------\nPlease note that OpenVPN used by this project is under GPLv2. \n\nIf you cannot or do not want to use the Play Store you can [download the apk files directly](http://plai.de/android/).\n\nIf you want to donate you can donate to [arne-paypal@rfc2549.org via paypal](https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS\u0026cmd=_s-xclick), or alternatively if you believe in fancy Internet money you can use Bitcoin: 1EVWVqpVQFhoFE6gKaqSkfvSNdmLAjcQ9z \n\nThe old official or main repository was a Mercurial (hg) repository at http://code.google.com/p/ics-openvpn/source/\n\nThe new Git repository is now at GitHub under https://github.com/schwabe/ics-openvpn\n\nPlease read the doc/README before asking questions or starting development.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschwabe%2Fics-openvpn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschwabe%2Fics-openvpn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschwabe%2Fics-openvpn/lists"}