package com.vpnproxydetect import android.content.Context import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.Promise import com.facebook.react.module.annotations.ReactModule @ReactModule(name = VpnProxyDetectModule.NAME) class VpnProxyDetectModule(reactContext: ReactApplicationContext) : NativeVpnProxyDetectSpec(reactContext) { override fun getName(): String { return NAME } override fun detectVPN(promise: Promise) { try { val cm = reactApplicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val networks = cm.allNetworks var isRunningVPN = false for (network in networks) { val caps = cm.getNetworkCapabilities(network) if (caps != null && (caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN) || !caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN))) { isRunningVPN = true break } } promise.resolve(isRunningVPN) } catch (e: Exception) { promise.reject("VPN_DETECTION_ERROR", "Failed to detect VPN", e) } } override fun detectProxy(promise: Promise) { try { val isProxySet = System.getProperty("http.proxyPort") != null promise.resolve(isProxySet) } catch (e: Exception) { promise.reject("PROXY_DETECTION_ERROR", "Failed to detect proxy", e) } } companion object { const val NAME = "VpnProxyDetect" } }