aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt28
1 files changed, 14 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 25eb897..e499e84 100644
--- a/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
+++ b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt
@@ -91,6 +91,20 @@ class TincVpnService : VpnService() {
91 logger?.info("Starting tinc daemon for network \"$netName\".") 91 logger?.info("Starting tinc daemon for network \"$netName\".")
92 if (isConnected()) stopVpn() 92 if (isConnected()) stopVpn()
93 93
94 val privateKeys = try {
95 TincConfiguration.fromTincConfiguration(AppPaths.existing(AppPaths.tincConfFile(netName))).let { tincCfg ->
96 Pair(
97 TincKeyring.openPrivateKey(tincCfg.ed25519PrivateKeyFile ?: AppPaths.defaultEd25519PrivateKeyFile(netName), passphrase),
98 TincKeyring.openPrivateKey(tincCfg.privateKeyFile ?: AppPaths.defaultRsaPrivateKeyFile(netName), passphrase))
99 }
100 } catch (e: FileNotFoundException) {
101 Pair(null, null)
102 } catch (e: PEMException) {
103 return reportError(resources.getString(R.string.message_could_not_decrypt_private_keys_format, e.message))
104 } catch (e: Exception) {
105 return reportError(resources.getString(R.string.message_could_not_read_private_key_format, e.defaultMessage()), e)
106 }
107
94 val interfaceCfg = try { 108 val interfaceCfg = try {
95 VpnInterfaceConfiguration.fromIfaceConfiguration(AppPaths.existing(AppPaths.netConfFile(netName))) 109 VpnInterfaceConfiguration.fromIfaceConfiguration(AppPaths.existing(AppPaths.netConfFile(netName)))
96 } catch (e: FileNotFoundException) { 110 } catch (e: FileNotFoundException) {
@@ -114,20 +128,6 @@ class TincVpnService : VpnService() {
114 return reportError(resources.getString(R.string.message_could_not_configure_iface, e.defaultMessage()), e) 128 return reportError(resources.getString(R.string.message_could_not_configure_iface, e.defaultMessage()), e)
115 } 129 }
116 130
117 val privateKeys = try {
118 TincConfiguration.fromTincConfiguration(AppPaths.existing(AppPaths.tincConfFile(netName))).let { tincCfg ->
119 Pair(
120 TincKeyring.openPrivateKey(tincCfg.ed25519PrivateKeyFile ?: AppPaths.defaultEd25519PrivateKeyFile(netName), passphrase),
121 TincKeyring.openPrivateKey(tincCfg.privateKeyFile ?: AppPaths.defaultRsaPrivateKeyFile(netName), passphrase))
122 }
123 } catch (e: FileNotFoundException) {
124 Pair(null, null)
125 } catch (e: PEMException) {
126 return reportError(resources.getString(R.string.message_could_not_decrypt_private_keys_format, e.message))
127 } catch (e: Exception) {
128 return reportError(resources.getString(R.string.message_could_not_read_private_key_format, e.defaultMessage()), e)
129 }
130
131 val daemon = Tincd.start(netName, deviceFd.fd, privateKeys.first?.fd, privateKeys.second?.fd) 131 val daemon = Tincd.start(netName, deviceFd.fd, privateKeys.first?.fd, privateKeys.second?.fd)
132 setState(netName, interfaceCfg, deviceFd, daemon) 132 setState(netName, interfaceCfg, deviceFd, daemon)
133 133