From f56dd439990f94504446c9dc273ef87a8116018e Mon Sep 17 00:00:00 2001 From: MHSanaei <33454419+MHSanaei@users.noreply.github.com> Date: Sat, 25 Mar 2023 19:46:03 +0330 Subject: [PATCH] "index out of range" fixed --- web/job/check_clinet_ip_job.go | 59 +++++++++++++++++----------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/web/job/check_clinet_ip_job.go b/web/job/check_clinet_ip_job.go index bf71116b..9e1959e3 100644 --- a/web/job/check_clinet_ip_job.go +++ b/web/job/check_clinet_ip_job.go @@ -247,47 +247,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