From 2b2193e255e55fe55dedf7dce0e6bdc22f4860ee Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期六, 19 八月 2023 19:39:11 +0800
Subject: [PATCH] 修改网络设调用禁用或停用脚本
---
api/v1/plc.go | 14 +--
/dev/null | 87 ---------------------
utils/cmd.go | 33 ++++++++
conf/config.go | 23 +++--
conf/apsClient.json | 5 +
api/v1/config.go | 21 +++++
6 files changed, 76 insertions(+), 107 deletions(-)
diff --git a/api/v1/config.go b/api/v1/config.go
index 43065ad..96a1c3e 100644
--- a/api/v1/config.go
+++ b/api/v1/config.go
@@ -1,6 +1,7 @@
package v1
import (
+ "apsClient/conf"
"apsClient/model"
"apsClient/model/request"
_ "apsClient/model/response"
@@ -8,6 +9,8 @@
"apsClient/pkg/ecode"
"apsClient/pkg/logx"
"apsClient/service"
+ "apsClient/utils"
+ "fmt"
"github.com/gin-gonic/gin"
)
@@ -56,13 +59,29 @@
ctx.FailWithMsg(ecode.UnknownErr, "鑾峰彇缃戠粶閰嶇疆澶辫触")
return
}
-
err = service.NewConfigService().SetNetConfig(params.Id, ¶ms)
if err != nil {
logx.Errorf("SetNetConfig error: %v", err.Error())
ctx.FailWithMsg(ecode.DBErr, "璁剧疆澶辫触")
return
}
+ if conf.Conf.System.NetSetShellPath == "" || conf.Conf.System.NetUpShellName == "" || conf.Conf.System.NetDownShellName == "" {
+ ctx.FailWithMsg(ecode.DBErr, "璇峰厛閰嶇疆缃戠粶璁剧疆璺緞鍜岃剼鏈悕")
+ return
+ }
+ var shName string
+ if params.Status == model.NetConfigStatusEnabled {
+ shName = conf.Conf.System.NetUpShellName
+ } else {
+ shName = conf.Conf.System.NetDownShellName
+ }
+ sh := fmt.Sprintf("%s %v %v %v", shName, params.IP, params.MASK, params.Gateway)
+ err = utils.Cmd(conf.Conf.System.NetSetShellPath, sh)
+ if err != nil {
+ logx.Errorf("network update failed: %v", err.Error())
+ ctx.FailWithMsg(ecode.UnknownErr, "缃戠粶璁剧疆澶辫触")
+ return
+ }
ctx.Ok()
}
diff --git a/api/v1/plc.go b/api/v1/plc.go
index 2a93a15..0d91e0e 100644
--- a/api/v1/plc.go
+++ b/api/v1/plc.go
@@ -11,7 +11,6 @@
"apsClient/service"
"encoding/json"
"github.com/gin-gonic/gin"
- "github.com/spf13/cast"
)
type PlcApi struct{}
@@ -48,8 +47,10 @@
ipAddr = plcConfig.Address
}
+ resp := new(response.ProductProgress)
if startAddress == 0 || valueType == "" {
- ctx.FailWithMsg(ecode.UnknownErr, "璇峰厛閰嶇疆PLC")
+ ctx.OkWithDetailed(resp)
+ logx.Warnf("璇峰厛閰嶇疆PLC")
return
}
conn, err := plc.NewModbusConnection(ipAddr)
@@ -58,26 +59,23 @@
}
if err != nil {
- ctx.FailWithMsg(ecode.UnknownErr, "杩炴帴plc澶辫触")
+ ctx.OkWithDetailed(resp)
logx.Errorf("GetProductProgress 杩炴帴plc澶辫触: %v", err.Error())
return
}
rawData, err := plc.ReadHoldingRegister(conn, startAddress, dataLength)
if err != nil {
- ctx.FailWithMsg(ecode.UnknownErr, "鑾峰彇plc鏁版嵁澶辫触")
+ ctx.OkWithDetailed(resp)
logx.Errorf("GetProductProgress 鑾峰彇plc鏁版嵁澶辫触: %v", err.Error())
return
}
var finishNumber interface{}
err = json.Unmarshal(rawData, &finishNumber)
if err != nil {
- ctx.FailWithMsg(ecode.UnknownErr, "鑾峰彇鐢熶骇杩涘害鏁版嵁瑙f瀽澶辫触")
+ ctx.OkWithDetailed(resp)
logx.Errorf("GetProductProgress 鑾峰彇鐢熶骇杩涘害鏁版嵁瑙f瀽澶辫触: %v, data: %v, valueType:%v", err.Error(), rawData, valueType)
return
- }
- resp := response.ProductProgress{
- FinishNumber: cast.ToInt(finishNumber),
}
ctx.OkWithDetailed(resp)
}
diff --git a/conf/apsClient.json b/conf/apsClient.json
index e4fb3f9..ef329b9 100644
--- a/conf/apsClient.json
+++ b/conf/apsClient.json
@@ -8,7 +8,10 @@
"LimitTimeIP": 3600,
"RouterPrefix": "api",
"SudoPassword": "basic2021",
- "deviceId": "DeviceID 1"
+ "deviceId": "DeviceID 1",
+ "netSetShellPath": "/data/network",
+ "netUpShellName": "up.sh",
+ "netDownShellName": "down.sh"
},
"log": {
"path": "./logs/apsClient.log",
diff --git a/conf/config.go b/conf/config.go
index c28317b..cdd7133 100644
--- a/conf/config.go
+++ b/conf/config.go
@@ -24,16 +24,19 @@
type (
System struct {
- Env string // 鐜鍊� develop test public
- Port int // 绔彛
- DbType string // 鏁版嵁搴撶被鍨�
- UseMultipoint bool // 澶氱偣鐧诲綍鎷︽埅
- UseRedis bool // 浣跨敤redis
- LimitCountIP int
- LimitTimeIP int
- RouterPrefix string // 璺敱鍓嶇紑
- SudoPassword string // sudo瀵嗙爜
- DeviceId string //璁惧id
+ Env string // 鐜鍊� develop test public
+ Port int // 绔彛
+ DbType string // 鏁版嵁搴撶被鍨�
+ UseMultipoint bool // 澶氱偣鐧诲綍鎷︽埅
+ UseRedis bool // 浣跨敤redis
+ LimitCountIP int
+ LimitTimeIP int
+ RouterPrefix string // 璺敱鍓嶇紑
+ SudoPassword string // sudo瀵嗙爜
+ DeviceId string //璁惧id
+ NetSetShellPath string //缃戠粶璁剧疆鑴氭湰璺緞
+ NetUpShellName string //缃戠粶鍋滅敤鑴氭湰
+ NetDownShellName string //缃戠粶寮�鍚剼鏈�
}
Etcd struct {
diff --git a/utils/clamis.go b/utils/clamis.go
deleted file mode 100644
index 93def04..0000000
--- a/utils/clamis.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package utils
-
-import (
- "apsClient/model/request"
- "apsClient/pkg/logx"
- "github.com/gin-gonic/gin"
- "strings"
-)
-
-func GetClaims(c *gin.Context) (*request.CustomClaims, error) {
- token := c.Request.Header.Get("Authorization")
- logx.Infof("GetClaims token:%v", token)
- slices := strings.Split(token, " ")
- if len(slices) == 2 {
- token = slices[1]
- }
- j := NewJWT()
- claims, err := j.ParseToken(token)
- if err != nil {
- logx.Error("浠嶨in鐨凜ontext涓幏鍙栦粠jwt瑙f瀽淇℃伅澶辫触, 璇锋鏌ヨ姹傚ご鏄惁瀛樺湪x-token涓攃laims鏄惁涓鸿瀹氱粨鏋�")
- }
- return claims, err
-}
-
-// GetUserID 浠嶨in鐨凜ontext涓幏鍙栦粠jwt瑙f瀽鍑烘潵鐨勭敤鎴稩D
-func GetUserID(c *gin.Context) string {
- if claims, exists := c.Get("claims"); !exists {
- if cl, err := GetClaims(c); err != nil {
- return ""
- } else {
- return cl.UserId
- }
- } else {
- waitUse := claims.(*request.CustomClaims)
- return waitUse.UserId
- }
-}
-
-// GetUserInfo 浠嶨in鐨凜ontext涓幏鍙栦粠jwt瑙f瀽鍑烘潵鐨勭敤鎴蜂俊鎭�
-func GetUserInfo(c *gin.Context) *request.CustomClaims {
- if claims, exists := c.Get("claims"); !exists {
- if cl, err := GetClaims(c); err != nil {
- return nil
- } else {
- return cl
- }
- } else {
- waitUse := claims.(*request.CustomClaims)
- return waitUse
- }
-}
diff --git a/utils/cmd.go b/utils/cmd.go
new file mode 100644
index 0000000..7a526af
--- /dev/null
+++ b/utils/cmd.go
@@ -0,0 +1,33 @@
+package utils
+
+import (
+ "fmt"
+ "os"
+ "os/exec"
+)
+
+func Cmd(directory, script string) error {
+ // 鍒涘缓涓�涓墽琛屽懡浠ょ殑瀵硅薄
+ cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf("cd %s && %s", directory, script))
+
+ // 璁剧疆鍛戒护鐨勫伐浣滅洰褰�
+ cmd.Dir = directory
+
+ // 灏嗗懡浠ょ殑杈撳嚭杩炴帴鍒板綋鍓嶈繘绋嬬殑杈撳嚭
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+
+ // 鎵ц鍛戒护
+ output, err := cmd.Output()
+ if err != nil {
+ return err
+ }
+ fmt.Println(string(output))
+ // 妫�鏌ュ懡浠ゆ墽琛岀粨鏋�
+ if cmd.ProcessState.Success() {
+ fmt.Println("鑴氭湰鎵ц鎴愬姛")
+ } else {
+ fmt.Println("鑴氭湰鎵ц澶辫触")
+ }
+ return nil
+}
diff --git a/utils/jwt.go b/utils/jwt.go
deleted file mode 100644
index 6c29e70..0000000
--- a/utils/jwt.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package utils
-
-import (
- "apsClient/conf"
- "apsClient/constvar"
- "apsClient/model/request"
- "errors"
- "time"
-
- jwt "github.com/golang-jwt/jwt/v4"
-)
-
-type JWT struct {
- SigningKey []byte
-}
-
-var (
- TokenExpired = errors.New("Token is expired")
- TokenNotValidYet = errors.New("Token not active yet")
- TokenMalformed = errors.New("That's not even a token")
- TokenInvalid = errors.New("Couldn't handle this token:")
-)
-
-func NewJWT() *JWT {
- return &JWT{
- []byte(conf.Conf.JWT.SigningKey),
- }
-}
-
-func (j *JWT) CreateClaims(baseClaims request.BaseClaims) request.CustomClaims {
- bf, _ := ParseDuration(conf.Conf.JWT.BufferTime)
- ep, _ := ParseDuration(conf.Conf.JWT.ExpiresTime)
- claims := request.CustomClaims{
- BaseClaims: baseClaims,
- BufferTime: int64(bf / time.Second), // 缂撳啿鏃堕棿1澶� 缂撳啿鏃堕棿鍐呬細鑾峰緱鏂扮殑token鍒锋柊浠ょ墝 姝ゆ椂涓�涓敤鎴蜂細瀛樺湪涓や釜鏈夋晥浠ょ墝 浣嗘槸鍓嶇鍙暀涓�涓� 鍙︿竴涓細涓㈠け
- StandardClaims: jwt.StandardClaims{
- NotBefore: time.Now().Unix() - 1000, // 绛惧悕鐢熸晥鏃堕棿
- ExpiresAt: time.Now().Add(ep).Unix(), // 杩囨湡鏃堕棿 7澶� 閰嶇疆鏂囦欢
- Issuer: conf.Conf.JWT.Issuer, // 绛惧悕鐨勫彂琛岃��
- },
- }
- return claims
-}
-
-// CreateToken 鍒涘缓涓�涓猼oken
-func (j *JWT) CreateToken(claims request.CustomClaims) (string, error) {
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
- return token.SignedString(j.SigningKey)
-}
-
-// CreateTokenByOldToken 鏃oken 鎹㈡柊token 浣跨敤褰掑苟鍥炴簮閬垮厤骞跺彂闂
-func (j *JWT) CreateTokenByOldToken(oldToken string, claims request.CustomClaims) (string, error) {
- v, err, _ := constvar.SingleGroup.Do("JWT:"+oldToken, func() (interface{}, error) {
- return j.CreateToken(claims)
- })
- return v.(string), err
-}
-
-// ParseToken 瑙f瀽token
-func (j *JWT) ParseToken(tokenString string) (*request.CustomClaims, error) {
- token, err := jwt.ParseWithClaims(tokenString, &request.CustomClaims{}, func(token *jwt.Token) (i interface{}, e error) {
- return j.SigningKey, nil
- })
- if err != nil {
- if ve, ok := err.(*jwt.ValidationError); ok {
- if ve.Errors&jwt.ValidationErrorMalformed != 0 {
- return nil, TokenMalformed
- } else if ve.Errors&jwt.ValidationErrorExpired != 0 {
- // Token is expired
- return nil, TokenExpired
- } else if ve.Errors&jwt.ValidationErrorNotValidYet != 0 {
- return nil, TokenNotValidYet
- } else {
- return nil, TokenInvalid
- }
- }
- }
- if token != nil {
- if claims, ok := token.Claims.(*request.CustomClaims); ok && token.Valid {
- return claims, nil
- }
- return nil, TokenInvalid
-
- } else {
- return nil, TokenInvalid
- }
-}
--
Gitblit v1.8.0