增加:1、增加了ini文件读取,用来配置系统信息

This commit is contained in:
pengwang 2020-08-01 17:22:06 +08:00
parent 1e3ecd1786
commit 66b04cf546
15 changed files with 119 additions and 139 deletions

View File

@ -1,104 +1,33 @@
package config
import (
"encoding/json"
"fmt"
"goAdapter/setting"
"gopkg.in/ini.v1"
"log"
"os"
"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() {
exeCurDir, _ = filepath.Abs(filepath.Dir(os.Args[0]))
exeCurDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
log.Println(exeCurDir)
if NetworkParaRead() == true {
for _, v := range setting.NetworkParamList.NetworkParam {
log.Printf("networkParam %s,%+v\n", v.Name, v)
}
path := exeCurDir + "/config/config.ini"
iniFile, err := ini.Load(path)
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()
}

5
config/config.ini Normal file
View File

@ -0,0 +1,5 @@
[server]
# debug开发模式 release生产模式
AppMode = debug
HttpPort = :8080

View File

@ -62,7 +62,6 @@ func ReadDeviceNodeTypeMapFromJson() bool {
}{}
exeCurDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
//fileDir := exeCurDir + "/selfpara/deviceNodeType.json"
//遍历json和so文件
pluginPath := exeCurDir + "/plugin"
@ -113,50 +112,6 @@ func ReadDeviceNodeTypeMapFromJson() bool {
}
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){

1
go.mod
View File

@ -16,4 +16,5 @@ require (
github.com/thinkgos/gomodbus/v2 v2.1.7 // indirect
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
gopkg.in/ini.v1 v1.57.0
)

2
go.sum
View File

@ -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=
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/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.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

BIN
goAdapter

Binary file not shown.

View File

@ -52,9 +52,7 @@ func apiSetNetwork(context *gin.Context){
setting.NetworkParamList.NetworkParam[1] = *rNetworkParam
setting.SetNetworkParam("2",*rNetworkParam)
}
//main.networkParaWrite(setting.NetworkParamList)
setting.NetworkParaWrite()
aParam := struct{
Code string `json:"Code"`

View File

@ -33,6 +33,7 @@ func main() {
config.GetConf()
/**************网口初始化***********************/
setting.NetworkParaRead()
for _, v := range setting.NetworkParamList.NetworkParam {
log.Println("set network ", v.Name)
setting.SetNetworkParam(v.ID, v)
@ -77,9 +78,8 @@ func main() {
/**************httpserver初始化****************/
// 默认启动方式,包含 Logger、Recovery 中间件
serverWeb := &http.Server{
Addr: ":8080",
Addr: config.HttpPort,
Handler: httpServer.RouterWeb(),
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,

View File

@ -0,0 +1 @@
{"templateName":"风机盘管控制器","templateType":"wdt200","templateMessage":""}

BIN
plugin/wdt200/wdt200.so Normal file

Binary file not shown.

BIN
plugin/wdt300/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
{"templateName":"风机盘管控制器","templateType":"wdt300","templateMessage":""}

BIN
plugin/wdt300/wdt300.so Normal file

Binary file not shown.

View File

@ -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":""}]}

View File

@ -3,11 +3,14 @@ package setting
import (
"bytes"
"encoding/hex"
"encoding/json"
"fmt"
"github.com/safchain/ethtool"
"log"
"net"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
)
@ -95,11 +98,12 @@ func GetNetworkParam() NetworkParamListTemplate{
GetLinkState(v.ID)
ethInfo,err := GetNetInformation(v.Name)
log.Printf("ethInfo %+v\n",ethInfo)
if err == nil{
NetworkParamList.NetworkParam[k].IP = ethInfo.IP
NetworkParamList.NetworkParam[k].Netmask = ethInfo.Mask
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")
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()
}