Skip to content

Commit b154ce9

Browse files
authored
Merge pull request #190 from andbul/main
Чиню падение туннеля при подключении и пару связанных багов
2 parents 58bf75b + e7b61a5 commit b154ce9

4 files changed

Lines changed: 22 additions & 7 deletions

File tree

.github/workflows/build-release.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ jobs:
136136
GOARCH=arm64 \
137137
CC="$TOOLCHAIN/aarch64-linux-android${ANDROID_MIN_API}-clang" \
138138
go build \
139-
-buildmode=c-shared \
140139
-trimpath \
141140
-ldflags="-s -w -checklinkname=0" \
142141
-o ../app/src/main/jniLibs/arm64-v8a/libclient.so \
@@ -152,7 +151,6 @@ jobs:
152151
GOARM=7 \
153152
CC="$TOOLCHAIN/armv7a-linux-androideabi${ANDROID_MIN_API}-clang" \
154153
go build \
155-
-buildmode=c-shared \
156154
-trimpath \
157155
-ldflags="-s -w -checklinkname=0" \
158156
-o ../app/src/main/jniLibs/armeabi-v7a/libclient.so \
@@ -167,7 +165,6 @@ jobs:
167165
GOARCH=amd64 \
168166
CC="$TOOLCHAIN/x86_64-linux-android${ANDROID_MIN_API}-clang" \
169167
go build \
170-
-buildmode=c-shared \
171168
-trimpath \
172169
-ldflags="-s -w -checklinkname=0" \
173170
-o ../app/src/main/jniLibs/x86_64/libclient.so \

app/src/main/java/com/wdtt/client/TunnelService.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,12 @@ class TunnelService : Service() {
280280
private fun startStatsUpdater() {
281281
updateJob?.cancel()
282282
updateJob = TunnelManager.scope.launch(Dispatchers.Main) {
283+
// Сторож следит за ПРОПАЖОЙ уже поднятого VPN-интерфейса, а не за его
284+
// отсутствием во время подключения. Фаза установки туннеля (капча → VK-креды →
285+
// WRAP → TURN/DTLS → выдача WireGuard-конфига) может занимать значительно больше
286+
// времени, чем любое фиксированное окно, особенно при ручном обходе капчи, поэтому
287+
// аварийно глушим туннель только если интерфейс был поднят и затем пропал/заменён.
288+
var wasEverUp = false
283289
delay(1000)
284290
while (isActive) {
285291
if (!TunnelManager.running.value && !isTunnelPaused) {
@@ -289,8 +295,9 @@ class TunnelService : Service() {
289295
}
290296
if (TunnelManager.running.value && !isTunnelPaused) {
291297
val helper = WireGuardHelper(applicationContext)
292-
val startupWindow = System.currentTimeMillis() - TunnelManager.processStartedAtMs < 6000
293-
if (!startupWindow && !helper.isTunnelUp()) {
298+
if (helper.isTunnelUp()) {
299+
wasEverUp = true
300+
} else if (wasEverUp) {
294301
Log.w("TunnelService", "Обнаружена пропажа или замена VPN-интерфейса! Экстренное выключение туннеля.")
295302
stopTunnel()
296303
break

app/src/main/java/com/wdtt/client/ui/DeployTab.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,10 @@ private suspend fun performDeploy(
584584
val passArg = if (mainPass.isNotBlank()) "-password $mainPass " else ""
585585
val adminArg = if (adminId.isNotBlank()) "-admin $adminId " else ""
586586
val botArg = if (botToken.isNotBlank()) "-bot-token $botToken " else ""
587-
val dnsArg = "-dns ${if(dns1.isNotBlank()) dns1 else "1.1.1.1"}${if(dns2.isNotBlank()) ",$dns2" else ""} "
587+
// -dns поддерживается сервером (server.go, флаг -dns). Передаём только при заданном
588+
// значении; несколько адресов — через запятую. Пустые поля -> сервер берёт свой default.
589+
val dnsValue = listOf(dns1, dns2).map { it.trim() }.filter { it.isNotEmpty() }.joinToString(",")
590+
val dnsArg = if (dnsValue.isNotEmpty()) "-dns $dnsValue " else ""
588591
val args = "$passArg$adminArg$botArg$dnsArg".trim()
589592

590593
val scriptFile = File(context.cacheDir, "deploy.sh")

server.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,14 @@ const (
4949
wgServerAddr = "10.66.66.1"
5050
wgServerCIDR = wgServerAddr + "/24"
5151
defaultInternalWGPort = 56001
52-
dns = "1.1.1.1"
5352
wgMTU = 1280
5453
keepalive = 25
5554
)
5655

56+
// dns — DNS-серверы, прописываемые в WireGuard-конфиг клиента.
57+
// Значение по умолчанию переопределяется флагом -dns (несколько через запятую).
58+
var dns = "1.1.1.1"
59+
5760
// ==================== База данных и Бот ====================
5861

5962
type ClientDevice struct {
@@ -1311,8 +1314,13 @@ func main() {
13111314
mainPass := flag.String("password", "", "пароль владельца")
13121315
adminID := flag.String("admin", "", "Telegram Admin ID")
13131316
botToken := flag.String("bot-token", "", "Telegram Bot Token")
1317+
dnsFlag := flag.String("dns", dns, "DNS для клиента (можно несколько через запятую)")
13141318
flag.Parse()
13151319

1320+
if v := strings.TrimSpace(*dnsFlag); v != "" {
1321+
dns = v
1322+
}
1323+
13161324
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds)
13171325
log.Println("══════════════════════════════════════════")
13181326
log.Println(" WDTT Server v2 (Multi-User)")

0 commit comments

Comments
 (0)