mirror of
https://github.com/bolucat/Archive.git
synced 2025-09-26 20:21:35 +08:00
Update On Thu Jul 10 20:38:41 CEST 2025
This commit is contained in:
@@ -12,8 +12,8 @@ android {
|
||||
applicationId = "com.v2ray.ang"
|
||||
minSdk = 21
|
||||
targetSdk = 35
|
||||
versionCode = 658
|
||||
versionName = "1.10.8"
|
||||
versionCode = 659
|
||||
versionName = "1.10.9"
|
||||
multiDexEnabled = true
|
||||
|
||||
val abiFilterList = (properties["ABI_FILTERS"] as? String)?.split(';')
|
||||
|
@@ -194,25 +194,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
|
||||
|
||||
builder.setSession(V2RayServiceManager.getRunningServerName())
|
||||
|
||||
val selfPackageName = BuildConfig.APPLICATION_ID
|
||||
if (MmkvManager.decodeSettingsBool(AppConfig.PREF_PER_APP_PROXY)) {
|
||||
val apps = MmkvManager.decodeSettingsStringSet(AppConfig.PREF_PER_APP_PROXY_SET)
|
||||
val bypassApps = MmkvManager.decodeSettingsBool(AppConfig.PREF_BYPASS_APPS)
|
||||
//process self package
|
||||
if (bypassApps) apps?.add(selfPackageName) else apps?.remove(selfPackageName)
|
||||
apps?.forEach {
|
||||
try {
|
||||
if (bypassApps)
|
||||
builder.addDisallowedApplication(it)
|
||||
else
|
||||
builder.addAllowedApplication(it)
|
||||
} catch (e: PackageManager.NameNotFoundException) {
|
||||
Log.e(AppConfig.TAG, "Failed to configure app in VPN: ${e.localizedMessage}", e)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
builder.addDisallowedApplication(selfPackageName)
|
||||
}
|
||||
configurePerAppProxy(builder)
|
||||
|
||||
// Close the old interface since the parameters have been changed.
|
||||
try {
|
||||
@@ -249,6 +231,51 @@ class V2RayVpnService : VpnService(), ServiceControl {
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures per-app proxy rules for the VPN builder.
|
||||
*
|
||||
* - If per-app proxy is not enabled, disallow the VPN service's own package.
|
||||
* - If no apps are selected, disallow the VPN service's own package.
|
||||
* - If bypass mode is enabled, disallow all selected apps (including self).
|
||||
* - If proxy mode is enabled, only allow the selected apps (excluding self).
|
||||
*
|
||||
* @param builder The VPN Builder to configure.
|
||||
*/
|
||||
private fun configurePerAppProxy(builder: Builder) {
|
||||
val selfPackageName = BuildConfig.APPLICATION_ID
|
||||
|
||||
// If per-app proxy is not enabled, disallow the VPN service's own package and return
|
||||
if (MmkvManager.decodeSettingsBool(AppConfig.PREF_PER_APP_PROXY) == false) {
|
||||
builder.addDisallowedApplication(selfPackageName)
|
||||
return
|
||||
}
|
||||
|
||||
// If no apps are selected, disallow the VPN service's own package and return
|
||||
val apps = MmkvManager.decodeSettingsStringSet(AppConfig.PREF_PER_APP_PROXY_SET)
|
||||
if (apps.isNullOrEmpty()) {
|
||||
builder.addDisallowedApplication(selfPackageName)
|
||||
return
|
||||
}
|
||||
|
||||
val bypassApps = MmkvManager.decodeSettingsBool(AppConfig.PREF_BYPASS_APPS)
|
||||
// Handle the VPN service's own package according to the mode
|
||||
if (bypassApps) apps.add(selfPackageName) else apps.remove(selfPackageName)
|
||||
|
||||
apps.forEach {
|
||||
try {
|
||||
if (bypassApps) {
|
||||
// In bypass mode, disallow the selected apps
|
||||
builder.addDisallowedApplication(it)
|
||||
} else {
|
||||
// In proxy mode, only allow the selected apps
|
||||
builder.addAllowedApplication(it)
|
||||
}
|
||||
} catch (e: PackageManager.NameNotFoundException) {
|
||||
Log.e(AppConfig.TAG, "Failed to configure app in VPN: ${e.localizedMessage}", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the tun2socks process.
|
||||
* Starts the tun2socks process with the appropriate parameters.
|
||||
|
@@ -82,6 +82,10 @@
|
||||
android:icon="@drawable/ic_share_24dp"
|
||||
android:title="@string/title_export_all"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/intelligent_selection_all"
|
||||
android:title="@string/title_create_intelligent_selection_all_server"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/ping_all"
|
||||
android:title="@string/title_ping_all_server"
|
||||
@@ -98,8 +102,4 @@
|
||||
android:id="@+id/sub_update"
|
||||
android:title="@string/title_sub_update"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/intelligent_selection_all"
|
||||
android:title="@string/title_create_intelligent_selection_all_server"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
Reference in New Issue
Block a user