From 5020893450a595392bf8c3af0e22a6e6c20b0584 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Mon, 14 Oct 2019 11:00:54 +0300 Subject: [PATCH] - Added Bind Address configuration variable. --- .../com/tutpro/baresip/ConfigActivity.kt | 24 +++++++++++++++++++ .../main/kotlin/com/tutpro/baresip/Utils.kt | 9 ++++++- app/src/main/res/layout/activity_config.xml | 20 ++++++++++++++++ app/src/main/res/values-fi/strings.xml | 6 +++++ app/src/main/res/values/strings.xml | 5 ++++ 5 files changed, 63 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt index 1bc08573..48b99228 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt @@ -16,6 +16,7 @@ class ConfigActivity : AppCompatActivity() { internal lateinit var autoStart: CheckBox internal lateinit var listenAddr: EditText + internal lateinit var bindAddr: EditText internal lateinit var preferIPv6: CheckBox internal lateinit var dnsServers: EditText internal lateinit var certificateFile: CheckBox @@ -29,6 +30,7 @@ class ConfigActivity : AppCompatActivity() { private var oldAutoStart = "" private var oldListenAddr = "" + private var oldBindAddr = "" private var oldPreferIPv6 = "" private var oldDnsServers = "" private var oldCertificateFile = false @@ -59,6 +61,11 @@ class ConfigActivity : AppCompatActivity() { oldListenAddr = if (laCv.size == 0) "" else laCv[0] listenAddr.setText(oldListenAddr) + bindAddr = findViewById(R.id.BindAddress) as EditText + val baCv = Config.variable("net_interface") + oldBindAddr = if (baCv.size == 0) "" else baCv[0] + bindAddr.setText(oldBindAddr) + preferIPv6 = findViewById(R.id.PreferIPv6) as CheckBox val piCv = Config.variable("net_prefer_ipv6") oldPreferIPv6 = if (piCv.size == 0) "no" else piCv[0] @@ -177,6 +184,19 @@ class ConfigActivity : AppCompatActivity() { restart = true } + val bindAddr = bindAddr.text.toString().trim() + if (bindAddr != oldBindAddr) { + if ((bindAddr != "") && !Utils.checkIp(bindAddr) && !Utils.checkIfName(bindAddr)) { + Utils.alertView(this, getString(R.string.notice), + "${getString(R.string.invalid_bind_address)}: $bindAddr") + return false + } + Config.remove("net_interface") + if (bindAddr != "") Config.add("net_interface", bindAddr) + save = true + restart = true + } + var preferIPv6String = "no" if (preferIPv6.isChecked) preferIPv6String = "yes" if (oldPreferIPv6 != preferIPv6String) { @@ -375,6 +395,10 @@ class ConfigActivity : AppCompatActivity() { Utils.alertView(this, getString(R.string.listen_address), getString(R.string.listen_address_help)) } + findViewById(R.id.BindAddressTitle) as TextView-> { + Utils.alertView(this, getString(R.string.bind_address), + getString(R.string.bind_address_help)) + } findViewById(R.id.PreferIPv6Title) as TextView-> { Utils.alertView(this, getString(R.string.prefer_ipv6), getString(R.string.prefer_ipv6_help)) diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt index c0a7754a..b5234eef 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt @@ -110,7 +110,7 @@ object Utils { checkIpV6(bracketedIp.substring(1, bracketedIp.length - 2)) } - private fun checkIp(ip: String): Boolean { + fun checkIp(ip: String): Boolean { return checkIpV4(ip) || checkIpV6(ip) } @@ -215,6 +215,13 @@ object Utils { return true } + fun checkIfName(name: String): Boolean { + if ((name.length < 2) || !name.first().isLetter()) return false + for (c in name) + if (!c.isLetterOrDigit()) return false + return true + } + fun implode(list: List, sep: String): String { var res = "" for (s in list) { diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml index 5ebcdb17..d712bd7c 100644 --- a/app/src/main/res/layout/activity_config.xml +++ b/app/src/main/res/layout/activity_config.xml @@ -64,6 +64,26 @@ android:importantForAutofill="no" > + + + + + + Virheellinen kuunteluosoite + Verkko-osoite + Verkkoliitännän nimi tai IP-osoite, + jota baresip käyttää lähdeliitäntänä tai -osoitteena. Normaalisti + tätä ei tarvitse asettaa. + + Virheellinen verkko-osoite Suosi IPv6-protokollaa Jos merkitty, baresip suosii IPv6-protokollaa, mikäli sekä IPv4 että IPv6 ovat käytettävissä. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 82cc9cb8..13e76b4a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -158,6 +158,11 @@ Invalid Listen Address 0.0.0.0:5060 + Bind Address + IP address or name of interface that baresip uses as source + IP address. Usually there is no need to set this. + + Invalid Bind Address Prefer IPv6 Prefer IPv6 if both IPv4 and IPv6 are available. DNS Servers