Golang 绑定mac和ip地址,限制服务器

Python028

Golang 绑定mac和ip地址,限制服务器,第1张

实际业务:go 二进制文件在私有化部署中,需要对客户的服务器mac和ip进行绑定,系统只能运行在绑定的服务器上。把mac和ip地址配置到config中。

运行效果:系统可正常编译,正常访问,在用户Auth接口进行核对。

//检验Mac和内网IP,测试环境不做校验

func (c *CommonBase)CheckMacAndIp()error {

ipCfg :=g.Cfg().GetString("machine.Ipaddr")

macCfg :=g.Cfg().GetString("machine.Macip")

if ipCfg =="127.0.0.1" {

return nil

}

macArray,_ :=gipv4.GetMacArray()

if len(macArray) ==0 {

return gerror.New("mac地址获取失败")

}

if garray.NewStrArrayFrom(macArray).Contains(macCfg) ==false {

return gerror.New("示授权的应用MAC,请联系")

}

ipArray,_ :=gipv4.GetIpArray()

ipIntranetArray,_ :=gipv4.GetIntranetIpArray()

if len(ipArray) ==0 &&len(ipIntranetArray) ==0 {

return gerror.New("ip地址获取失败")

}

if garray.NewStrArrayFrom(ipArray).Merge(ipIntranetArray).Contains(ipCfg) ==false {

return gerror.New("示授权的应用IP,请联系")

}

return nil

}

项目使用GoFrame框架1.6。考虑到客户可能会对内存数据做分析破解,可以把mac和ip地址做AES加密。

我也有这方面的问题,我在mac os下:[mw_shl_code=shell,true]$ echo $GOOSwindows$ echo $GOARCH386$ go build -o hello.exe hello.go$ file hello.exehello.exe: Mach-O 64-bit executable x86_64[/mw_shl_code]

安装go

仓库安装

$ sudo apt-get install golang

源码安装

安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的

$ sudo apt-get install bison gawk gcc libc6-dev make

安装mercurial工具,目的使用hg命令来提取golang的源代码

$ sudo apt-get install mercurial

代取提取,如果网速比较慢的话,此步要多花点时间

$ hg clone -r release https://Go.googlecode.com/hg/ go

编译golang

$ cd go/src

$ ./all.bash

gvm安装

$ sudo apt-get install curl Git mercurial make binutils bison gcc build-essential 

$ bash <<(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

安装完终端会提示(按提示输入)

Cloning from https://github.com/moovweb/gvm.git to /home/c3t/.gvm

Created profile for existing install of Go at "/usr/lib/go"

Installed GVM v1.0.22

Please restart your terminal session or to get started right away run

`source /home/root/.gvm/scripts/gvm`123456123456

$ source /home/root/.gvm/scripts/gvm

gvm安装完成

$ gvm version

列出所有支持的版本

$ gvm listall

下载源码编译安装 go1.4

$ gvm install go1.4

使用go1.4

$ gvm use go1.4

若想安装go1.5.2

$ gvm install go1.5.2

开机默认使用1.5.2

$ gvm use go1.5.2 --default

列出已安装版本

$ gvm list