- Added Bind Address configuration variable.

This commit is contained in:
Juha Heinanen
2019-10-14 11:00:54 +03:00
parent 8963ef284c
commit 5020893450
5 changed files with 63 additions and 1 deletions
@@ -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))
@@ -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<String>, sep: String): String {
var res = ""
for (s in list) {