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, &params)
 	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