Files
jiacrontab/jiacrontabd/util.go
jiazhizhong 1279635d7f fix
2022-03-10 17:09:03 +08:00

84 lines
1.6 KiB
Go

package jiacrontabd
import (
"jiacrontab/pkg/util"
"os"
"github.com/iwannay/log"
"container/list"
"net"
"strconv"
"strings"
)
func writeFile(fPath string, content *[]byte) {
f, err := util.TryOpen(fPath, os.O_APPEND|os.O_CREATE|os.O_RDWR)
if err != nil {
log.Errorf("writeLog: %v", err)
return
}
defer f.Close()
f.Write(*content)
}
func GetIntranetIpList() *list.List {
ipList := list.New()
addrs, err := net.InterfaceAddrs()
if err != nil {
return ipList
}
for _, address := range addrs {
// 检查ip地址判断是否回环地址
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
ipList.PushBack(ipnet.IP.String())
}
}
}
return ipList
}
func isIpBelong(ip, cidr string) bool {
ipAddr := strings.Split(ip, `.`)
if len(ipAddr) < 4 {
return false
}
if ip == cidr {
return true
}
cidrArr := strings.Split(cidr, `/`)
if len(cidrArr) < 2 {
return false
}
var tmp = make([]string, 0)
for key, value := range strings.Split(`255.255.255.0`, `.`) {
iint, _ := strconv.Atoi(value)
iint2, _ := strconv.Atoi(ipAddr[key])
tmp = append(tmp, strconv.Itoa(iint&iint2))
}
return strings.Join(tmp, `.`) == cidrArr[0]
}
func checkIpInWhiteList(whiteIpStr string) bool {
myIps := GetIntranetIpList()
whiteIpList := strings.Split(whiteIpStr, `,`)
if len(whiteIpList) == 0 {
return true
}
for item := myIps.Front(); nil != item; item = item.Next() {
for i := range whiteIpList {
isBelong := isIpBelong(item.Value.(string), whiteIpList[i])
if isBelong {
return true
}
}
}
return false
}