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_32/*
deploy/build_64/* deploy/build_64/*
winbuild*.bat winbuild*.bat
client/android/src/net/
# Qt-es # Qt-es
/.qmake.cache /.qmake.cache

View file

@ -37,23 +37,22 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
override fun run() { override fun run() {
//TEMP //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() val config: ClientAPI_Config = ClientAPI_Config()
config.content = lConfigData config.content = lConfigData
val lCreds: ClientAPI_ProvideCreds = ClientAPI_ProvideCreds() val lCreds: ClientAPI_ProvideCreds = ClientAPI_ProvideCreds()
//username from config or GUI //username from config or GUI
lCreds.username = "username" lCreds.username = ""
//password from config or GUI //password from config or GUI
lCreds.password = "password" lCreds.password = ""
provide_creds(lCreds) provide_creds(lCreds)
eval_config(config) eval_config(config)
connect() connect()
Log.i(tag, "connect()") Log.i(tag, "Connect succesfully")
} }
fun readFileDirectlyAsText(fileName: String): String = File(fileName).readText(Charsets.UTF_8) 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 { override fun tun_builder_new(): Boolean {
return true return true
} }
override fun tun_builder_establish(): Int { override fun tun_builder_establish(): Int {
Log.v(tag, "tun_builder_establish") 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 { 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 { 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")) if (address.equals("remote_host"))
return false return false
@ -100,6 +104,7 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
} }
override fun tun_builder_set_mtu(mtu: Int): Boolean { override fun tun_builder_set_mtu(mtu: Int): Boolean {
Log.v(tag, "tun_builder_set_mtu")
mService.setMtu(mtu) mService.setMtu(mtu)
return true return true
} }
@ -109,5 +114,9 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
return true 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 // 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() startOpenVpn()
return localTunnel return 1//localTunnel
} }
fun establish(): ParcelFileDescriptor? {
return mbuilder.establish()
}
fun setMtu(mtu: Int) { fun setMtu(mtu: Int) {
Log.v(tag, "setMtu()" + mtu) Log.v(tag, "setMtu()" + mtu)
@ -245,9 +225,9 @@ class VPNService : android.net.VpnService() {
fun turnOff() { fun turnOff() {
Log.v(tag, "Try to disable tunnel") Log.v(tag, "Try to disable tunnel")
// wgTurnOff(currentTunnelHandle) wgTurnOff(currentTunnelHandle)
// currentTunnelHandle = -1 currentTunnelHandle = -1
// stopForeground(false) stopForeground(false)
isUp = false isUp = false
} }
@ -350,6 +330,7 @@ class VPNService : android.net.VpnService() {
mOpenVPNThreadv3?.run() mOpenVPNThreadv3?.run()
}).start() }).start()
Log.i(tag, "OpenVPNThreadv3 start") Log.i(tag, "OpenVPNThreadv3 start")
isUp = true
} }
companion object { companion object {

View file

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