Browse Source

修改配置项目

fancl 2 years ago
parent
commit
45faa91325
3 changed files with 71 additions and 4 deletions
  1. 3 3
      gateway/cli/executor.go
  2. 14 1
      gateway/cli/server.go
  3. 54 0
      helper/tokenize/token.go

+ 3 - 3
gateway/cli/executor.go

@@ -220,12 +220,12 @@ func NewExecutor(args ...string) *Executor {
 	if len(args) > 0 {
 		name = args[0]
 	}
-	if len(args) > 2 {
-		description = args[2]
-	}
 	if len(args) > 1 {
 		usage = args[1]
 	}
+	if len(args) > 2 {
+		description = args[2]
+	}
 	return &Executor{
 		name:        name,
 		usage:       usage,

+ 14 - 1
gateway/cli/server.go

@@ -130,6 +130,18 @@ func (svr *Server) process(id int32, conn net.Conn) (err error) {
 	return
 }
 
+func (svr *Server) formatDescription(ss ...string) (usage string, description string) {
+	for _, s := range ss {
+		if strings.HasPrefix(s, ":") {
+			usage += "{" + s[1:] + "} "
+		} else {
+			usage += s + " "
+			description += s + " "
+		}
+	}
+	return
+}
+
 func (svr *Server) Handle(path string, cb HandleFunc, args ...Option) {
 	var tokens []string
 	if strings.HasPrefix(path, "/") {
@@ -173,7 +185,8 @@ func (svr *Server) Handle(path string, cb HandleFunc, args ...Option) {
 			}
 			p = q
 		} else {
-			q = NewExecutor(token, "", strings.Title(strings.Join(tokens, " ")))
+			usage, description := svr.formatDescription(tokens...)
+			q = NewExecutor(token, usage, description)
 			if opts.Usage != "" {
 				q.usage = opts.Usage
 			}

+ 54 - 0
helper/tokenize/token.go

@@ -0,0 +1,54 @@
+package tokenize
+
+import (
+	"encoding/hex"
+	"encoding/json"
+	"git.nspix.com/golang/micro/helper/crypto"
+	"git.nspix.com/golang/micro/helper/utils"
+	"time"
+)
+
+var (
+	defaultName = "@@micro@@"
+)
+
+type (
+	entry struct {
+		Uid       string    `json:"u"`
+		ExpiredAt time.Time `json:"e"`
+	}
+)
+
+//Encode encode token info
+func Encode(name string, uid string, expiredAt time.Time) (token string, err error) {
+	var (
+		buf []byte
+	)
+	if buf, err = json.Marshal(entry{Uid: uid, ExpiredAt: expiredAt}); err != nil {
+		return
+	}
+	if buf, err = crypto.AesEncrypt(buf, utils.MD5([]byte(defaultName+name))); err != nil {
+		return
+	}
+	token = hex.EncodeToString(buf)
+	return
+}
+
+//Decode decode token
+func Decode(name string, token string) (uid string, expiredAt time.Time, err error) {
+	var (
+		buf []byte
+		e   entry
+	)
+	if buf, err = hex.DecodeString(token); err != nil {
+		return
+	}
+	if buf, err = crypto.AesDecrypt(buf, utils.MD5([]byte(defaultName+name))); err != nil {
+		return
+	}
+	if err = json.Unmarshal(buf, &e); err == nil {
+		uid = e.Uid
+		expiredAt = e.ExpiredAt
+	}
+	return
+}