add socket protect
This commit is contained in:
parent
0f89c40a1d
commit
ebfd50f30d
3 changed files with 66 additions and 9 deletions
|
|
@ -82,15 +82,14 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
|
|||
return true
|
||||
}
|
||||
|
||||
override fun tun_builder_reroute_gw(ipv4: Boolean , ipv6: Boolean , flags: Long): Boolean {
|
||||
override fun tun_builder_reroute_gw(ipv4: Boolean, ipv6: Boolean , flags: Long): Boolean {
|
||||
Log.v(tag, "tun_builder_reroute_gw")
|
||||
mService.addRoute("0.0.0.0", 0)
|
||||
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
|
||||
|
||||
Log.v(tag, "tun_builder_exclude_route")
|
||||
mService.addRoute(address, prefix_length);
|
||||
return true
|
||||
}
|
||||
|
|
@ -108,14 +107,45 @@ class OpenVPNThreadv3(var service: VPNService): ClientAPI_OpenVPNClient(), Runna
|
|||
|
||||
override fun tun_builder_add_dns_server(address: String , ipv6: Boolean): Boolean {
|
||||
mService.addDNS(address)
|
||||
mService.addRoute(address, 32)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun tun_builder_set_session_name(name: String ): Boolean {
|
||||
Log.v(tag, "We should call this session: " + name)
|
||||
mService.setSessionName(name)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun tun_builder_set_proxy_http(host: String, port: Int): Boolean {
|
||||
return mService.addHttpProxy(host, port);
|
||||
}
|
||||
|
||||
override fun tun_builder_set_proxy_https(host: String , port: Int): Boolean {
|
||||
Log.v(tag, "tun_builder_set_proxy_https")
|
||||
return false
|
||||
}
|
||||
|
||||
override fun pause_on_connection_timeout(): Boolean {
|
||||
Log.v(tag, "pause_on_connection_timeout")
|
||||
return true
|
||||
}
|
||||
|
||||
override fun tun_builder_add_search_domain(domain: String ): Boolean {
|
||||
mService.setDomain(domain);
|
||||
return true
|
||||
}
|
||||
|
||||
override fun tun_builder_set_layer(layer: Int): Boolean {
|
||||
return layer == 3
|
||||
}
|
||||
|
||||
override fun socket_protect(socket: Int, remote: String, ipv6: Boolean): Boolean {
|
||||
Log.v(tag, "socket_protect")
|
||||
return mService.protect(socket);
|
||||
|
||||
}
|
||||
|
||||
override fun stop() {
|
||||
super.stop()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.IBinder
|
||||
import android.net.ProxyInfo
|
||||
import android.os.ParcelFileDescriptor
|
||||
import android.system.OsConstants
|
||||
import com.wireguard.android.util.SharedLibraryLoader
|
||||
|
|
@ -152,7 +153,7 @@ class VPNService : android.net.VpnService() {
|
|||
return 0
|
||||
}
|
||||
Log.i(tag, "Permission okay")
|
||||
mConfig = json
|
||||
mConfig = json!!
|
||||
mProtocol = mConfig!!.getString("protocol")
|
||||
when (mProtocol) {
|
||||
"openvpn" -> startOpenVpn()
|
||||
|
|
@ -166,6 +167,12 @@ class VPNService : android.net.VpnService() {
|
|||
}
|
||||
|
||||
fun establish(): ParcelFileDescriptor? {
|
||||
mbuilder.allowFamily(OsConstants.AF_INET)
|
||||
mbuilder.allowFamily(OsConstants.AF_INET6)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) mbuilder.setMetered(false)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) setUnderlyingNetworks(null)
|
||||
|
||||
return mbuilder.establish()
|
||||
}
|
||||
|
||||
|
|
@ -174,17 +181,37 @@ class VPNService : android.net.VpnService() {
|
|||
}
|
||||
|
||||
fun addAddress(ip: String, len: Int){
|
||||
Log.v(tag, "mbuilder.addAddress($ip, $len)")
|
||||
mbuilder.addAddress(ip, len)
|
||||
}
|
||||
|
||||
fun addRoute(ip: String, len: Int){
|
||||
Log.v(tag, "mbuilder.addRoute($ip, $len)")
|
||||
mbuilder.addRoute(ip, len)
|
||||
}
|
||||
|
||||
fun addDNS(ip: String){
|
||||
Log.v(tag, "mbuilder.addDnsServer($ip)")
|
||||
mbuilder.addDnsServer(ip)
|
||||
}
|
||||
|
||||
fun setSessionName(name: String){
|
||||
Log.v(tag, "mbuilder.setSession($name)")
|
||||
mbuilder.setSession(name)
|
||||
}
|
||||
|
||||
fun addHttpProxy(host: String, port: Int): Boolean{
|
||||
val proxyInfo = ProxyInfo.buildDirectProxy(host, port)
|
||||
Log.v(tag, "mbuilder.addHttpProxy($host, $port)")
|
||||
mbuilder.setHttpProxy(proxyInfo)
|
||||
return true
|
||||
}
|
||||
|
||||
fun setDomain(domain: String) {
|
||||
Log.v(tag, "mbuilder.setDomain($domain)")
|
||||
mbuilder.addSearchDomain(domain)
|
||||
}
|
||||
|
||||
fun turnOff() {
|
||||
Log.v(tag, "Try to disable tunnel")
|
||||
when(mProtocol){
|
||||
|
|
@ -205,7 +232,7 @@ class VPNService : android.net.VpnService() {
|
|||
private fun ovpnTurnOff() {
|
||||
mOpenVPNThreadv3?.stop()
|
||||
mOpenVPNThreadv3 = null
|
||||
Log.e(tag, "mOpenVPNThreadv3?.stop()")
|
||||
Log.e(tag, "mOpenVPNThreadv3 stop!")
|
||||
}
|
||||
/**
|
||||
* Configures an Android VPN Service Tunnel
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class VPNServiceBinder(service: VPNService) : Binder() {
|
|||
* returns true if the [code] was accepted
|
||||
*/
|
||||
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean {
|
||||
Log.i(tag, "GOT TRANSACTION $code")
|
||||
Log.i(tag, "GOT TRANSACTION " + code)
|
||||
|
||||
when (code) {
|
||||
ACTIONS.activate -> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue