Added setting to choose IP address family
This commit is contained in:
@ -194,12 +194,17 @@ class BaresipService: Service() {
|
||||
hotSpotAddresses = Utils.hotSpotAddresses()
|
||||
Log.d(TAG, "HotSpot addresses $hotSpotAddresses")
|
||||
if (hotSpotAddresses.isNotEmpty()) {
|
||||
var reset = false
|
||||
for ((k, v) in hotSpotAddresses)
|
||||
if (Api.net_add_address_ifname(k, v) != 0)
|
||||
Log.e(TAG, "Failed to add $v address $k")
|
||||
Timer().schedule(2000) {
|
||||
Api.uag_reset_transp(register = true, reinvite = false)
|
||||
}
|
||||
if (afMatch(k))
|
||||
if (Api.net_add_address_ifname(k, v) != 0)
|
||||
Log.e(TAG, "Failed to add $v address $k")
|
||||
else
|
||||
reset = true
|
||||
if (reset)
|
||||
Timer().schedule(2000) {
|
||||
Api.uag_reset_transp(register = true, reinvite = false)
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "Could not get hotspot addresses")
|
||||
}
|
||||
@ -1396,19 +1401,29 @@ class BaresipService: Service() {
|
||||
val props = cm.getLinkProperties(n) ?: continue
|
||||
for (la in props.linkAddresses)
|
||||
if (la.scope == android.system.OsConstants.RT_SCOPE_UNIVERSE &&
|
||||
props.interfaceName != null && la.address.hostAddress != null)
|
||||
addresses[la.address.hostAddress!!] = props.interfaceName!!
|
||||
props.interfaceName != null && la.address.hostAddress != null &&
|
||||
afMatch(la.address.hostAddress!!))
|
||||
addresses[la.address.hostAddress!!] = props.interfaceName!!
|
||||
}
|
||||
}
|
||||
if (hotSpotIsEnabled) {
|
||||
hotSpotAddresses = Utils.hotSpotAddresses()
|
||||
Log.d(TAG, "HotSpot addresses $hotSpotAddresses")
|
||||
for ((k, v) in hotSpotAddresses)
|
||||
addresses[k] = v
|
||||
if (afMatch(k))
|
||||
addresses[k] = v
|
||||
}
|
||||
return addresses
|
||||
}
|
||||
|
||||
private fun afMatch(address: String): Boolean {
|
||||
return when (addressFamily) {
|
||||
"" -> true
|
||||
"ipv4" -> address.contains(".")
|
||||
else -> address.contains(":")
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateDnsServers() {
|
||||
if (isServiceRunning && !dynDns)
|
||||
return
|
||||
@ -1534,6 +1549,7 @@ class BaresipService: Service() {
|
||||
var contactsMode = "baresip"
|
||||
val chatTexts: MutableMap<String, String> = mutableMapOf()
|
||||
val activities = mutableListOf<String>()
|
||||
var addressFamily = ""
|
||||
var dnsServers = listOf<InetAddress>()
|
||||
val serviceEvent = MutableLiveData<Event<Long>>()
|
||||
val serviceEvents = mutableListOf<ServiceEvent>()
|
||||
|
||||
@ -73,6 +73,9 @@ object Config {
|
||||
BaresipService.callVolume = variable("call_volume")[0].toInt()
|
||||
}
|
||||
|
||||
if (config.contains("net_af"))
|
||||
BaresipService.addressFamily = variable("net_af")[0]
|
||||
|
||||
if (!config.contains("dyn_dns")) {
|
||||
config = "${config}dyn_dns no\n"
|
||||
} else {
|
||||
|
||||
@ -38,6 +38,9 @@ class ConfigActivity : AppCompatActivity() {
|
||||
private lateinit var autoStart: CheckBox
|
||||
private lateinit var batteryOptimizations: CheckBox
|
||||
private lateinit var listenAddr: EditText
|
||||
private lateinit var netAfSpinner: Spinner
|
||||
private lateinit var netAf: String
|
||||
private lateinit var netAfKeys: ArrayList<String>
|
||||
private lateinit var dnsServers: EditText
|
||||
private lateinit var certificateFile: CheckBox
|
||||
private lateinit var verifyServer: CheckBox
|
||||
@ -61,6 +64,7 @@ class ConfigActivity : AppCompatActivity() {
|
||||
private var oldLogLevel = ""
|
||||
private var oldDisplayTheme = -1
|
||||
private var oldContactsMode = ""
|
||||
private var oldNetAf = ""
|
||||
private var save = false
|
||||
private var restart = false
|
||||
private var menu: Menu? = null
|
||||
@ -114,6 +118,28 @@ class ConfigActivity : AppCompatActivity() {
|
||||
oldListenAddr = if (laCv.size == 0) "" else laCv[0]
|
||||
listenAddr.setText(oldListenAddr)
|
||||
|
||||
netAfSpinner = binding.NetAfSpinner
|
||||
netAfKeys = arrayListOf("", "ipv4", "ipv6")
|
||||
val netAfVals = arrayListOf("-", "IPv4", "IPv6")
|
||||
val netAfCv = Config.variable("net_af")
|
||||
oldNetAf = if (netAfCv.size == 0) "" else netAfCv[0].lowercase()
|
||||
netAf = oldNetAf
|
||||
val netAfIndex = netAfKeys.indexOf(oldNetAf)
|
||||
val netAfValue = netAfVals.elementAt(netAfIndex)
|
||||
netAfKeys.removeAt(netAfIndex)
|
||||
netAfVals.removeAt(netAfIndex)
|
||||
netAfKeys.add(0, oldNetAf)
|
||||
netAfVals.add(0, netAfValue)
|
||||
val netAfAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item, netAfVals)
|
||||
netAfAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
netAfSpinner.adapter = netAfAdapter
|
||||
netAfSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
|
||||
netAf = netAfKeys[position]
|
||||
}
|
||||
override fun onNothingSelected(parent: AdapterView<*>) {}
|
||||
}
|
||||
|
||||
dnsServers = binding.DnsServers
|
||||
val ddCv = Config.variable("dyn_dns")
|
||||
if (ddCv[0] == "yes") {
|
||||
@ -488,6 +514,15 @@ class ConfigActivity : AppCompatActivity() {
|
||||
restart = true
|
||||
}
|
||||
|
||||
if (oldNetAf != netAf) {
|
||||
if (netAf == "")
|
||||
Config.removeVariable("net_af")
|
||||
else
|
||||
Config.replaceVariable("net_af", netAf)
|
||||
save = true
|
||||
restart = true
|
||||
}
|
||||
|
||||
val dnsServers = addMissingPorts(
|
||||
dnsServers.text.toString().trim().lowercase(Locale.ROOT))
|
||||
if (dnsServers != oldDnsServers) {
|
||||
@ -620,6 +655,10 @@ class ConfigActivity : AppCompatActivity() {
|
||||
Utils.alertView(this, getString(R.string.listen_address),
|
||||
getString(R.string.listen_address_help))
|
||||
}
|
||||
binding.NetAfTitle.setOnClickListener {
|
||||
Utils.alertView(this, getString(R.string.address_family),
|
||||
getString(R.string.address_family_help))
|
||||
}
|
||||
binding.DnsServersTitle .setOnClickListener {
|
||||
Utils.alertView(this, getString(R.string.dns_servers),
|
||||
getString(R.string.dns_servers_help))
|
||||
|
||||
@ -89,6 +89,22 @@
|
||||
android:importantForAutofill="no" >
|
||||
</EditText>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/NetAfTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="18sp"
|
||||
android:text="@string/address_family" >
|
||||
</TextView>
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/NetAfSpinner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:paddingTop="8dp" >
|
||||
</Spinner>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/DnsServersTitle"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@ -319,6 +319,11 @@
|
||||
osoitteilla.
|
||||
</string>
|
||||
<string name="invalid_listen_address">Virheellinen kuunteluosoite</string>
|
||||
<string name="address_family">Osoiteperhe</string>
|
||||
<string name="address_family_help">Valitsee, mitä IP-osoitteita baresip käyttää. Jos IPv4 tai IPv6
|
||||
on valittu, baresip käyttää ainoastaan IPv4- tai IPv6-osoitteita. Jos kumpaakaan ei ole
|
||||
valittu, baresip käyttää sekä IPv4- että IPv6-osoitteita.
|
||||
</string>
|
||||
<string name="dns_servers">DNS-palvelimet</string>
|
||||
<string name="dns_servers_help">Pilkulla toisistaan erotettu luettelo DNS-palvelijoiden
|
||||
osoitteita. Jos jätetään antamatta (oletus), osoitteet hankitaan dynaamisesti järjestelmästä.
|
||||
|
||||
@ -305,6 +305,11 @@
|
||||
</string>
|
||||
<string name="invalid_listen_address">Invalid Listen Address</string>
|
||||
<string name="_0_0_0_0_5060" translatable="false">0.0.0.0:5060</string>
|
||||
<string name="address_family">Address Family</string>
|
||||
<string name="address_family_help">Chooses which IP addresses baresip is
|
||||
using. If IPv4 or IPv6 is chosen, baresip uses only IPv4 or IPv6 addresses. If neither is
|
||||
chosen, baresip uses both IPv4 and IPv6 addresses.
|
||||
</string>
|
||||
<string name="dns_servers">DNS Servers</string>
|
||||
<string name="dns_servers_help">Comma separated list of addresses of DNS servers. If not given,
|
||||
DNS server addresses are obtained dynamically from the system. Each DNS address is of form
|
||||
@ -426,6 +431,7 @@
|
||||
<string name="invalid_sip_or_tel_uri">Invalid SIP or tel URI \'%1$s\'</string>
|
||||
<string name="baresip" translatable="false">baresip</string>
|
||||
<string name="android" translatable="false">Android</string>
|
||||
|
||||
<!-- Main Activity -->
|
||||
<string name="backup">Backup</string>
|
||||
<string name="restore">Restore</string>
|
||||
|
||||
Reference in New Issue
Block a user