Commit 31d25dca authored by wuerqiQs's avatar wuerqiQs

cdp -> base all

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