Compare commits

...

7 Commits

Author SHA1 Message Date
2dust
f610e1d20a Merge pull request #1879 from MUedsa/idn_to_accii
only domain idn to ascii
2022-12-30 18:16:37 +08:00
MUEDSA
9f4127a588 only domain idn to ascii 2022-12-30 17:08:36 +08:00
2dust
a211bc24cb up 1.7.31 2022-12-30 12:47:09 +08:00
2dust
6f47aa33e8 Convert idn domain 2022-12-30 12:46:51 +08:00
2dust
90636bb294 Merge pull request #1800 from zjudongze/master
restart tun2socks process if exited abnormally
2022-12-30 10:35:00 +08:00
2dust
ff98ff02c5 up 1.7.30 2022-12-13 19:49:59 +08:00
derek.dong
3a1daf1888 restart tun2socks process if exited abnormally 2022-11-23 16:25:38 +08:00
4 changed files with 21 additions and 3 deletions

View File

@@ -18,8 +18,8 @@ android {
minSdkVersion 21
targetSdkVersion Integer.parseInt("$targetSdkVer")
multiDexEnabled true
versionCode 488
versionName "1.7.28"
versionCode 492
versionName "1.7.31"
}
if (props["sign"]) {

View File

@@ -36,6 +36,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
private val settingsStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_SETTING, MMKV.MULTI_PROCESS_MODE) }
private lateinit var mInterface: ParcelFileDescriptor
private var isRunning = false
//val fd: Int get() = mInterface.fd
private lateinit var process: Process
@@ -183,6 +184,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
// Create a new interface using the builder and save the parameters.
try {
mInterface = builder.establish()!!
isRunning = true
runTun2socks()
} catch (e: Exception) {
// non-nullable lateinit var
@@ -219,6 +221,15 @@ class V2RayVpnService : VpnService(), ServiceControl {
process = proBuilder
.directory(applicationContext.filesDir)
.start()
Thread(Runnable {
Log.d(packageName,"$TUN2SOCKS check")
process.waitFor()
Log.d(packageName,"$TUN2SOCKS exited")
if (isRunning) {
Log.d(packageName,"$TUN2SOCKS restart")
runTun2socks()
}
}).start()
Log.d(packageName, process.toString())
sendFd()
@@ -262,6 +273,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
// val emptyInfo = VpnNetworkInfo()
// val info = loadVpnNetworkInfo(configName, emptyInfo)!! + (lastNetworkInfo ?: emptyInfo)
// saveVpnNetworkInfo(configName, info)
isRunning = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
try {
connectivity.unregisterNetworkCallback(defaultNetworkCallback)

View File

@@ -488,7 +488,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
if (!it.second.enabled) {
return@forEach
}
val url = it.second.url
val url = Utils.idnToASCII(it.second.url)
if (!Utils.isValidUrl(url)) {
return@forEach
}

View File

@@ -429,5 +429,11 @@ object Utils {
fun removeWhiteSpace(str: String?): String? {
return str?.replace(" ", "")
}
fun idnToASCII(str: String): String {
val url = URL(str)
return URL(url.protocol, IDN.toASCII(url.host, IDN.ALLOW_UNASSIGNED), url.port, url.file)
.toExternalForm()
}
}