- More work on asking passwords.
This commit is contained in:
@@ -9,13 +9,14 @@ import android.view.MenuItem
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.LinearLayout.LayoutParams
|
import android.widget.LinearLayout.LayoutParams
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
|
|
||||||
|
import kotlinx.android.synthetic.main.activity_account.*
|
||||||
|
|
||||||
import com.tutpro.baresip.Account.Companion.checkAuthPass
|
import com.tutpro.baresip.Account.Companion.checkAuthPass
|
||||||
import com.tutpro.baresip.Account.Companion.checkAuthUser
|
import com.tutpro.baresip.Account.Companion.checkAuthUser
|
||||||
import com.tutpro.baresip.Account.Companion.checkDisplayName
|
import com.tutpro.baresip.Account.Companion.checkDisplayName
|
||||||
import com.tutpro.baresip.MainActivity.Companion.aorPasswords
|
import com.tutpro.baresip.MainActivity.Companion.aorPasswords
|
||||||
|
|
||||||
import kotlinx.android.synthetic.main.activity_account.*
|
|
||||||
|
|
||||||
class AccountActivity : AppCompatActivity() {
|
class AccountActivity : AppCompatActivity() {
|
||||||
|
|
||||||
internal lateinit var acc: Account
|
internal lateinit var acc: Account
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import android.widget.ArrayAdapter
|
|||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
|
||||||
|
import com.tutpro.baresip.MainActivity.Companion.ACCOUNT_CODE
|
||||||
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class AccountListAdapter(private val cxt: Context, private val rows: ArrayList<AccountRow>) :
|
class AccountListAdapter(private val cxt: Context, private val rows: ArrayList<AccountRow>) :
|
||||||
@@ -30,7 +32,7 @@ class AccountListAdapter(private val cxt: Context, private val rows: ArrayList<A
|
|||||||
val b = Bundle()
|
val b = Bundle()
|
||||||
b.putString("accp", UserAgent.uas()[position].account.accp)
|
b.putString("accp", UserAgent.uas()[position].account.accp)
|
||||||
i.putExtras(b)
|
i.putExtras(b)
|
||||||
(cxt as Activity).startActivity(i)
|
(cxt as Activity).startActivityForResult(i, ACCOUNT_CODE)
|
||||||
}
|
}
|
||||||
val ua = UserAgent.uas()[position]
|
val ua = UserAgent.uas()[position]
|
||||||
val actionView = rowView.findViewById(R.id.action) as ImageButton
|
val actionView = rowView.findViewById(R.id.action) as ImageButton
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import android.view.Menu
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
|
|
||||||
import com.tutpro.baresip.Account.Companion.checkAuthPass
|
import com.tutpro.baresip.Account.Companion.checkAuthPass
|
||||||
import com.tutpro.baresip.MainActivity.Companion.ACCOUNT_CODE
|
import com.tutpro.baresip.MainActivity.Companion.ACCOUNT_CODE
|
||||||
import com.tutpro.baresip.MainActivity.Companion.aorPasswords
|
import com.tutpro.baresip.MainActivity.Companion.aorPasswords
|
||||||
@@ -81,7 +82,8 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
val aor = Account.find(data!!.getStringExtra("accp"))!!.aor
|
val aor = Account.find(data!!.getStringExtra("accp"))!!.aor
|
||||||
val ua = UserAgent.uas()[UserAgent.findAorIndex(aor)!!]
|
val ua = UserAgent.uas()[UserAgent.findAorIndex(aor)!!]
|
||||||
if (aorPasswords.containsKey(aor) && aorPasswords[aor] == "")
|
if (aorPasswords.containsKey(aor) && aorPasswords[aor] == "")
|
||||||
askPassword(String.format(getString(R.string.account_password), aor), ua)
|
askPassword(String.format(getString(R.string.account_password),
|
||||||
|
Utils.plainAor(aor)), ua)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,10 +112,7 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
String.format(getString(R.string.invalid_authentication_password), password))
|
String.format(getString(R.string.invalid_authentication_password), password))
|
||||||
password = ""
|
password = ""
|
||||||
}
|
}
|
||||||
aorPasswords[ua.account.aor] = password
|
setAuthPass(ua, password)
|
||||||
account_set_auth_pass(ua.account.accp, password)
|
|
||||||
if (password != "")
|
|
||||||
if (ua.account.regint > 0) Api.ua_register(ua.uap)
|
|
||||||
}
|
}
|
||||||
builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
|
builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
|
||||||
dialog.cancel()
|
dialog.cancel()
|
||||||
@@ -123,15 +122,14 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
|
|
||||||
if (BaresipService.activities.indexOf("accounts") == -1) return true
|
if (BaresipService.activities.indexOf("accounts") == -1)
|
||||||
|
return true
|
||||||
|
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
|
||||||
R.id.help -> {
|
R.id.help -> {
|
||||||
Utils.alertView(this@AccountsActivity, getString(R.string.new_account),
|
Utils.alertView(this@AccountsActivity, getString(R.string.new_account),
|
||||||
getString(R.string.accounts_help))
|
getString(R.string.accounts_help))
|
||||||
}
|
}
|
||||||
|
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
BaresipService.activities.remove("accounts")
|
BaresipService.activities.remove("accounts")
|
||||||
val i = Intent()
|
val i = Intent()
|
||||||
@@ -139,25 +137,21 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
|
||||||
menuInflater.inflate(R.menu.accounts_menu, menu)
|
menuInflater.inflate(R.menu.accounts_menu, menu)
|
||||||
return true
|
return true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
|
||||||
BaresipService.activities.remove("accounts")
|
BaresipService.activities.remove("accounts")
|
||||||
val i = Intent()
|
val i = Intent()
|
||||||
setResult(Activity.RESULT_OK, i)
|
setResult(Activity.RESULT_OK, i)
|
||||||
finish()
|
finish()
|
||||||
super.onBackPressed()
|
super.onBackPressed()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -188,6 +182,17 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
return contents == null || contents.size == 0
|
return contents == null || contents.size == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setAuthPass(ua: UserAgent, ap: String) {
|
||||||
|
val acc = ua.account
|
||||||
|
if (account_set_auth_pass(acc.accp, ap) == 0) {
|
||||||
|
acc.authPass = account_auth_pass(acc.accp)
|
||||||
|
aorPasswords[acc.aor] = ap
|
||||||
|
if ((ap != "") && (acc.regint > 0))
|
||||||
|
Api.ua_register(ua.uap)
|
||||||
|
} else {
|
||||||
|
Log.e("Baresip", "Setting of auth pass failed")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package com.tutpro.baresip
|
package com.tutpro.baresip
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.app.KeyguardManager
|
import android.app.*
|
||||||
import android.app.NotificationManager
|
|
||||||
import android.app.AlarmManager
|
|
||||||
import android.app.PendingIntent
|
|
||||||
import android.content.*
|
import android.content.*
|
||||||
import android.support.v7.app.AlertDialog
|
import android.support.v7.app.AlertDialog
|
||||||
import android.support.v7.app.AppCompatActivity
|
import android.support.v7.app.AppCompatActivity
|
||||||
@@ -19,11 +16,12 @@ import android.text.method.HideReturnsTransformationMethod
|
|||||||
import android.text.method.PasswordTransformationMethod
|
import android.text.method.PasswordTransformationMethod
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import com.tutpro.baresip.Account.Companion.checkAuthPass
|
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
|
import com.tutpro.baresip.Account.Companion.checkAuthPass
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
internal lateinit var layout: RelativeLayout
|
internal lateinit var layout: RelativeLayout
|
||||||
@@ -65,15 +63,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
Log.d("Baresip", "Main created with action '$intentAction'")
|
Log.d("Baresip", "Main created with action '$intentAction'")
|
||||||
|
|
||||||
kgm = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
|
kgm = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
|
||||||
if (Build.VERSION.SDK_INT >= 27) {
|
dismissKeyguard()
|
||||||
setShowWhenLocked(true)
|
|
||||||
setTurnScreenOn(true)
|
|
||||||
kgm.requestDismissKeyguard(this, null)
|
|
||||||
} else {
|
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
|
|
||||||
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or
|
|
||||||
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
|
|
||||||
}
|
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES)
|
window.addFlags(WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES)
|
||||||
|
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
@@ -439,7 +430,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
if (File(filesDir.absolutePath + "/accounts").exists()) {
|
if (File(filesDir.absolutePath + "/accounts").exists()) {
|
||||||
val accounts = String(Utils.getFileContents(filesDir.absolutePath + "/accounts")!!,
|
val accounts = String(Utils.getFileContents(filesDir.absolutePath + "/accounts")!!,
|
||||||
Charsets.UTF_8).lines().toMutableList()
|
Charsets.UTF_8).lines().toMutableList()
|
||||||
askAorPasswords(accounts)
|
askPasswords(accounts)
|
||||||
} else {
|
} else {
|
||||||
// Baresip is started for the first time
|
// Baresip is started for the first time
|
||||||
Utils.requestPermission(this, Manifest.permission.RECORD_AUDIO,
|
Utils.requestPermission(this, Manifest.permission.RECORD_AUDIO,
|
||||||
@@ -980,12 +971,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
if (password != "") backup(password)
|
if (password != "") backup(password)
|
||||||
getString(R.string.decrypt_password) ->
|
getString(R.string.decrypt_password) ->
|
||||||
if (password != "") restore(password)
|
if (password != "") restore(password)
|
||||||
else -> {
|
else ->
|
||||||
aorPasswords[ua!!.account.aor] = password
|
AccountsActivity.setAuthPass(ua!!, password)
|
||||||
account_set_auth_pass(ua.account.accp, password)
|
|
||||||
if (password != "")
|
|
||||||
if (ua.account.regint > 0) Api.ua_register(ua.uap)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
|
builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
|
||||||
@@ -994,7 +981,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
builder.show()
|
builder.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun askAorPasswords(accounts: MutableList<String>) {
|
private fun askPasswords(accounts: MutableList<String>) {
|
||||||
if (accounts.isNotEmpty()) {
|
if (accounts.isNotEmpty()) {
|
||||||
val account = accounts.removeAt(0)
|
val account = accounts.removeAt(0)
|
||||||
val params = account.substringAfter(">")
|
val params = account.substringAfter(">")
|
||||||
@@ -1024,16 +1011,16 @@ class MainActivity : AppCompatActivity() {
|
|||||||
} else {
|
} else {
|
||||||
aorPasswords.put(aor, password)
|
aorPasswords.put(aor, password)
|
||||||
}
|
}
|
||||||
askAorPasswords(accounts)
|
askPasswords(accounts)
|
||||||
}
|
}
|
||||||
builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
|
builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
|
||||||
dialog.cancel()
|
dialog.cancel()
|
||||||
aorPasswords.put(aor, "")
|
aorPasswords.put(aor, "")
|
||||||
askAorPasswords(accounts)
|
askPasswords(accounts)
|
||||||
}
|
}
|
||||||
builder.show()
|
builder.show()
|
||||||
} else {
|
} else {
|
||||||
askAorPasswords(accounts)
|
askPasswords(accounts)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
startBaresip()
|
startBaresip()
|
||||||
@@ -1120,18 +1107,20 @@ class MainActivity : AppCompatActivity() {
|
|||||||
} else {
|
} else {
|
||||||
aorSpinner.setSelection(-1)
|
aorSpinner.setSelection(-1)
|
||||||
}
|
}
|
||||||
baresipService.setAction("UpdateNotification")
|
if (BaresipService.isServiceRunning) {
|
||||||
startService(baresipService)
|
baresipService.setAction("UpdateNotification")
|
||||||
for (ua in UserAgent.uas()) updateIcons(ua.account)
|
startService(baresipService)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ACCOUNT_CODE -> {
|
ACCOUNT_CODE -> {
|
||||||
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
||||||
val account = ua.account
|
val account = ua.account
|
||||||
updateIcons(account)
|
updateIcons(account)
|
||||||
if (aorPasswords.containsKey(account.aor) && aorPasswords[account.aor] == "")
|
if (resultCode == Activity.RESULT_OK)
|
||||||
askPassword(String.format(getString(R.string.account_password),
|
if (aorPasswords.containsKey(account.aor) && aorPasswords[account.aor] == "")
|
||||||
Utils.plainAor(account.aor)), ua)
|
askPassword(String.format(getString(R.string.account_password),
|
||||||
|
Utils.plainAor(account.aor)), ua)
|
||||||
}
|
}
|
||||||
|
|
||||||
CONTACTS_CODE -> {
|
CONTACTS_CODE -> {
|
||||||
@@ -1444,6 +1433,19 @@ class MainActivity : AppCompatActivity() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
private fun dismissKeyguard() {
|
||||||
|
if (Build.VERSION.SDK_INT >= 27) {
|
||||||
|
setShowWhenLocked(true)
|
||||||
|
setTurnScreenOn(true)
|
||||||
|
kgm.requestDismissKeyguard(this, null)
|
||||||
|
} else {
|
||||||
|
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
|
||||||
|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or
|
||||||
|
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
var visible = false
|
var visible = false
|
||||||
|
|||||||
Reference in New Issue
Block a user