Improved configuration of Account's Media NAT Traversal

This commit is contained in:
Juha Heinanen
2020-11-16 15:44:31 +02:00
parent 78674c5b04
commit 3042337f1b
5 changed files with 51 additions and 40 deletions

View File

@ -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

View File

@ -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
}
}

View File

@ -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" >
</EditText>

View File

@ -131,10 +131,11 @@
</string>
<string name="stun_server">STUN/TURN-palvelin</string>
<string name="stun_server_help">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.
</string>
<string name="stun_server_uri">STUN/TURN-palvelimen URI</string>
<string name="invalid_stun_server">Virheellinen STUN/TURN-palvelimen URI \'%1$s\'</string>
<string name="stun_username">STUN/TURN-käyttäjätunnus</string>
<string name="stun_username_help">Käyttäjätunnus jos STUN/TURN-palvelin vaatii sellaisen</string>

View File

@ -130,6 +130,7 @@
\'stun:stun.l.google.com:19302\', pointing to public Google STUN server. There is no
factory default TURN server.
</string>
<string name="stun_server_uri">STUN/TURN Server URI</string>
<string name="invalid_stun_server">Invalid STUN/TURN Server URI \'%1$s\'</string>
<string name="stun_server_default" translatable="false">stun:stun.l.google.com:19302</string>
<string name="stun_username">STUN/TURN Username</string>