diff --git a/app/src/main/kotlin/com/tutpro/baresip/Account.kt b/app/src/main/kotlin/com/tutpro/baresip/Account.kt index 4675f180..80eee037 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Account.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Account.kt @@ -85,15 +85,14 @@ class Account(val accp: String) { if (mediaNat != "") res = res + ";medianat=${mediaNat}" - if (stunServer != "") { - if (!stunServer.startsWith("stun") && !stunServer.startsWith("turn")) - stunServer = "stun:$stunServer" + if (stunServer != "") res += ";stunserver=\"${stunServer}\"" - } - res += ";stunuser=\"${stunUser}\"" + if (stunUser != "") + res += ";stunuser=\"${stunUser}\"" - if (stunPass != "") res += ";stunpass=\"${stunPass}\"" + if (stunPass != "") + res += ";stunpass=\"${stunPass}\"" if (audioCodec.size > 0) { var first = true diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt index 349bb880..080c217e 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt @@ -95,6 +95,16 @@ class AccountActivity : AppCompatActivity() { mediaNatSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { mediaNat = mediaNatKeys[mediaNatVals.indexOf(parent.selectedItem.toString())] + if ((mediaNat == "turn") && stunServer.text.startsWith("stun")) + stunServer.setText("") + else if ((mediaNat == "stun") && + (stunServer.text.startsWith("turn") || (stunServer.text.toString() == ""))) + stunServer.setText(resources.getString(R.string.stun_server_default)) + else if (mediaNat == "") { + stunServer.setText("") + stunUser.setText("") + stunPass.setText("") + } stunServer.isEnabled = mediaNat != "" stunUser.isEnabled = mediaNat != "" stunPass.isEnabled = mediaNat != "" @@ -323,33 +333,32 @@ class AccountActivity : AppCompatActivity() { } } + var newStunServer = stunServer.text.toString().trim() if (mediaNat != "") { - var newStunServer = stunServer.text.toString().trim() - if (newStunServer == "") { - if (mediaNat.startsWith("turn")) { - Utils.alertView(this, getString(R.string.notice), - String.format(getString(R.string.invalid_stun_server), newStunServer)) - return false - } else - newStunServer = resources.getString(R.string.stun_server_default) + if (((mediaNat == "stun") || (mediaNat == "ice")) && (newStunServer == "")) + newStunServer = resources.getString(R.string.stun_server_default) + if (!Utils.checkStunUri(newStunServer) || + ((mediaNat == "turn") && !newStunServer.startsWith("turn"))) { + Utils.alertView(this, getString(R.string.notice), + String.format(getString(R.string.invalid_stun_server), newStunServer)) + return false } - if (acc.stunServer != newStunServer) { - if (!Utils.checkStunUri(newStunServer)) { - Utils.alertView(this, getString(R.string.notice), - String.format(getString(R.string.invalid_stun_server), newStunServer)) - return false - } - if (account_set_stun_uri(acc.accp, newStunServer) == 0) { - acc.stunServer = account_stun_uri(acc.accp) - Log.d("Baresip", "New STUN/TURN server URI is '${acc.stunServer}'") - save = true - } else { - Log.e("Baresip", "Setting of STUN/TURN URI server failed") - } + } + + if (acc.stunServer != newStunServer) { + if (account_set_stun_uri(acc.accp, newStunServer) == 0) { + acc.stunServer = account_stun_uri(acc.accp) + Log.d("Baresip", "New STUN/TURN server URI is '${acc.stunServer}'") + save = true + } else { + Log.e("Baresip", "Setting of STUN/TURN URI server failed") } - val su = stunUser.text.toString().trim() - if (Account.checkAuthUser(su)) { - if (account_set_stun_user(acc.accp, su) == 0) { + } + + val newStunUser = stunUser.text.toString().trim() + if (acc.stunUser != newStunUser) { + if (Account.checkAuthUser(newStunUser)) { + if (account_set_stun_user(acc.accp, newStunUser) == 0) { acc.stunUser = account_stun_user(acc.accp); Log.d("Baresip", "New STUN/TURN user is ${acc.stunUser}") save = true @@ -357,13 +366,16 @@ class AccountActivity : AppCompatActivity() { Log.e("Baresip", "Setting of STUN/TURN user failed") } } else { - Utils.alertView(this, getString(R.string.notice), - String.format(getString(R.string.invalid_stun_username), su)) + Utils.alertView(this, getString(R.string.notice), String.format(getString(R.string.invalid_stun_username), + newStunUser)) return false } - val sp = stunPass.text.toString().trim() - if (sp.isEmpty() || Account.checkAuthPass(sp)) { - if (account_set_stun_pass(acc.accp, sp) == 0) { + } + + val newStunPass = stunPass.text.toString().trim() + if (acc.stunPass != newStunPass) { + if (newStunPass.isEmpty() || Account.checkAuthPass(newStunPass)) { + if (account_set_stun_pass(acc.accp, newStunPass) == 0) { acc.stunPass = account_stun_pass(acc.accp); save = true } else { @@ -371,7 +383,7 @@ class AccountActivity : AppCompatActivity() { } } else { Utils.alertView(this, getString(R.string.notice), - String.format(getString(R.string.invalid_stun_password), sp)) + String.format(getString(R.string.invalid_stun_password), newStunPass)) return false } } diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml index e906fdd0..dd7a4205 100644 --- a/app/src/main/res/layout/activity_account.xml +++ b/app/src/main/res/layout/activity_account.xml @@ -211,11 +211,9 @@ android:layout_height="wrap_content" android:layout_width="fill_parent" android:textSize="18sp" - android:paddingTop="0dp" - android:paddingStart="10dp" - android:paddingEnd="0dp" android:scrollHorizontally="true" android:importantForAutofill="no" + android:hint="@string/stun_server_uri" android:inputType="textEmailAddress" > diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index faf7d411..d3d5268c 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -131,10 +131,11 @@ STUN/TURN-palvelin STUN/TURN-palvelimen muotoa \'kaava:palvelin[:portti]\' - oleva osoite, missä kaava on \'stun\', \'stuns\', \'turn\' tai \'turns\'. STUN-palvelimen + oleva URI, missä kaava on \'stun\', \'stuns\', \'turn\' tai \'turns\'. STUN-palvelimen oletusarvo \'stun:stun.l.google.com:19302\', joka osoittaa Google:n julkiseen STUN-palvelimeen. TURN-palvelimella ei ole oletusarvoa. + STUN/TURN-palvelimen URI Virheellinen STUN/TURN-palvelimen URI \'%1$s\' STUN/TURN-käyttäjätunnus Käyttäjätunnus jos STUN/TURN-palvelin vaatii sellaisen diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a25f7d93..70d01214 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -130,6 +130,7 @@ \'stun:stun.l.google.com:19302\', pointing to public Google STUN server. There is no factory default TURN server. + STUN/TURN Server URI Invalid STUN/TURN Server URI \'%1$s\' stun:stun.l.google.com:19302 STUN/TURN Username