mirror of
https://github.com/openlibrecommunity/olcng.git
synced 2026-07-03 14:05:17 +02:00
Add configurable IP API URL and improve IP info parsing
This commit is contained in:
@@ -56,6 +56,7 @@ object AppConfig {
|
||||
const val PREF_DOMESTIC_DNS = "pref_domestic_dns"
|
||||
const val PREF_DNS_HOSTS = "pref_dns_hosts"
|
||||
const val PREF_DELAY_TEST_URL = "pref_delay_test_url"
|
||||
const val PREF_IP_API_URL = "pref_ip_api_url"
|
||||
const val PREF_LOGLEVEL = "pref_core_loglevel"
|
||||
const val PREF_OUTBOUND_DOMAIN_RESOLVE_METHOD = "pref_outbound_domain_resolve_method"
|
||||
const val PREF_MODE = "pref_mode"
|
||||
|
||||
@@ -8,5 +8,10 @@ data class IPAPIInfo(
|
||||
var country: String? = null,
|
||||
var country_name: String? = null,
|
||||
var country_code: String? = null,
|
||||
var countryCode: String? = null
|
||||
)
|
||||
var countryCode: String? = null,
|
||||
var location: LocationBean? = null
|
||||
) {
|
||||
data class LocationBean(
|
||||
var country_code: String? = null
|
||||
)
|
||||
}
|
||||
@@ -163,14 +163,28 @@ object SpeedtestManager {
|
||||
}
|
||||
|
||||
fun getRemoteIPInfo(): String? {
|
||||
val url = MmkvManager.decodeSettingsString(AppConfig.PREF_IP_API_URL)
|
||||
.takeIf { !it.isNullOrBlank() } ?: AppConfig.IP_API_URL
|
||||
|
||||
val httpPort = SettingsManager.getHttpPort()
|
||||
var content = HttpUtil.getUrlContent(AppConfig.IP_API_URL, 5000, httpPort) ?: return null
|
||||
val content = HttpUtil.getUrlContent(url, 5000, httpPort) ?: return null
|
||||
val ipInfo = JsonUtil.fromJson(content, IPAPIInfo::class.java) ?: return null
|
||||
|
||||
var ipInfo = JsonUtil.fromJson(content, IPAPIInfo::class.java) ?: return null
|
||||
var ip = ipInfo.ip ?: ipInfo.clientIp ?: ipInfo.ip_addr ?: ipInfo.query
|
||||
var country = ipInfo.country_code ?: ipInfo.country ?: ipInfo.countryCode
|
||||
val ip = listOf(
|
||||
ipInfo.ip,
|
||||
ipInfo.clientIp,
|
||||
ipInfo.ip_addr,
|
||||
ipInfo.query
|
||||
).firstOrNull { !it.isNullOrBlank() }
|
||||
|
||||
return "(${country ?: "unknown"}) $ip"
|
||||
val country = listOf(
|
||||
ipInfo.country_code,
|
||||
ipInfo.country,
|
||||
ipInfo.countryCode,
|
||||
ipInfo.location?.country_code
|
||||
).firstOrNull { !it.isNullOrBlank() }
|
||||
|
||||
return "(${country ?: "unknown"}) ${ip ?: "unknown"}"
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -64,6 +64,7 @@ class SettingsActivity : BaseActivity() {
|
||||
private val domesticDns by lazy { findPreference<EditTextPreference>(AppConfig.PREF_DOMESTIC_DNS) }
|
||||
private val dnsHosts by lazy { findPreference<EditTextPreference>(AppConfig.PREF_DNS_HOSTS) }
|
||||
private val delayTestUrl by lazy { findPreference<EditTextPreference>(AppConfig.PREF_DELAY_TEST_URL) }
|
||||
private val ipApiUrl by lazy { findPreference<EditTextPreference>(AppConfig.PREF_IP_API_URL) }
|
||||
private val mode by lazy { findPreference<ListPreference>(AppConfig.PREF_MODE) }
|
||||
|
||||
private val hevTunLogLevel by lazy { findPreference<ListPreference>(AppConfig.PREF_HEV_TUNNEL_LOGLEVEL) }
|
||||
@@ -84,8 +85,7 @@ class SettingsActivity : BaseActivity() {
|
||||
}
|
||||
localDnsPort?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
localDnsPort?.summary =
|
||||
if (TextUtils.isEmpty(nval)) AppConfig.PORT_LOCAL_DNS else nval
|
||||
localDnsPort?.summary = nval.ifEmpty { AppConfig.PORT_LOCAL_DNS }
|
||||
true
|
||||
}
|
||||
vpnDns?.setOnPreferenceChangeListener { _, any ->
|
||||
@@ -95,7 +95,7 @@ class SettingsActivity : BaseActivity() {
|
||||
|
||||
vpnMtu?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
vpnMtu?.summary = if (TextUtils.isEmpty(nval)) AppConfig.VPN_MTU.toString() else nval
|
||||
vpnMtu?.summary = nval.ifEmpty { AppConfig.VPN_MTU.toString() }
|
||||
true
|
||||
}
|
||||
|
||||
@@ -151,18 +151,18 @@ class SettingsActivity : BaseActivity() {
|
||||
|
||||
socksPort?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
socksPort?.summary = if (TextUtils.isEmpty(nval)) AppConfig.PORT_SOCKS else nval
|
||||
socksPort?.summary = nval.ifEmpty { AppConfig.PORT_SOCKS }
|
||||
true
|
||||
}
|
||||
|
||||
remoteDns?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
remoteDns?.summary = if (nval == "") AppConfig.DNS_PROXY else nval
|
||||
remoteDns?.summary = nval.ifEmpty { AppConfig.DNS_PROXY }
|
||||
true
|
||||
}
|
||||
domesticDns?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
domesticDns?.summary = if (nval == "") AppConfig.DNS_DIRECT else nval
|
||||
domesticDns?.summary = nval.ifEmpty { AppConfig.DNS_DIRECT }
|
||||
true
|
||||
}
|
||||
dnsHosts?.setOnPreferenceChangeListener { _, any ->
|
||||
@@ -172,7 +172,12 @@ class SettingsActivity : BaseActivity() {
|
||||
}
|
||||
delayTestUrl?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
delayTestUrl?.summary = if (nval == "") AppConfig.DELAY_TEST_URL else nval
|
||||
delayTestUrl?.summary = nval.ifEmpty { AppConfig.DELAY_TEST_URL }
|
||||
true
|
||||
}
|
||||
ipApiUrl?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
ipApiUrl?.summary = nval.ifEmpty { AppConfig.IP_API_URL }
|
||||
true
|
||||
}
|
||||
mode?.setOnPreferenceChangeListener { _, newValue ->
|
||||
@@ -189,7 +194,7 @@ class SettingsActivity : BaseActivity() {
|
||||
|
||||
hevTunRwTimeout?.setOnPreferenceChangeListener { _, any ->
|
||||
val nval = any as String
|
||||
hevTunRwTimeout?.summary = if (TextUtils.isEmpty(nval)) AppConfig.HEVTUN_RW_TIMEOUT else nval
|
||||
hevTunRwTimeout?.summary = nval.ifEmpty { AppConfig.HEVTUN_RW_TIMEOUT }
|
||||
true
|
||||
}
|
||||
}
|
||||
@@ -225,6 +230,7 @@ class SettingsActivity : BaseActivity() {
|
||||
domesticDns?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_DOMESTIC_DNS, AppConfig.DNS_DIRECT)
|
||||
dnsHosts?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_DNS_HOSTS)
|
||||
delayTestUrl?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_DELAY_TEST_URL, AppConfig.DELAY_TEST_URL)
|
||||
ipApiUrl?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_IP_API_URL, AppConfig.IP_API_URL)
|
||||
|
||||
//updateHevTunSettings(MmkvManager.decodeSettingsBool(AppConfig.PREF_USE_HEV_TUNNEL, true))
|
||||
hevTunRwTimeout?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_HEV_TUNNEL_RW_TIMEOUT, AppConfig.HEVTUN_RW_TIMEOUT)
|
||||
@@ -246,6 +252,7 @@ class SettingsActivity : BaseActivity() {
|
||||
remoteDns,
|
||||
domesticDns,
|
||||
delayTestUrl,
|
||||
ipApiUrl,
|
||||
hevTunRwTimeout
|
||||
).forEach { key ->
|
||||
key?.text = key.summary.toString()
|
||||
|
||||
@@ -47,6 +47,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
|
||||
AppConfig.PREF_DOMESTIC_DNS,
|
||||
AppConfig.PREF_DNS_HOSTS,
|
||||
AppConfig.PREF_DELAY_TEST_URL,
|
||||
AppConfig.PREF_IP_API_URL,
|
||||
AppConfig.PREF_LOCAL_DNS_PORT,
|
||||
AppConfig.PREF_SOCKS_PORT,
|
||||
AppConfig.PREF_LOGLEVEL,
|
||||
|
||||
@@ -197,9 +197,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS hosts (Format: domain:address,…)</string>
|
||||
<string name="summary_pref_dns_hosts">domain:address,…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">True delay test url (http/https)</string>
|
||||
<string name="title_pref_delay_test_url">True delay test url </string>
|
||||
<string name="summary_pref_delay_test_url">Url</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">Current connection info test url</string>
|
||||
<string name="summary_pref_ip_api_url">Url</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">السماح بالاتصالات من الشبكة المحلية</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">يمكن للأجهزة الأخرى الاتصال بالبروكسي بواسطة عنوان IP الخاص بك من خلال socks/http، يتم التمكين فقط في الشبكة الموثوقة لتجنب الاتصال غير المصرح به</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">السماح بالاتصالات من الشبكة المحلية، تأكد من أنك في شبكة موثوقة</string>
|
||||
|
||||
@@ -197,9 +197,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS hosts (Format: domain:address,…)</string>
|
||||
<string name="summary_pref_dns_hosts">domain:address,…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">সঠিক বিলম্ব পরীক্ষা ইউআরএল (http/https)</string>
|
||||
<string name="title_pref_delay_test_url">সঠিক বিলম্ব পরীক্ষা ইউআরএল </string>
|
||||
<string name="summary_pref_delay_test_url">ইউআরএল</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">Current connection info test url</string>
|
||||
<string name="summary_pref_ip_api_url">Url</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">LAN থেকে সংযোগ অনুমোদন করুন</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">অন্যান্য ডিভাইসগুলি আপনার আইপি ঠিকানা ব্যবহার করে প্রক্সিতে সংযুক্ত হতে পারে, শুধুমাত্র বিশ্বস্ত নেটওয়ার্কে সক্রিয় করুন যাতে অনুমোদিত সংযোগ এড়ানো যায়</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">LAN থেকে সংযোগ অনুমোদন করুন, নিশ্চিত করুন যে আপনি একটি বিশ্বস্ত নেটওয়ার্কে আছেন</string>
|
||||
|
||||
@@ -197,9 +197,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS هاست موستقیم (قالوو: دامنه: نشۊوی،...)</string>
|
||||
<string name="summary_pref_dns_hosts">دامنه:نشۊوی،...</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">نشۊوی اینترنتی آزمایش تئخیر واقعی (http/https)</string>
|
||||
<string name="title_pref_delay_test_url">نشۊوی اینترنتی آزمایش تئخیر واقعی </string>
|
||||
<string name="summary_pref_delay_test_url">نشۊوی اینترنتی</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">Current connection info test url</string>
|
||||
<string name="summary_pref_ip_api_url">Url</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">هشتن منپیزا ز شبکه مهلی</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">پوی دسگایل ترن وا نشۊوی IP ایسا، ز ر socks/http و پروکسی منپیز بۊن، تینا من شبکه قابل اعتماد فعال بۊ تا ز منپیز غیر موجاز جلو گری بۊ.</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">منپیزا ز شبکه مهلی ن موجار کۊنین، موتمعن بۊین ک من ی شبکه قابل ائتماڌ هڌین.</string>
|
||||
|
||||
@@ -195,9 +195,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS مستقیم هاست (فرمت: دامنه:آدرس،…)</string>
|
||||
<string name="summary_pref_dns_hosts">دامنه:آدرس،…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">آدرس اینترنتی آزمایش تاخیر واقعی کانفیگ ها (HTTP/HTTPS)</string>
|
||||
<string name="title_pref_delay_test_url">آدرس اینترنتی آزمایش تاخیر واقعی کانفیگ ها </string>
|
||||
<string name="summary_pref_delay_test_url">URL</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">Current connection info test url</string>
|
||||
<string name="summary_pref_ip_api_url">Url</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">اجازه اتصالات از طریق شبکه محلی</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">سایر دستگاه ها می توانند با استفاده از آدرس آیپی شما برای استفاده از یک پروکسی محلی متصل شوند. فقط در یک شبکه قابل اعتماد برای جلوگیری از اتصالات غیرمجاز استفاده کنید.</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">اتصالات از طریق شبکه محلی را مجاز کنید، مطمئن شوید که در یک شبکه قابل اعتماد هستید.</string>
|
||||
|
||||
@@ -196,9 +196,12 @@
|
||||
<string name="title_pref_dns_hosts">Узлы DNS (формат: домен:адрес,…)</string>
|
||||
<string name="summary_pref_dns_hosts">домен:адрес,…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">Сервис проверки задержки (HTTP/HTTPS)</string>
|
||||
<string name="title_pref_delay_test_url">Сервис проверки задержки</string>
|
||||
<string name="summary_pref_delay_test_url">URL</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">Current connection info test url</string>
|
||||
<string name="summary_pref_ip_api_url">Url</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">Разрешать подключения из LAN</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">Другие устройства могут подключаться, используя ваш IP-адрес, чтобы использовать локальный прокси. Используйте только в доверенной сети, чтобы избежать несанкционированного подключения.</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">Доступ из LAN разрешён, убедитесь, что вы находитесь в доверенной сети</string>
|
||||
|
||||
@@ -197,9 +197,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS hosts (Format: domain:address,…)</string>
|
||||
<string name="summary_pref_dns_hosts">domain:address,…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">URL kiểm tra độ trễ thực (HTTP / HTTPS)</string>
|
||||
<string name="title_pref_delay_test_url">URL kiểm tra độ trễ thực </string>
|
||||
<string name="summary_pref_delay_test_url">URL</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">Current connection info test url</string>
|
||||
<string name="summary_pref_ip_api_url">Url</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">Cho phép kết nối từ mạng LAN</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">Các thiết bị khác trong cùng mạng LAN có thể kết nối đến SOCKS / HTTP proxy trên thiết bị của bạn. \nChỉ bật tính năng này trong các mạng đáng tin cậy để tránh kết nối trái phép.</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">Đang bật cho phép kết nối từ mạng LAN</string>
|
||||
|
||||
@@ -194,9 +194,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS hosts (格式: 域名: 地址,…)</string>
|
||||
<string name="summary_pref_dns_hosts">domain: address,…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">真连接延迟测试网址 (http/https)</string>
|
||||
<string name="title_pref_delay_test_url">真连接延迟测试网址 </string>
|
||||
<string name="summary_pref_delay_test_url">Url</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">当前连接信息测试网址</string>
|
||||
<string name="summary_pref_ip_api_url">URL</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">允许来自局域网的连接</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">其他设备可以使用 socks/http 协议通过您的 IP 地址连接到代理, 仅在受信任的网络中启用以避免未经授权的连接</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">允许来自局域网的连接,请确保处于受信网络</string>
|
||||
|
||||
@@ -195,9 +195,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS hosts (格式: 網域:位址,…)</string>
|
||||
<string name="summary_pref_dns_hosts">domain:address,…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">真連線延遲測試網址 (http/https)</string>
|
||||
<string name="title_pref_delay_test_url">真連線延遲測試網址 </string>
|
||||
<string name="summary_pref_delay_test_url">Url</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">目前連線資訊測試網址</string>
|
||||
<string name="summary_pref_ip_api_url">URL</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">允許來自區域網路的連線</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">其他裝置可以使用 socks/http 協定透過您的 IP 位址連線到 Proxy,僅在受信任的網路中啟用以避免未經授權的連線</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">允許來自區域網路的連線,請確保處於受信網路</string>
|
||||
|
||||
@@ -200,9 +200,12 @@
|
||||
<string name="title_pref_dns_hosts">DNS hosts (Format: domain:address,…)</string>
|
||||
<string name="summary_pref_dns_hosts">domain:address,…</string>
|
||||
|
||||
<string name="title_pref_delay_test_url">True delay test url (http/https)</string>
|
||||
<string name="title_pref_delay_test_url">True delay test url </string>
|
||||
<string name="summary_pref_delay_test_url">Url</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">Current connection info test url</string>
|
||||
<string name="summary_pref_ip_api_url">Url</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">Allow connections from the LAN</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">Other devices can connect to proxy by your IP address through local proxy. Only enable in trusted networks to avoid unauthorized connections</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">Allow connections from the LAN. Make sure you are in a trusted network</string>
|
||||
|
||||
@@ -265,6 +265,11 @@
|
||||
android:summary="@string/summary_pref_delay_test_url"
|
||||
android:title="@string/title_pref_delay_test_url" />
|
||||
|
||||
<EditTextPreference
|
||||
android:key="pref_ip_api_url"
|
||||
android:summary="@string/summary_pref_ip_api_url"
|
||||
android:title="@string/title_pref_ip_api_url" />
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="VPN"
|
||||
android:entries="@array/mode_entries"
|
||||
|
||||
Reference in New Issue
Block a user