Refactor reference code with libv2ray remove protect

This commit is contained in:
2dust
2025-04-18 17:20:21 +08:00
parent 21175f41ec
commit 46bc1a49df

View File

@@ -95,7 +95,9 @@ object V2RayServiceManager {
* @param context The context from which the service is started. * @param context The context from which the service is started.
*/ */
private fun startContextService(context: Context) { private fun startContextService(context: Context) {
if (coreController.isRunning) return if (coreController.isRunning) {
return
}
val guid = MmkvManager.getSelectServer() ?: return val guid = MmkvManager.getSelectServer() ?: return
val config = MmkvManager.decodeServerConfig(guid) ?: return val config = MmkvManager.decodeServerConfig(guid) ?: return
if (config.configType != EConfigType.CUSTOM if (config.configType != EConfigType.CUSTOM
@@ -128,12 +130,13 @@ object V2RayServiceManager {
* Starts the V2Ray core service. * Starts the V2Ray core service.
*/ */
fun startCoreLoop(): Boolean { fun startCoreLoop(): Boolean {
val service = getService() ?: return false
val guid = MmkvManager.getSelectServer() ?: return false
val config = MmkvManager.decodeServerConfig(guid) ?: return false
if (coreController.isRunning) { if (coreController.isRunning) {
return false return false
} }
val service = getService() ?: return false
val guid = MmkvManager.getSelectServer() ?: return false
val config = MmkvManager.decodeServerConfig(guid) ?: return false
val result = V2rayConfigManager.getV2rayConfig(service, guid) val result = V2rayConfigManager.getV2rayConfig(service, guid)
if (!result.status) if (!result.status)
return false return false
@@ -224,30 +227,34 @@ object V2RayServiceManager {
* Also fetches remote IP information if the delay test was successful. * Also fetches remote IP information if the delay test was successful.
*/ */
private fun measureV2rayDelay() { private fun measureV2rayDelay() {
if (coreController.isRunning == false) {
return
}
CoroutineScope(Dispatchers.IO).launch { CoroutineScope(Dispatchers.IO).launch {
val service = getService() ?: return@launch val service = getService() ?: return@launch
var time = -1L var time = -1L
var errstr = "" var errorStr = ""
if (coreController.isRunning) {
try {
time = coreController.measureDelay(SettingsManager.getDelayTestUrl())
} catch (e: Exception) {
Log.e(AppConfig.TAG, "Failed to measure delay with primary URL", e)
errorStr = e.message?.substringAfter("\":") ?: "empty message"
}
if (time == -1L) {
try { try {
time = coreController.measureDelay(SettingsManager.getDelayTestUrl()) time = coreController.measureDelay(SettingsManager.getDelayTestUrl(true))
} catch (e: Exception) { } catch (e: Exception) {
Log.e(AppConfig.TAG, "Failed to measure delay with primary URL", e) Log.e(AppConfig.TAG, "Failed to measure delay with alternative URL", e)
errstr = e.message?.substringAfter("\":") ?: "empty message" errorStr = e.message?.substringAfter("\":") ?: "empty message"
}
if (time == -1L) {
try {
time = coreController.measureDelay(SettingsManager.getDelayTestUrl(true))
} catch (e: Exception) {
Log.e(AppConfig.TAG, "Failed to measure delay with alternative URL", e)
errstr = e.message?.substringAfter("\":") ?: "empty message"
}
} }
} }
val result = if (time >= 0) { val result = if (time >= 0) {
service.getString(R.string.connection_test_available, time) service.getString(R.string.connection_test_available, time)
} else { } else {
service.getString(R.string.connection_test_error, errstr) service.getString(R.string.connection_test_error, errorStr)
} }
MessageUtil.sendMsg2UI(service, AppConfig.MSG_MEASURE_DELAY_SUCCESS, result) MessageUtil.sendMsg2UI(service, AppConfig.MSG_MEASURE_DELAY_SUCCESS, result)
@@ -296,16 +303,6 @@ object V2RayServiceManager {
} }
} }
/**
* Protects a socket from being routed through the VPN.
* @param l The socket file descriptor.
* @return True if protection was successful, false otherwise.
*/
override fun protect(l: Long): Boolean {
val serviceControl = serviceControl?.get() ?: return true
return serviceControl.vpnProtect(l.toInt())
}
/** /**
* Called when V2Ray core emits status information. * Called when V2Ray core emits status information.
* @param l Status code. * @param l Status code.