diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js index 9b0f8de9..775d56c8 100644 --- a/web/assets/js/model/xray.js +++ b/web/assets/js/model/xray.js @@ -1160,7 +1160,7 @@ class Inbound extends XrayCommonClass { } if (this.XTLS) { - params.set("security", "tls"); + params.set("security", "xtls"); params.set("alpn", this.stream.tls.alpn); if(this.stream.tls.settings[0].allowInsecure){ params.set("allowInsecure", "1"); @@ -1261,7 +1261,7 @@ class Inbound extends XrayCommonClass { } if (this.XTLS) { - params.set("security", "tls"); + params.set("security", "xtls"); params.set("alpn", this.stream.tls.alpn); if(this.stream.tls.settings[0].allowInsecure){ params.set("allowInsecure", "1"); diff --git a/web/html/xui/form/stream/stream_settings.html b/web/html/xui/form/stream/stream_settings.html index 417d1734..3db72fe5 100644 --- a/web/html/xui/form/stream/stream_settings.html +++ b/web/html/xui/form/stream/stream_settings.html @@ -8,7 +8,7 @@ WS HTTP QUIC - GRPC + gRPC diff --git a/web/html/xui/index.html b/web/html/xui/index.html index 3d9b326c..5ced0a26 100644 --- a/web/html/xui/index.html +++ b/web/html/xui/index.html @@ -172,7 +172,7 @@ - x-ui: 3x-ui v{{ .cur_ver }} + 3x-ui: v{{ .cur_ver }} Telegram Log Reports diff --git a/web/job/check_clinet_ip_job.go b/web/job/check_clinet_ip_job.go index bf71116b..ed86b42d 100644 --- a/web/job/check_clinet_ip_job.go +++ b/web/job/check_clinet_ip_job.go @@ -154,14 +154,16 @@ func GetInboundClientIps(clientEmail string) (*model.InboundClientIps, error) { } return InboundClientIps, nil } -func addInboundClientIps(clientEmail string,ips []string) error { +func addInboundClientIps(clientEmail string, ips []string) error { inboundClientIps := &model.InboundClientIps{} - jsonIps, err := json.Marshal(ips) + jsonIps, err := json.Marshal(ips) checkError(err) + // Trim any leading/trailing whitespace from clientEmail + clientEmail = strings.TrimSpace(clientEmail) + inboundClientIps.ClientEmail = clientEmail inboundClientIps.Ips = string(jsonIps) - db := database.GetDB() tx := db.Begin() @@ -247,47 +249,46 @@ func GetInboundByEmail(clientEmail string) (*model.Inbound, error) { return inbounds, nil } -func LimitDevice(){ - - localIp,err := LocalIP() - checkError(err) +func LimitDevice() { + var destIp, destPort, srcIp, srcPort string + + localIp,err := LocalIP() + checkError(err) - c := cmd.NewCmd("bash","-c","ss --tcp | grep -E '" + IPsToRegex(localIp) + "'| awk '{if($1==\"ESTAB\") print $4,$5;}'","| sort | uniq -c | sort -nr | head") + c := cmd.NewCmd("bash","-c","ss --tcp | grep -E '" + IPsToRegex(localIp) + "'| awk '{if($1==\"ESTAB\") print $4,$5;}'","| sort | uniq -c | sort -nr | head") - <-c.Start() - if len(c.Status().Stdout) > 0 { - ipRegx, _ := regexp.Compile(`[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+`) - portRegx, _ := regexp.Compile(`(?:(:))([0-9]..[^.][0-9]+)`) + <-c.Start() + if len(c.Status().Stdout) > 0 { + ipRegx, _ := regexp.Compile(`[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+`) + portRegx, _ := regexp.Compile(`(?:(:))([0-9]..[^.][0-9]+)`) - for _, row := range c.Status().Stdout { - - data := strings.Split(row," ") - - destIp,destPort,srcIp,srcPort := "","","","" - + for _, row := range c.Status().Stdout { - destIp = string(ipRegx.FindString(data[0])) + data := strings.Split(row," ") - destPort = portRegx.FindString(data[0]) - destPort = strings.Replace(destPort,":","",-1) - - - srcIp = string(ipRegx.FindString(data[1])) + if len(data) < 2 { + continue // Skip this row if it doesn't have at least two elements + } - srcPort = portRegx.FindString(data[1]) - srcPort = strings.Replace(srcPort,":","",-1) + destIp = string(ipRegx.FindString(data[0])) + destPort = portRegx.FindString(data[0]) + destPort = strings.Replace(destPort,":","",-1) - if(contains(disAllowedIps,srcIp)){ - dropCmd := cmd.NewCmd("bash","-c","ss -K dport = " + srcPort) - dropCmd.Start() + srcIp = string(ipRegx.FindString(data[1])) + srcPort = portRegx.FindString(data[1]) + srcPort = strings.Replace(srcPort,":","",-1) - logger.Debug("request droped : ",srcIp,srcPort,"to",destIp,destPort) - } - } - } + if contains(disAllowedIps,srcIp){ + dropCmd := cmd.NewCmd("bash","-c","ss -K dport = " + srcPort) + dropCmd.Start() + logger.Debug("request droped : ",srcIp,srcPort,"to",destIp,destPort) + } + } + } } + func LocalIP() ([]string, error) { // get machine ips diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index 76dc50f1..836e4692 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -170,7 +170,7 @@ "restartPanelDesc" = "Are you sure you want to restart the panel? Click OK to restart after 3 seconds. If you cannot access the panel after restarting, please go to the server to view the panel log information" "panelConfig" = "Panel Configuration" "userSetting" = "User Setting" -"xrayConfiguration" = "xray Configuration" +"xrayConfiguration" = "Xray Configuration" "TGReminder" = "TG Reminder Related Settings" "otherSetting" = "Other Setting" "panelListeningIP" = "Panel listening IP" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index cbc25c2f..0fcab166 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -74,8 +74,8 @@ "xraySwitch" = "تغییر ورژن" "xraySwitchClick" = "ورژن مورد نظر را انتخاب کنید" "xraySwitchClickDesk" = "لطفا با دقت انتخاب کنید ، در صورت انتخاب اشتباه امکان قطعی سیستم وجود دارد ." -"operationHours" = "ساعت فعال" -"operationHoursDesc" = "ساعت فعال بعد از شروع سیستم" +"operationHours" = "مدت فعالیت" +"operationHoursDesc" = "مدت فعالیت سیستم بعد از روشن شدن" "systemLoad" = "بار روی سیستم" "connectionCount" = "تعداد کانکشن ها" "connectionCountDesc" = "تعداد کانکشن ها برای کل شبکه" @@ -83,7 +83,7 @@ "downSpeed" = "سرعت دانلود در حال حاضر سیستم" "totalSent" = "جمع کل ترافیک آپلود مصرفی" "totalReceive" = "جمع کل ترافیک دانلود مصرفی" -"xraySwitchVersionDialog" = "تغییر ورژن Xray" +"xraySwitchVersionDialog" = "تغییر ورژن" "xraySwitchVersionDialogDesc" = "آیا از تغییر ورژن مطمئن هستین" "dontRefreshh" = "در حال نصب ، لطفا رفرش نکنید " @@ -128,7 +128,7 @@ "keyContent" = "محتوای Private.key" "clickOnQRcode" = "برای کپی بر روی کد تصویری کلیک کنید" "client" = "کاربر" -"export" = "استخراج لینک‌ها" +"export" = "استخراج لینکها" [pages.client] "add" = "کاربر جدید"