From da447e5669c3adaef688e8c361ed2c85426fcdeb Mon Sep 17 00:00:00 2001 From: VolgaIgor <43250768+VolgaIgor@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:18:54 +0300 Subject: [PATCH 1/3] Added curl package to Dockerfile (#3665) --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ec7a6e7b..bdf877ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,8 @@ RUN apk add --no-cache --update \ ca-certificates \ tzdata \ fail2ban \ - bash + bash \ + curl COPY --from=builder /app/build/ /app/ COPY --from=builder /app/DockerEntrypoint.sh /app/ From a691eaea8dc2b08bba3f24ef4d97fb798204ad45 Mon Sep 17 00:00:00 2001 From: VolgaIgor <43250768+VolgaIgor@users.noreply.github.com> Date: Mon, 12 Jan 2026 04:53:43 +0300 Subject: [PATCH 2/3] Fixed incorrect filtering for IDN top-level domains (#3666) --- install.sh | 2 +- update.sh | 2 +- x-ui.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 59be30ce..d8e95e22 100644 --- a/install.sh +++ b/install.sh @@ -53,7 +53,7 @@ is_ip() { is_ipv4 "$1" || is_ipv6 "$1" } is_domain() { - [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*)\.([A-Za-z]{2,})$ ]] && return 0 || return 1 + [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+(xn--[a-z0-9]{2,}|[A-Za-z]{2,})$ ]] && return 0 || return 1 } # Port helpers diff --git a/update.sh b/update.sh index 800841f5..91c37c37 100755 --- a/update.sh +++ b/update.sh @@ -78,7 +78,7 @@ is_ip() { is_ipv4 "$1" || is_ipv6 "$1" } is_domain() { - [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+[A-Za-z]{2,}$ ]] && return 0 || return 1 + [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+(xn--[a-z0-9]{2,}|[A-Za-z]{2,})$ ]] && return 0 || return 1 } # Port helpers diff --git a/x-ui.sh b/x-ui.sh index 4dda45a0..07aaddc6 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -47,7 +47,7 @@ is_ip() { is_ipv4 "$1" || is_ipv6 "$1" } is_domain() { - [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+[A-Za-z]{2,}$ ]] && return 0 || return 1 + [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+(xn--[a-z0-9]{2,}|[A-Za-z]{2,})$ ]] && return 0 || return 1 } # check root From 8098d2b1b1c028e4f3d220cc27f43c7a70115a0e Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Tue, 13 Jan 2026 17:40:52 +0100 Subject: [PATCH 3/3] Return nil if no error in GetXrayErr Added a check to return nil immediately if p.GetErr() returns nil in GetXrayErr, preventing further error handling when no error is present. --- web/service/xray.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/service/xray.go b/web/service/xray.go index 43178d2f..511ffdda 100644 --- a/web/service/xray.go +++ b/web/service/xray.go @@ -40,6 +40,9 @@ func (s *XrayService) GetXrayErr() error { } err := p.GetErr() + if err == nil { + return nil + } if runtime.GOOS == "windows" && err.Error() == "exit status 1" { // exit status 1 on Windows means that Xray process was killed