Skip to content

Commit 9a9aba4

Browse files
authored
Merge pull request #567 from ArtisanCloud/develop
Develop
2 parents 2bca999 + 939a68c commit 9a9aba4

File tree

3 files changed

+43
-3
lines changed

3 files changed

+43
-3
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ require (
3030
go.uber.org/atomic v1.7.0 // indirect
3131
go.uber.org/multierr v1.6.0 // indirect
3232
go.uber.org/zap v1.21.0 // indirect
33-
golang.org/x/crypto v0.27.0 // indirect
33+
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
3434
golang.org/x/sys v0.25.0 // indirect
3535
gopkg.in/yaml.v3 v3.0.1 // indirect
3636
)

go.sum

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,14 @@ go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8=
6363
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
6464
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
6565
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
66-
golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
67-
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
66+
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w=
67+
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
6868
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
6969
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
7070
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
7171
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
7272
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
73+
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
7374
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
7475
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
7576
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

src/kernel/serverGuard.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,27 @@ func (serverGuard *ServerGuard) OverrideNotify() {
103103
}
104104

105105
// 回调配置
106+
// https://developer.work.weixin.qq.com/document/path/90930
107+
func (serverGuard *ServerGuard) VerifyURL(request *http.Request) (httpRS *http.Response, err error) {
108+
logger := (*serverGuard.App).GetComponent("Logger").(*logger2.Logger)
109+
110+
//_, err = serverGuard.Validate(request)
111+
//if err != nil {
112+
// return nil, err
113+
//}
114+
strEcho := request.URL.Query().Get("echostr")
115+
decryptedMes, err := serverGuard.decryptEchoStr(request, strEcho)
116+
bodyData := io.NopCloser(bytes.NewBufferString(decryptedMes))
117+
rs := &http.Response{
118+
Body: bodyData,
119+
StatusCode: http.StatusOK,
120+
}
121+
122+
logger.Info("Server response created:", "content", decryptedMes)
123+
124+
return rs, err
125+
}
126+
106127
// https://developer.work.weixin.qq.com/document/path/90930
107128
func (serverGuard *ServerGuard) Serve(request *http.Request) (response *http.Response, err error) {
108129

@@ -507,6 +528,24 @@ func (serverGuard *ServerGuard) DecryptEvent(request *http.Request, content stri
507528

508529
}
509530

531+
func (serverGuard *ServerGuard) decryptEchoStr(request *http.Request, content string) (decryptMessage string, err error) {
532+
533+
encryptor := (*serverGuard.App).GetComponent("Encryptor").(*Encryptor)
534+
query := request.URL.Query()
535+
buf, cryptErr := encryptor.VerifyUrl(
536+
content,
537+
query.Get("msg_signature"),
538+
query.Get("nonce"),
539+
query.Get("timestamp"),
540+
)
541+
if cryptErr != nil {
542+
return "", errors.New(cryptErr.ErrMsg)
543+
}
544+
545+
return string(buf), err
546+
547+
}
548+
510549
func (serverGuard *ServerGuard) decryptMessage(request *http.Request, content string) (callbackHeader *models.CallbackMessageHeader, decryptMessage interface{}, err error) {
511550

512551
encryptor := (*serverGuard.App).GetComponent("Encryptor").(*Encryptor)

0 commit comments

Comments
 (0)