Compare commits

..

2 Commits

Author SHA1 Message Date
Zane Schepke 77cd328a71 fix: config screen edit bug
Fixes a bug where config edit will break configs that have commas because a comma and space are required in tunnel configs

 #42
2023-10-14 01:32:46 -04:00
Zane Schepke 5a1430706b fix: config edit whitespace bug
Closes #42
2023-10-13 23:42:39 -04:00
6 changed files with 29 additions and 25 deletions
+2 -2
View File
@@ -14,8 +14,8 @@ android {
applicationId = "com.zaneschepke.wireguardautotunnel"
minSdk = 26
targetSdk = 34
versionCode = 31100
versionName = "3.1.1"
versionCode = 31300
versionName = "3.1.3"
multiDexEnabled = true
@@ -14,12 +14,12 @@ data class InterfaceProxy(
companion object {
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().trim(),
privateKey = i.keyPair.privateKey.toBase64().trim(),
addresses = i.addresses.joinToString(", ").trim(),
dnsServers = i.dnsServers.joinToString(", ").replace("/", "").trim(),
listenPort = if(i.listenPort.isPresent) i.listenPort.get().toString().trim() else "",
mtu = if(i.mtu.isPresent) i.mtu.get().toString().trim() else ""
)
}
}
@@ -7,16 +7,16 @@ data class PeerProxy(
var preSharedKey : String = "",
var persistentKeepalive : String = "",
var endpoint : String = "",
var allowedIps: String = IPV4_WILDCARD.joinToString(",")
var allowedIps: String = IPV4_WILDCARD.joinToString(", ").trim()
){
companion object {
fun from(peer : Peer) : PeerProxy {
return PeerProxy(
publicKey = peer.publicKey.toBase64(),
preSharedKey = if(peer.preSharedKey.isPresent) peer.preSharedKey.get().toString() else "",
persistentKeepalive = if(peer.persistentKeepalive.isPresent) peer.persistentKeepalive.get().toString() else "",
endpoint = if(peer.endpoint.isPresent) peer.endpoint.get().toString() else "",
allowedIps = peer.allowedIps.joinToString(",")
preSharedKey = if(peer.preSharedKey.isPresent) peer.preSharedKey.get().toBase64().trim() else "",
persistentKeepalive = if(peer.persistentKeepalive.isPresent) peer.persistentKeepalive.get().toString().trim() else "",
endpoint = if(peer.endpoint.isPresent) peer.endpoint.get().toString().trim() else "",
allowedIps = peer.allowedIps.joinToString(", ").trim()
)
}
val IPV4_PUBLIC_NETWORKS = setOf(
@@ -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(
@@ -271,22 +271,22 @@ class ConfigViewModel @Inject constructor(private val application : Application,
fun buildPeerListFromProxyPeers() : List<Peer> {
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.trim())
if (it.publicKey.isNotEmpty()) builder.parsePublicKey(it.publicKey.trim())
if (it.preSharedKey.isNotEmpty()) builder.parsePreSharedKey(it.preSharedKey.trim())
if (it.endpoint.isNotEmpty()) builder.parseEndpoint(it.endpoint.trim())
if (it.persistentKeepalive.isNotEmpty()) builder.parsePersistentKeepalive(it.persistentKeepalive.trim())
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.trim())
builder.parseAddresses(_interface.value.addresses.trim())
builder.parseDnsServers(_interface.value.dnsServers.trim())
if(_interface.value.mtu.isNotEmpty()) builder.parseMtu(_interface.value.mtu.trim())
if(_interface.value.listenPort.isNotEmpty()) builder.parseListenPort(_interface.value.listenPort.trim())
if(isAllApplicationsEnabled()) _checkedPackages.value.clear()
if(_include.value) builder.includeApplications(_checkedPackages.value)
if(!_include.value) builder.excludeApplications(_checkedPackages.value)
@@ -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(