From c89016e7427defd1f8a095d7aeb30292a42fad92 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Fri, 30 Jun 2017 10:21:51 +0200 Subject: Conversion to Kotlin --- .../org/pacien/tincapp/service/TincVpnService.kt | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt (limited to 'app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt') 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 @@ +package org.pacien.tincapp.service + +import android.app.Service +import android.content.Intent +import android.net.VpnService +import org.pacien.tincapp.BuildConfig +import org.pacien.tincapp.commands.Tinc +import org.pacien.tincapp.commands.Tincd +import org.pacien.tincapp.context.AppPaths +import java.io.IOException + +/** + * @author pacien + */ +class TincVpnService : VpnService() { + + private var netName: String = "" + + override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { + this.netName = intent.getStringExtra(INTENT_EXTRA_NET_NAME) + + val net = Builder().setSession(this.netName) + VpnInterfaceConfigurator.applyConfiguration(net, AppPaths.netConfFile(this, this.netName)) + applyIgnoringException(net::addDisallowedApplication, BuildConfig.APPLICATION_ID) + + try { + Tincd.start(this, this.netName, net.establish().detachFd()) + } catch (e: IOException) { + e.printStackTrace() + } + + return Service.START_STICKY + } + + override fun onDestroy() { + try { + Tinc.stop(this, this.netName) + } catch (e: IOException) { + e.printStackTrace() + } + + } + + companion object { + + val INTENT_EXTRA_NET_NAME = "netName" + } + +} -- cgit v1.2.3