openvpn connection logic fix

This commit is contained in:
Розов Никита Валерьевич 2021-10-11 15:36:40 +03:00
parent 1ceee8901e
commit ab1e31b2ff
4 changed files with 33 additions and 41 deletions

2
.gitignore vendored
View file

@ -8,6 +8,8 @@ deploy/build/*
deploy/build_32/*
deploy/build_64/*
winbuild*.bat
client/android/src/net/
# Qt-es
/.qmake.cache

View file

@ -37,23 +37,22 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
override fun run() {
//TEMP
Log.i(tag, "run()")
val lConfigData: String = readFileDirectlyAsText("/data/local/tmp/osinit.ovpn")
val lConfigData: String = readFileDirectlyAsText("/data/local/tmp/android_conf.ovpn")
val config: ClientAPI_Config = ClientAPI_Config()
config.content = lConfigData
val lCreds: ClientAPI_ProvideCreds = ClientAPI_ProvideCreds()
val lCreds: ClientAPI_ProvideCreds = ClientAPI_ProvideCreds()
//username from config or GUI
lCreds.username = "username"
lCreds.username = ""
//password from config or GUI
lCreds.password = "password"
lCreds.password = ""
provide_creds(lCreds)
eval_config(config)
connect()
Log.i(tag, "connect()")
Log.i(tag, "Connect succesfully")
}
fun readFileDirectlyAsText(fileName: String): String = File(fileName).readText(Charsets.UTF_8)
@ -67,17 +66,13 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
}
// override fun reconnect() {
// reconnect(1);
// }
override fun tun_builder_new(): Boolean {
return true
}
override fun tun_builder_establish(): Int {
Log.v(tag, "tun_builder_establish")
return mService.turnOn(null)!!.detachFd()
return mService.establish()!!.detachFd()
}
override fun tun_builder_add_address(address: String , prefix_length: Int , gateway: String , ipv6:Boolean , net30: Boolean ): Boolean {
@ -87,6 +82,15 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
}
override fun tun_builder_add_route(address: String, prefix_length: Int, metric: Int, ipv6: Boolean): Boolean {
Log.v(tag, "tun_builder_add_route")
if (address.equals("remote_host"))
return false
mService.addRoute(address, prefix_length);
return true
}
override fun tun_builder_exclude_route(address: String, prefix_length: Int, metric: Int, ipv6: Boolean): Boolean {
if (address.equals("remote_host"))
return false
@ -100,6 +104,7 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
}
override fun tun_builder_set_mtu(mtu: Int): Boolean {
Log.v(tag, "tun_builder_set_mtu")
mService.setMtu(mtu)
return true
}
@ -109,5 +114,9 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
return true
}
override fun tun_builder_set_session_name(name: String ): Boolean {
Log.v(tag, "We should call this session: " + name)
return true
}
}

View file

@ -192,36 +192,16 @@ class VPNService : android.net.VpnService() {
// NotificationUtil.show(this) // Go foreground
// val builder = Builder()
// // setupBuilder(wireguard_conf, builder)
// builder.addAddress("192.168.194.1", 24)
// builder.addDnsServer("8.8.8.8")
// builder.addRoute("0.0.0.0", 0)
// builder.setSession("mvpn0")
// builder.establish()
// Configure a new interface from our VpnService instance. This must be done
// from inside a VpnService.
// val builder = Builder()
// Create a local TUN interface using predetermined addresses. In your app,
// you typically use values returned from the VPN gateway during handshaking.
// val localTunnel = builder
// .addAddress("10.0.20.1", 0)
// .addRoute("192.168.111.0", 24)
// .addDnsServer("192.168.111.1")
// .establish()
val localTunnel = mbuilder.establish()
Log.v(tag, "builder.establish()")
startOpenVpn()
return localTunnel
return 1//localTunnel
}
fun establish(): ParcelFileDescriptor? {
return mbuilder.establish()
}
fun setMtu(mtu: Int) {
Log.v(tag, "setMtu()" + mtu)
@ -245,9 +225,9 @@ class VPNService : android.net.VpnService() {
fun turnOff() {
Log.v(tag, "Try to disable tunnel")
// wgTurnOff(currentTunnelHandle)
// currentTunnelHandle = -1
// stopForeground(false)
wgTurnOff(currentTunnelHandle)
currentTunnelHandle = -1
stopForeground(false)
isUp = false
}
@ -350,6 +330,7 @@ class VPNService : android.net.VpnService() {
mOpenVPNThreadv3?.run()
}).start()
Log.i(tag, "OpenVPNThreadv3 start")
isUp = true
}
companion object {

View file

@ -193,10 +193,10 @@ android {
android/gradlew \
android/gradlew.bat \
android/res/values/libs.xml \
android/src/org/amnezia/vpn/OpenVPNThreadv3.kt \
android/src/org/amnezia/vpn/VpnService.kt \
android/src/org/amnezia/vpn/VpnServiceBinder.kt \
android/src/org/amnezia/vpn/qt/VPNPermissionHelper.kt \
android/src/org/amnezia/vpn/VPNCli.kt
android/src/org/amnezia/vpn/qt/VPNPermissionHelper.kt
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android