mirror of
https://github.com/openlibrecommunity/olcng.git
synced 2026-07-03 14:05:17 +02:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4a2d62b671 | |||
| 4acca4e554 | |||
| b875613fb3 | |||
| d9d21061fa | |||
| fc7804fc1e | |||
| 4e9de615a4 | |||
| 7617ce898c | |||
| 8d284fd68a | |||
| 0f28310801 | |||
| a46123aeab |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -125,7 +125,7 @@ object AppConfig {
|
|||||||
|
|
||||||
const val DNS_PROXY = "https://1.1.1.1/dns-query"
|
const val DNS_PROXY = "https://1.1.1.1/dns-query"
|
||||||
const val DNS_DIRECT = "223.5.5.5"
|
const val DNS_DIRECT = "223.5.5.5"
|
||||||
const val DNS_VPN = "https://1.1.1.1/dns-query"
|
const val DNS_VPN = "1.1.1.1"
|
||||||
const val GEOSITE_PRIVATE = "geosite:private"
|
const val GEOSITE_PRIVATE = "geosite:private"
|
||||||
const val GEOSITE_CN = "geosite:cn"
|
const val GEOSITE_CN = "geosite:cn"
|
||||||
const val GEOIP_PRIVATE = "geoip:private"
|
const val GEOIP_PRIVATE = "geoip:private"
|
||||||
|
|||||||
@@ -273,13 +273,22 @@ object AngConfigManager {
|
|||||||
private fun batchSaveConfigs(configs: List<ProfileItem>, subid: String): Map<String, ProfileItem> {
|
private fun batchSaveConfigs(configs: List<ProfileItem>, subid: String): Map<String, ProfileItem> {
|
||||||
val keyToProfile = mutableMapOf<String, ProfileItem>()
|
val keyToProfile = mutableMapOf<String, ProfileItem>()
|
||||||
|
|
||||||
// Read serverList once
|
|
||||||
val serverList = MmkvManager.decodeServerList(subid)
|
val serverList = MmkvManager.decodeServerList(subid)
|
||||||
var needSetSelected = MmkvManager.getSelectServer().isNullOrBlank()
|
var needSetSelected = MmkvManager.getSelectServer().isNullOrBlank()
|
||||||
|
|
||||||
|
val existingProfiles = serverList.mapNotNull { guid ->
|
||||||
|
MmkvManager.decodeServerConfig(guid)?.let { guid to it }
|
||||||
|
}.toMap()
|
||||||
|
|
||||||
configs.forEach { config ->
|
configs.forEach { config ->
|
||||||
|
val existingKey = existingProfiles.entries.firstOrNull { (_, existing) ->
|
||||||
|
existing == config
|
||||||
|
}?.key
|
||||||
|
|
||||||
|
if (existingKey != null) {
|
||||||
|
keyToProfile[existingKey] = config
|
||||||
|
} else {
|
||||||
val key = Utils.getUuid()
|
val key = Utils.getUuid()
|
||||||
// Save profile directly without updating serverList
|
|
||||||
MmkvManager.encodeProfileDirect(key, JsonUtil.toJson(config))
|
MmkvManager.encodeProfileDirect(key, JsonUtil.toJson(config))
|
||||||
|
|
||||||
if (!serverList.contains(key)) {
|
if (!serverList.contains(key)) {
|
||||||
@@ -291,8 +300,8 @@ object AngConfigManager {
|
|||||||
}
|
}
|
||||||
keyToProfile[key] = config
|
keyToProfile[key] = config
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Write serverList once
|
|
||||||
MmkvManager.encodeServerList(serverList, subid)
|
MmkvManager.encodeServerList(serverList, subid)
|
||||||
return keyToProfile
|
return keyToProfile
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ object SettingsManager {
|
|||||||
*/
|
*/
|
||||||
fun getVpnDnsServers(): List<String> {
|
fun getVpnDnsServers(): List<String> {
|
||||||
val vpnDns = MmkvManager.decodeSettingsString(AppConfig.PREF_VPN_DNS) ?: AppConfig.DNS_VPN
|
val vpnDns = MmkvManager.decodeSettingsString(AppConfig.PREF_VPN_DNS) ?: AppConfig.DNS_VPN
|
||||||
return vpnDns.split(",").filter { Utils.isPureIpAddress(it) }
|
return vpnDns.split(",").filter { it.isNotBlank() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -594,6 +594,7 @@ object V2rayConfigManager {
|
|||||||
|
|
||||||
val remoteDns = SettingsManager.getRemoteDnsServers()
|
val remoteDns = SettingsManager.getRemoteDnsServers()
|
||||||
val domesticDns = SettingsManager.getDomesticDnsServers()
|
val domesticDns = SettingsManager.getDomesticDnsServers()
|
||||||
|
val vpnDns = if (SettingsManager.isVpnMode()) SettingsManager.getVpnDnsServers() else emptyList()
|
||||||
val proxyDomain = getUserRule2Domain(AppConfig.TAG_PROXY)
|
val proxyDomain = getUserRule2Domain(AppConfig.TAG_PROXY)
|
||||||
val directDomain = getUserRule2Domain(AppConfig.TAG_DIRECT)
|
val directDomain = getUserRule2Domain(AppConfig.TAG_DIRECT)
|
||||||
val isCnRoutingMode = directDomain.contains(AppConfig.GEOSITE_CN)
|
val isCnRoutingMode = directDomain.contains(AppConfig.GEOSITE_CN)
|
||||||
@@ -620,9 +621,15 @@ object V2rayConfigManager {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vpnDns.isNotEmpty()) {
|
||||||
|
vpnDns.forEach {
|
||||||
|
servers.add(it)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
remoteDns.forEach {
|
remoteDns.forEach {
|
||||||
servers.add(it)
|
servers.add(it)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val blkDomain = getUserRule2Domain(AppConfig.TAG_BLOCKED)
|
val blkDomain = getUserRule2Domain(AppConfig.TAG_BLOCKED)
|
||||||
if (blkDomain.isNotEmpty()) {
|
if (blkDomain.isNotEmpty()) {
|
||||||
|
|||||||
@@ -228,15 +228,15 @@ class V2RayVpnService : VpnService(), ServiceControl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configure DNS servers
|
if (MmkvManager.decodeSettingsBool(AppConfig.PREF_LOCAL_DNS_ENABLED) == true) {
|
||||||
//if (MmkvManager.decodeSettingsBool(AppConfig.PREF_LOCAL_DNS_ENABLED) == true) {
|
builder.addDnsServer(vpnConfig.ipv4Router)
|
||||||
// builder.addDnsServer(PRIVATE_VLAN4_ROUTER)
|
} else {
|
||||||
//} else {
|
|
||||||
SettingsManager.getVpnDnsServers().forEach {
|
SettingsManager.getVpnDnsServers().forEach {
|
||||||
if (Utils.isPureIpAddress(it)) {
|
if (Utils.isPureIpAddress(it)) {
|
||||||
builder.addDnsServer(it)
|
builder.addDnsServer(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
builder.setSession(V2RayServiceManager.getRunningServerName())
|
builder.setSession(V2RayServiceManager.getRunningServerName())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,9 +136,17 @@ fun main() {
|
|||||||
)
|
)
|
||||||
println("Добавлена подписка БЕЛЫЕ W: $guid2")
|
println("Добавлена подписка БЕЛЫЕ W: $guid2")
|
||||||
|
|
||||||
|
val guid3 = manager.addSubscription(
|
||||||
|
remarks = "KEY",
|
||||||
|
url = "https://key.zarazaex.xyz/sub",
|
||||||
|
autoUpdate = true
|
||||||
|
)
|
||||||
|
println("Добавлена подписка KEY: $guid3")
|
||||||
|
|
||||||
println("\nОбновление подписок...")
|
println("\nОбновление подписок...")
|
||||||
manager.updateSubscription(guid1, "https://raw.githubusercontent.com/zieng2/wl/refs/heads/main/vless_universal.txt")
|
manager.updateSubscription(guid1, "https://raw.githubusercontent.com/zieng2/wl/refs/heads/main/vless_universal.txt")
|
||||||
manager.updateSubscription(guid2, "https://raw.githubusercontent.com/whoahaow/rjsxrd/refs/heads/main/githubmirror/bypass/bypass-all.txt")
|
manager.updateSubscription(guid2, "https://raw.githubusercontent.com/whoahaow/rjsxrd/refs/heads/main/githubmirror/bypass/bypass-all.txt")
|
||||||
|
manager.updateSubscription(guid3, "https://key.zarazaex.xyz/sub")
|
||||||
|
|
||||||
println("\nПодписки успешно добавлены и обновлены в $mmkvPath")
|
println("\nПодписки успешно добавлены и обновлены в $mmkvPath")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
ТЫ
|
|
||||||
Reference in New Issue
Block a user