liuxiaolong
2019-07-22 b313b8ee04fef95379ac010a5674b0a5dd6f0258
add gateway
4个文件已修改
85 ■■■■■ 已修改文件
config/dev.yaml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/syssetcont.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/config/config.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/util/util.go 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/dev.yaml
@@ -4,6 +4,7 @@
    jwtExpire: 24  
    url: http://127.0.0.1:8080
    imageUrl: http://192.168.1.203:6080
    networkAdapter: enp59s0f1
weedfs:
    ip: 192.168.1.203
    uploadport: 6333
controllers/syssetcont.go
@@ -4,6 +4,7 @@
    "basic.com/dbapi.git"
    "github.com/gin-gonic/gin"
    "webserver/extend/code"
    "webserver/extend/config"
    "webserver/extend/util"
)
@@ -147,6 +148,11 @@
    }else {
        resData["server_id"] = sysconf.GetServerId()
        resData["server_name"] = sysconf.GetServerName()
        ipv4, mask, _ := util.GetLocalIP(config.Server.NetworkAdapter)
        gateway, _ := util.GetDefaultRoute(config.Server.NetworkAdapter)
        resData["ip"] = ipv4
        resData["subMask"] = mask
        resData["gateway"] = gateway
        // 存在
        util.ResponseFormat(c, code.Success, resData)
    }
extend/config/config.go
@@ -12,6 +12,7 @@
    JwtExpire string `mapstructure: "jwtExpire"`
    Url       string `mapstructure: "url"`
    ImageUrl  string `mapstructure: "imageUrl"`
    NetworkAdapter string `mapstructure: "networkAdapter"`
}
var Server = &server{}
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()
}