增加:1、增加了ini文件读取,用来配置系统信息
This commit is contained in:
parent
1e3ecd1786
commit
66b04cf546
103
config/conf.go
103
config/conf.go
|
@ -1,104 +1,33 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"gopkg.in/ini.v1"
|
||||||
"fmt"
|
|
||||||
"goAdapter/setting"
|
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
)
|
)
|
||||||
|
|
||||||
var exeCurDir string
|
var (
|
||||||
|
AppMode string
|
||||||
|
HttpPort string
|
||||||
|
)
|
||||||
|
|
||||||
|
func LoadServer(file *ini.File){
|
||||||
|
AppMode = file.Section("server").Key("AppMode").MustString("debug")
|
||||||
|
HttpPort = file.Section("server").Key("HttpPort").MustString(":8080")
|
||||||
|
}
|
||||||
|
|
||||||
/**************获取配置信息************************/
|
/**************获取配置信息************************/
|
||||||
func GetConf() {
|
func GetConf() {
|
||||||
exeCurDir, _ = filepath.Abs(filepath.Dir(os.Args[0]))
|
exeCurDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||||
log.Println(exeCurDir)
|
log.Println(exeCurDir)
|
||||||
|
|
||||||
if NetworkParaRead() == true {
|
path := exeCurDir + "/config/config.ini"
|
||||||
for _, v := range setting.NetworkParamList.NetworkParam {
|
iniFile, err := ini.Load(path)
|
||||||
log.Printf("networkParam %s,%+v\n", v.Name, v)
|
if err != nil{
|
||||||
}
|
log.Println("Load config.ini err,",err)
|
||||||
}
|
}
|
||||||
|
LoadServer(iniFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FileExist(path string) bool {
|
|
||||||
_, err := os.Lstat(path)
|
|
||||||
return !os.IsNotExist(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func NetworkParaRead() bool {
|
|
||||||
|
|
||||||
fileDir := exeCurDir + "/selfpara/networkpara.json"
|
|
||||||
|
|
||||||
if FileExist(fileDir) == true {
|
|
||||||
fp, err := os.OpenFile(fileDir, os.O_RDONLY, 0777)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("open networkpara.json err", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
defer fp.Close()
|
|
||||||
|
|
||||||
data := make([]byte, 500)
|
|
||||||
dataCnt, err := fp.Read(data)
|
|
||||||
|
|
||||||
//fmt.Println(string(data[:dataCnt]))
|
|
||||||
|
|
||||||
err = json.Unmarshal(data[:dataCnt], &setting.NetworkParamList)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("networkpara unmarshal err", err)
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
fmt.Println("networkpara.json is not exist")
|
|
||||||
|
|
||||||
os.MkdirAll(exeCurDir+"/selfpara", os.ModePerm)
|
|
||||||
fp, err := os.Create(fileDir)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("create networkpara.json err", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
defer fp.Close()
|
|
||||||
|
|
||||||
setting.NetworkParamList.NetworkParam = append(setting.NetworkParamList.NetworkParam, setting.NetworkParamTemplate{
|
|
||||||
ID: "1",
|
|
||||||
Name: "eth0",
|
|
||||||
DHCP: "1",
|
|
||||||
IP: "192.168.4.156",
|
|
||||||
Netmask: "255.255.255.0",
|
|
||||||
Broadcast: "192.168.4.255"})
|
|
||||||
setting.NetworkParamList.NetworkParam = append(setting.NetworkParamList.NetworkParam, setting.NetworkParamTemplate{
|
|
||||||
ID: "2",
|
|
||||||
Name: "eth1",
|
|
||||||
DHCP: "1",
|
|
||||||
IP: "192.168.4.156",
|
|
||||||
Netmask: "255.255.255.0",
|
|
||||||
Broadcast: "192.168.4.255"})
|
|
||||||
NetworkParaWrite()
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func NetworkParaWrite() {
|
|
||||||
|
|
||||||
fileDir := exeCurDir + "/selfpara/networkpara.json"
|
|
||||||
|
|
||||||
fp, err := os.OpenFile(fileDir, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("open networkpara.json err", err)
|
|
||||||
}
|
|
||||||
defer fp.Close()
|
|
||||||
|
|
||||||
sJson, _ := json.Marshal(setting.NetworkParamList)
|
|
||||||
fmt.Println(string(sJson))
|
|
||||||
|
|
||||||
_, err = fp.Write(sJson)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("write networkpara.json err", err)
|
|
||||||
}
|
|
||||||
fp.Sync()
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
[server]
|
||||||
|
# debug开发模式 release生产模式
|
||||||
|
AppMode = debug
|
||||||
|
HttpPort = :8080
|
|
@ -62,7 +62,6 @@ func ReadDeviceNodeTypeMapFromJson() bool {
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
exeCurDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
|
exeCurDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||||
//fileDir := exeCurDir + "/selfpara/deviceNodeType.json"
|
|
||||||
|
|
||||||
//遍历json和so文件
|
//遍历json和so文件
|
||||||
pluginPath := exeCurDir + "/plugin"
|
pluginPath := exeCurDir + "/plugin"
|
||||||
|
@ -113,50 +112,6 @@ func ReadDeviceNodeTypeMapFromJson() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
||||||
//if fileExist(fileDir) == true {
|
|
||||||
// fp, err := os.OpenFile(fileDir, os.O_RDONLY, 0777)
|
|
||||||
// if err != nil {
|
|
||||||
// log.Println("open DeviceNodeType.json err", err)
|
|
||||||
// return false
|
|
||||||
// }
|
|
||||||
// defer fp.Close()
|
|
||||||
//
|
|
||||||
// data := make([]byte, 20480)
|
|
||||||
// dataCnt, err := fp.Read(data)
|
|
||||||
//
|
|
||||||
// DeviceNodeTypeMap.DeviceNodeType = make([]DeviceNodeTypeTemplate, 0)
|
|
||||||
//
|
|
||||||
// err = json.Unmarshal(data[:dataCnt], &DeviceNodeTypeMap)
|
|
||||||
// if err != nil {
|
|
||||||
// log.Println("DeviceNodeType unmarshal err", err)
|
|
||||||
//
|
|
||||||
// return false
|
|
||||||
// }
|
|
||||||
// //创建设备模版
|
|
||||||
// DeviceTypePluginMap = make(map[int]*plugin.Plugin)
|
|
||||||
// //log.Printf("plugin %+v\n",DeviceNodeTypeMap)
|
|
||||||
// for k,v := range DeviceNodeTypeMap.DeviceNodeType{
|
|
||||||
//
|
|
||||||
// str := "plugin/" + v.TemplateType + ".so"
|
|
||||||
// log.Printf("pluginStr %s\n",str)
|
|
||||||
// log.Printf("plugin %+v\n",DeviceNodeTypeMap)
|
|
||||||
// template,pluginerr := plugin.Open(str)
|
|
||||||
// if pluginerr!=nil{
|
|
||||||
// log.Printf("openPlug %s err\n",pluginerr)
|
|
||||||
// }
|
|
||||||
// DeviceTypePluginMap[k] = template
|
|
||||||
// }
|
|
||||||
// //log.Printf("plugin %+v\n",DeviceTypePluginMap)
|
|
||||||
//
|
|
||||||
// return true
|
|
||||||
//} else {
|
|
||||||
// log.Println("DeviceNodeType.json is not exist")
|
|
||||||
// //创建设备模版
|
|
||||||
// DeviceTypePluginMap = make(map[int]*plugin.Plugin)
|
|
||||||
//
|
|
||||||
// return false
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func updataDeviceType(path string,fileName []string) ([]string,error){
|
func updataDeviceType(path string,fileName []string) ([]string,error){
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -16,4 +16,5 @@ require (
|
||||||
github.com/thinkgos/gomodbus/v2 v2.1.7 // indirect
|
github.com/thinkgos/gomodbus/v2 v2.1.7 // indirect
|
||||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
|
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
|
||||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
|
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
|
||||||
|
gopkg.in/ini.v1 v1.57.0
|
||||||
)
|
)
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -79,6 +79,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
|
||||||
|
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
|
|
@ -52,9 +52,7 @@ func apiSetNetwork(context *gin.Context){
|
||||||
setting.NetworkParamList.NetworkParam[1] = *rNetworkParam
|
setting.NetworkParamList.NetworkParam[1] = *rNetworkParam
|
||||||
setting.SetNetworkParam("2",*rNetworkParam)
|
setting.SetNetworkParam("2",*rNetworkParam)
|
||||||
}
|
}
|
||||||
|
setting.NetworkParaWrite()
|
||||||
//main.networkParaWrite(setting.NetworkParamList)
|
|
||||||
|
|
||||||
|
|
||||||
aParam := struct{
|
aParam := struct{
|
||||||
Code string `json:"Code"`
|
Code string `json:"Code"`
|
||||||
|
|
4
main.go
4
main.go
|
@ -33,6 +33,7 @@ func main() {
|
||||||
config.GetConf()
|
config.GetConf()
|
||||||
|
|
||||||
/**************网口初始化***********************/
|
/**************网口初始化***********************/
|
||||||
|
setting.NetworkParaRead()
|
||||||
for _, v := range setting.NetworkParamList.NetworkParam {
|
for _, v := range setting.NetworkParamList.NetworkParam {
|
||||||
log.Println("set network ", v.Name)
|
log.Println("set network ", v.Name)
|
||||||
setting.SetNetworkParam(v.ID, v)
|
setting.SetNetworkParam(v.ID, v)
|
||||||
|
@ -77,9 +78,8 @@ func main() {
|
||||||
|
|
||||||
/**************httpserver初始化****************/
|
/**************httpserver初始化****************/
|
||||||
// 默认启动方式,包含 Logger、Recovery 中间件
|
// 默认启动方式,包含 Logger、Recovery 中间件
|
||||||
|
|
||||||
serverWeb := &http.Server{
|
serverWeb := &http.Server{
|
||||||
Addr: ":8080",
|
Addr: config.HttpPort,
|
||||||
Handler: httpServer.RouterWeb(),
|
Handler: httpServer.RouterWeb(),
|
||||||
ReadTimeout: 5 * time.Second,
|
ReadTimeout: 5 * time.Second,
|
||||||
WriteTimeout: 10 * time.Second,
|
WriteTimeout: 10 * time.Second,
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"templateName":"风机盘管控制器","templateType":"wdt200","templateMessage":""}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
{"templateName":"风机盘管控制器","templateType":"wdt300","templateMessage":""}
|
Binary file not shown.
|
@ -1 +1 @@
|
||||||
{"NetworkParam":[{"ID":"1","Name":"en0","DHCP":"0","IP":"192.168.4.156","Netmask":"255.255.255.0","Broadcast":"192.168.4.255"}]}
|
{"NetworkParam":[{"ID":"1","Name":"eth0","DHCP":"1","IP":"","Netmask":"","Broadcast":"","MAC":""}]}
|
|
@ -3,11 +3,14 @@ package setting
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/safchain/ethtool"
|
"github.com/safchain/ethtool"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
@ -95,11 +98,12 @@ func GetNetworkParam() NetworkParamListTemplate{
|
||||||
|
|
||||||
GetLinkState(v.ID)
|
GetLinkState(v.ID)
|
||||||
ethInfo,err := GetNetInformation(v.Name)
|
ethInfo,err := GetNetInformation(v.Name)
|
||||||
|
log.Printf("ethInfo %+v\n",ethInfo)
|
||||||
if err == nil{
|
if err == nil{
|
||||||
NetworkParamList.NetworkParam[k].IP = ethInfo.IP
|
NetworkParamList.NetworkParam[k].IP = ethInfo.IP
|
||||||
NetworkParamList.NetworkParam[k].Netmask = ethInfo.Mask
|
NetworkParamList.NetworkParam[k].Netmask = ethInfo.Mask
|
||||||
NetworkParamList.NetworkParam[k].Broadcast = ethInfo.GatewayIP
|
NetworkParamList.NetworkParam[k].Broadcast = ethInfo.GatewayIP
|
||||||
NetworkParamList.NetworkParam[k].MAC = ethInfo.Mac
|
NetworkParamList.NetworkParam[k].MAC = strings.ToUpper(ethInfo.Mac)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,4 +230,88 @@ func GetNetInformation(netName string) (NetInformation, error) {
|
||||||
}
|
}
|
||||||
info.GatewayIP = strings.Trim(string(out), "\n")
|
info.GatewayIP = strings.Trim(string(out), "\n")
|
||||||
return info, nil
|
return info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fileExist(path string) bool {
|
||||||
|
_, err := os.Lstat(path)
|
||||||
|
return !os.IsNotExist(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NetworkParaRead() bool {
|
||||||
|
|
||||||
|
exeCurDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||||
|
|
||||||
|
fileDir := exeCurDir + "/selfpara/networkpara.json"
|
||||||
|
|
||||||
|
if fileExist(fileDir) == true {
|
||||||
|
fp, err := os.OpenFile(fileDir, os.O_RDONLY, 0777)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("open networkpara.json err", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer fp.Close()
|
||||||
|
|
||||||
|
data := make([]byte, 500)
|
||||||
|
dataCnt, err := fp.Read(data)
|
||||||
|
|
||||||
|
//fmt.Println(string(data[:dataCnt]))
|
||||||
|
|
||||||
|
err = json.Unmarshal(data[:dataCnt], &NetworkParamList)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("networkpara unmarshal err", err)
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
fmt.Println("networkpara.json is not exist")
|
||||||
|
|
||||||
|
os.MkdirAll(exeCurDir+"/selfpara", os.ModePerm)
|
||||||
|
fp, err := os.Create(fileDir)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("create networkpara.json err", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer fp.Close()
|
||||||
|
|
||||||
|
NetworkParamList.NetworkParam = append(NetworkParamList.NetworkParam, NetworkParamTemplate{
|
||||||
|
ID: "1",
|
||||||
|
Name: "eth0",
|
||||||
|
DHCP: "1",
|
||||||
|
IP: "192.168.4.156",
|
||||||
|
Netmask: "255.255.255.0",
|
||||||
|
Broadcast: "192.168.4.255"})
|
||||||
|
NetworkParamList.NetworkParam = append(NetworkParamList.NetworkParam, NetworkParamTemplate{
|
||||||
|
ID: "2",
|
||||||
|
Name: "eth1",
|
||||||
|
DHCP: "1",
|
||||||
|
IP: "192.168.4.156",
|
||||||
|
Netmask: "255.255.255.0",
|
||||||
|
Broadcast: "192.168.4.255"})
|
||||||
|
NetworkParaWrite()
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NetworkParaWrite() {
|
||||||
|
|
||||||
|
exeCurDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||||
|
|
||||||
|
fileDir := exeCurDir + "/selfpara/networkpara.json"
|
||||||
|
|
||||||
|
fp, err := os.OpenFile(fileDir, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("open networkpara.json err", err)
|
||||||
|
}
|
||||||
|
defer fp.Close()
|
||||||
|
|
||||||
|
sJson, _ := json.Marshal(NetworkParamList)
|
||||||
|
fmt.Println(string(sJson))
|
||||||
|
|
||||||
|
_, err = fp.Write(sJson)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("write networkpara.json err", err)
|
||||||
|
}
|
||||||
|
fp.Sync()
|
||||||
}
|
}
|
Loading…
Reference in New Issue