mirror of
https://github.com/MatsuriDayo/NekoBoxForAndroid.git
synced 2025-12-20 15:10:05 +08:00
auto bypass domain of ConfigBean
This commit is contained in:
parent
f94fb6a961
commit
28e4c16839
@ -654,6 +654,13 @@ fun buildConfig(
|
|||||||
if (it is HysteriaBean && it.isMultiPort()) {
|
if (it is HysteriaBean && it.isMultiPort()) {
|
||||||
serverAddr = it.serverAddress.substringBeforeLast(":")
|
serverAddr = it.serverAddress.substringBeforeLast(":")
|
||||||
}
|
}
|
||||||
|
if (it is ConfigBean) {
|
||||||
|
var config = mutableMapOf<String, Any>()
|
||||||
|
config = gson.fromJson(it.config, config.javaClass)
|
||||||
|
config["server"]?.apply {
|
||||||
|
serverAddr = toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!serverAddr.isIpAddress()) {
|
if (!serverAddr.isIpAddress()) {
|
||||||
domainListDNSDirectForce.add("full:${serverAddr}")
|
domainListDNSDirectForce.add("full:${serverAddr}")
|
||||||
|
|||||||
@ -34,6 +34,11 @@ fun SingBoxOptions.DNSRule_DefaultOptions.makeSingBoxRule(list: List<String>) {
|
|||||||
domain.plusAssign(it.lowercase())
|
domain.plusAssign(it.lowercase())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
geosite?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain_suffix?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain_regex?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain_keyword?.removeIf { it.isNullOrBlank() }
|
||||||
if (geosite?.isEmpty() == true) geosite = null
|
if (geosite?.isEmpty() == true) geosite = null
|
||||||
if (domain?.isEmpty() == true) domain = null
|
if (domain?.isEmpty() == true) domain = null
|
||||||
if (domain_suffix?.isEmpty() == true) domain_suffix = null
|
if (domain_suffix?.isEmpty() == true) domain_suffix = null
|
||||||
@ -86,6 +91,13 @@ fun SingBoxOptions.Rule_DefaultOptions.makeSingBoxRule(list: List<String>, isIP:
|
|||||||
domain.plusAssign(it.lowercase())
|
domain.plusAssign(it.lowercase())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ip_cidr?.removeIf { it.isNullOrBlank() }
|
||||||
|
geoip?.removeIf { it.isNullOrBlank() }
|
||||||
|
geosite?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain_suffix?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain_regex?.removeIf { it.isNullOrBlank() }
|
||||||
|
domain_keyword?.removeIf { it.isNullOrBlank() }
|
||||||
if (ip_cidr?.isEmpty() == true) ip_cidr = null
|
if (ip_cidr?.isEmpty() == true) ip_cidr = null
|
||||||
if (geoip?.isEmpty() == true) geoip = null
|
if (geoip?.isEmpty() == true) geoip = null
|
||||||
if (geosite?.isEmpty() == true) geosite = null
|
if (geosite?.isEmpty() == true) geosite = null
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package moe.matsuri.nb4a.proxy.config
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.preference.PreferenceDataStore
|
import androidx.preference.PreferenceDataStore
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import androidx.preference.SwitchPreference
|
|
||||||
import io.nekohasekai.sagernet.Key
|
import io.nekohasekai.sagernet.Key
|
||||||
import io.nekohasekai.sagernet.R
|
import io.nekohasekai.sagernet.R
|
||||||
import io.nekohasekai.sagernet.database.DataStore
|
import io.nekohasekai.sagernet.database.DataStore
|
||||||
@ -15,36 +14,28 @@ class ConfigSettingActivity :
|
|||||||
ProfileSettingsActivity<ConfigBean>(),
|
ProfileSettingsActivity<ConfigBean>(),
|
||||||
OnPreferenceDataStoreChangeListener {
|
OnPreferenceDataStoreChangeListener {
|
||||||
|
|
||||||
private var beanType: Int = 0
|
private val isOutboundOnlyKey = "isOutboundOnly"
|
||||||
|
|
||||||
override fun createEntity() = ConfigBean()
|
override fun createEntity() = ConfigBean()
|
||||||
|
|
||||||
override fun ConfigBean.init() {
|
override fun ConfigBean.init() {
|
||||||
// CustomBean to input
|
// CustomBean to input
|
||||||
beanType = type
|
DataStore.profileCacheStore.putBoolean(isOutboundOnlyKey, type == 1)
|
||||||
DataStore.profileName = name
|
DataStore.profileName = name
|
||||||
DataStore.serverConfig = config
|
DataStore.serverConfig = config
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun ConfigBean.serialize() {
|
override fun ConfigBean.serialize() {
|
||||||
// CustomBean from input
|
// CustomBean from input
|
||||||
type = beanType
|
type = if (DataStore.profileCacheStore.getBoolean(isOutboundOnlyKey, false)) 1 else 0
|
||||||
name = DataStore.profileName
|
name = DataStore.profileName
|
||||||
config = DataStore.serverConfig
|
config = DataStore.serverConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
intent?.getIntExtra("type", 0)?.apply { beanType = this }
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPreferenceDataStoreChanged(store: PreferenceDataStore, key: String) {
|
override fun onPreferenceDataStoreChanged(store: PreferenceDataStore, key: String) {
|
||||||
if (key != Key.PROFILE_DIRTY) {
|
if (key != Key.PROFILE_DIRTY) {
|
||||||
DataStore.dirty = true
|
DataStore.dirty = true
|
||||||
}
|
}
|
||||||
if (key == "isOutboundOnly") {
|
|
||||||
beanType = if (store.getBoolean(key, false)) 1 else 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var editConfigPreference: EditConfigPreference
|
private lateinit var editConfigPreference: EditConfigPreference
|
||||||
@ -56,8 +47,6 @@ class ConfigSettingActivity :
|
|||||||
addPreferencesFromResource(R.xml.config_preferences)
|
addPreferencesFromResource(R.xml.config_preferences)
|
||||||
|
|
||||||
editConfigPreference = findPreference(Key.SERVER_CONFIG)!!
|
editConfigPreference = findPreference(Key.SERVER_CONFIG)!!
|
||||||
|
|
||||||
findPreference<SwitchPreference>("isOutboundOnly")!!.isChecked = beanType == 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user