update and rename client ip job file

This commit is contained in:
Hamidreza Ghavami 2023-04-14 00:07:13 +04:30
parent 4548755375
commit a3b170d6c4

View file

@ -1,26 +1,28 @@
package job
import (
"x-ui/logger"
"x-ui/web/service"
"encoding/json"
"os"
"regexp"
ss "strings"
"x-ui/database"
"x-ui/database/model"
"os"
ss "strings"
"regexp"
"encoding/json"
"x-ui/logger"
"x-ui/web/service"
"x-ui/xray"
// "strconv"
"github.com/go-cmd/cmd"
"net"
"sort"
"strings"
"time"
"net"
"github.com/go-cmd/cmd"
"sort"
)
type CheckClientIpJob struct {
xrayService service.XrayService
inboundService service.InboundService
}
var job *CheckClientIpJob
var disAllowedIps []string
@ -35,14 +37,14 @@ func (j *CheckClientIpJob) Run() {
// disAllowedIps = []string{"192.168.1.183","192.168.1.197"}
blockedIps := []byte(ss.Join(disAllowedIps, ","))
err := os.WriteFile("./bin/blockedIPs", blockedIps, 0755)
err := os.WriteFile(xray.GetBlockedIPsPath(), blockedIps, 0755)
checkError(err)
}
func processLogFile() {
accessLogPath := GetAccessLogPath()
if(accessLogPath == "") {
if accessLogPath == "" {
logger.Warning("xray log not init in config.json")
return
}
@ -62,26 +64,24 @@ func processLogFile() {
emailRegx, _ := regexp.Compile(`email:.+`)
matchesIp := ipRegx.FindString(line)
if(len(matchesIp) > 0) {
if len(matchesIp) > 0 {
ip := string(matchesIp)
if( ip == "127.0.0.1" || ip == "1.1.1.1") {
if ip == "127.0.0.1" || ip == "1.1.1.1" {
continue
}
matchesEmail := emailRegx.FindString(line)
if(matchesEmail == "") {
if matchesEmail == "" {
continue
}
matchesEmail = ss.Split(matchesEmail, "email: ")[1]
if(InboundClientIps[matchesEmail] != nil) {
if(contains(InboundClientIps[matchesEmail],ip)){
if InboundClientIps[matchesEmail] != nil {
if contains(InboundClientIps[matchesEmail], ip) {
continue
}
InboundClientIps[matchesEmail] = append(InboundClientIps[matchesEmail], ip)
} else {
InboundClientIps[matchesEmail] = append(InboundClientIps[matchesEmail], ip)
}
@ -93,7 +93,7 @@ func processLogFile() {
for clientEmail, ips := range InboundClientIps {
inboundClientIps, err := GetInboundClientIps(clientEmail)
sort.Sort(sort.StringSlice(ips))
if(err != nil){
if err != nil {
addInboundClientIps(clientEmail, ips)
} else {
@ -102,7 +102,6 @@ func processLogFile() {
}
// check if inbound connection is more than limited ip and drop connection
LimitDevice := func() { LimitDevice() }
@ -113,15 +112,15 @@ func processLogFile() {
}
func GetAccessLogPath() string {
config, err := os.ReadFile("bin/config.json")
config, err := os.ReadFile(xray.GetConfigPath())
checkError(err)
jsonConfig := map[string]interface{}{}
err = json.Unmarshal([]byte(config), &jsonConfig)
checkError(err)
if(jsonConfig["log"] != nil) {
if jsonConfig["log"] != nil {
jsonLog := jsonConfig["log"].(map[string]interface{})
if(jsonLog["access"] != nil) {
if jsonLog["access"] != nil {
accessLogPath := jsonLog["access"].(string)
@ -208,7 +207,7 @@ func updateInboundClientIps(inboundClientIps *model.InboundClientIps,clientEmail
limitIp := client.LimitIP
if(limitIp < len(ips) && limitIp != 0 && inbound.Enable) {
if limitIp < len(ips) && limitIp != 0 && inbound.Enable {
disAllowedIps = append(disAllowedIps, ips[limitIp:]...)
}
@ -288,7 +287,6 @@ func LimitDevice() {
}
}
func LocalIP() ([]string, error) {
// get machine ips
@ -321,8 +319,7 @@ func LocalIP() ([]string, error) {
return ips, nil
}
func IPsToRegex(ips []string) (string){
func IPsToRegex(ips []string) string {
regx := ""
for _, ip := range ips {