openvpn connection logic fix
This commit is contained in:
parent
1ceee8901e
commit
ab1e31b2ff
4 changed files with 33 additions and 41 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -8,6 +8,8 @@ deploy/build/*
|
|||
deploy/build_32/*
|
||||
deploy/build_64/*
|
||||
winbuild*.bat
|
||||
client/android/src/net/
|
||||
|
||||
|
||||
# Qt-es
|
||||
/.qmake.cache
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue