From afe89beee68f026b532c9d3132f9539f826e198b Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期一, 22 七月 2019 14:21:03 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- extend/util/util.go | 77 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 0 deletions(-) diff --git a/extend/util/util.go b/extend/util/util.go index 77cd755..cc2dd98 100644 --- a/extend/util/util.go +++ b/extend/util/util.go @@ -2,11 +2,16 @@ import ( "basic.com/pubsub/protomsg.git" + "bytes" "encoding/json" + "errors" "github.com/gin-gonic/gin" "github.com/golang/glog" "gocv.io/x/gocv" "image" + "net" + "os/exec" + "strconv" "webserver/extend/code" "crypto/rand" @@ -112,4 +117,76 @@ y1_new = int(i.Height) } return +} + + +// 鑾峰彇鏈満缃戝崱IP +func GetLocalIP(networkName string) (ipv4 string,mask string, err error) { + interfaces, err := net.Interfaces() + if err != nil { + return "","", err + } + + for _, i := range interfaces { + byName, err := net.InterfaceByName(i.Name) + if err != nil { + return "","", err + } + addresses, err := byName.Addrs() + for _, v := range addresses { + if ipnet, ok:=v.(*net.IPNet);ok && !ipnet.IP.IsLoopback(){ + if ipnet.IP.To4() !=nil{ + if byName.Name == networkName{ + maskStr := ipnet.Mask.String() + mask64, _ := strconv.ParseUint(maskStr, 16, 32) + return ipnet.IP.String(),IpIntToString(int(mask64)),nil + } + } + } + } + } + return "","", errors.New("ipv4 not found") +} + +func GetDefaultRoute(networkName string)(route string,err error){ + cmdStr := fmt.Sprintf("route | grep -P \"^default.*%s$\" | awk '{print $2}'",networkName) + cmd := exec.Command("/bin/sh","-c",cmdStr) + b, err := cmd.Output() + if err!=nil{ + return "",err + } + return string(b),nil + +} + +func StringIpToInt(ipstring string) int { + ipSegs := strings.Split(ipstring, ".") + var ipInt int = 0 + var pos uint = 24 + for _, ipSeg := range ipSegs { + tempInt, _ := strconv.Atoi(ipSeg) + tempInt = tempInt << pos + ipInt = ipInt | tempInt + pos -= 8 + } + return ipInt +} + +func IpIntToString(ipInt int) string{ + ipSegs := make([]string, 4) + var len int = len(ipSegs) + buffer := bytes.NewBufferString("") + for i := 0; i < len; i++ { + tempInt := ipInt & 0xFF + ipSegs[len-i-1] = strconv.Itoa(tempInt) + + ipInt = ipInt >> 8 + } + for i := 0; i < len; i++ { + buffer.WriteString(ipSegs[i]) + if i < len-1 { + buffer.WriteString(".") + } + } + return buffer.String() } \ No newline at end of file -- Gitblit v1.8.0