From aef4ce4fb1cde5fda83c02d85b06238a934ab93a Mon Sep 17 00:00:00 2001 From: pacien Date: Mon, 6 Aug 2018 12:16:22 +0200 Subject: Change VPN set-up order --- .../org/pacien/tincapp/service/TincVpnService.kt | 28 +++++++++++----------- 1 file 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() { logger?.info("Starting tinc daemon for network \"$netName\".") if (isConnected()) stopVpn() + val privateKeys = try { + TincConfiguration.fromTincConfiguration(AppPaths.existing(AppPaths.tincConfFile(netName))).let { tincCfg -> + Pair( + TincKeyring.openPrivateKey(tincCfg.ed25519PrivateKeyFile ?: AppPaths.defaultEd25519PrivateKeyFile(netName), passphrase), + TincKeyring.openPrivateKey(tincCfg.privateKeyFile ?: AppPaths.defaultRsaPrivateKeyFile(netName), passphrase)) + } + } catch (e: FileNotFoundException) { + Pair(null, null) + } catch (e: PEMException) { + return reportError(resources.getString(R.string.message_could_not_decrypt_private_keys_format, e.message)) + } catch (e: Exception) { + return reportError(resources.getString(R.string.message_could_not_read_private_key_format, e.defaultMessage()), e) + } + val interfaceCfg = try { VpnInterfaceConfiguration.fromIfaceConfiguration(AppPaths.existing(AppPaths.netConfFile(netName))) } catch (e: FileNotFoundException) { @@ -114,20 +128,6 @@ class TincVpnService : VpnService() { return reportError(resources.getString(R.string.message_could_not_configure_iface, e.defaultMessage()), e) } - val privateKeys = try { - TincConfiguration.fromTincConfiguration(AppPaths.existing(AppPaths.tincConfFile(netName))).let { tincCfg -> - Pair( - TincKeyring.openPrivateKey(tincCfg.ed25519PrivateKeyFile ?: AppPaths.defaultEd25519PrivateKeyFile(netName), passphrase), - TincKeyring.openPrivateKey(tincCfg.privateKeyFile ?: AppPaths.defaultRsaPrivateKeyFile(netName), passphrase)) - } - } catch (e: FileNotFoundException) { - Pair(null, null) - } catch (e: PEMException) { - return reportError(resources.getString(R.string.message_could_not_decrypt_private_keys_format, e.message)) - } catch (e: Exception) { - return reportError(resources.getString(R.string.message_could_not_read_private_key_format, e.defaultMessage()), e) - } - val daemon = Tincd.start(netName, deviceFd.fd, privateKeys.first?.fd, privateKeys.second?.fd) setState(netName, interfaceCfg, deviceFd, daemon) -- cgit v1.2.3