AWG Android support
This commit is contained in:
parent
7f2ef65fe6
commit
bdfa8bfe5b
4 changed files with 309 additions and 10 deletions
|
|
@ -380,7 +380,10 @@ class VPNService : BaseVpnService(), LocalDnsService.Interface {
|
|||
mNetworkState.bindNetworkListener()
|
||||
}
|
||||
"wireguard" -> {
|
||||
startWireGuard()
|
||||
startWireGuard("wireguard")
|
||||
}
|
||||
"awg" -> {
|
||||
startWireGuard("awg")
|
||||
}
|
||||
"shadowsocks" -> {
|
||||
startShadowsocks()
|
||||
|
|
@ -457,7 +460,8 @@ class VPNService : BaseVpnService(), LocalDnsService.Interface {
|
|||
fun turnOff() {
|
||||
Log.v(tag, "Aman: turnOff....................")
|
||||
when (mProtocol) {
|
||||
"wireguard" -> {
|
||||
"wireguard",
|
||||
"awg" -> {
|
||||
GoBackend.wgTurnOff(currentTunnelHandle)
|
||||
}
|
||||
"cloak",
|
||||
|
|
@ -559,14 +563,14 @@ class VPNService : BaseVpnService(), LocalDnsService.Interface {
|
|||
}
|
||||
return parseData
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a Wireguard [Config] from a [json] string -
|
||||
* The [json] will be created in AndroidVpnProtocol.cpp
|
||||
*/
|
||||
private fun buildWireguardConfig(obj: JSONObject): Config {
|
||||
private fun buildWireguardConfig(obj: JSONObject, type: String): Config {
|
||||
val confBuilder = Config.Builder()
|
||||
val wireguardConfigData = obj.getJSONObject("wireguard_config_data")
|
||||
val wireguardConfigData = obj.getJSONObject(type)
|
||||
val config = parseConfigData(wireguardConfigData.getString("config"))
|
||||
val peerBuilder = Peer.Builder()
|
||||
val peerConfig = config["Peer"]!!
|
||||
|
|
@ -599,6 +603,19 @@ class VPNService : BaseVpnService(), LocalDnsService.Interface {
|
|||
ifaceConfig["DNS"]!!.split(",").forEach {
|
||||
ifaceBuilder.addDnsServer(InetNetwork.parse(it.trim()).address)
|
||||
}
|
||||
|
||||
ifaceBuilder.parsePrivateKey(ifaceConfig["PrivateKey"])
|
||||
if (type == "awg_config_data") {
|
||||
ifaceBuilder.parseJc(ifaceConfig["Jc"])
|
||||
ifaceBuilder.parseJmin(ifaceConfig["Jmin"])
|
||||
ifaceBuilder.parseJmax(ifaceConfig["Jmax"])
|
||||
ifaceBuilder.parseS1(ifaceConfig["S1"])
|
||||
ifaceBuilder.parseS2(ifaceConfig["S2"])
|
||||
ifaceBuilder.parseH1(ifaceConfig["H1"])
|
||||
ifaceBuilder.parseH2(ifaceConfig["H2"])
|
||||
ifaceBuilder.parseH3(ifaceConfig["H3"])
|
||||
ifaceBuilder.parseH4(ifaceConfig["H4"])
|
||||
}
|
||||
/*val jExcludedApplication = obj.getJSONArray("excludedApps")
|
||||
(0 until jExcludedApplication.length()).toList().forEach {
|
||||
val appName = jExcludedApplication.get(it).toString()
|
||||
|
|
@ -716,8 +733,8 @@ class VPNService : BaseVpnService(), LocalDnsService.Interface {
|
|||
}).start()
|
||||
}
|
||||
|
||||
private fun startWireGuard() {
|
||||
val wireguard_conf = buildWireguardConfig(mConfig!!)
|
||||
private fun startWireGuard(type: String) {
|
||||
val wireguard_conf = buildWireguardConfig(mConfig!!, type + "_config_data")
|
||||
Log.i(tag, "startWireGuard: wireguard_conf : $wireguard_conf")
|
||||
if (currentTunnelHandle != -1) {
|
||||
Log.e(tag, "Tunnel already up")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue