diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c63ec92..7c30040 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,8 +14,8 @@ android { applicationId = "com.zaneschepke.wireguardautotunnel" minSdk = 26 targetSdk = 34 - versionCode = 31100 - versionName = "3.1.1" + versionCode = 31200 + versionName = "3.1.2" multiDexEnabled = true diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/models/InterfaceProxy.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/models/InterfaceProxy.kt index 47eab5b..3cbd002 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/models/InterfaceProxy.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/models/InterfaceProxy.kt @@ -12,14 +12,15 @@ data class InterfaceProxy( var mtu : String = "", ){ companion object { + private fun String.removeWhiteSpaces() = replace("\\s".toRegex(), "") fun from(i : Interface) : InterfaceProxy { return InterfaceProxy( - publicKey = i.keyPair.publicKey.toBase64(), - privateKey = i.keyPair.privateKey.toBase64(), - addresses = i.addresses.joinToString(","), - dnsServers = i.dnsServers.joinToString(",").replace("/", ""), - listenPort = if(i.listenPort.isPresent) i.listenPort.get().toString() else "", - mtu = if(i.mtu.isPresent) i.mtu.get().toString() else "" + publicKey = i.keyPair.publicKey.toBase64().removeWhiteSpaces(), + privateKey = i.keyPair.privateKey.toBase64().removeWhiteSpaces(), + addresses = i.addresses.joinToString(",").removeWhiteSpaces(), + dnsServers = i.dnsServers.joinToString(",").replace("/", "").removeWhiteSpaces(), + listenPort = if(i.listenPort.isPresent) i.listenPort.get().toString().removeWhiteSpaces() else "", + mtu = if(i.mtu.isPresent) i.mtu.get().toString().removeWhiteSpaces() else "" ) } } diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigScreen.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigScreen.kt index de4c463..ff25946 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigScreen.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigScreen.kt @@ -110,7 +110,9 @@ fun ConfigScreen( val proxyInterface by viewModel.interfaceProxy.collectAsStateWithLifecycle() var showApplicationsDialog by remember { mutableStateOf(false) } val baseTextBoxModifier = Modifier.onFocusChanged { - keyboardController?.hide() + if(WireGuardAutoTunnel.isRunningOnAndroidTv(context)) { + keyboardController?.hide() + } } val keyboardActions = KeyboardActions( diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigViewModel.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigViewModel.kt index 5d68c94..5c41a97 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigViewModel.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/config/ConfigViewModel.kt @@ -271,22 +271,22 @@ class ConfigViewModel @Inject constructor(private val application : Application, fun buildPeerListFromProxyPeers() : List { return _proxyPeers.value.map { val builder = Peer.Builder() - if (it.allowedIps.isNotEmpty()) builder.parseAllowedIPs(it.allowedIps) - if (it.publicKey.isNotEmpty()) builder.parsePublicKey(it.publicKey) - if (it.preSharedKey.isNotEmpty()) builder.parsePreSharedKey(it.preSharedKey) - if (it.endpoint.isNotEmpty()) builder.parseEndpoint(it.endpoint) - if (it.persistentKeepalive.isNotEmpty()) builder.parsePersistentKeepalive(it.persistentKeepalive) + if (it.allowedIps.isNotEmpty()) builder.parseAllowedIPs(it.allowedIps.removeWhiteSpaces()) + if (it.publicKey.isNotEmpty()) builder.parsePublicKey(it.publicKey.removeWhiteSpaces()) + if (it.preSharedKey.isNotEmpty()) builder.parsePreSharedKey(it.preSharedKey.removeWhiteSpaces()) + if (it.endpoint.isNotEmpty()) builder.parseEndpoint(it.endpoint.removeWhiteSpaces()) + if (it.persistentKeepalive.isNotEmpty()) builder.parsePersistentKeepalive(it.persistentKeepalive.removeWhiteSpaces()) builder.build() } } fun buildInterfaceListFromProxyInterface() : Interface { val builder = Interface.Builder() - builder.parsePrivateKey(_interface.value.privateKey) - builder.parseAddresses(_interface.value.addresses) - builder.parseDnsServers(_interface.value.dnsServers) - if(_interface.value.mtu.isNotEmpty()) builder.parseMtu(_interface.value.mtu) - if(_interface.value.listenPort.isNotEmpty()) builder.parseListenPort(_interface.value.listenPort) + builder.parsePrivateKey(_interface.value.privateKey.removeWhiteSpaces()) + builder.parseAddresses(_interface.value.addresses.removeWhiteSpaces()) + builder.parseDnsServers(_interface.value.dnsServers.removeWhiteSpaces()) + if(_interface.value.mtu.isNotEmpty()) builder.parseMtu(_interface.value.mtu.removeWhiteSpaces()) + if(_interface.value.listenPort.isNotEmpty()) builder.parseListenPort(_interface.value.listenPort.removeWhiteSpaces()) if(isAllApplicationsEnabled()) _checkedPackages.value.clear() if(_include.value) builder.includeApplications(_checkedPackages.value) if(!_include.value) builder.excludeApplications(_checkedPackages.value) @@ -397,4 +397,6 @@ class ConfigViewModel @Inject constructor(private val application : Application, onInterfacePublicKeyChange("") } } + + private fun String.removeWhiteSpaces() = replace("\\s".toRegex(), "") } \ No newline at end of file diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/settings/SettingsScreen.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/settings/SettingsScreen.kt index 2274bae..c106cba 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/settings/SettingsScreen.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/settings/SettingsScreen.kt @@ -269,7 +269,9 @@ fun SettingsScreen( onValueChange = { currentText = it }, label = { Text(stringResource(R.string.add_trusted_ssid)) }, modifier = Modifier.padding(start = screenPadding, top = 5.dp).focusRequester(focusRequester).onFocusChanged { - keyboardController?.hide() + if(WireGuardAutoTunnel.isRunningOnAndroidTv(context)) { + keyboardController?.hide() + } }, maxLines = 1, keyboardOptions = KeyboardOptions(