aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacien TRAN-GIRARD2017-07-03 22:52:34 +0200
committerPacien TRAN-GIRARD2017-07-03 22:52:34 +0200
commit862b991d9a10296dc0c419fa93babb11614c3957 (patch)
treea1c3e4ae7e0af7185c19d8df2b5ad1b5900d0afc
parent24dd15ecda923f63ea1c855059f1d3b47bd1cd10 (diff)
downloadtincapp-862b991d9a10296dc0c419fa93babb11614c3957.tar.gz
Only allow one VPN connection at a time
-rw-r--r--app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt31
1 files changed, 17 insertions, 14 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
index 59d9e34..30e2956 100644
--- a/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
+++ b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
@@ -19,28 +19,31 @@ class TincVpnService : VpnService() {
19 private var netName: String? = null 19 private var netName: String? = null
20 20
21 override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { 21 override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
22 netName = intent.getStringExtra(INTENT_EXTRA_NET_NAME)!! 22 startVpn(intent.getStringExtra(INTENT_EXTRA_NET_NAME)!!)
23 return Service.START_STICKY
24 }
23 25
24 val net = Builder().setSession(netName) 26 override fun onDestroy() = try {
25 net.apply(VpnInterfaceConfiguration(AppPaths.netConfFile(netName!!))) 27 Tinc.stop(netName!!)
26 applyIgnoringException(net::addDisallowedApplication, BuildConfig.APPLICATION_ID) 28 } catch (e: IOException) {
29 e.printStackTrace()
30 } finally {
31 netName = null
32 }
27 33
28 try { 34 private fun startVpn(netName: String) {
29 Tincd.start(netName!!, net.establish().detachFd()) 35 if (netName == this.netName) onDestroy()
30 } catch (e: IOException) { 36 this.netName = netName
31 e.printStackTrace()
32 }
33 37
34 return Service.START_STICKY 38 val net = Builder().setSession(netName)
35 } 39 net.apply(VpnInterfaceConfiguration(AppPaths.netConfFile(netName)))
40 applyIgnoringException(net::addDisallowedApplication, BuildConfig.APPLICATION_ID)
36 41
37 override fun onDestroy() {
38 try { 42 try {
39 Tinc.stop(netName!!) 43 Tincd.start(netName, net.establish().detachFd())
40 } catch (e: IOException) { 44 } catch (e: IOException) {
41 e.printStackTrace() 45 e.printStackTrace()
42 } 46 }
43
44 } 47 }
45 48
46 companion object { 49 companion object {