- 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, "");
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 { _ ->
|
||||
|
||||
@ -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
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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])
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -30,6 +30,7 @@
|
||||
android:layout_toStartOf="@+id/addAccount"
|
||||
android:inputType="textEmailAddress"
|
||||
android:autofillHints="username"
|
||||
android:scrollHorizontally="true"
|
||||
android:hint="@string/user_domain" >
|
||||
</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>
|
||||
<!-- 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>
|
||||
|
||||
@ -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 -->
|
||||
|
||||
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