Commit 31d25dca authored by wuerqiQs's avatar wuerqiQs

cdp -> base all

parent c20c223e
Pipeline #18954 failed with stages
...@@ -16,8 +16,8 @@ import ( ...@@ -16,8 +16,8 @@ import (
"github.com/labstack/echo/v4" "github.com/labstack/echo/v4"
"github.com/spf13/viper" "github.com/spf13/viper"
cmq "github.com/yougg/cmq-go-tdmq" cmq "github.com/yougg/cmq-go-tdmq"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/crypt" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/crypt"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat"
"gopkg.in/gomail.v2" "gopkg.in/gomail.v2"
) )
......
...@@ -5,7 +5,7 @@ import ( ...@@ -5,7 +5,7 @@ import (
"github.com/getsentry/sentry-go" "github.com/getsentry/sentry-go"
"github.com/spf13/viper" "github.com/spf13/viper"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/version" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/version"
) )
var host, _ = os.Hostname() var host, _ = os.Hostname()
......
...@@ -10,7 +10,7 @@ import ( ...@@ -10,7 +10,7 @@ import (
rotatelogs "github.com/lestrrat-go/file-rotatelogs" rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/exception" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/exception"
"go.uber.org/zap" "go.uber.org/zap"
"go.uber.org/zap/zapcore" "go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2" "gopkg.in/natefinch/lumberjack.v2"
......
...@@ -7,4 +7,4 @@ if [ -x "$(command -v git)" ];then ...@@ -7,4 +7,4 @@ if [ -x "$(command -v git)" ];then
fi fi
basepath=$(cd `dirname $0`; pwd) basepath=$(cd `dirname $0`; pwd)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags netgo -ldflags "-X 'gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/version.GitHash=$(git show -s --format=%h)' -X 'gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/version.Version=1.0.0'" CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags netgo -ldflags "-X 'gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/version.GitHash=$(git show -s --format=%h)' -X 'gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/version.Version=1.0.0'"
...@@ -17,7 +17,7 @@ package cmd ...@@ -17,7 +17,7 @@ package cmd
import ( import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/exception" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/exception"
) )
// mailCmd represents the mail command // mailCmd represents the mail command
......
...@@ -20,8 +20,8 @@ import ( ...@@ -20,8 +20,8 @@ import (
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/exception" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/exception"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat"
// mysql // mysql
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
......
...@@ -20,8 +20,8 @@ import ( ...@@ -20,8 +20,8 @@ import (
"os" "os"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/exception" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/exception"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/version" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/version"
"github.com/spf13/viper" "github.com/spf13/viper"
) )
......
package cmd package cmd
import ( import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/exception" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/exception"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/supervisor" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/supervisor"
) )
/* /*
由于Supervirsor 通过stdin/stdout 和EventListener 进行协议通信,所以EventListener 不能通过stdout输入其他非协议内容,不然EventListener的状态就会不正常 由于Supervirsor 通过stdin/stdout 和EventListener 进行协议通信,所以EventListener 不能通过stdout输入其他非协议内容,不然EventListener的状态就会不正常
这个暂时还没找到解决方案,暂时把initConfig里的输出注释掉 这个暂时还没找到解决方案,暂时把initConfig里的输出注释掉
*/ */
// mailCmd represents the mail command // mailCmd represents the mail command
var spListenerCmd = &cobra.Command{ var spListenerCmd = &cobra.Command{
Use: "splisten", Use: "splisten",
Short: "supervisor 进程状态监听报警", Short: "supervisor 进程状态监听报警",
Long: `supervisor 进程状态监听报警`, Long: `supervisor 进程状态监听报警`,
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
exception.SetAlertViper() exception.SetAlertViper()
supervisor.NewListener().Start() supervisor.NewListener().Start()
}, },
} }
func init() { func init() {
rootCmd.AddCommand(spListenerCmd) rootCmd.AddCommand(spListenerCmd)
} }
...@@ -17,8 +17,8 @@ package cmd ...@@ -17,8 +17,8 @@ package cmd
import ( import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/exception" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/exception"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/sdktool/tkserver" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/sdktool/tkserver"
) )
// tkserverCmd represents the tkserver command // tkserverCmd represents the tkserver command
......
...@@ -15,7 +15,7 @@ limitations under the License. ...@@ -15,7 +15,7 @@ limitations under the License.
*/ */
package main package main
import "gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/sdktool/cmd" import "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/sdktool/cmd"
func main() { func main() {
cmd.Execute() cmd.Execute()
......
...@@ -8,10 +8,10 @@ import ( ...@@ -8,10 +8,10 @@ import (
"github.com/douyu/jupiter/pkg/server/xgrpc" "github.com/douyu/jupiter/pkg/server/xgrpc"
"github.com/getsentry/sentry-go" "github.com/getsentry/sentry-go"
"github.com/spf13/viper" "github.com/spf13/viper"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/exception" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/exception"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat/cache" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat/cache"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat/client" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat/client"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat/crypt" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat/crypt"
) )
type tkServerEngine struct { type tkServerEngine struct {
......
This diff is collapsed.
This diff is collapsed.
package context package context
import ( import (
"encoding/xml" "encoding/xml"
"errors" "errors"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"net/url" "net/url"
"strconv" "strconv"
"time" "time"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat/crypt" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat/crypt"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat/message" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat/message"
) )
var ( var (
// ErrSign wechat sign error // ErrSign wechat sign error
ErrSign = errors.New("invalid sign") ErrSign = errors.New("invalid sign")
) )
type Context interface { type Context interface {
Query(key string) (string, bool) Query(key string) (string, bool)
ParseRawMessage() (*message.MixMessage, error) ParseRawMessage() (*message.MixMessage, error)
Render([]byte) Render([]byte)
RenderString(string) RenderString(string)
RenderXML(interface{}) RenderXML(interface{})
RenderMessage(message.Reply) RenderMessage(message.Reply)
} }
func NewContext(req *http.Request, w http.ResponseWriter, cfg *crypt.WechatConfig) Context { func NewContext(req *http.Request, w http.ResponseWriter, cfg *crypt.WechatConfig) Context {
ctx := &ctxImpl{Writer: w, Request: req, cfg: cfg} ctx := &ctxImpl{Writer: w, Request: req, cfg: cfg}
ctx.parse() ctx.parse()
return ctx return ctx
} }
// Context struct // Context struct
type ctxImpl struct { type ctxImpl struct {
Writer http.ResponseWriter Writer http.ResponseWriter
Request *http.Request Request *http.Request
isSafeMode bool isSafeMode bool
params url.Values params url.Values
random []byte random []byte
cfg *crypt.WechatConfig cfg *crypt.WechatConfig
} }
func (ctx *ctxImpl) parse() { func (ctx *ctxImpl) parse() {
ctx.params = ctx.Request.URL.Query() ctx.params = ctx.Request.URL.Query()
if enctype, ok := ctx.Query("encrypt_type"); ok { if enctype, ok := ctx.Query("encrypt_type"); ok {
ctx.isSafeMode = enctype == "aes" ctx.isSafeMode = enctype == "aes"
} }
} }
func (ctx *ctxImpl) ParseRawMessage() (*message.MixMessage, error) { func (ctx *ctxImpl) ParseRawMessage() (*message.MixMessage, error) {
timestamp, _ := ctx.Query("timestamp") timestamp, _ := ctx.Query("timestamp")
nonce, _ := ctx.Query("nonce") nonce, _ := ctx.Query("nonce")
signature, _ := ctx.Query("signature") signature, _ := ctx.Query("signature")
if signature != crypt.Signature(ctx.cfg.Token, timestamp, nonce) { if signature != crypt.Signature(ctx.cfg.Token, timestamp, nonce) {
return nil, ErrSign return nil, ErrSign
} }
var rawXMLMsgBytes []byte var rawXMLMsgBytes []byte
var err error var err error
if ctx.isSafeMode { if ctx.isSafeMode {
var encryptedXMLMsg message.EncryptedXMLMsg var encryptedXMLMsg message.EncryptedXMLMsg
if err = xml.NewDecoder(ctx.Request.Body).Decode(&encryptedXMLMsg); err != nil { if err = xml.NewDecoder(ctx.Request.Body).Decode(&encryptedXMLMsg); err != nil {
return nil, err return nil, err
} }
msgSignature, _ := ctx.Query("msg_signature") msgSignature, _ := ctx.Query("msg_signature")
msgSignatureGen := crypt.Signature(ctx.cfg.Token, timestamp, nonce, encryptedXMLMsg.EncryptedMsg) msgSignatureGen := crypt.Signature(ctx.cfg.Token, timestamp, nonce, encryptedXMLMsg.EncryptedMsg)
if msgSignature != msgSignatureGen { if msgSignature != msgSignatureGen {
return nil, ErrSign return nil, ErrSign
} }
//解密 //解密
ctx.random, rawXMLMsgBytes, err = crypt.DecryptMsg(ctx.cfg.AppID, encryptedXMLMsg.EncryptedMsg, ctx.cfg.AESKey) ctx.random, rawXMLMsgBytes, err = crypt.DecryptMsg(ctx.cfg.AppID, encryptedXMLMsg.EncryptedMsg, ctx.cfg.AESKey)
if err != nil { if err != nil {
return nil, err return nil, err
} }
} else { } else {
rawXMLMsgBytes, err = ioutil.ReadAll(ctx.Request.Body) rawXMLMsgBytes, err = ioutil.ReadAll(ctx.Request.Body)
if err != nil { if err != nil {
return nil, err return nil, err
} }
} }
msg := &message.MixMessage{} msg := &message.MixMessage{}
err = xml.Unmarshal(rawXMLMsgBytes, msg) err = xml.Unmarshal(rawXMLMsgBytes, msg)
return msg, err return msg, err
} }
// GetQuery is like Query(), it returns the keyed url query value // GetQuery is like Query(), it returns the keyed url query value
func (ctx *ctxImpl) Query(key string) (string, bool) { func (ctx *ctxImpl) Query(key string) (string, bool) {
if values, ok := ctx.params[key]; ok && len(values) > 0 { if values, ok := ctx.params[key]; ok && len(values) > 0 {
return values[0], true return values[0], true
} }
return "", false return "", false
} }
//Render render from bytes //Render render from bytes
func (ctx *ctxImpl) Render(bytes []byte) { func (ctx *ctxImpl) Render(bytes []byte) {
ctx.Writer.WriteHeader(200) ctx.Writer.WriteHeader(200)
_, err := ctx.Writer.Write(bytes) _, err := ctx.Writer.Write(bytes)
if err != nil { if err != nil {
panic(err) panic(err)
} }
} }
//String render from string //String render from string
func (ctx *ctxImpl) RenderString(str string) { func (ctx *ctxImpl) RenderString(str string) {
ctx.Writer.Header().Set("Content-Type", "text/plain; charset=utf-8") ctx.Writer.Header().Set("Content-Type", "text/plain; charset=utf-8")
ctx.Render([]byte(str)) ctx.Render([]byte(str))
} }
//XML render to xml //XML render to xml
func (ctx *ctxImpl) RenderXML(obj interface{}) { func (ctx *ctxImpl) RenderXML(obj interface{}) {
ctx.Writer.Header().Set("Content-Type", "application/xml; charset=utf-8") ctx.Writer.Header().Set("Content-Type", "application/xml; charset=utf-8")
bytes, err := xml.Marshal(obj) bytes, err := xml.Marshal(obj)
if err != nil { if err != nil {
panic(err) panic(err)
} }
ctx.Render(bytes) ctx.Render(bytes)
} }
func (ctx *ctxImpl) RenderMessage(reply message.Reply) { func (ctx *ctxImpl) RenderMessage(reply message.Reply) {
var replyMsg interface{} = reply var replyMsg interface{} = reply
if ctx.isSafeMode { if ctx.isSafeMode {
rawMsg, err := xml.Marshal(replyMsg) rawMsg, err := xml.Marshal(replyMsg)
if err != nil { if err != nil {
return return
} }
//安全模式下对消息进行加密 //安全模式下对消息进行加密
encryptedMsg, err := crypt.EncryptMsg(ctx.random, rawMsg, ctx.cfg.AppID, ctx.cfg.AESKey) encryptedMsg, err := crypt.EncryptMsg(ctx.random, rawMsg, ctx.cfg.AppID, ctx.cfg.AESKey)
if err != nil { if err != nil {
return return
} }
timestamp := time.Now().Unix() timestamp := time.Now().Unix()
strts := strconv.FormatInt(timestamp, 64) strts := strconv.FormatInt(timestamp, 64)
nonce := crypt.RandomStr(16) nonce := crypt.RandomStr(16)
msgSignature := crypt.Signature(ctx.cfg.Token, strts, nonce, string(encryptedMsg)) msgSignature := crypt.Signature(ctx.cfg.Token, strts, nonce, string(encryptedMsg))
replyMsg = message.ResponseEncryptedXMLMsg{ replyMsg = message.ResponseEncryptedXMLMsg{
EncryptedMsg: string(encryptedMsg), EncryptedMsg: string(encryptedMsg),
MsgSignature: msgSignature, MsgSignature: msgSignature,
Timestamp: timestamp, Timestamp: timestamp,
Nonce: nonce, Nonce: nonce,
} }
} }
ctx.RenderXML(replyMsg) ctx.RenderXML(replyMsg)
return return
} }
...@@ -5,7 +5,7 @@ import ( ...@@ -5,7 +5,7 @@ import (
"encoding/xml" "encoding/xml"
"io/ioutil" "io/ioutil"
"gitlab-ce.k8s.tools.vchangyi.com/cdp/cy-sdk-go/wechat/crypt" "gitlab-ce.k8s.tools.vchangyi.com/base/cy-sdk-go/wechat/crypt"
) )
type MchBaseRes struct { type MchBaseRes struct {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment