- Added possibility to give transport protocol for account's AoR.

- Do not show account's port or transport protocol except in Account Activity.
This commit is contained in:
Juha Heinanen
2019-11-27 10:55:46 +02:00
parent 1953325087
commit d8b26f9b64
15 changed files with 106 additions and 15 deletions

View File

@ -586,6 +586,22 @@ Java_com_tutpro_baresip_AccountKt_account_1aor(JNIEnv *env, jobject thiz, jstrin
return (*env)->NewStringUTF(env, "");
}
JNIEXPORT jstring JNICALL
Java_com_tutpro_baresip_AccountKt_account_1uri(JNIEnv *env, jobject thiz, jstring javaAcc) {
const char *native_acc = (*env)->GetStringUTFChars(env, javaAcc, 0);
struct account *acc = (struct account *)strtoul(native_acc, NULL, 10);
(*env)->ReleaseStringUTFChars(env, javaAcc, native_acc);
const struct sip_addr *addr = account_laddr(acc);
char uri_buf[512];
int l;
l = re_snprintf(&(uri_buf[0]), 511, "%H", uri_encode, addr->uri);
if (l != -1)
uri_buf[l] = '\0';
else
uri_buf[0] = '\0';
return (*env)->NewStringUTF(env, uri_buf);
}
JNIEXPORT jstring JNICALL
Java_com_tutpro_baresip_AccountKt_account_1auth_1user(JNIEnv *env, jobject thiz, jstring javaAcc) {
const char *native_acc = (*env)->GetStringUTFChars(env, javaAcc, 0);

View File

@ -8,6 +8,7 @@ class Account(val accp: String) {
var displayName = account_display_name(accp)
val aor = account_aor(accp)
val uri = account_uri(accp)
var authUser = account_auth_user(accp)
var authPass = account_auth_pass(accp)
var outbound = ArrayList<String>()
@ -207,12 +208,21 @@ class Account(val accp: String) {
return false
}
fun aor(accp: String): String {
return account_aor(accp)
}
fun uri(accp: String): String {
return account_uri(accp)
}
}
}
external fun account_set_display_name(acc: String, dn: String): Int
external fun account_display_name(acc: String): String
external fun account_aor(acc: String): String
external fun account_uri(acc: String): String
external fun account_auth_user(acc: String): String
external fun account_set_auth_user(acc: String, user: String): Int
external fun account_auth_pass(acc: String): String

View File

@ -16,6 +16,7 @@ class AccountActivity : AppCompatActivity() {
internal lateinit var acc: Account
internal lateinit var ua: UserAgent
internal lateinit var uri: TextView
internal lateinit var displayName: EditText
internal lateinit var aor: String
internal lateinit var authUser: EditText
@ -47,7 +48,10 @@ class AccountActivity : AppCompatActivity() {
uaIndex = UserAgent.findAorIndex(aor)!!
ua = UserAgent.uas()[uaIndex]
setTitle(aor.replace("sip:", ""))
setTitle(aor.split(":")[1])
uri = findViewById(R.id.Uri) as TextView
uri.setText(acc.uri)
displayName = findViewById(R.id.DisplayName) as EditText
displayName.setText(acc.displayName)

View File

@ -22,7 +22,7 @@ class AccountListAdapter(private val cxt: Context, private val rows: ArrayList<A
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val rowView = inflater.inflate(R.layout.account_row, parent, false)
val aorView = rowView.findViewById(R.id.aor) as TextView
aorView.text = row.aor
aorView.text = row.aor.split(":")[0]
aorView.textSize = 20f
aorView.setPadding(6, 6, 0, 6)
aorView.setOnClickListener { _ ->

View File

@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.widget.*
@ -65,10 +66,16 @@ class AccountsActivity : AppCompatActivity() {
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.help -> {
Utils.alertView(this@AccountsActivity, "New Account",
getString(R.string.accounts_help))
}
android.R.id.home -> {
Log.d("Baresip", "Back array was pressed at Accounts")
BaresipService.activities.removeAt(0)
@ -76,10 +83,15 @@ class AccountsActivity : AppCompatActivity() {
setResult(RESULT_OK, i)
finish()
}
}
return true
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.accounts_menu, menu)
return true
}

View File

@ -35,7 +35,7 @@ class CallsActivity : AppCompatActivity() {
account = ua.account
val headerView = findViewById(R.id.account) as TextView
val headerText = "${getString(R.string.account)} ${aor.substringAfter(":")}"
val headerText = "${getString(R.string.account)} ${aor.split(":")[1]}"
headerView.text = headerText
val listView = findViewById(R.id.calls) as ListView

View File

@ -34,7 +34,7 @@ class ChatsActivity: AppCompatActivity() {
BaresipService.activities.add(0, "chats,$aor")
val headerView = findViewById(R.id.account) as TextView
val headerText = "${getString(R.string.account)} ${aor.substringAfter(":")}"
val headerText = "${getString(R.string.account)} ${aor.split(":")[1]}"
headerView.text = headerText
uaMessages = uaMessages(aor)

View File

@ -26,7 +26,7 @@ class UaSpinnerAdapter(private val cxt: Context, private val uas: ArrayList<User
val inflater = cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val row = inflater.inflate(R.layout.account_spinner, parent, false)
val textView = row.findViewById(R.id.spinnerText) as TextView
textView.text = uas[position].account.aor.replace("sip:", "")
textView.text = uas[position].account.aor.split(":")[1]
textView.textSize = 17f
val imageView = row.findViewById(R.id.spinnerImage) as ImageView
imageView.setImageResource(images[position])

View File

@ -97,12 +97,23 @@ object Utils {
}
fun checkAor(aor: String): Boolean {
val parts = aor.split(":")
if (parts.size == 1)
return checkUriUser(aorUser(aor)) && checkDomain(aorDomain(aor))
val p = aor.split(":")
if (p.size == 2)
return checkUriUser(aorUser(p[0])) && checkDomain(aorDomain(p[0])) &&
checkPortTransport(p[1])
val t = aor.split(";transport=")
if (t.size == 2)
return checkUriUser(aorUser(t[0])) && checkDomain(aorDomain(t[0])) &&
t[1] in arrayOf("udp", "tcp", "tls")
return checkUriUser(aorUser(aor)) && checkDomain(aorDomain(aor))
}
private fun checkPortTransport(portTransport: String): Boolean {
val pt = portTransport.split(";transport=")
if (pt.count() == 1)
return checkPort(pt[0])
else
return checkUriUser(aorUser(parts[0])) && checkDomain(aorDomain(parts[0])) &&
checkPort(parts[1])
return checkPort(pt[0]) && pt[1] in arrayOf("udp", "tcp", "tls")
}
private fun checkE164Number(no: String): Boolean {

View File

@ -16,6 +16,17 @@
android:paddingBottom="24dp"
android:focusableInTouchMode="true" >
<TextView
android:id="@+id/Uri"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="18sp"
android:textColor="@android:color/black"
android:paddingBottom="10dp"
android:text="" >
</TextView>
<TextView
android:id="@+id/DisplayNameTitle"
android:layout_width="wrap_content"

View File

@ -30,6 +30,7 @@
android:layout_toStartOf="@+id/addAccount"
android:inputType="textEmailAddress"
android:autofillHints="username"
android:scrollHorizontally="true"
android:hint="@string/user_domain" >
</EditText>

View File

@ -0,0 +1,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/help"
android:title="@string/help" />
</menu>

View File

@ -104,8 +104,16 @@
</string>
<!-- Accounts Activity -->
<string name="accounts">Tilit</string>
<string name="user_domain">käyttäjä@domain[:portti]</string>
<string name="invalid_aor">Virheellinen käyttäjä@domain[:portti] \'%1$s\'</string>
<string name="accounts_help">Valinnaisesti voidaan uutta tiliä luotaessa antaa myös porttinumero
ja tiedonsiirtoprokolla: käyttäjä@domain[:portti][;transport=udp|tcp|tls]. Jos portti on
annettu, mutta protolollaa ei ole annettu, protokolla on udp. Jos porttia ei ole annettu,
mutta protokolla on annettu, portti on joko 5060 tai 5061 (tls). Jos kumpaakaan ei ole
annettu eikä välityspalvelinta ole määritelty, tilin mahdollinen rekisteröintipalvelin
päätellään pelkästään domainin DNS-informaation perusteella.
</string>
<string name="user_domain">käyttäjä@domain</string>
<string name="invalid_aor">Virheellinen käyttäjä@domain[:portti][;transport=udp|tcp|tls] \'%1$s\'
</string>
<string name="account_exists">Tili \'%1$s\' on jo olemassa.</string>
<string name="account_allocation_failure">"Uuden tilin luonti
epäonnistui.
@ -262,6 +270,8 @@
<string name="send">Lähetä</string>
<string name="status">Tila</string>
<string name="error">Virhe</string>
<string name="help">Apua</string>
<!-- Main Activity -->
<string name="backup">Tallenna</string>
<string name="restore">Palauta</string>

View File

@ -98,8 +98,15 @@
<!-- Accounts Activity -->
<string name="accounts">Accounts</string>
<string name="user_domain">user@domain[:port]</string>
<string name="invalid_aor">Invalid user@domain[:port] \'%1$s\'</string>
<string name="accounts_help">Account\'s port number and transport protocol may be optionally
given when a new account is created: username@domain[:port][;transport=udp|tcp|tls]. If port
is given and transport protocol is not given, transport protocol defaults to udp. If port is
not given and transport protocol is given, port defaults to 5060 or 5061 (tls). If neither
is given and no outbound proxy is specified, account\'s registrar (if any) is determined
solely based on domain\'s DNS information.
</string>
<string name="user_domain">user@domain</string>
<string name="invalid_aor">Invalid user@domain[:port][;transport=udp|tcp|tls] \'%1$s\'</string>
<string name="account_exists">Account \'%1$s\' already exists.</string>
<string name="account_allocation_failure">"Failed to allocate new account.</string>
<string name="encrypt_password">Encrypt Password</string>
@ -246,6 +253,7 @@
<string name="send">Send</string>
<string name="status">Status</string>
<string name="error">Error</string>
<string name="help">Help</string>
<string name="dots" translatable="false"></string>
<!-- Main Activity -->

View File

@ -0,0 +1,2 @@
- Added possibility to give transport protocol for account's AoR.
- Do not show account's port or transport protocol except in Account Activity.