test ref encoding

This commit is contained in:
shoopea 2020-01-15 18:17:38 +08:00
parent 08e73139bb
commit 812690a973
5 changed files with 66 additions and 12 deletions

View File

@ -55,24 +55,24 @@ func getLockedRandomClient() (*ChirpClient, error) {
} }
func setClientBusy(userID64 int64, from time.Time, duration time.Duration) error { func setClientBusy(userID64 int64, from time.Time, duration time.Duration) error {
if from.UTC().Add(duration).After(time.Now().UTC()) { if clt, ok := getLockedClient(userID64, false); ok {
if clt, ok := getLockedClient(userID64, false); ok { if from.UTC().Add(duration).After(time.Now().UTC()) {
clt.CWIdle = false clt.CWIdle = false
clt.CWBusyUntil = from.UTC().Add(duration) clt.CWBusyUntil = from.UTC().Add(duration)
clt.Mux.Unlock()
log.Printf("setClientBusy[%s] : set for %s.\n", clt.Login, duration.String()) log.Printf("setClientBusy[%s] : set for %s.\n", clt.Login, duration.String())
return nil
} else { } else {
return errors.New("Client not found.") log.Printf("setClientBusy[%s] : not updated.\n", clt.Login)
} }
clt.Mux.Unlock()
return nil
} else {
return errors.New("Client not found.")
} }
return nil
} }
func setClientIdle(userID64 int64, from time.Time) error { func setClientIdle(userID64 int64, from time.Time) error {
if clt, ok := getLockedClient(userID64, false); ok { if clt, ok := getLockedClient(userID64, false); ok {
if from.UTC().After(clt.CWLastUpdate.UTC()) { if from.UTC().After(clt.CWLastUpdate.UTC()) {
fmt.Printf("setClientIdle : updated.\n")
clt.CWBusyUntil = from clt.CWBusyUntil = from
clt.CWIdle = true clt.CWIdle = true
clt.CWLastUpdate = from clt.CWLastUpdate = from

View File

@ -46,9 +46,7 @@ func cronTribute() {
muxClients.RLock() muxClients.RLock()
for _, c := range clients { for _, c := range clients {
if c.Active { if c.Active {
log.Printf("cronTribute : class %s (%s)\n", c.CWClass, c.Login)
if c.CWClass == `Knight` { if c.CWClass == `Knight` {
log.Printf("cronTribute : sending tribute\n", c.CWClass, c.Login)
clientSendCWMsgDelay(c.TGUserID64, `/tributes`, 0) clientSendCWMsgDelay(c.TGUserID64, `/tributes`, 0)
} }
} }

View File

@ -24,6 +24,16 @@
"name": "Guild deposit chat", "name": "Guild deposit chat",
"obj_type": "msg" "obj_type": "msg"
}, },
{
"intl_id": "msg_guild_gwithdraw_req",
"name": "Guild withdraw conf req",
"obj_type": "msg"
},
{
"intl_id": "msg_guild_gwithdraw_ack",
"name": "Guild withdraw conf ack",
"obj_type": "msg"
},
{ {
"intl_id": "msg_war", "intl_id": "msg_war",
"name": "War report", "name": "War report",

32
job.go
View File

@ -4,6 +4,8 @@ import (
"archive/zip" "archive/zip"
"bytes" "bytes"
"compress/zlib" "compress/zlib"
"crypto/sha256"
"encoding/binary"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
@ -15,6 +17,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/lytics/base62"
tb "gopkg.in/tucnak/telebot.v2" tb "gopkg.in/tucnak/telebot.v2"
) )
@ -1556,10 +1559,33 @@ func jobGWithdraw(j Job) {
createJobCallback(cacheObjSubType[`job_msg_del`], j.UserID64, p2.MsgTypeID64, b2, time.Minute) createJobCallback(cacheObjSubType[`job_msg_del`], j.UserID64, p2.MsgTypeID64, b2, time.Minute)
clientSendCWMsg(j.UserID64, `/g_stock_other`) clientSendCWMsg(j.UserID64, `/g_stock_other`)
} else { } else {
_, err := getLockedRoleClient(`commander`) /*
logOnError(err, "jobGWithdraw: getLockedRoleClient(commander)") c, err := getLockedRoleClient(`commander`)
logOnError(err, "jobGWithdraw: getLockedRoleClient(commander)")
if err == nil {
c.Mux.Unlock()
}
*/
b, _ := json.Marshal(p) b, _ := json.Marshal(p)
log.Printf("jobGWithdraw[%d] : got all the info\n%s\n", j.ID64, string(b)) id, err := createJob(cacheObjSubType[`job_gwithdraw`], objJobPriority, userID64, 0, time.Unix(maxUnixTimestamp, 0).UTC(), b)
sha256 := sha256.Sum256([]byte(s))
sha128 := sha256[:aes.BlockSize]
c, err := aes.NewCipher(sha128)
in := make([]byte, 0)
buf := make([]byte, 8)
binary.LittleEndian.PutUint64(buf, uint64(id))
in = append(in, buf)
binary.LittleEndian.PutUint64(buf, uint64(j.UserID64))
in = append(in, buf)
out := make([]byte, len(in))
c.Encrypt(out, in)
ref := base62.StdEncoding.EncodeToString(out)
log.Printf("jobGWithdraw[%d] : got all the info for ref %s\n", j.ID64, string(ref))
} }
err = setJobDone(j.ID64) err = setJobDone(j.ID64)

View File

@ -19,6 +19,26 @@ func resetMsgParsingRules() error {
err = json.Unmarshal(b, &rules) err = json.Unmarshal(b, &rules)
r := MessageParsingRule{
Priority: 9999,
Description: "Withdrawal request",
Rule: "^To validate (@[A-Za-z0-9]*) withdrawal of\n([0-9]+ x .*\n)+(Click /withdraw_[a-zA-Z0-9]{22})$",
MsgTypeID64: cacheObjSubType[`msg_guild_gwithdraw_req`],
ChatID64: cfg.Bot.Mainchat,
SenderUserID64: 0,
}
rules2 = append(rules2, r)
r := MessageParsingRule{
Priority: 9999,
Description: "Withdrawal acknowledgment",
Rule: "^/withdraw_[a-zA-Z0-9]{22}$",
MsgTypeID64: cacheObjSubType[`msg_guild_gwithdraw_ack`],
ChatID64: cfg.Bot.Mainchat,
SenderUserID64: 0,
}
rules2 = append(rules2, r)
r := MessageParsingRule{ r := MessageParsingRule{
Priority: 1, Priority: 1,
Description: "Default Main chat", Description: "Default Main chat",