aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
diff options
context:
space:
mode:
authorPacien TRAN-GIRARD2017-06-30 10:21:51 +0200
committerPacien TRAN-GIRARD2017-06-30 10:21:51 +0200
commitc89016e7427defd1f8a095d7aeb30292a42fad92 (patch)
treeaec80e6f501824f966ea727d2f6e102a75e9655f /app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
parent94d77ce43152a4e144417d8d5cfff363f65c904e (diff)
downloadtincapp-c89016e7427defd1f8a095d7aeb30292a42fad92.tar.gz
Conversion to Kotlin
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt49
1 files changed, 49 insertions, 0 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
new file mode 100644
index 0000000..06213df
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
@@ -0,0 +1,49 @@
1package org.pacien.tincapp.service
2
3import android.app.Service
4import android.content.Intent
5import android.net.VpnService
6import org.pacien.tincapp.BuildConfig
7import org.pacien.tincapp.commands.Tinc
8import org.pacien.tincapp.commands.Tincd
9import org.pacien.tincapp.context.AppPaths
10import java.io.IOException
11
12/**
13 * @author pacien
14 */
15class TincVpnService : VpnService() {
16
17 private var netName: String = ""
18
19 override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
20 this.netName = intent.getStringExtra(INTENT_EXTRA_NET_NAME)
21
22 val net = Builder().setSession(this.netName)
23 VpnInterfaceConfigurator.applyConfiguration(net, AppPaths.netConfFile(this, this.netName))
24 applyIgnoringException(net::addDisallowedApplication, BuildConfig.APPLICATION_ID)
25
26 try {
27 Tincd.start(this, this.netName, net.establish().detachFd())
28 } catch (e: IOException) {
29 e.printStackTrace()
30 }
31
32 return Service.START_STICKY
33 }
34
35 override fun onDestroy() {
36 try {
37 Tinc.stop(this, this.netName)
38 } catch (e: IOException) {
39 e.printStackTrace()
40 }
41
42 }
43
44 companion object {
45
46 val INTENT_EXTRA_NET_NAME = "netName"
47 }
48
49}