From 2495d8032eb6839a55080b79ac818383c2f75b79 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Fri, 5 May 2017 01:02:16 +0200 Subject: Import unversioned prototype --- .../org/pacien/tincapp/service/TincVpnService.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 app/src/main/java/org/pacien/tincapp/service/TincVpnService.java (limited to 'app/src/main/java/org/pacien/tincapp/service/TincVpnService.java') diff --git a/app/src/main/java/org/pacien/tincapp/service/TincVpnService.java b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.java new file mode 100644 index 0000000..1a6f58f --- /dev/null +++ b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.java @@ -0,0 +1,51 @@ +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; + +import static org.pacien.tincapp.util.Function.applyIgnoringExcept; + +/** + * @author pacien + */ +public class TincVpnService extends VpnService { + + static final public String INTENT_EXTRA_NET_NAME = "netName"; + + private String netName; + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + this.netName = intent.getStringExtra(INTENT_EXTRA_NET_NAME); + + Builder net = new Builder().setSession(this.netName); + VpnInterfaceConfigurator.applyConfiguration(net, AppPaths.netConfFile(this, this.netName)); + applyIgnoringExcept(net::addDisallowedApplication, BuildConfig.APPLICATION_ID); + + try { + Tincd.start(this, this.netName, net.establish().detachFd()); + } catch (IOException e) { + e.printStackTrace(); + } + + return Service.START_STICKY; + } + + @Override + public void onDestroy() { + try { + Tinc.stop(this, this.netName); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} -- cgit v1.2.3