Added setting to choose IP address family
This commit is contained in:
@@ -194,12 +194,17 @@ class BaresipService: Service() {
|
|||||||
hotSpotAddresses = Utils.hotSpotAddresses()
|
hotSpotAddresses = Utils.hotSpotAddresses()
|
||||||
Log.d(TAG, "HotSpot addresses $hotSpotAddresses")
|
Log.d(TAG, "HotSpot addresses $hotSpotAddresses")
|
||||||
if (hotSpotAddresses.isNotEmpty()) {
|
if (hotSpotAddresses.isNotEmpty()) {
|
||||||
|
var reset = false
|
||||||
for ((k, v) in hotSpotAddresses)
|
for ((k, v) in hotSpotAddresses)
|
||||||
if (Api.net_add_address_ifname(k, v) != 0)
|
if (afMatch(k))
|
||||||
Log.e(TAG, "Failed to add $v address $k")
|
if (Api.net_add_address_ifname(k, v) != 0)
|
||||||
Timer().schedule(2000) {
|
Log.e(TAG, "Failed to add $v address $k")
|
||||||
Api.uag_reset_transp(register = true, reinvite = false)
|
else
|
||||||
}
|
reset = true
|
||||||
|
if (reset)
|
||||||
|
Timer().schedule(2000) {
|
||||||
|
Api.uag_reset_transp(register = true, reinvite = false)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG, "Could not get hotspot addresses")
|
Log.w(TAG, "Could not get hotspot addresses")
|
||||||
}
|
}
|
||||||
@@ -1396,19 +1401,29 @@ class BaresipService: Service() {
|
|||||||
val props = cm.getLinkProperties(n) ?: continue
|
val props = cm.getLinkProperties(n) ?: continue
|
||||||
for (la in props.linkAddresses)
|
for (la in props.linkAddresses)
|
||||||
if (la.scope == android.system.OsConstants.RT_SCOPE_UNIVERSE &&
|
if (la.scope == android.system.OsConstants.RT_SCOPE_UNIVERSE &&
|
||||||
props.interfaceName != null && la.address.hostAddress != null)
|
props.interfaceName != null && la.address.hostAddress != null &&
|
||||||
addresses[la.address.hostAddress!!] = props.interfaceName!!
|
afMatch(la.address.hostAddress!!))
|
||||||
|
addresses[la.address.hostAddress!!] = props.interfaceName!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (hotSpotIsEnabled) {
|
if (hotSpotIsEnabled) {
|
||||||
hotSpotAddresses = Utils.hotSpotAddresses()
|
hotSpotAddresses = Utils.hotSpotAddresses()
|
||||||
Log.d(TAG, "HotSpot addresses $hotSpotAddresses")
|
Log.d(TAG, "HotSpot addresses $hotSpotAddresses")
|
||||||
for ((k, v) in hotSpotAddresses)
|
for ((k, v) in hotSpotAddresses)
|
||||||
addresses[k] = v
|
if (afMatch(k))
|
||||||
|
addresses[k] = v
|
||||||
}
|
}
|
||||||
return addresses
|
return addresses
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun afMatch(address: String): Boolean {
|
||||||
|
return when (addressFamily) {
|
||||||
|
"" -> true
|
||||||
|
"ipv4" -> address.contains(".")
|
||||||
|
else -> address.contains(":")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun updateDnsServers() {
|
private fun updateDnsServers() {
|
||||||
if (isServiceRunning && !dynDns)
|
if (isServiceRunning && !dynDns)
|
||||||
return
|
return
|
||||||
@@ -1534,6 +1549,7 @@ class BaresipService: Service() {
|
|||||||
var contactsMode = "baresip"
|
var contactsMode = "baresip"
|
||||||
val chatTexts: MutableMap<String, String> = mutableMapOf()
|
val chatTexts: MutableMap<String, String> = mutableMapOf()
|
||||||
val activities = mutableListOf<String>()
|
val activities = mutableListOf<String>()
|
||||||
|
var addressFamily = ""
|
||||||
var dnsServers = listOf<InetAddress>()
|
var dnsServers = listOf<InetAddress>()
|
||||||
val serviceEvent = MutableLiveData<Event<Long>>()
|
val serviceEvent = MutableLiveData<Event<Long>>()
|
||||||
val serviceEvents = mutableListOf<ServiceEvent>()
|
val serviceEvents = mutableListOf<ServiceEvent>()
|
||||||
|
|||||||
@@ -73,6 +73,9 @@ object Config {
|
|||||||
BaresipService.callVolume = variable("call_volume")[0].toInt()
|
BaresipService.callVolume = variable("call_volume")[0].toInt()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.contains("net_af"))
|
||||||
|
BaresipService.addressFamily = variable("net_af")[0]
|
||||||
|
|
||||||
if (!config.contains("dyn_dns")) {
|
if (!config.contains("dyn_dns")) {
|
||||||
config = "${config}dyn_dns no\n"
|
config = "${config}dyn_dns no\n"
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -38,6 +38,9 @@ class ConfigActivity : AppCompatActivity() {
|
|||||||
private lateinit var autoStart: CheckBox
|
private lateinit var autoStart: CheckBox
|
||||||
private lateinit var batteryOptimizations: CheckBox
|
private lateinit var batteryOptimizations: CheckBox
|
||||||
private lateinit var listenAddr: EditText
|
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 dnsServers: EditText
|
||||||
private lateinit var certificateFile: CheckBox
|
private lateinit var certificateFile: CheckBox
|
||||||
private lateinit var verifyServer: CheckBox
|
private lateinit var verifyServer: CheckBox
|
||||||
@@ -61,6 +64,7 @@ class ConfigActivity : AppCompatActivity() {
|
|||||||
private var oldLogLevel = ""
|
private var oldLogLevel = ""
|
||||||
private var oldDisplayTheme = -1
|
private var oldDisplayTheme = -1
|
||||||
private var oldContactsMode = ""
|
private var oldContactsMode = ""
|
||||||
|
private var oldNetAf = ""
|
||||||
private var save = false
|
private var save = false
|
||||||
private var restart = false
|
private var restart = false
|
||||||
private var menu: Menu? = null
|
private var menu: Menu? = null
|
||||||
@@ -114,6 +118,28 @@ class ConfigActivity : AppCompatActivity() {
|
|||||||
oldListenAddr = if (laCv.size == 0) "" else laCv[0]
|
oldListenAddr = if (laCv.size == 0) "" else laCv[0]
|
||||||
listenAddr.setText(oldListenAddr)
|
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
|
dnsServers = binding.DnsServers
|
||||||
val ddCv = Config.variable("dyn_dns")
|
val ddCv = Config.variable("dyn_dns")
|
||||||
if (ddCv[0] == "yes") {
|
if (ddCv[0] == "yes") {
|
||||||
@@ -488,6 +514,15 @@ class ConfigActivity : AppCompatActivity() {
|
|||||||
restart = true
|
restart = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (oldNetAf != netAf) {
|
||||||
|
if (netAf == "")
|
||||||
|
Config.removeVariable("net_af")
|
||||||
|
else
|
||||||
|
Config.replaceVariable("net_af", netAf)
|
||||||
|
save = true
|
||||||
|
restart = true
|
||||||
|
}
|
||||||
|
|
||||||
val dnsServers = addMissingPorts(
|
val dnsServers = addMissingPorts(
|
||||||
dnsServers.text.toString().trim().lowercase(Locale.ROOT))
|
dnsServers.text.toString().trim().lowercase(Locale.ROOT))
|
||||||
if (dnsServers != oldDnsServers) {
|
if (dnsServers != oldDnsServers) {
|
||||||
@@ -620,6 +655,10 @@ class ConfigActivity : AppCompatActivity() {
|
|||||||
Utils.alertView(this, getString(R.string.listen_address),
|
Utils.alertView(this, getString(R.string.listen_address),
|
||||||
getString(R.string.listen_address_help))
|
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 {
|
binding.DnsServersTitle .setOnClickListener {
|
||||||
Utils.alertView(this, getString(R.string.dns_servers),
|
Utils.alertView(this, getString(R.string.dns_servers),
|
||||||
getString(R.string.dns_servers_help))
|
getString(R.string.dns_servers_help))
|
||||||
|
|||||||
@@ -89,6 +89,22 @@
|
|||||||
android:importantForAutofill="no" >
|
android:importantForAutofill="no" >
|
||||||
</EditText>
|
</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
|
<TextView
|
||||||
android:id="@+id/DnsServersTitle"
|
android:id="@+id/DnsServersTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@@ -319,6 +319,11 @@
|
|||||||
osoitteilla.
|
osoitteilla.
|
||||||
</string>
|
</string>
|
||||||
<string name="invalid_listen_address">Virheellinen kuunteluosoite</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">DNS-palvelimet</string>
|
||||||
<string name="dns_servers_help">Pilkulla toisistaan erotettu luettelo DNS-palvelijoiden
|
<string name="dns_servers_help">Pilkulla toisistaan erotettu luettelo DNS-palvelijoiden
|
||||||
osoitteita. Jos jätetään antamatta (oletus), osoitteet hankitaan dynaamisesti järjestelmästä.
|
osoitteita. Jos jätetään antamatta (oletus), osoitteet hankitaan dynaamisesti järjestelmästä.
|
||||||
|
|||||||
@@ -305,6 +305,11 @@
|
|||||||
</string>
|
</string>
|
||||||
<string name="invalid_listen_address">Invalid Listen Address</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="_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">DNS Servers</string>
|
||||||
<string name="dns_servers_help">Comma separated list of addresses of DNS servers. If not given,
|
<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
|
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="invalid_sip_or_tel_uri">Invalid SIP or tel URI \'%1$s\'</string>
|
||||||
<string name="baresip" translatable="false">baresip</string>
|
<string name="baresip" translatable="false">baresip</string>
|
||||||
<string name="android" translatable="false">Android</string>
|
<string name="android" translatable="false">Android</string>
|
||||||
|
|
||||||
<!-- Main Activity -->
|
<!-- Main Activity -->
|
||||||
<string name="backup">Backup</string>
|
<string name="backup">Backup</string>
|
||||||
<string name="restore">Restore</string>
|
<string name="restore">Restore</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user