From 98a151747095569a1c2e184674e3187ba7ba19ba Mon Sep 17 00:00:00 2001 From: "Shishkevich D." <135337715+shishkevichd@users.noreply.github.com> Date: Sun, 6 Jul 2025 13:22:09 +0700 Subject: [PATCH 01/27] fix: login title shifts the input fields * chore: revert "fix: reduced login title font-size for mobile (#3105)" * chore: short login title translation for russian * chore: change login title translation for ukrainian --- web/html/login.html | 6 ------ web/translation/translate.ru_RU.toml | 2 +- web/translation/translate.uk_UA.toml | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/web/html/login.html b/web/html/login.html index be6b9585..69a8400f 100644 --- a/web/html/login.html +++ b/web/html/login.html @@ -297,12 +297,6 @@ min-height: 40px; } } - - @media (max-width: 1024px) { - .title { - font-size: 1.4rem; - } - } .words-wrapper { width: 100%; diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index ce40138c..687f7a97 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -84,7 +84,7 @@ [pages.login] "hello" = "Привет!" -"title" = "Добро пожаловать!" +"title" = "Приветствие!" "loginAgain" = "Сессия истекла. Войдите в систему снова" [pages.login.toasts] diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml index 7066ee49..83e984b2 100644 --- a/web/translation/translate.uk_UA.toml +++ b/web/translation/translate.uk_UA.toml @@ -84,7 +84,7 @@ [pages.login] "hello" = "Привіт" -"title" = "Ласкаво просимо" +"title" = "Привітання!" "loginAgain" = "Ваш сеанс закінчився, увійдіть знову" [pages.login.toasts] From 038cf34219ed6f7ad2fcdc6497d527de031989d1 Mon Sep 17 00:00:00 2001 From: "Shishkevich D." <135337715+shishkevichd@users.noreply.github.com> Date: Sun, 6 Jul 2025 15:20:41 +0700 Subject: [PATCH 02/27] chore: return automatic generation of shadowsocks keys --- web/assets/js/model/inbound.js | 4 ++-- web/html/modals/client_modal.html | 8 ++++---- web/html/modals/inbound_modal.html | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index ff30ef1b..cbdeaa8a 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -2149,7 +2149,7 @@ Inbound.TrojanSettings.Fallback = class extends XrayCommonClass { Inbound.ShadowsocksSettings = class extends Inbound.Settings { constructor(protocol, method = SSMethods.BLAKE3_AES_256_GCM, - password = '', + password = RandomUtil.randomShadowsocksPassword(), network = 'tcp,udp', shadowsockses = [new Inbound.ShadowsocksSettings.Shadowsocks()], ivCheck = false, @@ -2187,7 +2187,7 @@ Inbound.ShadowsocksSettings = class extends Inbound.Settings { Inbound.ShadowsocksSettings.Shadowsocks = class extends XrayCommonClass { constructor( method = '', - password = '', + password = RandomUtil.randomShadowsocksPassword(), email = RandomUtil.randomLowerAndNum(8), limitIp = 0, totalGB = 0, diff --git a/web/html/modals/client_modal.html b/web/html/modals/client_modal.html index eba3c2c1..623e720d 100644 --- a/web/html/modals/client_modal.html +++ b/web/html/modals/client_modal.html @@ -47,7 +47,7 @@ } this.oldClientId = this.getClientId(dbInbound.protocol, clients[index]); } else { - this.addClient(this.inbound.protocol, this.clients); + this.addClient(this.inbound, this.clients); } this.clientStats = this.dbInbound.clientStats.find(row => row.email === this.clients[this.index].email); this.confirm = confirm; @@ -59,12 +59,12 @@ default: return client.id; } }, - addClient(protocol, clients) { - switch (protocol) { + addClient(inbound, clients) { + switch (inbound.protocol) { case Protocols.VMESS: return clients.push(new Inbound.VmessSettings.VMESS()); case Protocols.VLESS: return clients.push(new Inbound.VLESSSettings.VLESS()); case Protocols.TROJAN: return clients.push(new Inbound.TrojanSettings.Trojan()); - case Protocols.SHADOWSOCKS: return clients.push(new Inbound.ShadowsocksSettings.Shadowsocks(clients[0].method)); + case Protocols.SHADOWSOCKS: return clients.push(new Inbound.ShadowsocksSettings.Shadowsocks(clients[0].method, RandomUtil.randomShadowsocksPassword(inbound.settings.method))); default: return null; } }, diff --git a/web/html/modals/inbound_modal.html b/web/html/modals/inbound_modal.html index 99d182b9..8be213a8 100644 --- a/web/html/modals/inbound_modal.html +++ b/web/html/modals/inbound_modal.html @@ -104,6 +104,8 @@ } }, SSMethodChange() { + this.inModal.inbound.settings.password = RandomUtil.randomShadowsocksPassword(this.inModal.inbound.settings.method) + if (this.inModal.inbound.isSSMultiUser) { if (this.inModal.inbound.settings.shadowsockses.length ==0){ this.inModal.inbound.settings.shadowsockses = [new Inbound.ShadowsocksSettings.Shadowsocks()]; @@ -117,6 +119,9 @@ client.method = ""; }) } + this.inModal.inbound.settings.shadowsockses.forEach(client => { + client.password = RandomUtil.randomShadowsocksPassword(this.inModal.inbound.settings.method) + }) } else { if (this.inModal.inbound.settings.shadowsockses.length > 0){ this.inModal.inbound.settings.shadowsockses = []; From bbdeb65291ff6b2f4e55fb2056928e2a23621bd7 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Sun, 6 Jul 2025 11:22:36 +0200 Subject: [PATCH 03/27] new alternative to get public IP address --- install.sh | 5 ++++- web/service/server.go | 34 ++++++++++++++++++++++++++++++---- x-ui.sh | 10 ++++++++-- 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index 8fb23f3b..30a0f688 100644 --- a/install.sh +++ b/install.sh @@ -85,7 +85,10 @@ config_after_install() { local existing_hasDefaultCredential=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'hasDefaultCredential: .+' | awk '{print $2}') local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') - local server_ip=$(curl -s https://api.ipify.org) + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi if [[ ${#existing_webBasePath} -lt 4 ]]; then if [[ "$existing_hasDefaultCredential" == "true" ]]; then diff --git a/web/service/server.go b/web/service/server.go index 1e29990f..8e0a8096 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -94,21 +94,34 @@ type ServerService struct { inboundService InboundService cachedIPv4 string cachedIPv6 string + noIPv6 bool } func getPublicIP(url string) string { - resp, err := http.Get(url) + client := &http.Client{ + Timeout: 3 * time.Second, + } + + resp, err := client.Get(url) if err != nil { return "N/A" } defer resp.Body.Close() + // Don't retry if access is blocked or region-restricted + if resp.StatusCode == http.StatusForbidden || resp.StatusCode == http.StatusUnavailableForLegalReasons { + return "N/A" + } + if resp.StatusCode != http.StatusOK { + return "N/A" + } + ip, err := io.ReadAll(resp.Body) if err != nil { return "N/A" } - ipString := string(ip) + ipString := strings.TrimSpace(string(ip)) if ipString == "" { return "N/A" } @@ -221,10 +234,23 @@ func (s *ServerService) GetStatus(lastStatus *Status) *Status { } // IP fetching with caching - if s.cachedIPv4 == "" || s.cachedIPv6 == "" { + if s.cachedIPv4 == "" { s.cachedIPv4 = getPublicIP("https://api.ipify.org") - s.cachedIPv6 = getPublicIP("https://api6.ipify.org") + if s.cachedIPv4 == "N/A" { + s.cachedIPv4 = getPublicIP("https://4.ident.me") + } } + + if s.cachedIPv6 == "" && !s.noIPv6 { + s.cachedIPv6 = getPublicIP("https://api6.ipify.org") + if s.cachedIPv6 == "N/A" { + s.cachedIPv6 = getPublicIP("https://6.ident.me") + if s.cachedIPv6 == "N/A" { + s.noIPv6 = true + } + } + } + status.PublicIP.IPv4 = s.cachedIPv4 status.PublicIP.IPv6 = s.cachedIPv6 diff --git a/x-ui.sh b/x-ui.sh index 84e1b612..1ce85f91 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -249,7 +249,10 @@ check_config() { local existing_webBasePath=$(echo "$info" | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(echo "$info" | grep -Eo 'port: .+' | awk '{print $2}') local existing_cert=$(/usr/local/x-ui/x-ui setting -getCert true | grep -Eo 'cert: .+' | awk '{print $2}') - local server_ip=$(curl -s https://api.ipify.org) + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi if [[ -n "$existing_cert" ]]; then local domain=$(basename "$(dirname "$existing_cert")") @@ -1630,7 +1633,10 @@ remove_iplimit() { } SSH_port_forwarding() { - local server_ip=$(curl -s https://api.ipify.org) + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') local existing_listenIP=$(/usr/local/x-ui/x-ui setting -getListen true | grep -Eo 'listenIP: .+' | awk '{print $2}') From b7164805f8382226b0360f42b1be7f5ece307db4 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Sun, 6 Jul 2025 20:58:10 +0200 Subject: [PATCH 04/27] v2.6.2 --- config/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/version b/config/version index b8d12d73..d5724cd4 100644 --- a/config/version +++ b/config/version @@ -1 +1 @@ -2.6.1 \ No newline at end of file +2.6.2 \ No newline at end of file From 011e0f309a9ca55e82d46c3d29f4a57c0ee4d1d9 Mon Sep 17 00:00:00 2001 From: Danilo Nascimento <31519404+ndanilo8@users.noreply.github.com> Date: Thu, 10 Jul 2025 02:36:02 +0200 Subject: [PATCH 05/27] fix writeCrashReport() typo (#3218) --- xray/log_writer.go | 2 +- xray/process.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xray/log_writer.go b/xray/log_writer.go index 2c22166d..b6e04db7 100644 --- a/xray/log_writer.go +++ b/xray/log_writer.go @@ -25,7 +25,7 @@ func (lw *LogWriter) Write(m []byte) (n int, err error) { if crashRegex.MatchString(message) { logger.Debug("Core crash detected:\n", message) lw.lastLine = message - err1 := writeCrachReport(m) + err1 := writeCrashReport(m) if err1 != nil { logger.Error("Unable to write crash report:", err1) } diff --git a/xray/process.go b/xray/process.go index 077ff339..335ad9c1 100644 --- a/xray/process.go +++ b/xray/process.go @@ -242,7 +242,7 @@ func (p *process) Stop() error { return p.cmd.Process.Signal(syscall.SIGTERM) } -func writeCrachReport(m []byte) error { +func writeCrashReport(m []byte) error { crashReportPath := config.GetBinFolderPath() + "/core_crash_" + time.Now().Format("20060102_150405") + ".log" return os.WriteFile(crashReportPath, m, os.ModePerm) } From 87042d77bab3bb22a8d1a08cc669c218c6c8f411 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Tue, 22 Jul 2025 12:49:02 +0200 Subject: [PATCH 06/27] ocspStapling set to 0 --- web/assets/js/model/inbound.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index cbdeaa8a..8a19d79c 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -633,7 +633,7 @@ TlsStreamSettings.Cert = class extends XrayCommonClass { keyFile = '', certificate = '', key = '', - ocspStapling = 3600, + ocspStapling = 0, oneTimeLoading = false, usage = USAGE_OPTION.ENCIPHERMENT, buildChain = false, From 75416eebd794e6fc4bd5dd25730be5c2f51e50f0 Mon Sep 17 00:00:00 2001 From: xujie86 <167618598+xujie86@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:53:12 +0800 Subject: [PATCH 07/27] Increase the number of characters for webBasePath (#3239) --- install.sh | 2 +- x-ui.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 30a0f688..85b34c3d 100644 --- a/install.sh +++ b/install.sh @@ -115,7 +115,7 @@ config_after_install() { echo -e "${green}Access URL: http://${server_ip}:${config_port}/${config_webBasePath}${plain}" echo -e "###############################################" else - local config_webBasePath=$(gen_random_string 15) + local config_webBasePath=$(gen_random_string 18) echo -e "${yellow}WebBasePath is missing or too short. Generating a new one...${plain}" /usr/local/x-ui/x-ui setting -webBasePath "${config_webBasePath}" echo -e "${green}New WebBasePath: ${config_webBasePath}${plain}" diff --git a/x-ui.sh b/x-ui.sh index 1ce85f91..97dc9102 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -214,7 +214,7 @@ reset_webbasepath() { return fi - config_webBasePath=$(gen_random_string 10) + config_webBasePath=$(gen_random_string 18) # Apply the new web base path setting /usr/local/x-ui/x-ui setting -webBasePath "${config_webBasePath}" >/dev/null 2>&1 From fa45bf87de469f9e7f79c90b4381de5b9e4f58d2 Mon Sep 17 00:00:00 2001 From: xujie86 <167618598+xujie86@users.noreply.github.com> Date: Wed, 23 Jul 2025 05:28:56 +0800 Subject: [PATCH 08/27] Update install.sh (#3267) --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 85b34c3d..0c4922bb 100644 --- a/install.sh +++ b/install.sh @@ -92,7 +92,7 @@ config_after_install() { if [[ ${#existing_webBasePath} -lt 4 ]]; then if [[ "$existing_hasDefaultCredential" == "true" ]]; then - local config_webBasePath=$(gen_random_string 15) + local config_webBasePath=$(gen_random_string 18) local config_username=$(gen_random_string 10) local config_password=$(gen_random_string 10) From b1ab156e42ed0e68b49e89df45d44b6ad0ea02ff Mon Sep 17 00:00:00 2001 From: Azavax <21226881+azavaxhuman@users.noreply.github.com> Date: Wed, 23 Jul 2025 01:13:48 +0330 Subject: [PATCH 09/27] Endpoint for updating client traffic by email (#3259) * Update api.go * Update inbound.go * Update inbound.go --- web/controller/api.go | 1 + web/controller/inbound.go | 25 +++++++++++++++++++++++++ web/service/inbound.go | 15 +++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/web/controller/api.go b/web/controller/api.go index 9944e2a3..636035ba 100644 --- a/web/controller/api.go +++ b/web/controller/api.go @@ -47,6 +47,7 @@ func (a *APIController) initRouter(g *gin.RouterGroup) { {"POST", "/resetAllClientTraffics/:id", a.inboundController.resetAllClientTraffics}, {"POST", "/delDepletedClients/:id", a.inboundController.delDepletedClients}, {"POST", "/onlines", a.inboundController.onlines}, + {"POST", "/updateClientTraffic/:email", a.inboundController.updateClientTraffic}, } for _, route := range inboundRoutes { diff --git a/web/controller/inbound.go b/web/controller/inbound.go index 592a4bd0..a89f224f 100644 --- a/web/controller/inbound.go +++ b/web/controller/inbound.go @@ -339,3 +339,28 @@ func (a *InboundController) delDepletedClients(c *gin.Context) { func (a *InboundController) onlines(c *gin.Context) { jsonObj(c, a.inboundService.GetOnlineClients(), nil) } + +func (a *InboundController) updateClientTraffic(c *gin.Context) { + email := c.Param("email") + + // Define the request structure for traffic update + type TrafficUpdateRequest struct { + Upload int64 `json:"upload"` + Download int64 `json:"download"` + } + + var request TrafficUpdateRequest + err := c.ShouldBindJSON(&request) + if err != nil { + jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err) + return + } + + err = a.inboundService.UpdateClientTrafficByEmail(email, request.Upload, request.Download) + if err != nil { + jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err) + return + } + + jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundClientUpdateSuccess"), nil) +} diff --git a/web/service/inbound.go b/web/service/inbound.go index f2646dbb..66e1a420 100644 --- a/web/service/inbound.go +++ b/web/service/inbound.go @@ -1785,6 +1785,21 @@ func (s *InboundService) GetClientTrafficByEmail(email string) (traffic *xray.Cl return nil, nil } +func (s *InboundService) UpdateClientTrafficByEmail(email string, upload int64, download int64) error { + db := database.GetDB() + + result := db.Model(xray.ClientTraffic{}). + Where("email = ?", email). + Updates(map[string]any{"up": upload, "down": download}) + + err := result.Error + if err != nil { + logger.Warningf("Error updating ClientTraffic with email %s: %v", email, err) + return err + } + return nil +} + func (s *InboundService) GetClientTrafficByID(id string) ([]xray.ClientTraffic, error) { db := database.GetDB() var traffics []xray.ClientTraffic From 761728255c3ce2d5d0da06b8e0f8b4cf8a4cba94 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Thu, 24 Jul 2025 15:17:01 +0200 Subject: [PATCH 10/27] GO v1.24.5 + update dependencies --- go.mod | 35 ++++++++++----------- go.sum | 97 ++++++++++++++++++++++++++-------------------------------- 2 files changed, 59 insertions(+), 73 deletions(-) diff --git a/go.mod b/go.mod index 791754fc..584dacf1 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module x-ui -go 1.24.4 +go 1.24.5 require ( github.com/gin-contrib/gzip v1.2.3 @@ -17,11 +17,11 @@ require ( github.com/shirou/gopsutil/v4 v4.25.6 github.com/valyala/fasthttp v1.63.0 github.com/xlzd/gotp v0.1.0 - github.com/xtls/xray-core v1.250608.0 + github.com/xtls/xray-core v1.250608.1-0.20250724021908-4f45c5faa5f1 go.uber.org/atomic v1.11.0 - golang.org/x/crypto v0.39.0 - golang.org/x/text v0.26.0 - google.golang.org/grpc v1.73.0 + golang.org/x/crypto v0.40.0 + golang.org/x/text v0.27.0 + google.golang.org/grpc v1.74.2 gorm.io/driver/sqlite v1.6.0 gorm.io/gorm v1.30.0 ) @@ -41,9 +41,7 @@ require ( github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.27.0 // indirect - github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5 // indirect github.com/gorilla/context v1.1.2 // indirect github.com/gorilla/securecookie v1.1.2 // indirect github.com/gorilla/sessions v1.4.0 // indirect @@ -55,18 +53,18 @@ require ( github.com/juju/ratelimit v1.0.2 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/klauspost/cpuid/v2 v2.2.11 // indirect + github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-sqlite3 v1.14.28 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/onsi/ginkgo/v2 v2.23.4 // indirect github.com/pires/go-proxyproto v0.8.1 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/quic-go/qpack v0.5.1 // indirect - github.com/quic-go/quic-go v0.52.0 // indirect - github.com/refraction-networking/utls v1.7.3 // indirect + github.com/quic-go/quic-go v0.54.0 // indirect + github.com/refraction-networking/utls v1.8.0 // indirect github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/sagernet/sing v0.6.6 // indirect @@ -82,21 +80,20 @@ require ( github.com/valyala/fastjson v1.6.4 // indirect github.com/vishvananda/netlink v1.3.1 // indirect github.com/vishvananda/netns v0.0.5 // indirect - github.com/xtls/reality v0.0.0-20250627141458-e62c4aed0d57 // indirect + github.com/xtls/reality v0.0.0-20250723121014-c6320729d93b // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/mock v0.5.2 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect - golang.org/x/arch v0.18.0 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/arch v0.19.0 // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.42.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.34.0 // indirect golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.34.0 // indirect + golang.org/x/tools v0.35.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gvisor.dev/gvisor v0.0.0-20250428193742-2d800c3129d5 // indirect diff --git a/go.sum b/go.sum index 1d3671fc..0c1fde04 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,7 @@ github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZ github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -36,8 +37,8 @@ github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -51,8 +52,6 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4= github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= @@ -66,8 +65,6 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5 h1:xhMrHhTJ6zxu3gA4enFM9MLn9AY7613teCdFnlUVbSQ= -github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/context v1.1.2 h1:WRkNAv2uoa03QNIc1A6u4O7DAGMUVoopZhkiXWA2V1o= @@ -108,8 +105,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/miekg/dns v1.1.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= -github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/miekg/dns v1.1.67 h1:kg0EHj0G4bfT5/oOys6HhZw4vmMlnoZ+gDu8tJ/AlI0= +github.com/miekg/dns v1.1.67/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -119,10 +116,6 @@ github.com/mymmrac/telego v0.32.0 h1:4X8C1l3k+opkk86r95+eQE8DxiS2LYlR61L/G7yreDY github.com/mymmrac/telego v0.32.0/go.mod h1:qS6NaRhJgcuEEBEMVCV79S2xCAuHq9O+ixwfLuRW31M= github.com/nicksnyder/go-i18n/v2 v2.6.0 h1:C/m2NNWNiTB6SK4Ao8df5EWm3JETSTIGNXBpMJTxzxQ= github.com/nicksnyder/go-i18n/v2 v2.6.0/go.mod h1:88sRqr0C6OPyJn0/KRNaEz1uWorjxIKP7rUUcvycecE= -github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= -github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= -github.com/onsi/gomega v1.36.3 h1:hID7cr8t3Wp26+cYnfcjR6HpJ00fdogN6dqZ1t6IylU= -github.com/onsi/gomega v1.36.3/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= @@ -135,14 +128,12 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= -github.com/quic-go/quic-go v0.52.0 h1:/SlHrCRElyaU6MaEPKqKr9z83sBg2v4FLLvWM+Z47pA= -github.com/quic-go/quic-go v0.52.0/go.mod h1:MFlGGpcpJqRAfmYi6NC2cptDPSxRWTOGNuP4wqrWmzQ= -github.com/refraction-networking/utls v1.7.3 h1:L0WRhHY7Oq1T0zkdzVZMR6zWZv+sXbHB9zcuvsAEqCo= -github.com/refraction-networking/utls v1.7.3/go.mod h1:TUhh27RHMGtQvjQq+RyO11P6ZNQNBb3N0v7wsEjKAIQ= +github.com/quic-go/quic-go v0.54.0 h1:6s1YB9QotYI6Ospeiguknbp2Znb/jZYjZLRXn9kMQBg= +github.com/quic-go/quic-go v0.54.0/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY= +github.com/refraction-networking/utls v1.8.0 h1:L38krhiTAyj9EeiQQa2sg+hYb4qwLCqdMcpZrRfbONE= +github.com/refraction-networking/utls v1.8.0/go.mod h1:jkSOEkLqn+S/jtpEHPOsVv/4V4EVnelwbMQl4vCWXAM= github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg= github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3/go.mod h1:HgjTstvQsPGkxUsCd2KWxErBblirPizecHcpD3ffK+s= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= @@ -192,66 +183,64 @@ github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zd github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= github.com/xlzd/gotp v0.1.0 h1:37blvlKCh38s+fkem+fFh7sMnceltoIEBYTVXyoa5Po= github.com/xlzd/gotp v0.1.0/go.mod h1:ndLJ3JKzi3xLmUProq4LLxCuECL93dG9WASNLpHz8qg= -github.com/xtls/reality v0.0.0-20250627141458-e62c4aed0d57 h1:CJzC54UytAYnNbJSlAFi9MXOofSUAtpoQTKIA3hUpj8= -github.com/xtls/reality v0.0.0-20250627141458-e62c4aed0d57/go.mod h1:yD47RN65bDLZgyHWMfFDiqlzrq4usDMt/Xzsk6tMbhw= -github.com/xtls/xray-core v1.250608.0 h1:/M0LwzFeFAZf+vdZQhqNYjUXDfPv5hOeYw6jsiAdgWI= -github.com/xtls/xray-core v1.250608.0/go.mod h1:MkfIs2WZ5VLtZHAwDKosSS05Kx5zFFOzvly7Hy6pfPs= +github.com/xtls/reality v0.0.0-20250723121014-c6320729d93b h1:HOOsQYu7/EzvpegY7uHiaeI9H/6OsHAOkREnJthdUW8= +github.com/xtls/reality v0.0.0-20250723121014-c6320729d93b/go.mod h1:XxvnCCgBee4WWE0bc4E+a7wbk8gkJ/rS0vNVNtC5qp0= +github.com/xtls/xray-core v1.250608.1-0.20250724021908-4f45c5faa5f1 h1:5YFdWAwmW/pB7aMltnUmsRC8QY37817Q2m9WqVUVxPU= +github.com/xtls/xray-core v1.250608.1-0.20250724021908-4f45c5faa5f1/go.mod h1:dqSs+9mmzvOZRFxTaS0ktkQYG8TD9naApQPdnp/MUzA= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko= go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= -golang.org/x/arch v0.18.0 h1:WN9poc33zL4AzGxqf8VtpKUnGvMi8O9lhNyBMF/85qc= -golang.org/x/arch v0.18.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/arch v0.19.0 h1:LmbDQUodHThXE+htjrnmVD73M//D9GTH6wFZjyDkjyU= +golang.org/x/arch v0.19.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg= golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4= golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 h1:qJW29YvkiJmXOYMu5Tf8lyrTp3dOS+K4z6IixtLaCf8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From b4dae36345c54d376e85a05268c6c6741b718c6d Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Thu, 24 Jul 2025 15:26:55 +0200 Subject: [PATCH 11/27] xray core v25.7.24 --- .github/workflows/release.yml | 2 +- DockerInit.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b249622d..dabd77f1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,7 +97,7 @@ jobs: cd x-ui/bin # Download dependencies - Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.6.8/" + Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.7.24/" if [ "${{ matrix.platform }}" == "amd64" ]; then wget -q ${Xray_URL}Xray-linux-64.zip unzip Xray-linux-64.zip diff --git a/DockerInit.sh b/DockerInit.sh index ecbe756a..eac1dbb2 100755 --- a/DockerInit.sh +++ b/DockerInit.sh @@ -27,7 +27,7 @@ case $1 in esac mkdir -p build/bin cd build/bin -wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.6.8/Xray-linux-${ARCH}.zip" +wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.7.24/Xray-linux-${ARCH}.zip" unzip "Xray-linux-${ARCH}.zip" rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat mv xray "xray-linux-${FNAME}" From 487ec74e0b867fdab53aa0a3b080c886e38ec06e Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Fri, 25 Jul 2025 01:22:01 +0200 Subject: [PATCH 12/27] add mldsa65 --- sub/subJsonService.go | 1 + web/assets/js/model/inbound.js | 13 +++++++++++-- web/controller/server.go | 10 ++++++++++ web/html/form/reality_settings.html | 9 +++++++++ web/html/modals/inbound_modal.html | 12 +++++++++++- web/service/server.go | 26 ++++++++++++++++++++++++++ web/translation/translate.ar_EG.toml | 1 + web/translation/translate.en_US.toml | 2 +- web/translation/translate.es_ES.toml | 1 + web/translation/translate.fa_IR.toml | 1 + web/translation/translate.id_ID.toml | 1 + web/translation/translate.ja_JP.toml | 1 + web/translation/translate.pt_BR.toml | 1 + web/translation/translate.ru_RU.toml | 1 + web/translation/translate.tr_TR.toml | 1 + web/translation/translate.uk_UA.toml | 1 + web/translation/translate.vi_VN.toml | 1 + web/translation/translate.zh_CN.toml | 1 + web/translation/translate.zh_TW.toml | 1 + 19 files changed, 81 insertions(+), 4 deletions(-) diff --git a/sub/subJsonService.go b/sub/subJsonService.go index 008e1658..7bc4d1db 100644 --- a/sub/subJsonService.go +++ b/sub/subJsonService.go @@ -263,6 +263,7 @@ func (s *SubJsonService) realityData(rData map[string]any) map[string]any { rltyData["show"] = false rltyData["publicKey"] = rltyClientSettings["publicKey"] rltyData["fingerprint"] = rltyClientSettings["fingerprint"] + rltyData["mldsa65Verify"] = rltyClientSettings["mldsa65Verify"] // Set random data rltyData["spiderX"] = "/" + random.Seq(15) diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index 8a19d79c..56c20b69 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -732,6 +732,7 @@ class RealityStreamSettings extends XrayCommonClass { maxClient = '', maxTimediff = 0, shortIds = RandomUtil.randomShortIds(), + mldsa65Seed = '', settings = new RealityStreamSettings.Settings() ) { super(); @@ -744,6 +745,7 @@ class RealityStreamSettings extends XrayCommonClass { this.maxClient = maxClient; this.maxTimediff = maxTimediff; this.shortIds = Array.isArray(shortIds) ? shortIds.join(",") : shortIds; + this.mldsa65Seed = mldsa65Seed; this.settings = settings; } @@ -754,7 +756,8 @@ class RealityStreamSettings extends XrayCommonClass { json.settings.publicKey, json.settings.fingerprint, json.settings.serverName, - json.settings.spiderX + json.settings.spiderX, + json.settings.mldsa65Verify, ); } return new RealityStreamSettings( @@ -767,6 +770,7 @@ class RealityStreamSettings extends XrayCommonClass { json.maxClient, json.maxTimediff, json.shortIds, + json.mldsa65Seed, settings, ); } @@ -782,6 +786,7 @@ class RealityStreamSettings extends XrayCommonClass { maxClient: this.maxClient, maxTimediff: this.maxTimediff, shortIds: this.shortIds.split(","), + mldsa65Seed: this.mldsa65Seed, settings: this.settings, }; } @@ -792,13 +797,15 @@ RealityStreamSettings.Settings = class extends XrayCommonClass { publicKey = '', fingerprint = UTLS_FINGERPRINT.UTLS_CHROME, serverName = '', - spiderX = '/' + spiderX = '/', + mldsa65Verify = '' ) { super(); this.publicKey = publicKey; this.fingerprint = fingerprint; this.serverName = serverName; this.spiderX = spiderX; + this.mldsa65Verify = mldsa65Verify; } static fromJson(json = {}) { return new RealityStreamSettings.Settings( @@ -806,6 +813,7 @@ RealityStreamSettings.Settings = class extends XrayCommonClass { json.fingerprint, json.serverName, json.spiderX, + json.mldsa65Verify ); } toJson() { @@ -814,6 +822,7 @@ RealityStreamSettings.Settings = class extends XrayCommonClass { fingerprint: this.fingerprint, serverName: this.serverName, spiderX: this.spiderX, + mldsa65Verify: this.mldsa65Verify }; } }; diff --git a/web/controller/server.go b/web/controller/server.go index e00a1206..22f89f2f 100644 --- a/web/controller/server.go +++ b/web/controller/server.go @@ -50,6 +50,7 @@ func (a *ServerController) initRouter(g *gin.RouterGroup) { g.GET("/getDb", a.getDb) g.POST("/importDB", a.importDB) g.POST("/getNewX25519Cert", a.getNewX25519Cert) + g.POST("/getNewmldsa65", a.getNewmldsa65) } func (a *ServerController) refreshStatus() { @@ -198,3 +199,12 @@ func (a *ServerController) getNewX25519Cert(c *gin.Context) { } jsonObj(c, cert, nil) } + +func (a *ServerController) getNewmldsa65(c *gin.Context) { + cert, err := a.serverService.GetNewmldsa65() + if err != nil { + jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.getNewmldsa65Error"), err) + return + } + jsonObj(c, cert, nil) +} diff --git a/web/html/form/reality_settings.html b/web/html/form/reality_settings.html index 7d5e6fb9..aebb6c42 100644 --- a/web/html/form/reality_settings.html +++ b/web/html/form/reality_settings.html @@ -52,5 +52,14 @@ Get New Cert + + + + + + + + Get New Seed + {{end}} \ No newline at end of file diff --git a/web/html/modals/inbound_modal.html b/web/html/modals/inbound_modal.html index 8be213a8..f11df2e2 100644 --- a/web/html/modals/inbound_modal.html +++ b/web/html/modals/inbound_modal.html @@ -141,7 +141,17 @@ } inModal.inbound.stream.reality.privateKey = msg.obj.privateKey; inModal.inbound.stream.reality.settings.publicKey = msg.obj.publicKey; - } + }, + async getNewmldsa65() { + inModal.loading(true); + const msg = await HttpUtil.post('/server/getNewmldsa65'); + inModal.loading(false); + if (!msg.success) { + return; + } + inModal.inbound.stream.reality.mldsa65Seed = msg.obj.seed; + inModal.inbound.stream.reality.settings.mldsa65Verify = msg.obj.verify; + }, }, }); diff --git a/web/service/server.go b/web/service/server.go index 8e0a8096..d0d4bd18 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -709,3 +709,29 @@ func (s *ServerService) GetNewX25519Cert() (any, error) { return keyPair, nil } + +func (s *ServerService) GetNewmldsa65() (any, error) { + // Run the command + cmd := exec.Command(xray.GetBinaryPath(), "mldsa65") + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + return nil, err + } + + lines := strings.Split(out.String(), "\n") + + SeedLine := strings.Split(lines[0], ":") + VerifyLine := strings.Split(lines[1], ":") + + seed := strings.TrimSpace(SeedLine[1]) + verify := strings.TrimSpace(VerifyLine[1]) + + keyPair := map[string]any{ + "seed": seed, + "verify": verify, + } + + return keyPair, nil +} diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml index e582c9cd..de350264 100644 --- a/web/translation/translate.ar_EG.toml +++ b/web/translation/translate.ar_EG.toml @@ -260,6 +260,7 @@ "resetInboundClientTrafficSuccess" = "تم إعادة تعيين حركة المرور" "trafficGetError" = "خطأ في الحصول على حركات المرور" "getNewX25519CertError" = "حدث خطأ أثناء الحصول على شهادة X25519." +"getNewmldsa65Error" = "حدث خطاء في الحصول على mldsa65." [pages.inbounds.stream.general] "request" = "طلب" diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index 3dea80dc..07cfb1af 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -258,7 +258,7 @@ "resetInboundClientTrafficSuccess" = "Traffic has been reset." "trafficGetError" = "Error getting traffics." "getNewX25519CertError" = "Error while obtaining the X25519 certificate." - +"getNewmldsa65Error" = "Error while obtaining mldsa65." [pages.inbounds.stream.general] "request" = "Request" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index 54b7d5b8..9426d151 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "El tráfico ha sido reiniciado" "trafficGetError" = "Error al obtener los tráficos" "getNewX25519CertError" = "Error al obtener el certificado X25519." +"getNewmldsa65Error" = "Error al obtener el certificado mldsa65." [pages.inbounds.stream.general] "request" = "Pedido" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index 3861e7ef..22337949 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "ترافیک بازنشانی شد" "trafficGetError" = "خطا در دریافت ترافیک‌ها" "getNewX25519CertError" = "خطا در دریافت گواهی X25519." +"getNewmldsa65Error" = "خطا در دریافت گواهی mldsa65." [pages.inbounds.stream.general] "request" = "درخواست" diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index dbed4130..a452a1bf 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "Lalu lintas telah direset" "trafficGetError" = "Gagal mendapatkan data lalu lintas" "getNewX25519CertError" = "Terjadi kesalahan saat mendapatkan sertifikat X25519." +"getNewmldsa65Error" = "Terjadi kesalahan saat mendapatkan sertifikat mldsa65." [pages.inbounds.stream.general] "request" = "Permintaan" diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml index 0e50a2c8..8c1be2c7 100644 --- a/web/translation/translate.ja_JP.toml +++ b/web/translation/translate.ja_JP.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "トラフィックがリセットされました" "trafficGetError" = "トラフィックの取得中にエラーが発生しました" "getNewX25519CertError" = "X25519証明書の取得中にエラーが発生しました。" +"getNewmldsa65Error" = "mldsa65証明書の取得中にエラーが発生しました。" [pages.inbounds.stream.general] "request" = "リクエスト" diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml index 5f13943e..789732b6 100644 --- a/web/translation/translate.pt_BR.toml +++ b/web/translation/translate.pt_BR.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "O tráfego foi reiniciado" "trafficGetError" = "Erro ao obter tráfegos" "getNewX25519CertError" = "Erro ao obter o certificado X25519." +"getNewmldsa65Error" = "Erro ao obter o certificado mldsa65." [pages.inbounds.stream.general] "request" = "Requisição" diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index 687f7a97..c9e75262 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "Трафик сброшен" "trafficGetError" = "Ошибка получения данных о трафике" "getNewX25519CertError" = "Ошибка при получении сертификата X25519." +"getNewmldsa65Error" = "Ошибка при получении сертификата mldsa65." [pages.inbounds.stream.general] "request" = "Запрос" diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml index af9d1d19..dc10d12a 100644 --- a/web/translation/translate.tr_TR.toml +++ b/web/translation/translate.tr_TR.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "Trafik sıfırlandı" "trafficGetError" = "Trafik bilgisi alınırken hata oluştu" "getNewX25519CertError" = "X25519 sertifikası alınırken hata oluştu." +"getNewmldsa65Error" = "mldsa65 sertifikası alınırken hata oluştu." [pages.inbounds.stream.general] "request" = "İstek" diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml index 83e984b2..1a3ddc8d 100644 --- a/web/translation/translate.uk_UA.toml +++ b/web/translation/translate.uk_UA.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "Трафік скинуто" "trafficGetError" = "Помилка отримання даних про трафік" "getNewX25519CertError" = "Помилка при отриманні сертифіката X25519." +"getNewmldsa65Error" = "Помилка при отриманні сертифіката mldsa65." [pages.inbounds.stream.general] "request" = "Запит" diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index d4c95f79..c35076b9 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "Đã đặt lại lưu lượng" "trafficGetError" = "Lỗi khi lấy thông tin lưu lượng" "getNewX25519CertError" = "Lỗi khi lấy chứng chỉ X25519." +"getNewmldsa65Error" = "Lỗi khi lấy chúng tôi mldsa65." [pages.inbounds.stream.general] "request" = "Lời yêu cầu" diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml index 26cc3322..68e4d1e8 100644 --- a/web/translation/translate.zh_CN.toml +++ b/web/translation/translate.zh_CN.toml @@ -262,6 +262,7 @@ "resetInboundClientTrafficSuccess" = "流量已重置" "trafficGetError" = "获取流量数据时出错" "getNewX25519CertError" = "获取X25519证书时出错。" +"getNewmldsa65Error" = "获取mldsa65证书时出错。" [pages.inbounds.stream.general] "request" = "请求" diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml index 0875cf47..dc4e5c36 100644 --- a/web/translation/translate.zh_TW.toml +++ b/web/translation/translate.zh_TW.toml @@ -264,6 +264,7 @@ "resetInboundClientTrafficSuccess" = "流量已重置" "trafficGetError" = "取得流量資料時發生錯誤" "getNewX25519CertError" = "取得X25519憑證時發生錯誤。" +"getNewmldsa65Error" = "取得mldsa65憑證時發生錯誤。" [pages.inbounds.stream.general] "request" = "請求" From f5f4a530cce822d06937b500bb949966a935b390 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Sun, 27 Jul 2025 16:54:35 +0200 Subject: [PATCH 13/27] xray core v25.7.26 --- .github/workflows/release.yml | 2 +- DockerInit.sh | 2 +- go.mod | 5 +++-- go.sum | 10 ++++------ 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dabd77f1..074dddd0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,7 +97,7 @@ jobs: cd x-ui/bin # Download dependencies - Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.7.24/" + Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.7.26/" if [ "${{ matrix.platform }}" == "amd64" ]; then wget -q ${Xray_URL}Xray-linux-64.zip unzip Xray-linux-64.zip diff --git a/DockerInit.sh b/DockerInit.sh index eac1dbb2..686778cc 100755 --- a/DockerInit.sh +++ b/DockerInit.sh @@ -27,7 +27,7 @@ case $1 in esac mkdir -p build/bin cd build/bin -wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.7.24/Xray-linux-${ARCH}.zip" +wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.7.26/Xray-linux-${ARCH}.zip" unzip "Xray-linux-${ARCH}.zip" rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat mv xray "xray-linux-${FNAME}" diff --git a/go.mod b/go.mod index 584dacf1..01bbd3ff 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/shirou/gopsutil/v4 v4.25.6 github.com/valyala/fasthttp v1.63.0 github.com/xlzd/gotp v0.1.0 - github.com/xtls/xray-core v1.250608.1-0.20250724021908-4f45c5faa5f1 + github.com/xtls/xray-core v1.250726.0 go.uber.org/atomic v1.11.0 golang.org/x/crypto v0.40.0 golang.org/x/text v0.27.0 @@ -58,6 +58,7 @@ require ( github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-sqlite3 v1.14.28 // indirect + github.com/miekg/dns v1.1.67 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pires/go-proxyproto v0.8.1 // indirect @@ -80,7 +81,7 @@ require ( github.com/valyala/fastjson v1.6.4 // indirect github.com/vishvananda/netlink v1.3.1 // indirect github.com/vishvananda/netns v0.0.5 // indirect - github.com/xtls/reality v0.0.0-20250723121014-c6320729d93b // indirect + github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.uber.org/mock v0.5.2 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect diff --git a/go.sum b/go.sum index 0c1fde04..8b1c019a 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,5 @@ github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0 h1:Wo41lDOevRJSGpevP+8Pk5bANX7fJacO2w04aqLiC5I= -github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0/go.mod h1:FVGavL/QEBQDcBpr3fAojoK17xX5k9bicBphrOpP7uM= github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/bytedance/sonic v1.13.3 h1:MS8gmaH16Gtirygw7jV91pDCN33NyMrPbN7qiYhEsF0= @@ -183,10 +181,10 @@ github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zd github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= github.com/xlzd/gotp v0.1.0 h1:37blvlKCh38s+fkem+fFh7sMnceltoIEBYTVXyoa5Po= github.com/xlzd/gotp v0.1.0/go.mod h1:ndLJ3JKzi3xLmUProq4LLxCuECL93dG9WASNLpHz8qg= -github.com/xtls/reality v0.0.0-20250723121014-c6320729d93b h1:HOOsQYu7/EzvpegY7uHiaeI9H/6OsHAOkREnJthdUW8= -github.com/xtls/reality v0.0.0-20250723121014-c6320729d93b/go.mod h1:XxvnCCgBee4WWE0bc4E+a7wbk8gkJ/rS0vNVNtC5qp0= -github.com/xtls/xray-core v1.250608.1-0.20250724021908-4f45c5faa5f1 h1:5YFdWAwmW/pB7aMltnUmsRC8QY37817Q2m9WqVUVxPU= -github.com/xtls/xray-core v1.250608.1-0.20250724021908-4f45c5faa5f1/go.mod h1:dqSs+9mmzvOZRFxTaS0ktkQYG8TD9naApQPdnp/MUzA= +github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7 h1:Ript0vN+nSO33+Vj4n0mgNY5M+oOxFQJdrJ1VnwTBO0= +github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7/go.mod h1:XxvnCCgBee4WWE0bc4E+a7wbk8gkJ/rS0vNVNtC5qp0= +github.com/xtls/xray-core v1.250726.0 h1:uTUHUt/CQ1JQLip1pLkiwoS0pMvl6oCHJgur4M4orWQ= +github.com/xtls/xray-core v1.250726.0/go.mod h1:z2vn2o30flYEgpSz1iEhdZP1I46UZ3+gXINZyohH3yE= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= From 71f13ebcbd1d15eb8d5bd6b88ddb2c96e08a287a Mon Sep 17 00:00:00 2001 From: X-Oracle <129892464+X-Oracle@users.noreply.github.com> Date: Sun, 27 Jul 2025 18:52:59 +0330 Subject: [PATCH 14/27] small improvement (#3277) --- install.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 0c4922bb..e43cf2bf 100644 --- a/install.sh +++ b/install.sh @@ -144,6 +144,7 @@ config_after_install() { install_x-ui() { cd /usr/local/ + # Download resources if [ $# == 0 ]; then tag_version=$(curl -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') if [[ ! -n "$tag_version" ]]; then @@ -174,30 +175,35 @@ install_x-ui() { exit 1 fi fi + wget -O /usr/bin/x-ui-temp https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh + # Stop x-ui service and remove old resources if [[ -e /usr/local/x-ui/ ]]; then systemctl stop x-ui rm /usr/local/x-ui/ -rf fi + # Extract resources and set permissions tar zxvf x-ui-linux-$(arch).tar.gz rm x-ui-linux-$(arch).tar.gz -f + cd x-ui chmod +x x-ui + chmod +x x-ui.sh # Check the system's architecture and rename the file accordingly if [[ $(arch) == "armv5" || $(arch) == "armv6" || $(arch) == "armv7" ]]; then mv bin/xray-linux-$(arch) bin/xray-linux-arm chmod +x bin/xray-linux-arm fi - chmod +x x-ui bin/xray-linux-$(arch) - cp -f x-ui.service /etc/systemd/system/ - wget -O /usr/bin/x-ui https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh - chmod +x /usr/local/x-ui/x-ui.sh + + # Update x-ui cli and se set permission + mv -f /usr/bin/x-ui-temp /usr/bin/x-ui chmod +x /usr/bin/x-ui config_after_install + cp -f x-ui.service /etc/systemd/system/ systemctl daemon-reload systemctl enable x-ui systemctl start x-ui From 0ad708b1b633d7f7f08c18f9ed358809c9faa8b7 Mon Sep 17 00:00:00 2001 From: Mikhail Grigorev Date: Sun, 27 Jul 2025 20:24:11 +0500 Subject: [PATCH 15/27] Added list of services for get public IP address (IP v4 and v6) (#3216) * Fixed get public IP address * Remove https://ifconfig.io/ip and https://ipinfo.tw/ip --------- Co-authored-by: Mikhail Grigorev --- install.sh | 12 ++++++++---- web/service/server.go | 24 ++++++++++++++++-------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/install.sh b/install.sh index e43cf2bf..a1398712 100644 --- a/install.sh +++ b/install.sh @@ -7,6 +7,7 @@ yellow='\033[0;33m' plain='\033[0m' cur_dir=$(pwd) +show_ip_service_lists=("https://api.ipify.org" "https://4.ident.me") # check root [[ $EUID -ne 0 ]] && echo -e "${red}Fatal error: ${plain} Please run this script with root privilege \n " && exit 1 @@ -85,10 +86,13 @@ config_after_install() { local existing_hasDefaultCredential=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'hasDefaultCredential: .+' | awk '{print $2}') local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') - local server_ip=$(curl -s --max-time 3 https://api.ipify.org) - if [ -z "$server_ip" ]; then - server_ip=$(curl -s --max-time 3 https://4.ident.me) - fi + + for ip_service_addr in "${show_ip_service_lists[@]}"; do + local server_ip=$(curl -s --max-time 3 ${ip_service_addr} 2>/dev/null) + if [ -n "${server_ip}" ]; then + break + fi + done if [[ ${#existing_webBasePath} -lt 4 ]]; then if [[ "$existing_hasDefaultCredential" == "true" ]]; then diff --git a/web/service/server.go b/web/service/server.go index d0d4bd18..1bd8a55d 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -234,23 +234,31 @@ func (s *ServerService) GetStatus(lastStatus *Status) *Status { } // IP fetching with caching + showIp4ServiceLists := []string{"https://api.ipify.org", "https://4.ident.me"} + showIp6ServiceLists := []string{"https://api6.ipify.org", "https://6.ident.me"} + if s.cachedIPv4 == "" { - s.cachedIPv4 = getPublicIP("https://api.ipify.org") - if s.cachedIPv4 == "N/A" { - s.cachedIPv4 = getPublicIP("https://4.ident.me") + for _, ip4Service := range showIp4ServiceLists { + s.cachedIPv4 = getPublicIP(ip4Service) + if s.cachedIPv4 != "N/A" { + break + } } } if s.cachedIPv6 == "" && !s.noIPv6 { - s.cachedIPv6 = getPublicIP("https://api6.ipify.org") - if s.cachedIPv6 == "N/A" { - s.cachedIPv6 = getPublicIP("https://6.ident.me") - if s.cachedIPv6 == "N/A" { - s.noIPv6 = true + for _, ip6Service := range showIp6ServiceLists { + s.cachedIPv6 = getPublicIP(ip6Service) + if s.cachedIPv6 != "N/A" { + break } } } + if s.cachedIPv6 == "N/A" { + s.noIPv6 = true + } + status.PublicIP.IPv4 = s.cachedIPv4 status.PublicIP.IPv6 = s.cachedIPv6 From 6e1b94908185bece6423328ac16eb65c49146126 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Mon, 28 Jul 2025 13:45:47 +0200 Subject: [PATCH 16/27] Reality: min & max client ver --- web/assets/js/model/inbound.js | 16 ++++++++-------- web/html/form/reality_settings.html | 10 ++++------ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index 56c20b69..141a1fa4 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -728,8 +728,8 @@ class RealityStreamSettings extends XrayCommonClass { dest = 'yahoo.com:443', serverNames = 'yahoo.com,www.yahoo.com', privateKey = '', - minClient = '', - maxClient = '', + minClientVer = '', + maxClientVer = '', maxTimediff = 0, shortIds = RandomUtil.randomShortIds(), mldsa65Seed = '', @@ -741,8 +741,8 @@ class RealityStreamSettings extends XrayCommonClass { this.dest = dest; this.serverNames = Array.isArray(serverNames) ? serverNames.join(",") : serverNames; this.privateKey = privateKey; - this.minClient = minClient; - this.maxClient = maxClient; + this.minClientVer = minClientVer; + this.maxClientVer = maxClientVer; this.maxTimediff = maxTimediff; this.shortIds = Array.isArray(shortIds) ? shortIds.join(",") : shortIds; this.mldsa65Seed = mldsa65Seed; @@ -766,8 +766,8 @@ class RealityStreamSettings extends XrayCommonClass { json.dest, json.serverNames, json.privateKey, - json.minClient, - json.maxClient, + json.minClientVer, + json.maxClientVer, json.maxTimediff, json.shortIds, json.mldsa65Seed, @@ -782,8 +782,8 @@ class RealityStreamSettings extends XrayCommonClass { dest: this.dest, serverNames: this.serverNames.split(","), privateKey: this.privateKey, - minClient: this.minClient, - maxClient: this.maxClient, + minClientVer: this.minClientVer, + maxClientVer: this.maxClientVer, maxTimediff: this.maxTimediff, shortIds: this.shortIds.split(","), mldsa65Seed: this.mldsa65Seed, diff --git a/web/html/form/reality_settings.html b/web/html/form/reality_settings.html index aebb6c42..49c05ac0 100644 --- a/web/html/form/reality_settings.html +++ b/web/html/form/reality_settings.html @@ -21,14 +21,12 @@ - From f1b7944828195a937b2f5a8d22b614b8e663c799 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Sun, 3 Aug 2025 12:01:49 +0200 Subject: [PATCH 18/27] pqv: mldsa65Verify --- web/assets/js/model/inbound.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index 141a1fa4..6c299047 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -725,8 +725,8 @@ class RealityStreamSettings extends XrayCommonClass { constructor( show = false, xver = 0, - dest = 'yahoo.com:443', - serverNames = 'yahoo.com,www.yahoo.com', + dest = 'google.com:443', + serverNames = 'google.com,www.google.com', privateKey = '', minClientVer = '', maxClientVer = '', @@ -1385,6 +1385,7 @@ class Inbound extends XrayCommonClass { params.set("security", "reality"); params.set("pbk", this.stream.reality.settings.publicKey); params.set("fp", this.stream.reality.settings.fingerprint); + params.set("pqv", this.stream.reality.settings.mldsa65Verify); if (!ObjectUtil.isArrEmpty(this.stream.reality.serverNames)) { params.set("sni", this.stream.reality.serverNames.split(",")[0]); } @@ -1559,6 +1560,7 @@ class Inbound extends XrayCommonClass { params.set("security", "reality"); params.set("pbk", this.stream.reality.settings.publicKey); params.set("fp", this.stream.reality.settings.fingerprint); + params.set("pqv", this.stream.reality.settings.mldsa65Verify); if (!ObjectUtil.isArrEmpty(this.stream.reality.serverNames)) { params.set("sni", this.stream.reality.serverNames.split(",")[0]); } From c6062eb15c988ae0b4e19842a15b332ea7f0c556 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Sun, 3 Aug 2025 12:09:37 +0200 Subject: [PATCH 19/27] outbound: mldsa65Verify --- web/assets/js/model/outbound.js | 9 +++++++-- web/html/form/outbound.html | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js index 89a11652..03569b00 100644 --- a/web/assets/js/model/outbound.js +++ b/web/assets/js/model/outbound.js @@ -388,7 +388,8 @@ class RealityStreamSettings extends CommonClass { fingerprint = '', serverName = '', shortId = '', - spiderX = '/' + spiderX = '', + mldsa65Verify = '' ) { super(); this.publicKey = publicKey; @@ -396,6 +397,7 @@ class RealityStreamSettings extends CommonClass { this.serverName = serverName; this.shortId = shortId this.spiderX = spiderX; + this.mldsa65Verify = mldsa65Verify; } static fromJson(json = {}) { return new RealityStreamSettings( @@ -404,6 +406,7 @@ class RealityStreamSettings extends CommonClass { json.serverName, json.shortId, json.spiderX, + json.mldsa65Verify ); } toJson() { @@ -413,6 +416,7 @@ class RealityStreamSettings extends CommonClass { serverName: this.serverName, shortId: this.shortId, spiderX: this.spiderX, + mldsa65Verify: this.mldsa65Verify }; } }; @@ -787,7 +791,8 @@ class Outbound extends CommonClass { let sni = url.searchParams.get('sni') ?? ''; let sid = url.searchParams.get('sid') ?? ''; let spx = url.searchParams.get('spx') ?? ''; - stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx); + let pqv = url.searchParams.get('pqv') ?? ''; + stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx, pqv); } const regex = /([^@]+):\/\/([^@]+)@(.+):(\d+)(.*)$/; diff --git a/web/html/form/outbound.html b/web/html/form/outbound.html index 5069c51b..4b15b22c 100644 --- a/web/html/form/outbound.html +++ b/web/html/form/outbound.html @@ -452,6 +452,9 @@ + + + From 30264043f8321717bc50dc71546fa34a6cebe1b6 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Sun, 3 Aug 2025 12:22:06 +0200 Subject: [PATCH 20/27] Xray core: old version removed --- web/service/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/service/server.go b/web/service/server.go index 1bd8a55d..e75a97b8 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -329,7 +329,7 @@ func (s *ServerService) GetXrayVersions() ([]string, error) { continue } - if major > 25 || (major == 25 && minor > 6) || (major == 25 && minor == 6 && patch >= 8) { + if major > 25 || (major == 25 && minor > 7) || (major == 25 && minor == 7 && patch >= 26) { versions = append(versions, release.TagName) } } From 73a5722cca0b4c06f58630ace5d90f36dc544833 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Sun, 3 Aug 2025 12:22:28 +0200 Subject: [PATCH 21/27] v2.6.3 --- config/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/version b/config/version index d5724cd4..bd4053bf 100644 --- a/config/version +++ b/config/version @@ -1 +1 @@ -2.6.2 \ No newline at end of file +2.6.3 \ No newline at end of file From a4c4f9efb3e896c8634b8746aadfe4b1446242e2 Mon Sep 17 00:00:00 2001 From: fgsfds <4870330+fgsfds@users.noreply.github.com> Date: Mon, 4 Aug 2025 03:45:50 +0500 Subject: [PATCH 22/27] kill process instead of sending SIGTERM on Windows (#3304) --- xray/process.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xray/process.go b/xray/process.go index 335ad9c1..21ca5223 100644 --- a/xray/process.go +++ b/xray/process.go @@ -239,7 +239,12 @@ func (p *process) Stop() error { if !p.IsRunning() { return errors.New("xray is not running") } - return p.cmd.Process.Signal(syscall.SIGTERM) + + if runtime.GOOS == "windows" { + return p.cmd.Process.Kill() + } else { + return p.cmd.Process.Signal(syscall.SIGTERM) + } } func writeCrashReport(m []byte) error { From 0d595f56e4e320fbe529be647acf273025af3537 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Mon, 4 Aug 2025 00:57:06 +0200 Subject: [PATCH 23/27] change a-input to a-textarea --- web/html/form/outbound.html | 8 ++++---- web/html/form/reality_settings.html | 8 ++++---- web/html/form/tls_settings.html | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/web/html/form/outbound.html b/web/html/form/outbound.html index 4b15b22c..eed7316d 100644 --- a/web/html/form/outbound.html +++ b/web/html/form/outbound.html @@ -444,16 +444,16 @@ - + - + - + - + diff --git a/web/html/form/reality_settings.html b/web/html/form/reality_settings.html index a4f460e0..feacccbe 100644 --- a/web/html/form/reality_settings.html +++ b/web/html/form/reality_settings.html @@ -36,22 +36,22 @@ type="sync"> - + - + - + Get New Cert - + diff --git a/web/html/form/tls_settings.html b/web/html/form/tls_settings.html index b6367f7b..0de6dae5 100644 --- a/web/html/form/tls_settings.html +++ b/web/html/form/tls_settings.html @@ -85,10 +85,10 @@ From 267024c43f1cd9cdbca8f56440f8b015ce7bafeb Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Mon, 4 Aug 2025 01:28:14 +0200 Subject: [PATCH 24/27] xray core v25.8.3 --- .github/workflows/release.yml | 2 +- DockerInit.sh | 2 +- go.mod | 22 +++++++++--------- go.sum | 44 +++++++++++++++++------------------ 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 074dddd0..6c6708c8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,7 +97,7 @@ jobs: cd x-ui/bin # Download dependencies - Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.7.26/" + Xray_URL="https://github.com/XTLS/Xray-core/releases/download/v25.8.3/" if [ "${{ matrix.platform }}" == "amd64" ]; then wget -q ${Xray_URL}Xray-linux-64.zip unzip Xray-linux-64.zip diff --git a/DockerInit.sh b/DockerInit.sh index 686778cc..c457a33b 100755 --- a/DockerInit.sh +++ b/DockerInit.sh @@ -27,7 +27,7 @@ case $1 in esac mkdir -p build/bin cd build/bin -wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.7.26/Xray-linux-${ARCH}.zip" +wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.8.3/Xray-linux-${ARCH}.zip" unzip "Xray-linux-${ARCH}.zip" rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat mv xray "xray-linux-${FNAME}" diff --git a/go.mod b/go.mod index 01bbd3ff..771f1070 100644 --- a/go.mod +++ b/go.mod @@ -14,22 +14,22 @@ require ( github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 github.com/pelletier/go-toml/v2 v2.2.4 github.com/robfig/cron/v3 v3.0.1 - github.com/shirou/gopsutil/v4 v4.25.6 - github.com/valyala/fasthttp v1.63.0 + github.com/shirou/gopsutil/v4 v4.25.7 + github.com/valyala/fasthttp v1.64.0 github.com/xlzd/gotp v0.1.0 - github.com/xtls/xray-core v1.250726.0 + github.com/xtls/xray-core v1.250803.0 go.uber.org/atomic v1.11.0 golang.org/x/crypto v0.40.0 golang.org/x/text v0.27.0 google.golang.org/grpc v1.74.2 gorm.io/driver/sqlite v1.6.0 - gorm.io/gorm v1.30.0 + gorm.io/gorm v1.30.1 ) require ( github.com/andybalholm/brotli v1.2.0 // indirect - github.com/bytedance/sonic v1.13.3 // indirect - github.com/bytedance/sonic/loader v0.2.4 // indirect + github.com/bytedance/sonic v1.14.0 // indirect + github.com/bytedance/sonic/loader v0.3.0 // indirect github.com/cloudflare/circl v1.6.1 // indirect github.com/cloudwego/base64x v0.1.5 // indirect github.com/dgryski/go-metro v0.0.0-20250106013310-edb8663e5e33 // indirect @@ -52,13 +52,13 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/juju/ratelimit v1.0.2 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.11 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-sqlite3 v1.14.28 // indirect - github.com/miekg/dns v1.1.67 // indirect + github.com/mattn/go-sqlite3 v1.14.30 // indirect + github.com/miekg/dns v1.1.68 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pires/go-proxyproto v0.8.1 // indirect @@ -81,7 +81,7 @@ require ( github.com/valyala/fastjson v1.6.4 // indirect github.com/vishvananda/netlink v1.3.1 // indirect github.com/vishvananda/netns v0.0.5 // indirect - github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7 // indirect + github.com/xtls/reality v0.0.0-20250727231020-de3bb4d08f5a // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.uber.org/mock v0.5.2 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect @@ -94,7 +94,7 @@ require ( golang.org/x/tools v0.35.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gvisor.dev/gvisor v0.0.0-20250428193742-2d800c3129d5 // indirect diff --git a/go.sum b/go.sum index 8b1c019a..74eee2b8 100644 --- a/go.sum +++ b/go.sum @@ -2,11 +2,11 @@ github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= -github.com/bytedance/sonic v1.13.3 h1:MS8gmaH16Gtirygw7jV91pDCN33NyMrPbN7qiYhEsF0= -github.com/bytedance/sonic v1.13.3/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ= +github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= -github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA= +github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= @@ -88,8 +88,8 @@ github.com/juju/ratelimit v1.0.2/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSg github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= -github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -101,10 +101,10 @@ github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 h1:PpXWgLPs+Fqr32 github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= -github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/miekg/dns v1.1.67 h1:kg0EHj0G4bfT5/oOys6HhZw4vmMlnoZ+gDu8tJ/AlI0= -github.com/miekg/dns v1.1.67/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= +github.com/mattn/go-sqlite3 v1.14.30 h1:bVreufq3EAIG1Quvws73du3/QgdeZ3myglJlrzSYYCY= +github.com/mattn/go-sqlite3 v1.14.30/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -146,8 +146,8 @@ github.com/savsgio/gotils v0.0.0-20250408102913-196191ec6287 h1:qIQ0tWF9vxGtkJa2 github.com/savsgio/gotils v0.0.0-20250408102913-196191ec6287/go.mod h1:sM7Mt7uEoCeFSCBM+qBrqvEo+/9vdmj19wzp3yzUhmg= github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 h1:emzAzMZ1L9iaKCTxdy3Em8Wv4ChIAGnfiz18Cda70g4= github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= -github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs= -github.com/shirou/gopsutil/v4 v4.25.6/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c= +github.com/shirou/gopsutil/v4 v4.25.7 h1:bNb2JuqKuAu3tRlPv5piSmBZyMfecwQ+t/ILq+1JqVM= +github.com/shirou/gopsutil/v4 v4.25.7/go.mod h1:XV/egmwJtd3ZQjBpJVY5kndsiOO4IRqy9TQnmm6VP7U= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -171,8 +171,8 @@ github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e h1:5QefA066A1tF github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e/go.mod h1:5t19P9LBIrNamL6AcMQOncg/r10y3Pc01AbHeMhwlpU= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.63.0 h1:DisIL8OjB7ul2d7cBaMRcKTQDYnrGy56R4FCiuDP0Ns= -github.com/valyala/fasthttp v1.63.0/go.mod h1:REc4IeW+cAEyLrRPa5A81MIjvz0QE1laoTX2EaPHKJM= +github.com/valyala/fasthttp v1.64.0 h1:QBygLLQmiAyiXuRhthf0tuRkqAFcrC42dckN2S+N3og= +github.com/valyala/fasthttp v1.64.0/go.mod h1:dGmFxwkWXSK0NbOSJuF7AMVzU+lkHz0wQVvVITv2UQA= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/vishvananda/netlink v1.3.1 h1:3AEMt62VKqz90r0tmNhog0r/PpWKmrEShJU0wJW6bV0= @@ -181,10 +181,10 @@ github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zd github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= github.com/xlzd/gotp v0.1.0 h1:37blvlKCh38s+fkem+fFh7sMnceltoIEBYTVXyoa5Po= github.com/xlzd/gotp v0.1.0/go.mod h1:ndLJ3JKzi3xLmUProq4LLxCuECL93dG9WASNLpHz8qg= -github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7 h1:Ript0vN+nSO33+Vj4n0mgNY5M+oOxFQJdrJ1VnwTBO0= -github.com/xtls/reality v0.0.0-20250725142056-5b52a03d4fb7/go.mod h1:XxvnCCgBee4WWE0bc4E+a7wbk8gkJ/rS0vNVNtC5qp0= -github.com/xtls/xray-core v1.250726.0 h1:uTUHUt/CQ1JQLip1pLkiwoS0pMvl6oCHJgur4M4orWQ= -github.com/xtls/xray-core v1.250726.0/go.mod h1:z2vn2o30flYEgpSz1iEhdZP1I46UZ3+gXINZyohH3yE= +github.com/xtls/reality v0.0.0-20250727231020-de3bb4d08f5a h1:Fs8Pc0JAc/LDOf9Q4DzKrk+Ujf4ILlyvfvDVZcmOZ2o= +github.com/xtls/reality v0.0.0-20250727231020-de3bb4d08f5a/go.mod h1:XxvnCCgBee4WWE0bc4E+a7wbk8gkJ/rS0vNVNtC5qp0= +github.com/xtls/xray-core v1.250803.0 h1:sYdRC243UsujnePINH4IfM4MfHE4lj2p4wZFAfeE2GI= +github.com/xtls/xray-core v1.250803.0/go.mod h1:z2vn2o30flYEgpSz1iEhdZP1I46UZ3+gXINZyohH3yE= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= @@ -235,8 +235,8 @@ golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeu golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4= golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 h1:qJW29YvkiJmXOYMu5Tf8lyrTp3dOS+K4z6IixtLaCf8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= @@ -252,8 +252,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ= gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8= -gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= -gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +gorm.io/gorm v1.30.1 h1:lSHg33jJTBxs2mgJRfRZeLDG+WZaHYCk3Wtfl6Ngzo4= +gorm.io/gorm v1.30.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gvisor.dev/gvisor v0.0.0-20250428193742-2d800c3129d5 h1:sfK5nHuG7lRFZ2FdTT3RimOqWBg8IrVm+/Vko1FVOsk= gvisor.dev/gvisor v0.0.0-20250428193742-2d800c3129d5/go.mod h1:3r5CMtNQMKIvBlrmM9xWUNamjKBYPOWyXOjmg5Kts3g= lukechampine.com/blake3 v1.4.1 h1:I3Smz7gso8w4/TunLKec6K2fn+kyKtDxr/xcQEN84Wg= From 1088d1faf3a93a7927ccdeffe521db0bc6bd51ab Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Mon, 4 Aug 2025 01:30:01 +0200 Subject: [PATCH 25/27] minor changes --- web/assets/js/model/inbound.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index 6c299047..09073593 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -559,7 +559,7 @@ class TlsStreamSettings extends XrayCommonClass { disableSystemRoot = false, enableSessionResumption = false, certificates = [new TlsStreamSettings.Cert()], - alpn = [ALPN_OPTION.H3, ALPN_OPTION.H2, ALPN_OPTION.HTTP1], + alpn = [ALPN_OPTION.H2, ALPN_OPTION.HTTP1], settings = new TlsStreamSettings.Settings() ) { super(); @@ -1385,7 +1385,6 @@ class Inbound extends XrayCommonClass { params.set("security", "reality"); params.set("pbk", this.stream.reality.settings.publicKey); params.set("fp", this.stream.reality.settings.fingerprint); - params.set("pqv", this.stream.reality.settings.mldsa65Verify); if (!ObjectUtil.isArrEmpty(this.stream.reality.serverNames)) { params.set("sni", this.stream.reality.serverNames.split(",")[0]); } @@ -1395,6 +1394,9 @@ class Inbound extends XrayCommonClass { if (!ObjectUtil.isEmpty(this.stream.reality.settings.spiderX)) { params.set("spx", this.stream.reality.settings.spiderX); } + if (!ObjectUtil.isEmpty(this.stream.reality.settings.mldsa65Verify)) { + params.set("pqv", this.stream.reality.settings.mldsa65Verify); + } if (type == 'tcp' && !ObjectUtil.isEmpty(flow)) { params.set("flow", flow); } @@ -1560,7 +1562,6 @@ class Inbound extends XrayCommonClass { params.set("security", "reality"); params.set("pbk", this.stream.reality.settings.publicKey); params.set("fp", this.stream.reality.settings.fingerprint); - params.set("pqv", this.stream.reality.settings.mldsa65Verify); if (!ObjectUtil.isArrEmpty(this.stream.reality.serverNames)) { params.set("sni", this.stream.reality.serverNames.split(",")[0]); } @@ -1570,6 +1571,9 @@ class Inbound extends XrayCommonClass { if (!ObjectUtil.isEmpty(this.stream.reality.settings.spiderX)) { params.set("spx", this.stream.reality.settings.spiderX); } + if (!ObjectUtil.isEmpty(this.stream.reality.settings.mldsa65Verify)) { + params.set("pqv", this.stream.reality.settings.mldsa65Verify); + } } else { From de5314c01feb72bdb1be892d8a7fff2a388b996d Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Mon, 4 Aug 2025 10:24:21 +0200 Subject: [PATCH 26/27] fix: pqv for sub #3306 --- sub/subService.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sub/subService.go b/sub/subService.go index 9f26c0e0..dfb0863e 100644 --- a/sub/subService.go +++ b/sub/subService.go @@ -437,6 +437,11 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string { params["fp"] = fp } } + if pqvValue, ok := searchKey(realitySettings, "mldsa65Verify"); ok { + if pqv, ok := pqvValue.(string); ok && len(pqv) > 0 { + params["pqv"] = pqv + } + } params["spx"] = "/" + random.Seq(15) } @@ -627,6 +632,11 @@ func (s *SubService) genTrojanLink(inbound *model.Inbound, email string) string params["fp"] = fp } } + if pqvValue, ok := searchKey(realitySettings, "mldsa65Verify"); ok { + if pqv, ok := pqvValue.(string); ok && len(pqv) > 0 { + params["pqv"] = pqv + } + } params["spx"] = "/" + random.Seq(15) } From eb1b96643d84d351a4654485a6606a4e37e54c51 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Mon, 4 Aug 2025 11:22:09 +0200 Subject: [PATCH 27/27] update languages --- web/translation/translate.ar_EG.toml | 6 ------ web/translation/translate.en_US.toml | 3 --- web/translation/translate.es_ES.toml | 8 -------- web/translation/translate.fa_IR.toml | 16 ++++------------ web/translation/translate.id_ID.toml | 9 --------- web/translation/translate.ja_JP.toml | 8 -------- web/translation/translate.pt_BR.toml | 8 -------- web/translation/translate.ru_RU.toml | 8 -------- web/translation/translate.tr_TR.toml | 8 -------- web/translation/translate.uk_UA.toml | 8 -------- web/translation/translate.vi_VN.toml | 8 -------- web/translation/translate.zh_CN.toml | 8 -------- web/translation/translate.zh_TW.toml | 10 ---------- 13 files changed, 4 insertions(+), 104 deletions(-) diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml index de350264..c3748499 100644 --- a/web/translation/translate.ar_EG.toml +++ b/web/translation/translate.ar_EG.toml @@ -173,8 +173,6 @@ "deleteClient" = "حذف العميل" "deleteClientContent" = "متأكد إنك عايز تحذف العميل؟" "resetTrafficContent" = "متأكد إنك عايز تعيد ضبط الترافيك؟" -"inboundUpdateSuccess" = "تم تحديث الوارد بنجاح." -"inboundCreateSuccess" = "تم إنشاء الوارد بنجاح." "copyLink" = "انسخ الرابط" "address" = "العنوان" "network" = "الشبكة" @@ -645,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 اتحدّث في: {{ .Time }}\r\n\r\n" "yes" = "✅ أيوه" "no" = "❌ لأ" - "received_id" = "🔑📥 الـ ID اتحدث." "received_password" = "🔑📥 الباسورد اتحدث." "received_email" = "📧📥 الإيميل اتحدث." @@ -665,7 +662,6 @@ "FailedResetTraffic" = "📧 البريد الإلكتروني: {{ .ClientEmail }}\n🏁 النتيجة: ❌ فشل \n\n🛠️ الخطأ: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 عملية إعادة ضبط الترافيك خلصت لكل العملاء." - [tgbot.buttons] "closeKeyboard" = "❌ اقفل الكيبورد" "cancel" = "❌ إلغاء" @@ -699,7 +695,6 @@ "limitTraffic" = "🚧 حد الترافيك" "getBanLogs" = "احصل على سجلات الحظر" "allClients" = "كل العملاء" - "addClient" = "إضافة عميل" "submitDisable" = "إرسال كمعطّل ☑️" "submitEnable" = "إرسال كمفعّل ✅" @@ -711,7 +706,6 @@ "ResetAllTraffics" = "إعادة ضبط جميع الترافيك" "SortedTrafficUsageReport" = "تقرير استخدام الترافيك المرتب" - [tgbot.answers] "successfulOperation" = "✅ العملية نجحت!" "errorOperation" = "❗ حصل خطأ في العملية." diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index 07cfb1af..eb2389dd 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -643,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Refreshed On: {{ .Time }}\r\n\r\n" "yes" = "✅ Yes" "no" = "❌ No" - "received_id" = "🔑📥 ID updated." "received_password" = "🔑📥 Password updated." "received_email" = "📧📥 Email updated." @@ -663,7 +662,6 @@ "FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Result: ❌ Failed \n\n🛠️ Error: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Traffic reset process finished for all clients." - [tgbot.buttons] "closeKeyboard" = "❌ Close Keyboard" "cancel" = "❌ Cancel" @@ -697,7 +695,6 @@ "limitTraffic" = "🚧 Traffic Limit" "getBanLogs" = "Get Ban Logs" "allClients" = "All Clients" - "addClient" = "Add Client" "submitDisable" = "Submit As Disable ☑️" "submitEnable" = "Submit As Enable ✅" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index 9426d151..e682bd38 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -117,8 +117,6 @@ "operationHours" = "Tiempo de Funcionamiento" "systemLoad" = "Carga del Sistema" "systemLoadDesc" = "promedio de carga del sistema en los últimos 1, 5 y 15 minutos" -"connectionTcpCountDesc" = "Conexiones TCP totales en todas las tarjetas de red." -"connectionUdpCountDesc" = "Conexiones UDP totales en todas las tarjetas de red." "connectionCount" = "Número de Conexiones" "ipAddresses" = "Direcciones IP" "toggleIpVisibility" = "Alternar visibilidad de la IP" @@ -175,8 +173,6 @@ "deleteClient" = "Eliminar cliente" "deleteClientContent" = "¿Está seguro de que desea eliminar el cliente?" "resetTrafficContent" = "¿Confirmar restablecimiento de tráfico?" -"inboundUpdateSuccess" = "La entrada se ha actualizado correctamente." -"inboundCreateSuccess" = "La entrada se ha creado correctamente." "copyLink" = "Copiar Enlace" "address" = "Dirección" "network" = "Red" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Actualizado en: {{ .Time }}\r\n\r\n" "yes" = "✅ Sí" "no" = "❌ No" - "received_id" = "🔑📥 ID actualizado." "received_password" = "🔑📥 Contraseña actualizada." "received_email" = "📧📥 Correo electrónico actualizado." @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 Correo: {{ .ClientEmail }}\n🏁 Resultado: ❌ Fallido \n\n🛠️ Error: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Proceso de reinicio de tráfico finalizado para todos los clientes." - [tgbot.buttons] "closeKeyboard" = "❌ Cerrar Teclado" "cancel" = "❌ Cancelar" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 Límite de tráfico" "getBanLogs" = "Registros de prohibición" "allClients" = "Todos los Clientes" - "addClient" = "Añadir cliente" "submitDisable" = "Enviar como deshabilitado ☑️" "submitEnable" = "Enviar como habilitado ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "Reiniciar todo el tráfico" "SortedTrafficUsageReport" = "Informe de uso de tráfico ordenado" - [tgbot.answers] "successfulOperation" = "✅ ¡Exitosa!" "errorOperation" = "❗ Error en la Operación." diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index 22337949..4d3aa6ae 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -117,8 +117,6 @@ "operationHours" = "مدت‌کارکرد" "systemLoad" = "بارسیستم" "systemLoadDesc" = "میانگین بار سیستم برای 1، 5 و 15 دقیقه گذشته" -"connectionTcpCountDesc" = "در تمام‌شبکه‌ها TCP مجموع‌اتصالات" -"connectionUdpCountDesc" = "در تمام‌شبکه‌ها UDP مجموع‌اتصالات" "connectionCount" = "تعداد کانکشن ها" "ipAddresses" = "آدرس‌های IP" "toggleIpVisibility" = "تغییر وضعیت نمایش IP" @@ -175,8 +173,6 @@ "deleteClient" = "حذف کاربر" "deleteClientContent" = "آیا مطمئن به حذف کاربر هستید؟" "resetTrafficContent" = "آیا مطمئن به ریست ترافیک هستید؟" -"inboundUpdateSuccess" = "ورودی با موفقیت به‌روزرسانی شد." -"inboundCreateSuccess" = "ورودی با موفقیت ایجاد شد." "copyLink" = "کپی لینک" "address" = "آدرس" "network" = "شبکه" @@ -359,16 +355,16 @@ "subDomainDesc" = "آدرس دامنه برای سرویس سابسکریپشن. برای گوش دادن به تمام دامنه‌ها و آی‌پی‌ها خالی‌بگذارید‌" "subUpdates" = "فاصله بروزرسانی‌ سابسکریپشن" "subUpdatesDesc" = "(فاصله مابین بروزرسانی در برنامه‌های کاربری. (واحد: ساعت" -"externalTrafficInformEnable" = "اطلاع رسانی خارجی مصرف ترافیک" -"externalTrafficInformEnableDesc" = "مصرف ترافیک به سرویس خارجی ارسال می شود" -"externalTrafficInformURI" = "لینک اطلاع رسانی خارجی مصرف ترافیک" -"externalTrafficInformURIDesc" = "ترافیک های مصرفی به این لینک هم ارسال می شود" "subEncrypt" = "کدگذاری" "subEncryptDesc" = "کدگذاری خواهدشد Base64 محتوای برگشتی سرویس سابسکریپشن برپایه" "subShowInfo" = "نمایش اطلاعات مصرف" "subShowInfoDesc" = "ترافیک و زمان باقی‌مانده را در برنامه‌های کاربری نمایش می‌دهد" "subURI" = "پروکسی معکوس URI مسیر" "subURIDesc" = "سابسکریپشن را برای استفاده در پشت پراکسی‌ها تغییر می‌دهد URI مسیر" +"externalTrafficInformEnable" = "اطلاع رسانی خارجی مصرف ترافیک" +"externalTrafficInformEnableDesc" = "مصرف ترافیک به سرویس خارجی ارسال می شود" +"externalTrafficInformURI" = "لینک اطلاع رسانی خارجی مصرف ترافیک" +"externalTrafficInformURIDesc" = "ترافیک های مصرفی به این لینک هم ارسال می شود" "fragment" = "فرگمنت" "fragmentDesc" = "فعال کردن فرگمنت برای بسته‌ی نخست تی‌ال‌اس" "fragmentSett" = "تنظیمات فرگمنت" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 تازه‌سازی شده در: {{ .Time }}\r\n\r\n" "yes" = "✅ بله" "no" = "❌ خیر" - "received_id" = "🔑📥 شناسه به‌روزرسانی شد." "received_password" = "🔑📥 رمز عبور به‌روزرسانی شد." "received_email" = "📧📥 ایمیل به‌روزرسانی شد." @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 ایمیل: {{ .ClientEmail }}\n🏁 نتیجه: ❌ ناموفق \n\n🛠️ خطا: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 فرآیند بازنشانی ترافیک برای همه مشتریان به پایان رسید." - [tgbot.buttons] "closeKeyboard" = "❌ بستن کیبورد" "cancel" = "❌ لغو" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 محدودیت ترافیک" "getBanLogs" = "گزارش های بلوک را دریافت کنید" "allClients" = "همه مشتریان" - "addClient" = "افزودن مشتری" "submitDisable" = "ارسال به عنوان غیرفعال ☑️" "submitEnable" = "ارسال به عنوان فعال ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "بازنشانی همه ترافیک‌ها" "SortedTrafficUsageReport" = "گزارش استفاده از ترافیک مرتب‌شده" - [tgbot.answers] "successfulOperation" = "✅ انجام شد!" "errorOperation" = "❗ خطا در عملیات." diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index a452a1bf..bc36f046 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -117,8 +117,6 @@ "operationHours" = "Waktu Aktif" "systemLoad" = "Beban Sistem" "systemLoadDesc" = "Rata-rata beban sistem selama 1, 5, dan 15 menit terakhir" -"connectionTcpCountDesc" = "Total koneksi TCP di seluruh sistem" -"connectionUdpCountDesc" = "Total koneksi UDP di seluruh sistem" "connectionCount" = "Statistik Koneksi" "ipAddresses" = "Alamat IP" "toggleIpVisibility" = "Alihkan visibilitas IP" @@ -175,8 +173,6 @@ "deleteClient" = "Hapus Klien" "deleteClientContent" = "Apakah Anda yakin ingin menghapus klien?" "resetTrafficContent" = "Apakah Anda yakin ingin mereset traffic?" -"inboundUpdateSuccess" = "Inbound berhasil diperbarui." -"inboundCreateSuccess" = "Inbound berhasil dibuat." "copyLink" = "Salin URL" "address" = "Alamat" "network" = "Jaringan" @@ -422,7 +418,6 @@ "RoutingStrategy" = "Strategi Pengalihan Keseluruhan" "RoutingStrategyDesc" = "Atur strategi pengalihan lalu lintas keseluruhan untuk menyelesaikan semua permintaan." "Torrent" = "Blokir Protokol BitTorrent" -"TorrentDesc" = "Memblokir protokol BitTorrent." "Inbounds" = "Masuk" "InboundsDesc" = "Menerima klien tertentu." "Outbounds" = "Keluar" @@ -648,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Diperbarui Pada: {{ .Time }}\r\n\r\n" "yes" = "✅ Ya" "no" = "❌ Tidak" - "received_id" = "🔑📥 ID diperbarui." "received_password" = "🔑📥 Kata sandi diperbarui." "received_email" = "📧📥 Email diperbarui." @@ -668,7 +662,6 @@ "FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Hasil: ❌ Gagal \n\n🛠️ Kesalahan: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Proses reset traffic selesai untuk semua klien." - [tgbot.buttons] "closeKeyboard" = "❌ Tutup Papan Ketik" "cancel" = "❌ Batal" @@ -702,7 +695,6 @@ "limitTraffic" = "🚧 Batas Lalu Lintas" "getBanLogs" = "Dapatkan Log Pemblokiran" "allClients" = "Semua Klien" - "addClient" = "Tambah Klien" "submitDisable" = "Kirim Sebagai Nonaktif ☑️" "submitEnable" = "Kirim Sebagai Aktif ✅" @@ -714,7 +706,6 @@ "ResetAllTraffics" = "Reset Semua Lalu Lintas" "SortedTrafficUsageReport" = "Laporan Penggunaan Lalu Lintas yang Terurut" - [tgbot.answers] "successfulOperation" = "✅ Operasi berhasil!" "errorOperation" = "❗ Kesalahan dalam operasi." diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml index 8c1be2c7..c4461fcf 100644 --- a/web/translation/translate.ja_JP.toml +++ b/web/translation/translate.ja_JP.toml @@ -117,8 +117,6 @@ "operationHours" = "システム稼働時間" "systemLoad" = "システム負荷" "systemLoadDesc" = "過去1、5、15分間のシステム平均負荷" -"connectionTcpCountDesc" = "システム内のすべてのTCP接続数" -"connectionUdpCountDesc" = "システム内のすべてのUDP接続数" "connectionCount" = "接続数" "ipAddresses" = "IPアドレス" "toggleIpVisibility" = "IPの表示を切り替える" @@ -175,8 +173,6 @@ "deleteClient" = "クライアント削除" "deleteClientContent" = "クライアントを削除してもよろしいですか?" "resetTrafficContent" = "トラフィックをリセットしてもよろしいですか?" -"inboundUpdateSuccess" = "インバウンドが正常に更新されました。" -"inboundCreateSuccess" = "インバウンドが正常に作成されました。" "copyLink" = "リンクをコピー" "address" = "アドレス" "network" = "ネットワーク" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 更新時間:{{ .Time }}\r\n\r\n" "yes" = "✅ はい" "no" = "❌ いいえ" - "received_id" = "🔑📥 IDが更新されました。" "received_password" = "🔑📥 パスワードが更新されました。" "received_email" = "📧📥 メールが更新されました。" @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 メール: {{ .ClientEmail }}\n🏁 結果: ❌ 失敗 \n\n🛠️ エラー: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 すべてのクライアントのトラフィックリセットが完了しました。" - [tgbot.buttons] "closeKeyboard" = "❌ キーボードを閉じる" "cancel" = "❌ キャンセル" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 トラフィック制限" "getBanLogs" = "禁止ログ" "allClients" = "すべてのクライアント" - "addClient" = "クライアントを追加" "submitDisable" = "無効として送信 ☑️" "submitEnable" = "有効として送信 ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "すべてのトラフィックをリセット" "SortedTrafficUsageReport" = "ソートされたトラフィック使用レポート" - [tgbot.answers] "successfulOperation" = "✅ 成功!" "errorOperation" = "❗ 操作エラー。" diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml index 789732b6..a59fb81c 100644 --- a/web/translation/translate.pt_BR.toml +++ b/web/translation/translate.pt_BR.toml @@ -117,8 +117,6 @@ "operationHours" = "Tempo de Atividade" "systemLoad" = "Carga do Sistema" "systemLoadDesc" = "Média de carga do sistema nos últimos 1, 5 e 15 minutos" -"connectionTcpCountDesc" = "Total de conexões TCP no sistema" -"connectionUdpCountDesc" = "Total de conexões UDP no sistema" "connectionCount" = "Estatísticas de Conexão" "ipAddresses" = "Endereços IP" "toggleIpVisibility" = "Alternar visibilidade do IP" @@ -175,8 +173,6 @@ "deleteClient" = "Excluir Cliente" "deleteClientContent" = "Tem certeza de que deseja excluir o cliente?" "resetTrafficContent" = "Tem certeza de que deseja redefinir o tráfego?" -"inboundUpdateSuccess" = "A entrada foi atualizada com sucesso." -"inboundCreateSuccess" = "A entrada foi criada com sucesso." "copyLink" = "Copiar URL" "address" = "Endereço" "network" = "Rede" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Atualizado em: {{ .Time }}\r\n\r\n" "yes" = "✅ Sim" "no" = "❌ Não" - "received_id" = "🔑📥 ID atualizado." "received_password" = "🔑📥 Senha atualizada." "received_email" = "📧📥 E-mail atualizado." @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Resultado: ❌ Falhou \n\n🛠️ Erro: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Processo de redefinição de tráfego concluído para todos os clientes." - [tgbot.buttons] "closeKeyboard" = "❌ Fechar teclado" "cancel" = "❌ Cancelar" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 Limite de tráfego" "getBanLogs" = "Obter logs de banimento" "allClients" = "Todos os clientes" - "addClient" = "Adicionar Cliente" "submitDisable" = "Enviar como Desativado ☑️" "submitEnable" = "Enviar como Ativado ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "Redefinir Todo o Tráfego" "SortedTrafficUsageReport" = "Relatório de Uso de Tráfego Ordenado" - [tgbot.answers] "successfulOperation" = "✅ Operação bem-sucedida!" "errorOperation" = "❗ Erro na operação." diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index c9e75262..95ea9509 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -117,8 +117,6 @@ "operationHours" = "Время работы системы" "systemLoad" = "Нагрузка на систему" "systemLoadDesc" = "Средняя загрузка системы за последние 1, 5 и 15 минут" -"connectionTcpCountDesc" = "Общее количество подключений TCP по всем сетевым картам." -"connectionUdpCountDesc" = "Общее количество подключений UDP по всем сетевым картам." "connectionCount" = "Количество соединений" "ipAddresses" = "IP-адреса сервера" "toggleIpVisibility" = "Переключить видимость IP-адресов сервера" @@ -175,8 +173,6 @@ "deleteClient" = "Удалить клиента" "deleteClientContent" = "Вы уверены, что хотите удалить клиента?" "resetTrafficContent" = "Вы уверены, что хотите сбросить трафик?" -"inboundUpdateSuccess" = "Инбаунд успешно обновлен." -"inboundCreateSuccess" = "Инбаунд успешно создан." "copyLink" = "Копировать ссылку" "address" = "Адрес" "network" = "Сеть" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Обновлено: {{ .Time }}\r\n\r\n" "yes" = "✅ Да" "no" = "❌ Нет" - "received_id" = "🔑📥 ID обновлён." "received_password" = "🔑📥 Пароль обновлён." "received_email" = "📧📥 Email обновлен." @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 Почта: {{ .ClientEmail }}\n🏁 Результат: ❌ Неудача \n\n🛠️ Ошибка: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Сброс трафика завершён для всех клиентов." - [tgbot.buttons] "closeKeyboard" = "❌ Закрыть клавиатуру" "cancel" = "❌ Отмена" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 Лимит трафика" "getBanLogs" = "📄 Лог банов" "allClients" = "👥 Все клиенты" - "addClient" = "➕ Новый клиент" "submitDisable" = "Добавить отключенным ☑️" "submitEnable" = "Добавить включенныи ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "Сбросить весь трафик" "SortedTrafficUsageReport" = "Отсортированный отчет об использовании трафика" - [tgbot.answers] "successfulOperation" = "✅ Успешно!" "errorOperation" = "❗ Ошибка в операции." diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml index dc10d12a..95d27f2c 100644 --- a/web/translation/translate.tr_TR.toml +++ b/web/translation/translate.tr_TR.toml @@ -117,8 +117,6 @@ "operationHours" = "Çalışma Süresi" "systemLoad" = "Sistem Yükü" "systemLoadDesc" = "Geçmiş 1, 5 ve 15 dakika için sistem yük ortalaması" -"connectionTcpCountDesc" = "Sistem genelinde toplam TCP bağlantıları" -"connectionUdpCountDesc" = "Sistem genelinde toplam UDP bağlantıları" "connectionCount" = "Bağlantı İstatistikleri" "ipAddresses" = "IP adresleri" "toggleIpVisibility" = "IP görünürlüğünü değiştir" @@ -175,8 +173,6 @@ "deleteClient" = "Müşteriyi Sil" "deleteClientContent" = "Müşteriyi silmek istediğinizden emin misiniz?" "resetTrafficContent" = "Trafiği sıfırlamak istediğinizden emin misiniz?" -"inboundUpdateSuccess" = "Gelen bağlantı başarıyla güncellendi." -"inboundCreateSuccess" = "Gelen bağlantı başarıyla oluşturuldu." "copyLink" = "URL'yi Kopyala" "address" = "Adres" "network" = "Ağ" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Yenilendi: {{ .Time }}\r\n\r\n" "yes" = "✅ Evet" "no" = "❌ Hayır" - "received_id" = "🔑📥 Kimlik güncellendi." "received_password" = "🔑📥 Şifre güncellendi." "received_email" = "📧📥 E-posta güncellendi." @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 E-posta: {{ .ClientEmail }}\n🏁 Sonuç: ❌ Başarısız \n\n🛠️ Hata: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Tüm müşteriler için trafik sıfırlama işlemi tamamlandı." - [tgbot.buttons] "closeKeyboard" = "❌ Klavyeyi Kapat" "cancel" = "❌ İptal" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 Trafik Sınırı" "getBanLogs" = "Yasak Günlüklerini Al" "allClients" = "Tüm Müşteriler" - "addClient" = "Müşteri Ekle" "submitDisable" = "Devre Dışı Olarak Gönder ☑️" "submitEnable" = "Etkin Olarak Gönder ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "Tüm Trafikleri Sıfırla" "SortedTrafficUsageReport" = "Sıralı Trafik Kullanım Raporu" - [tgbot.answers] "successfulOperation" = "✅ İşlem başarılı!" "errorOperation" = "❗ İşlemde hata." diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml index 1a3ddc8d..6847b8a0 100644 --- a/web/translation/translate.uk_UA.toml +++ b/web/translation/translate.uk_UA.toml @@ -117,8 +117,6 @@ "operationHours" = "Час роботи" "systemLoad" = "Завантаження системи" "systemLoadDesc" = "Середнє завантаження системи за останні 1, 5 і 15 хвилин" -"connectionTcpCountDesc" = "Загальна кількість TCP-з'єднань у системі" -"connectionUdpCountDesc" = "Загальна кількість UDP-з'єднань у системі" "connectionCount" = "Статистика з'єднання" "ipAddresses" = "IP-адреси" "toggleIpVisibility" = "Перемкнути видимість IP" @@ -175,8 +173,6 @@ "deleteClient" = "Видалити клієнта" "deleteClientContent" = "Ви впевнені, що хочете видалити клієнт?" "resetTrafficContent" = "Ви впевнені, що хочете скинути трафік?" -"inboundUpdateSuccess" = "Вхідне підключення успішно оновлено." -"inboundCreateSuccess" = "Вхідне підключення успішно створено." "copyLink" = "Копіювати URL" "address" = "Адреса" "network" = "Мережа" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Оновлено: {{ .Time }}\r\n\r\n" "yes" = "✅ Так" "no" = "❌ Ні" - "received_id" = "🔑📥 ID оновлено." "received_password" = "🔑📥 Пароль оновлено." "received_email" = "📧📥 Електронна пошта оновлена." @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 Електронна пошта: {{ .ClientEmail }}\n🏁 Результат: ❌ Невдача \n\n🛠️ Помилка: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Процес скидання трафіку завершено для всіх клієнтів." - [tgbot.buttons] "closeKeyboard" = "❌ Закрити клавіатуру" "cancel" = "❌ Скасувати" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 Ліміт трафіку" "getBanLogs" = "Отримати журнали заборон" "allClients" = "Всі Клієнти" - "addClient" = "Додати клієнта" "submitDisable" = "Надіслати як вимкнено ☑️" "submitEnable" = "Надіслати як увімкнено ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "Скинути весь трафік" "SortedTrafficUsageReport" = "Відсортований звіт про використання трафіку" - [tgbot.answers] "successfulOperation" = "✅ Операція успішна!" "errorOperation" = "❗ Помилка в роботі." diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index c35076b9..4c3bd99e 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -117,8 +117,6 @@ "operationHours" = "Thời gian hoạt động" "systemLoad" = "Tải hệ thống" "systemLoadDesc" = "trung bình tải hệ thống trong 1, 5 và 15 phút qua" -"connectionTcpCountDesc" = "Tổng số kết nối TCP trên tất cả các thẻ mạng." -"connectionUdpCountDesc" = "Tổng số kết nối UDP trên tất cả các thẻ mạng." "connectionCount" = "Số lượng kết nối" "ipAddresses" = "Địa chỉ IP" "toggleIpVisibility" = "Chuyển đổi hiển thị IP" @@ -175,8 +173,6 @@ "deleteClient" = "Xóa người dùng" "deleteClientContent" = "Bạn có chắc chắn muốn xóa người dùng không?" "resetTrafficContent" = "Xác nhận đặt lại lưu lượng?" -"inboundUpdateSuccess" = "Đã cập nhật kết nối inbound thành công." -"inboundCreateSuccess" = "Đã tạo kết nối inbound thành công." "copyLink" = "Sao chép liên kết" "address" = "Địa chỉ" "network" = "Mạng" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 Đã cập nhật lần cuối vào: {{ .Time }}\r\n\r\n" "yes" = "✅ Có" "no" = "❌ Không" - "received_id" = "🔑📥 ID đã được cập nhật." "received_password" = "🔑📥 Mật khẩu đã được cập nhật." "received_email" = "📧📥 Email đã được cập nhật." @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 Email: {{ .ClientEmail }}\n🏁 Kết quả: ❌ Thất bại \n\n🛠️ Lỗi: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 Quá trình đặt lại lưu lượng đã hoàn tất cho tất cả khách hàng." - [tgbot.buttons] "closeKeyboard" = "❌ Đóng Bàn Phím" "cancel" = "❌ Hủy" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 Giới hạn lưu lượng" "getBanLogs" = "Cấm nhật ký" "allClients" = "Tất cả Khách hàng" - "addClient" = "Thêm Khách Hàng" "submitDisable" = "Gửi Dưới Dạng Vô Hiệu ☑️" "submitEnable" = "Gửi Dưới Dạng Kích Hoạt ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "Đặt lại tất cả lưu lượng" "SortedTrafficUsageReport" = "Báo cáo sử dụng lưu lượng đã sắp xếp" - [tgbot.answers] "successfulOperation" = "✅ Thành công!" "errorOperation" = "❗ Lỗi Trong Quá Trình Thực Hiện." diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml index 68e4d1e8..6172c32c 100644 --- a/web/translation/translate.zh_CN.toml +++ b/web/translation/translate.zh_CN.toml @@ -117,8 +117,6 @@ "operationHours" = "系统正常运行时间" "systemLoad" = "系统负载" "systemLoadDesc" = "过去 1、5 和 15 分钟的系统平均负载" -"connectionTcpCountDesc" = "系统中所有 TCP 连接数" -"connectionUdpCountDesc" = "系统中所有 UDP 连接数" "connectionCount" = "连接数" "ipAddresses" = "IP地址" "toggleIpVisibility" = "切换IP可见性" @@ -175,8 +173,6 @@ "deleteClient" = "删除客户端" "deleteClientContent" = "确定要删除客户端吗?" "resetTrafficContent" = "确定要重置流量吗?" -"inboundUpdateSuccess" = "入站连接已成功更新。" -"inboundCreateSuccess" = "入站连接已成功创建。" "copyLink" = "复制链接" "address" = "地址" "network" = "网络" @@ -647,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 刷新时间:{{ .Time }}\r\n\r\n" "yes" = "✅ 是的" "no" = "❌ 没有" - "received_id" = "🔑📥 ID 已更新。" "received_password" = "🔑📥 密码已更新。" "received_email" = "📧📥 邮箱已更新。" @@ -667,7 +662,6 @@ "FailedResetTraffic" = "📧 邮箱: {{ .ClientEmail }}\n🏁 结果: ❌ 失败 \n\n🛠️ 错误: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 所有客户的流量重置已完成。" - [tgbot.buttons] "closeKeyboard" = "❌ 关闭键盘" "cancel" = "❌ 取消" @@ -701,7 +695,6 @@ "limitTraffic" = "🚧 流量限制" "getBanLogs" = "禁止日志" "allClients" = "所有客户" - "addClient" = "添加客户" "submitDisable" = "提交为禁用 ☑️" "submitEnable" = "提交为启用 ✅" @@ -713,7 +706,6 @@ "ResetAllTraffics" = "重置所有流量" "SortedTrafficUsageReport" = "排序的流量使用报告" - [tgbot.answers] "successfulOperation" = "✅ 成功!" "errorOperation" = "❗ 操作错误。" diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml index dc4e5c36..beb0c34d 100644 --- a/web/translation/translate.zh_TW.toml +++ b/web/translation/translate.zh_TW.toml @@ -117,8 +117,6 @@ "operationHours" = "系統正常執行時間" "systemLoad" = "系統負載" "systemLoadDesc" = "過去 1、5 和 15 分鐘的系統平均負載" -"connectionTcpCountDesc" = "系統中所有 TCP 連線數" -"connectionUdpCountDesc" = "系統中所有 UDP 連線數" "connectionCount" = "連線數" "ipAddresses" = "IP地址" "toggleIpVisibility" = "切換IP可見性" @@ -169,16 +167,12 @@ "generalActions" = "通用操作" "autoRefresh" = "自動刷新" "autoRefreshInterval" = "間隔" -"create" = "新增" -"update" = "修改" "modifyInbound" = "修改入站" "deleteInbound" = "刪除入站" "deleteInboundContent" = "確定要刪除入站嗎?" "deleteClient" = "刪除客戶端" "deleteClientContent" = "確定要刪除客戶端嗎?" "resetTrafficContent" = "確定要重置流量嗎?" -"inboundUpdateSuccess" = "入站連接已成功更新。" -"inboundCreateSuccess" = "入站連接已成功建立。" "copyLink" = "複製連結" "address" = "地址" "network" = "網路" @@ -649,7 +643,6 @@ "refreshedOn" = "\r\n📋🔄 重新整理時間:{{ .Time }}\r\n\r\n" "yes" = "✅ 是的" "no" = "❌ 沒有" - "received_id" = "🔑📥 ID 已更新。" "received_password" = "🔑📥 密碼已更新。" "received_email" = "📧📥 電子郵件已更新。" @@ -669,7 +662,6 @@ "FailedResetTraffic" = "📧 電子郵件: {{ .ClientEmail }}\n🏁 結果: ❌ 失敗 \n\n🛠️ 錯誤: [ {{ .ErrorMessage }} ]" "FinishProcess" = "🔚 所有客戶的流量重置已完成。" - [tgbot.buttons] "closeKeyboard" = "❌ 關閉鍵盤" "cancel" = "❌ 取消" @@ -703,7 +695,6 @@ "limitTraffic" = "🚧 流量限制" "getBanLogs" = "禁止日誌" "allClients" = "所有客戶" - "addClient" = "新增客戶" "submitDisable" = "以停用方式送出 ☑️" "submitEnable" = "以啟用方式送出 ✅" @@ -715,7 +706,6 @@ "ResetAllTraffics" = "重設所有流量" "SortedTrafficUsageReport" = "排序過的流量使用報告" - [tgbot.answers] "successfulOperation" = "✅ 成功!" "errorOperation" = "❗ 操作錯誤。"