@@ -10,7 +10,7 @@ import (
|
||||
"github.com/2dust/AndroidLibV2rayLite/CoreI"
|
||||
)
|
||||
|
||||
func (v *Escorting) EscortRun(proc string, pt []string, additionalEnv string, sendFd func() int) {
|
||||
func (v *Escorting) EscortRun(proc string, pt []string, additionalEnv string) {
|
||||
log.Println(proc, pt)
|
||||
count := 0
|
||||
for count <= 42 {
|
||||
@@ -37,13 +37,6 @@ func (v *Escorting) EscortRun(proc string, pt []string, additionalEnv string, se
|
||||
*v.escortProcess = append(*v.escortProcess, cmd.Process)
|
||||
log.Println("EscortRun Waiting....")
|
||||
|
||||
if count > 0 {
|
||||
go func() {
|
||||
time.Sleep(time.Second)
|
||||
sendFd()
|
||||
}()
|
||||
}
|
||||
|
||||
if err := cmd.Wait(); err != nil {
|
||||
log.Println("EscortRun cmd.Wait err:", err)
|
||||
}
|
||||
|
||||
@@ -57,7 +57,6 @@ type V2RayVPNServiceSupportsSet interface {
|
||||
Shutdown() int
|
||||
Protect(int) int
|
||||
OnEmitStatus(int, string) int
|
||||
SendFd() int
|
||||
}
|
||||
|
||||
/*RunLoop Run V2Ray main loop
|
||||
@@ -81,7 +80,6 @@ func (v *V2RayPoint) RunLoop() (err error) {
|
||||
if !v.dialer.IsVServerReady() {
|
||||
log.Println("vServer cannot resolved, shutdown")
|
||||
v.StopLoop()
|
||||
v.SupportSet.Shutdown()
|
||||
}
|
||||
|
||||
// stop waiting if manually closed
|
||||
@@ -130,19 +128,10 @@ func (v *V2RayPoint) shutdownInit() {
|
||||
v.status.Vpoint = nil
|
||||
v.statsManager = nil
|
||||
v.escorter.EscortingDown()
|
||||
v.SupportSet.Shutdown()
|
||||
}
|
||||
|
||||
func (v *V2RayPoint) pointloop() error {
|
||||
if err := v.runTun2socks(); err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("EnableLocalDNS: %v\nForwardIpv6: %v\nDomainName: %s",
|
||||
v.EnableLocalDNS,
|
||||
v.ForwardIpv6,
|
||||
v.DomainName)
|
||||
|
||||
log.Println("loading v2ray config")
|
||||
config, err := v2serial.LoadJSONConfig(strings.NewReader(v.ConfigureFileContent))
|
||||
if err != nil {
|
||||
@@ -170,6 +159,17 @@ func (v *V2RayPoint) pointloop() error {
|
||||
v.SupportSet.Prepare()
|
||||
v.SupportSet.Setup(v.status.GetVPNSetupArg(v.EnableLocalDNS, v.ForwardIpv6))
|
||||
v.SupportSet.OnEmitStatus(0, "Running")
|
||||
|
||||
if err := v.runTun2socks(); err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("EnableLocalDNS: %v\nForwardIpv6: %v\nDomainName: %s",
|
||||
v.EnableLocalDNS,
|
||||
v.ForwardIpv6,
|
||||
v.DomainName)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -229,8 +229,7 @@ func (v V2RayPoint) runTun2socks() error {
|
||||
v.escorter.EscortingUp()
|
||||
go v.escorter.EscortRun(
|
||||
v.status.GetApp("libtun2socks.so"),
|
||||
v.status.GetTun2socksArgs(v.EnableLocalDNS, v.ForwardIpv6), "",
|
||||
v.SupportSet.SendFd)
|
||||
v.status.GetTun2socksArgs(v.EnableLocalDNS, v.ForwardIpv6), "")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:supportsRtl="true"
|
||||
android:extractNativeLibs="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name=".ui.MainActivity"
|
||||
|
||||
@@ -11,5 +11,4 @@ interface ServiceControl {
|
||||
|
||||
fun vpnProtect(socket: Int): Boolean
|
||||
|
||||
fun vpnSendFd()
|
||||
}
|
||||
|
||||
@@ -37,10 +37,6 @@ class V2RayProxyOnlyService : Service(), ServiceControl {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun vpnSendFd() {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
override fun onBind(intent: Intent?): IBinder? {
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -111,16 +111,6 @@ object V2RayServiceManager {
|
||||
}
|
||||
}
|
||||
|
||||
override fun sendFd(): Long {
|
||||
val serviceControl = serviceControl?.get() ?: return -1
|
||||
try {
|
||||
serviceControl.vpnSendFd()
|
||||
} catch (e: Exception) {
|
||||
Log.d(serviceControl.getService().packageName, e.toString())
|
||||
return -1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
fun startV2rayPoint() {
|
||||
|
||||
@@ -155,8 +155,8 @@ class V2RayVpnService : VpnService(), ServiceControl {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
try {
|
||||
connectivity.requestNetwork(defaultNetworkRequest, defaultNetworkCallback)
|
||||
} catch (ignored: Exception) {
|
||||
// ignored
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,6 +172,8 @@ class V2RayVpnService : VpnService(), ServiceControl {
|
||||
e.printStackTrace()
|
||||
stopV2Ray()
|
||||
}
|
||||
|
||||
sendFd()
|
||||
}
|
||||
|
||||
private fun sendFd() {
|
||||
@@ -181,7 +183,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
|
||||
GlobalScope.launch(Dispatchers.IO) {
|
||||
var tries = 0
|
||||
while (true) try {
|
||||
Thread.sleep(50L shl tries)
|
||||
Thread.sleep(1000L shl tries)
|
||||
Log.d(packageName, "sendFd tries: $tries")
|
||||
LocalSocket().use { localSocket ->
|
||||
localSocket.connect(LocalSocketAddress(path, LocalSocketAddress.Namespace.FILESYSTEM))
|
||||
@@ -251,7 +253,4 @@ class V2RayVpnService : VpnService(), ServiceControl {
|
||||
return protect(socket)
|
||||
}
|
||||
|
||||
override fun vpnSendFd() {
|
||||
sendFd()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user