|
@@ -82,6 +82,9 @@ class VPNConnectionsUtil: VpnStatus.StateListener {
|
|
|
var pm: ProfileManager? = null
|
|
|
var thread: Thread? = null
|
|
|
|
|
|
+ private lateinit var openVpnStateReceiver: OpenVpnStateReceiver
|
|
|
+
|
|
|
+
|
|
|
private val mConnection: ServiceConnection = object : ServiceConnection {
|
|
|
override fun onServiceConnected(className: ComponentName, service: IBinder) {
|
|
|
App.mService = IOpenVPNServiceInternal.Stub.asInterface(service)
|
|
@@ -320,11 +323,28 @@ class VPNConnectionsUtil: VpnStatus.StateListener {
|
|
|
fun vpnWireGuard(isUp: Boolean) {
|
|
|
Log.d("test_wg", "vpnWireGuard = $isUp")
|
|
|
|
|
|
+ dnswg = if (basePreferenceHelper.getAdBlockState()) {
|
|
|
+ "10.8.8.8"
|
|
|
+ } else {
|
|
|
+ "10.9.9.9"
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d("test_wg", "dnswg = $dnswg")
|
|
|
+
|
|
|
+
|
|
|
val interfaceBuilder: Interface.Builder? = Interface.Builder()
|
|
|
// WireGuard
|
|
|
|
|
|
AsyncTask.execute {
|
|
|
try {
|
|
|
+ val type = object : TypeToken<SortedSet<String?>?>() {}.type
|
|
|
+ val selectedApps = Gson().fromJson<SortedSet<String>>(
|
|
|
+ basePreferenceHelper.getSplitTunneledApps(), type
|
|
|
+ )
|
|
|
+ val selectedAppsNoVpn = Gson().fromJson<SortedSet<String>>(
|
|
|
+ basePreferenceHelper.getSplitTunneledAppsNotAllow(), type
|
|
|
+ )
|
|
|
+
|
|
|
if (isUp) {
|
|
|
App.tunnelStatus = Tunnel.State.UP
|
|
|
homeViewModel.setConnectState(App.CONNECTED)
|
|
@@ -340,28 +360,58 @@ class VPNConnectionsUtil: VpnStatus.StateListener {
|
|
|
val wireguard = basePreferenceHelper.getWireGuard()
|
|
|
Log.d("test_wg", "server = ${server?.server_name}, dns = ${server?.dns}, wg.ip = ${wireguard?.ip}, wg.key = ${wireguard?.key}")
|
|
|
|
|
|
+ basePreferenceHelper.getSplitPosition().let {
|
|
|
+ when(it) {
|
|
|
+ splitList[0] -> {
|
|
|
+ App.backend?.setState(
|
|
|
+ App.getTunnel(), App.tunnelStatus, Config.Builder().setInterface(
|
|
|
+ interfaceBuilder!!.addAddress(InetNetwork.parse(basePreferenceHelper.getWireGuard()?.ip + "/32"))
|
|
|
+ .parsePrivateKey(basePreferenceHelper.getWireGuard()?.key)
|
|
|
+ .parseDnsServers(dnswg)
|
|
|
+ .build()
|
|
|
+ ).addPeer(
|
|
|
+ App.peerBuilder.addAllowedIp(InetNetwork.parse("0.0.0.0/0"))
|
|
|
+ .setEndpoint(InetEndpoint.parse(basePreferenceHelper.getServerObject()?.dns + ":51820"))
|
|
|
+ .parsePublicKey(basePreferenceHelper.getServerObject()?.wg_key).build()
|
|
|
+ ).build()
|
|
|
+ )
|
|
|
+ }
|
|
|
+ splitList[1] -> {
|
|
|
+ App.backend?.setState(
|
|
|
+ App.getTunnel(), App.tunnelStatus, Config.Builder().setInterface(
|
|
|
+ interfaceBuilder!!.addAddress(InetNetwork.parse(basePreferenceHelper.getWireGuard()?.ip + "/32"))
|
|
|
+ .parsePrivateKey(basePreferenceHelper.getWireGuard()?.key)
|
|
|
+ .parseDnsServers(dnswg)
|
|
|
+ .includeApplications(selectedApps)
|
|
|
+ .build()
|
|
|
+ ).addPeer(
|
|
|
+ App.peerBuilder.addAllowedIp(InetNetwork.parse("0.0.0.0/0"))
|
|
|
+ .setEndpoint(InetEndpoint.parse(basePreferenceHelper.getServerObject()?.dns + ":51820"))
|
|
|
+ .parsePublicKey(basePreferenceHelper.getServerObject()?.wg_key).build()
|
|
|
+ ).build()
|
|
|
+ )
|
|
|
+ }
|
|
|
+ splitList[2] -> {
|
|
|
+ App.backend?.setState(
|
|
|
+ App.getTunnel(), App.tunnelStatus, Config.Builder().setInterface(
|
|
|
+ interfaceBuilder!!.addAddress(InetNetwork.parse(basePreferenceHelper.getWireGuard()?.ip + "/32"))
|
|
|
+ .parsePrivateKey(basePreferenceHelper.getWireGuard()?.key)
|
|
|
+ .parseDnsServers(dnswg)
|
|
|
+ .includeApplications(selectedAppsNoVpn)
|
|
|
+ .build()
|
|
|
+ ).addPeer(
|
|
|
+ App.peerBuilder.addAllowedIp(InetNetwork.parse("0.0.0.0/0"))
|
|
|
+ .setEndpoint(InetEndpoint.parse(basePreferenceHelper.getServerObject()?.dns + ":51820"))
|
|
|
+ .parsePublicKey(basePreferenceHelper.getServerObject()?.wg_key).build()
|
|
|
+ ).build()
|
|
|
+ )
|
|
|
+ }
|
|
|
+ else -> {}
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
Log.d("test_wg", "${App.backend} ${App.getTunnel()} ${App.tunnelStatus} ${App.peerBuilder}")
|
|
|
- App.backend?.setState(
|
|
|
- App.getTunnel(), App.tunnelStatus, Config.Builder().setInterface(
|
|
|
- interfaceBuilder!!.addAddress(InetNetwork.parse(basePreferenceHelper.getWireGuard()?.ip + "/32"))
|
|
|
- .parsePrivateKey(basePreferenceHelper.getWireGuard()?.key)
|
|
|
- .parseDnsServers("10.8.8.8")
|
|
|
- .build()
|
|
|
- ).addPeer(
|
|
|
- App.peerBuilder.addAllowedIp(InetNetwork.parse("0.0.0.0/0"))
|
|
|
- .setEndpoint(InetEndpoint.parse(basePreferenceHelper.getServerObject()?.dns + ":51820"))
|
|
|
- .parsePublicKey(basePreferenceHelper.getServerObject()?.wg_key).build()
|
|
|
- ).build()
|
|
|
- )
|
|
|
|
|
|
-// try {
|
|
|
-// App.backend?.runningTunnelNames
|
|
|
-// } catch (e: Exception) {
|
|
|
-// val back = GoBackend(context)
|
|
|
-// App.setBackend(back)
|
|
|
-// App.backend = App.getBackend()
|
|
|
-// }
|
|
|
-// homeViewModel.setConnectState(true)
|
|
|
|
|
|
} catch (e: java.lang.Exception) {
|
|
|
e.printStackTrace()
|
|
@@ -538,6 +588,21 @@ class VPNConnectionsUtil: VpnStatus.StateListener {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ inner class OpenVpnStateReceiver : BroadcastReceiver() {
|
|
|
+ override fun onReceive(context: Context?, intent: Intent?) {
|
|
|
+ if (intent != null && intent.action != null) {
|
|
|
+ val action = intent.action
|
|
|
+ when (action) {
|
|
|
+ OpenVPNService.ACTION_VPN_CONNECTED -> {
|
|
|
+ Log.d("OpenVpnStateReceiver", "OpenVpnStateReceiver")
|
|
|
+ homeViewModel.setConnectState(App.CONNECTED)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
fun onStopCallBack() {
|
|
|
Log.d("test_home_resume", "onStopCallBack!")
|
|
|
VpnStatus.removeStateListener(this)
|
|
@@ -588,6 +653,17 @@ class VPNConnectionsUtil: VpnStatus.StateListener {
|
|
|
} catch (e: Exception) {
|
|
|
e.printStackTrace()
|
|
|
}
|
|
|
+
|
|
|
+ try {
|
|
|
+ openVpnStateReceiver = OpenVpnStateReceiver()
|
|
|
+ val filter = IntentFilter()
|
|
|
+ filter.addAction(OpenVPNService.ACTION_VPN_CONNECTED)
|
|
|
+
|
|
|
+ LocalBroadcastManager.getInstance(context)
|
|
|
+ .registerReceiver(openVpnStateReceiver, filter)
|
|
|
+ } catch (e: Exception) {
|
|
|
+ e.printStackTrace()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
fun onPauseCallBack() {
|
|
@@ -615,6 +691,13 @@ class VPNConnectionsUtil: VpnStatus.StateListener {
|
|
|
} catch (e: Exception) {
|
|
|
e.printStackTrace()
|
|
|
}
|
|
|
+
|
|
|
+// try {
|
|
|
+// LocalBroadcastManager.getInstance(context)
|
|
|
+// .unregisterReceiver(openVpnStateReceiver)
|
|
|
+// } catch (e: Exception) {
|
|
|
+// e.printStackTrace()
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
private fun getJsonFileDetails(): InputStream? {
|