- 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:
@ -586,6 +586,22 @@ Java_com_tutpro_baresip_AccountKt_account_1aor(JNIEnv *env, jobject thiz, jstrin
|
|||||||
return (*env)->NewStringUTF(env, "");
|
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
|
JNIEXPORT jstring JNICALL
|
||||||
Java_com_tutpro_baresip_AccountKt_account_1auth_1user(JNIEnv *env, jobject thiz, jstring javaAcc) {
|
Java_com_tutpro_baresip_AccountKt_account_1auth_1user(JNIEnv *env, jobject thiz, jstring javaAcc) {
|
||||||
const char *native_acc = (*env)->GetStringUTFChars(env, javaAcc, 0);
|
const char *native_acc = (*env)->GetStringUTFChars(env, javaAcc, 0);
|
||||||
|
|||||||
@ -8,6 +8,7 @@ class Account(val accp: String) {
|
|||||||
|
|
||||||
var displayName = account_display_name(accp)
|
var displayName = account_display_name(accp)
|
||||||
val aor = account_aor(accp)
|
val aor = account_aor(accp)
|
||||||
|
val uri = account_uri(accp)
|
||||||
var authUser = account_auth_user(accp)
|
var authUser = account_auth_user(accp)
|
||||||
var authPass = account_auth_pass(accp)
|
var authPass = account_auth_pass(accp)
|
||||||
var outbound = ArrayList<String>()
|
var outbound = ArrayList<String>()
|
||||||
@ -207,12 +208,21 @@ class Account(val accp: String) {
|
|||||||
return false
|
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_set_display_name(acc: String, dn: String): Int
|
||||||
external fun account_display_name(acc: String): String
|
external fun account_display_name(acc: String): String
|
||||||
external fun account_aor(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_auth_user(acc: String): String
|
||||||
external fun account_set_auth_user(acc: String, user: String): Int
|
external fun account_set_auth_user(acc: String, user: String): Int
|
||||||
external fun account_auth_pass(acc: String): String
|
external fun account_auth_pass(acc: String): String
|
||||||
|
|||||||
@ -16,6 +16,7 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
internal lateinit var acc: Account
|
internal lateinit var acc: Account
|
||||||
internal lateinit var ua: UserAgent
|
internal lateinit var ua: UserAgent
|
||||||
|
internal lateinit var uri: TextView
|
||||||
internal lateinit var displayName: EditText
|
internal lateinit var displayName: EditText
|
||||||
internal lateinit var aor: String
|
internal lateinit var aor: String
|
||||||
internal lateinit var authUser: EditText
|
internal lateinit var authUser: EditText
|
||||||
@ -47,7 +48,10 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
uaIndex = UserAgent.findAorIndex(aor)!!
|
uaIndex = UserAgent.findAorIndex(aor)!!
|
||||||
ua = UserAgent.uas()[uaIndex]
|
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 = findViewById(R.id.DisplayName) as EditText
|
||||||
displayName.setText(acc.displayName)
|
displayName.setText(acc.displayName)
|
||||||
|
|||||||
@ -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 inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||||
val rowView = inflater.inflate(R.layout.account_row, parent, false)
|
val rowView = inflater.inflate(R.layout.account_row, parent, false)
|
||||||
val aorView = rowView.findViewById(R.id.aor) as TextView
|
val aorView = rowView.findViewById(R.id.aor) as TextView
|
||||||
aorView.text = row.aor
|
aorView.text = row.aor.split(":")[0]
|
||||||
aorView.textSize = 20f
|
aorView.textSize = 20f
|
||||||
aorView.setPadding(6, 6, 0, 6)
|
aorView.setPadding(6, 6, 0, 6)
|
||||||
aorView.setOnClickListener { _ ->
|
aorView.setOnClickListener { _ ->
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import android.app.Activity
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v7.app.AppCompatActivity
|
import android.support.v7.app.AppCompatActivity
|
||||||
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
|
|
||||||
@ -65,10 +66,16 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
|
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
|
||||||
|
R.id.help -> {
|
||||||
|
Utils.alertView(this@AccountsActivity, "New Account",
|
||||||
|
getString(R.string.accounts_help))
|
||||||
|
}
|
||||||
|
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
Log.d("Baresip", "Back array was pressed at Accounts")
|
Log.d("Baresip", "Back array was pressed at Accounts")
|
||||||
BaresipService.activities.removeAt(0)
|
BaresipService.activities.removeAt(0)
|
||||||
@ -76,10 +83,15 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
setResult(RESULT_OK, i)
|
setResult(RESULT_OK, i)
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
|
||||||
|
menuInflater.inflate(R.menu.accounts_menu, menu)
|
||||||
|
return true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,7 @@ class CallsActivity : AppCompatActivity() {
|
|||||||
account = ua.account
|
account = ua.account
|
||||||
|
|
||||||
val headerView = findViewById(R.id.account) as TextView
|
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
|
headerView.text = headerText
|
||||||
|
|
||||||
val listView = findViewById(R.id.calls) as ListView
|
val listView = findViewById(R.id.calls) as ListView
|
||||||
|
|||||||
@ -34,7 +34,7 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
BaresipService.activities.add(0, "chats,$aor")
|
BaresipService.activities.add(0, "chats,$aor")
|
||||||
|
|
||||||
val headerView = findViewById(R.id.account) as TextView
|
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
|
headerView.text = headerText
|
||||||
|
|
||||||
uaMessages = uaMessages(aor)
|
uaMessages = uaMessages(aor)
|
||||||
|
|||||||
@ -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 inflater = cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||||
val row = inflater.inflate(R.layout.account_spinner, parent, false)
|
val row = inflater.inflate(R.layout.account_spinner, parent, false)
|
||||||
val textView = row.findViewById(R.id.spinnerText) as TextView
|
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
|
textView.textSize = 17f
|
||||||
val imageView = row.findViewById(R.id.spinnerImage) as ImageView
|
val imageView = row.findViewById(R.id.spinnerImage) as ImageView
|
||||||
imageView.setImageResource(images[position])
|
imageView.setImageResource(images[position])
|
||||||
|
|||||||
@ -97,12 +97,23 @@ object Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun checkAor(aor: String): Boolean {
|
fun checkAor(aor: String): Boolean {
|
||||||
val parts = aor.split(":")
|
val p = aor.split(":")
|
||||||
if (parts.size == 1)
|
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))
|
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
|
else
|
||||||
return checkUriUser(aorUser(parts[0])) && checkDomain(aorDomain(parts[0])) &&
|
return checkPort(pt[0]) && pt[1] in arrayOf("udp", "tcp", "tls")
|
||||||
checkPort(parts[1])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkE164Number(no: String): Boolean {
|
private fun checkE164Number(no: String): Boolean {
|
||||||
|
|||||||
@ -16,6 +16,17 @@
|
|||||||
android:paddingBottom="24dp"
|
android:paddingBottom="24dp"
|
||||||
android:focusableInTouchMode="true" >
|
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
|
<TextView
|
||||||
android:id="@+id/DisplayNameTitle"
|
android:id="@+id/DisplayNameTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
android:layout_toStartOf="@+id/addAccount"
|
android:layout_toStartOf="@+id/addAccount"
|
||||||
android:inputType="textEmailAddress"
|
android:inputType="textEmailAddress"
|
||||||
android:autofillHints="username"
|
android:autofillHints="username"
|
||||||
|
android:scrollHorizontally="true"
|
||||||
android:hint="@string/user_domain" >
|
android:hint="@string/user_domain" >
|
||||||
</EditText>
|
</EditText>
|
||||||
|
|
||||||
|
|||||||
6
app/src/main/res/menu/accounts_menu.xml
Normal file
6
app/src/main/res/menu/accounts_menu.xml
Normal 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>
|
||||||
@ -104,8 +104,16 @@
|
|||||||
</string>
|
</string>
|
||||||
<!-- Accounts Activity -->
|
<!-- Accounts Activity -->
|
||||||
<string name="accounts">Tilit</string>
|
<string name="accounts">Tilit</string>
|
||||||
<string name="user_domain">käyttäjä@domain[:portti]</string>
|
<string name="accounts_help">Valinnaisesti voidaan uutta tiliä luotaessa antaa myös porttinumero
|
||||||
<string name="invalid_aor">Virheellinen käyttäjä@domain[:portti] \'%1$s\'</string>
|
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_exists">Tili \'%1$s\' on jo olemassa.</string>
|
||||||
<string name="account_allocation_failure">"Uuden tilin luonti
|
<string name="account_allocation_failure">"Uuden tilin luonti
|
||||||
epäonnistui.
|
epäonnistui.
|
||||||
@ -262,6 +270,8 @@
|
|||||||
<string name="send">Lähetä</string>
|
<string name="send">Lähetä</string>
|
||||||
<string name="status">Tila</string>
|
<string name="status">Tila</string>
|
||||||
<string name="error">Virhe</string>
|
<string name="error">Virhe</string>
|
||||||
|
<string name="help">Apua</string>
|
||||||
|
|
||||||
<!-- Main Activity -->
|
<!-- Main Activity -->
|
||||||
<string name="backup">Tallenna</string>
|
<string name="backup">Tallenna</string>
|
||||||
<string name="restore">Palauta</string>
|
<string name="restore">Palauta</string>
|
||||||
|
|||||||
@ -98,8 +98,15 @@
|
|||||||
|
|
||||||
<!-- Accounts Activity -->
|
<!-- Accounts Activity -->
|
||||||
<string name="accounts">Accounts</string>
|
<string name="accounts">Accounts</string>
|
||||||
<string name="user_domain">user@domain[:port]</string>
|
<string name="accounts_help">Account\'s port number and transport protocol may be optionally
|
||||||
<string name="invalid_aor">Invalid user@domain[:port] \'%1$s\'</string>
|
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_exists">Account \'%1$s\' already exists.</string>
|
||||||
<string name="account_allocation_failure">"Failed to allocate new account.</string>
|
<string name="account_allocation_failure">"Failed to allocate new account.</string>
|
||||||
<string name="encrypt_password">Encrypt Password</string>
|
<string name="encrypt_password">Encrypt Password</string>
|
||||||
@ -246,6 +253,7 @@
|
|||||||
<string name="send">Send</string>
|
<string name="send">Send</string>
|
||||||
<string name="status">Status</string>
|
<string name="status">Status</string>
|
||||||
<string name="error">Error</string>
|
<string name="error">Error</string>
|
||||||
|
<string name="help">Help</string>
|
||||||
<string name="dots" translatable="false">…</string>
|
<string name="dots" translatable="false">…</string>
|
||||||
|
|
||||||
<!-- Main Activity -->
|
<!-- Main Activity -->
|
||||||
|
|||||||
2
fastlane/metadata/android/en-US/changelogs/15.1.0.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/15.1.0.txt
Normal 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.
|
||||||
Reference in New Issue
Block a user