mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-07 20:45:53 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
c7a7a382b7
@ -125,38 +125,39 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient {
|
||||
RandomKey: make([]byte, 16),
|
||||
OutGoingPacketSessionId: []byte{0x02, 0xB0, 0x5B, 0x8B},
|
||||
decoders: map[string]func(*QQClient, uint16, []byte) (interface{}, error){
|
||||
"wtlogin.login": decodeLoginResponse,
|
||||
"wtlogin.exchange_emp": decodeExchangeEmpResponse,
|
||||
"StatSvc.register": decodeClientRegisterResponse,
|
||||
"StatSvc.ReqMSFOffline": decodeMSFOfflinePacket,
|
||||
"StatSvc.GetDevLoginInfo": decodeDevListResponse,
|
||||
"MessageSvc.PushNotify": decodeSvcNotify,
|
||||
"OnlinePush.PbPushGroupMsg": decodeGroupMessagePacket,
|
||||
"OnlinePush.ReqPush": decodeOnlinePushReqPacket,
|
||||
"OnlinePush.PbPushTransMsg": decodeOnlinePushTransPacket,
|
||||
"ConfigPushSvc.PushReq": decodePushReqPacket,
|
||||
"MessageSvc.PbGetMsg": decodeMessageSvcPacket,
|
||||
"MessageSvc.PbSendMsg": decodeMsgSendResponse,
|
||||
"MessageSvc.PushForceOffline": decodeForceOfflinePacket,
|
||||
"friendlist.getFriendGroupList": decodeFriendGroupListResponse,
|
||||
"friendlist.GetTroopListReqV2": decodeGroupListResponse,
|
||||
"friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse,
|
||||
"group_member_card.get_group_member_card_info": decodeGroupMemberInfoResponse,
|
||||
"ImgStore.GroupPicUp": decodeGroupImageStoreResponse,
|
||||
"PttStore.GroupPttUp": decodeGroupPttStoreResponse,
|
||||
"LongConn.OffPicUp": decodeOffPicUpResponse,
|
||||
"ProfileService.Pb.ReqSystemMsgNew.Group": decodeSystemMsgGroupPacket,
|
||||
"ProfileService.Pb.ReqSystemMsgNew.Friend": decodeSystemMsgFriendPacket,
|
||||
"MultiMsg.ApplyUp": decodeMultiApplyUpResponse,
|
||||
"MultiMsg.ApplyDown": decodeMultiApplyDownResponse,
|
||||
"OidbSvc.0x6d6_2": decodeOIDB6d6Response,
|
||||
"OidbSvc.0x88d_0": decodeGroupInfoResponse,
|
||||
"OidbSvc.0xe07_0": decodeImageOcrResponse,
|
||||
"OidbSvc.0xd79": decodeWordSegmentation,
|
||||
"OidbSvc.0x990": decodeTranslateResponse,
|
||||
"SummaryCard.ReqSummaryCard": decodeSummaryCardResponse,
|
||||
"PttCenterSvr.ShortVideoDownReq": decodePttShortVideoDownResponse,
|
||||
"LightAppSvc.mini_app_info.GetAppInfoById": decodeAppInfoResponse,
|
||||
"wtlogin.login": decodeLoginResponse,
|
||||
"wtlogin.exchange_emp": decodeExchangeEmpResponse,
|
||||
"StatSvc.register": decodeClientRegisterResponse,
|
||||
"StatSvc.ReqMSFOffline": decodeMSFOfflinePacket,
|
||||
"StatSvc.GetDevLoginInfo": decodeDevListResponse,
|
||||
"MessageSvc.PushNotify": decodeSvcNotify,
|
||||
"OnlinePush.PbPushGroupMsg": decodeGroupMessagePacket,
|
||||
"OnlinePush.ReqPush": decodeOnlinePushReqPacket,
|
||||
"OnlinePush.PbPushTransMsg": decodeOnlinePushTransPacket,
|
||||
"ConfigPushSvc.PushReq": decodePushReqPacket,
|
||||
"MessageSvc.PbGetMsg": decodeMessageSvcPacket,
|
||||
"MessageSvc.PbSendMsg": decodeMsgSendResponse,
|
||||
"MessageSvc.PushForceOffline": decodeForceOfflinePacket,
|
||||
"friendlist.getFriendGroupList": decodeFriendGroupListResponse,
|
||||
"friendlist.GetTroopListReqV2": decodeGroupListResponse,
|
||||
"friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse,
|
||||
"group_member_card.get_group_member_card_info": decodeGroupMemberInfoResponse,
|
||||
"ImgStore.GroupPicUp": decodeGroupImageStoreResponse,
|
||||
"PttStore.GroupPttUp": decodeGroupPttStoreResponse,
|
||||
"LongConn.OffPicUp": decodeOffPicUpResponse,
|
||||
"ProfileService.Pb.ReqSystemMsgNew.Group": decodeSystemMsgGroupPacket,
|
||||
"ProfileService.Pb.ReqSystemMsgNew.Friend": decodeSystemMsgFriendPacket,
|
||||
"MultiMsg.ApplyUp": decodeMultiApplyUpResponse,
|
||||
"MultiMsg.ApplyDown": decodeMultiApplyDownResponse,
|
||||
"OidbSvc.0x6d6_2": decodeOIDB6d6Response,
|
||||
"OidbSvc.0x88d_0": decodeGroupInfoResponse,
|
||||
"OidbSvc.0xe07_0": decodeImageOcrResponse,
|
||||
"OidbSvc.0xd79": decodeWordSegmentation,
|
||||
"OidbSvc.0x990": decodeTranslateResponse,
|
||||
"SummaryCard.ReqSummaryCard": decodeSummaryCardResponse,
|
||||
"PttCenterSvr.ShortVideoDownReq": decodePttShortVideoDownResponse,
|
||||
"LightAppSvc.mini_app_info.GetAppInfoById": decodeAppInfoResponse,
|
||||
"OfflineFilleHandleSvr.pb_ftn_CMD_REQ_APPLY_DOWNLOAD-1200": decodeOfflineFileDownloadResponse,
|
||||
},
|
||||
sigInfo: &loginSigInfo{},
|
||||
requestPacketRequestId: 1921334513,
|
||||
@ -409,10 +410,6 @@ func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage,
|
||||
Message: m.Elements,
|
||||
},
|
||||
}})
|
||||
if ret != nil && ret.Id == -1 {
|
||||
c.Error("long message send error. trying fragmented sending...")
|
||||
return c.SendGroupMessage(groupCode, m, true)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
return c.sendGroupMessage(groupCode, false, m)
|
||||
|
@ -80,6 +80,14 @@ func decodeLoginResponse(c *QQClient, _ uint16, payload []byte) (interface{}, er
|
||||
}
|
||||
} // need captcha
|
||||
|
||||
if t == 40 {
|
||||
return LoginResponse{
|
||||
Success: false,
|
||||
ErrorMessage: "账号被冻结",
|
||||
Error: UnknownLoginError,
|
||||
}, nil
|
||||
}
|
||||
|
||||
if t == 160 {
|
||||
|
||||
if t174, ok := m[0x174]; ok { // 短信验证
|
||||
@ -334,6 +342,24 @@ func decodeMessageSvcPacket(c *QQClient, _ uint16, payload []byte) (interface{},
|
||||
case 187:
|
||||
_, pkt := c.buildSystemMsgNewFriendPacket()
|
||||
_ = c.send(pkt)
|
||||
case 529:
|
||||
sub4 := msg.SubMsgType0X4Body{}
|
||||
if err := proto.Unmarshal(message.Body.MsgContent, &sub4); err != nil {
|
||||
c.Error("unmarshal sub msg 0x4 error: %v", err)
|
||||
continue
|
||||
}
|
||||
if sub4.NotOnlineFile != nil {
|
||||
rsp, err := c.sendAndWait(c.buildOfflineFileDownloadRequestPacket(sub4.NotOnlineFile.FileUuid)) // offline_file.go
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
c.dispatchOfflineFileEvent(&OfflineFileEvent{
|
||||
FileName: string(sub4.NotOnlineFile.FileName),
|
||||
FileSize: sub4.NotOnlineFile.FileSize,
|
||||
Sender: message.Head.FromUin,
|
||||
DownloadUrl: rsp.(string),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -194,6 +194,13 @@ type (
|
||||
Friend *FriendInfo
|
||||
}
|
||||
|
||||
OfflineFileEvent struct {
|
||||
FileName string
|
||||
FileSize int64
|
||||
Sender int64
|
||||
DownloadUrl string
|
||||
}
|
||||
|
||||
OcrResponse struct {
|
||||
Texts []*TextDetection `json:"texts"`
|
||||
Language string `json:"language"`
|
||||
|
@ -27,6 +27,7 @@ type eventHandlers struct {
|
||||
logHandlers []func(*QQClient, *LogEvent)
|
||||
serverUpdatedHandlers []func(*QQClient, *ServerUpdatedEvent)
|
||||
notifyHandlers []func(*QQClient, IGroupNotifyEvent)
|
||||
offlineFileHandlers []func(*QQClient, *OfflineFileEvent)
|
||||
groupMessageReceiptHandlers sync.Map
|
||||
}
|
||||
|
||||
@ -110,6 +111,10 @@ func (c *QQClient) OnServerUpdated(f func(*QQClient, *ServerUpdatedEvent)) {
|
||||
c.eventHandlers.serverUpdatedHandlers = append(c.eventHandlers.serverUpdatedHandlers, f)
|
||||
}
|
||||
|
||||
func (c *QQClient) OnReceivedOfflineFile(f func(*QQClient, *OfflineFileEvent)) {
|
||||
c.eventHandlers.offlineFileHandlers = append(c.eventHandlers.offlineFileHandlers, f)
|
||||
}
|
||||
|
||||
func (c *QQClient) OnLog(f func(*QQClient, *LogEvent)) {
|
||||
c.eventHandlers.logHandlers = append(c.eventHandlers.logHandlers, f)
|
||||
}
|
||||
@ -337,6 +342,17 @@ func (c *QQClient) dispatchDisconnectEvent(e *ClientDisconnectedEvent) {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *QQClient) dispatchOfflineFileEvent(e *OfflineFileEvent) {
|
||||
if e == nil {
|
||||
return
|
||||
}
|
||||
for _, f := range c.eventHandlers.offlineFileHandlers {
|
||||
cover(func() {
|
||||
f(c, e)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (c *QQClient) dispatchLogEvent(e *LogEvent) {
|
||||
if e == nil {
|
||||
return
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/Mrs4s/MiraiGo/binary"
|
||||
devinfo "github.com/Mrs4s/MiraiGo/client/pb"
|
||||
"github.com/Mrs4s/MiraiGo/client/pb/msg"
|
||||
"github.com/Mrs4s/MiraiGo/client/pb/oidb"
|
||||
"github.com/Mrs4s/MiraiGo/message"
|
||||
"github.com/Mrs4s/MiraiGo/utils"
|
||||
"google.golang.org/protobuf/proto"
|
||||
@ -367,21 +368,6 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
||||
Member: info,
|
||||
})
|
||||
}
|
||||
if m.Head.GroupInfo != nil && m.Head.GroupInfo.GroupCard != "" && mem.CardName != m.Head.GroupInfo.GroupCard {
|
||||
old := mem.CardName
|
||||
if mem.Nickname == m.Head.GroupInfo.GroupCard {
|
||||
mem.CardName = ""
|
||||
} else {
|
||||
mem.CardName = m.Head.GroupInfo.GroupCard
|
||||
}
|
||||
if old != mem.CardName {
|
||||
go c.dispatchMemberCardUpdatedEvent(&MemberCardUpdatedEvent{
|
||||
Group: group,
|
||||
OldCard: old,
|
||||
Member: mem,
|
||||
})
|
||||
}
|
||||
}
|
||||
sender = &message.Sender{
|
||||
Uin: mem.Uin,
|
||||
Nickname: mem.Nickname,
|
||||
@ -398,6 +384,7 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
||||
Time: m.Head.MsgTime,
|
||||
Elements: message.ParseMessageElems(m.Body.RichText.Elems),
|
||||
}
|
||||
var extInfo *msg.ExtraInfo
|
||||
// pre parse
|
||||
for _, elem := range m.Body.RichText.Elems {
|
||||
// is rich long msg
|
||||
@ -413,6 +400,37 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
||||
}
|
||||
}
|
||||
}
|
||||
if elem.ExtraInfo != nil {
|
||||
extInfo = elem.ExtraInfo
|
||||
}
|
||||
}
|
||||
if !sender.IsAnonymous() {
|
||||
mem := group.FindMember(m.Head.FromUin)
|
||||
groupCard := m.Head.GroupInfo.GroupCard
|
||||
if extInfo != nil && len(extInfo.GroupCard) > 0 && extInfo.GroupCard[0] == 0x0A {
|
||||
buf := oidb.D8FCCommCardNameBuf{}
|
||||
if err := proto.Unmarshal(extInfo.GroupCard, &buf); err == nil && len(buf.RichCardName) > 0 {
|
||||
groupCard = ""
|
||||
for _, e := range buf.RichCardName {
|
||||
groupCard += string(e.Text)
|
||||
}
|
||||
}
|
||||
}
|
||||
if m.Head.GroupInfo != nil && groupCard != "" && mem.CardName != groupCard {
|
||||
old := mem.CardName
|
||||
if mem.Nickname == groupCard {
|
||||
mem.CardName = ""
|
||||
} else {
|
||||
mem.CardName = groupCard
|
||||
}
|
||||
if old != mem.CardName {
|
||||
go c.dispatchMemberCardUpdatedEvent(&MemberCardUpdatedEvent{
|
||||
Group: group,
|
||||
OldCard: old,
|
||||
Member: mem,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
if m.Body.RichText.Ptt != nil {
|
||||
g.Elements = []message.IMessageElement{
|
||||
|
47
client/offline_file.go
Normal file
47
client/offline_file.go
Normal file
@ -0,0 +1,47 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/Mrs4s/MiraiGo/client/pb/cmd0x346"
|
||||
"github.com/Mrs4s/MiraiGo/protocol/packets"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
func (c *QQClient) buildOfflineFileDownloadRequestPacket(uuid []byte) (uint16, []byte) {
|
||||
seq := c.nextSeq()
|
||||
req := &cmd0x346.ReqBody{
|
||||
Cmd: 1200,
|
||||
Seq: int32(seq),
|
||||
BusinessId: 3,
|
||||
ClientType: 104,
|
||||
ApplyDownloadReq: &cmd0x346.ApplyDownloadReq{
|
||||
Uin: c.Uin,
|
||||
Uuid: uuid,
|
||||
OwnerType: 2,
|
||||
},
|
||||
ExtensionReq: &cmd0x346.ExtensionReq{
|
||||
DownloadUrlType: 1,
|
||||
},
|
||||
}
|
||||
payload, _ := proto.Marshal(req)
|
||||
packet := packets.BuildUniPacket(c.Uin, seq, "OfflineFilleHandleSvr.pb_ftn_CMD_REQ_APPLY_DOWNLOAD-1200", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload)
|
||||
return seq, packet
|
||||
}
|
||||
|
||||
func decodeOfflineFileDownloadResponse(c *QQClient, _ uint16, payload []byte) (interface{}, error) {
|
||||
rsp := cmd0x346.RspBody{}
|
||||
if err := proto.Unmarshal(payload, &rsp); err != nil {
|
||||
c.Error("unmarshal cmd0x346 rsp body error: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
if rsp.ApplyDownloadRsp == nil {
|
||||
c.Error("decode apply download 1200 error: apply rsp is nil.")
|
||||
return nil, errors.New("apply rsp is nil")
|
||||
}
|
||||
if rsp.ApplyDownloadRsp.RetCode != 0 {
|
||||
c.Error("decode apply download 1200 error: %v", rsp.ApplyDownloadRsp.RetCode)
|
||||
return nil, errors.New(fmt.Sprint(rsp.ApplyDownloadRsp.RetCode))
|
||||
}
|
||||
return "http://" + rsp.ApplyDownloadRsp.DownloadInfo.DownloadDomain + rsp.ApplyDownloadRsp.DownloadInfo.DownloadUrl, nil
|
||||
}
|
6178
client/pb/cmd0x346/cmd0x346.pb.go
Normal file
6178
client/pb/cmd0x346/cmd0x346.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
441
client/pb/cmd0x346/cmd0x346.proto
Normal file
441
client/pb/cmd0x346/cmd0x346.proto
Normal file
@ -0,0 +1,441 @@
|
||||
syntax = "proto3";
|
||||
|
||||
option go_package = ".;cmd0x346";
|
||||
|
||||
message ApplyCleanTrafficRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
}
|
||||
message ApplyCopyFromReq {
|
||||
int64 srcUin = 10;
|
||||
int64 srcGroup = 20;
|
||||
int32 srcSvcid = 30;
|
||||
bytes srcParentfolder = 40;
|
||||
bytes srcUuid = 50;
|
||||
bytes fileMd5 = 60;
|
||||
int64 dstUin = 70;
|
||||
int64 fileSize = 80;
|
||||
string fileName = 90;
|
||||
int32 dangerLevel = 100;
|
||||
int64 totalSpace = 110;
|
||||
}
|
||||
message ApplyCopyFromRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
bytes uuid = 30;
|
||||
int64 totalSpace = 40;
|
||||
}
|
||||
message ApplyCopyToReq {
|
||||
int64 dstId = 10;
|
||||
int64 dstUin = 20;
|
||||
int32 dstSvcid = 30;
|
||||
int64 srcUin = 40;
|
||||
int64 fileSize = 50;
|
||||
string fileName = 60;
|
||||
string localFilepath = 70;
|
||||
bytes uuid = 80;
|
||||
}
|
||||
message ApplyCopyToRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
string fileKey = 30;
|
||||
}
|
||||
message ApplyDownloadAbsReq {
|
||||
int64 uin = 10;
|
||||
bytes uuid = 20;
|
||||
}
|
||||
message ApplyDownloadAbsRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
DownloadInfo downloadInfo = 30;
|
||||
}
|
||||
message ApplyDownloadReq {
|
||||
int64 uin = 10;
|
||||
bytes uuid = 20;
|
||||
int32 ownerType = 30;
|
||||
int32 extIntype = 500;
|
||||
}
|
||||
message ApplyDownloadRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
DownloadInfo downloadInfo = 30;
|
||||
FileInfo fileInfo = 40;
|
||||
}
|
||||
message ApplyForwardFileReq {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
bytes uuid = 30;
|
||||
int32 dangerLevel = 40;
|
||||
int64 totalSpace = 50;
|
||||
}
|
||||
message ApplyForwardFileRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
int64 totalSpace = 30;
|
||||
int64 usedSpace = 40;
|
||||
bytes uuid = 50;
|
||||
}
|
||||
message ApplyGetTrafficReq {
|
||||
}
|
||||
message ApplyGetTrafficRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
int64 useFileSize = 30;
|
||||
int32 useFileNum = 40;
|
||||
int64 allFileSize = 50;
|
||||
int32 allFileNum = 60;
|
||||
}
|
||||
message ApplyListDownloadReq {
|
||||
int64 uin = 10;
|
||||
int32 beginIndex = 20;
|
||||
int32 reqCount = 30;
|
||||
}
|
||||
message ApplyListDownloadRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
int32 totalCount = 30;
|
||||
int32 beginIndex = 40;
|
||||
int32 rspCount = 50;
|
||||
int32 isEnd = 60;
|
||||
repeated FileInfo fileList = 70;
|
||||
}
|
||||
message ApplyUploadHitReq {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
int64 fileSize = 30;
|
||||
string fileName = 40;
|
||||
bytes bytes_10mMd5 = 50;
|
||||
string localFilepath = 60;
|
||||
int32 dangerLevel = 70;
|
||||
int64 totalSpace = 80;
|
||||
}
|
||||
message ApplyUploadHitReqV2 {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
int64 fileSize = 30;
|
||||
string fileName = 40;
|
||||
bytes bytes_10mMd5 = 50;
|
||||
bytes bytes_3sha = 60;
|
||||
bytes sha = 70;
|
||||
string localFilepath = 80;
|
||||
int32 dangerLevel = 90;
|
||||
int64 totalSpace = 100;
|
||||
}
|
||||
message ApplyUploadHitReqV3 {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
int64 fileSize = 30;
|
||||
string fileName = 40;
|
||||
bytes bytes_10mMd5 = 50;
|
||||
bytes sha = 60;
|
||||
string localFilepath = 70;
|
||||
int32 dangerLevel = 80;
|
||||
int64 totalSpace = 90;
|
||||
}
|
||||
message ApplyUploadHitRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
string uploadIp = 30;
|
||||
int32 uploadPort = 40;
|
||||
string uploadDomain = 50;
|
||||
bytes uuid = 60;
|
||||
bytes uploadKey = 70;
|
||||
int64 totalSpace = 80;
|
||||
int64 usedSpace = 90;
|
||||
}
|
||||
message ApplyUploadHitRspV2 {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
string uploadIp = 30;
|
||||
int32 uploadPort = 40;
|
||||
string uploadDomain = 50;
|
||||
bytes uuid = 60;
|
||||
bytes uploadKey = 70;
|
||||
int64 totalSpace = 80;
|
||||
int64 usedSpace = 90;
|
||||
}
|
||||
message ApplyUploadHitRspV3 {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
string uploadIp = 30;
|
||||
int32 uploadPort = 40;
|
||||
string uploadDomain = 50;
|
||||
bytes uuid = 60;
|
||||
bytes uploadKey = 70;
|
||||
int64 totalSpace = 80;
|
||||
int64 usedSpace = 90;
|
||||
}
|
||||
message ApplyUploadReq {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
int32 fileType = 30;
|
||||
int64 fileSize = 40;
|
||||
string fileName = 50;
|
||||
bytes bytes_10mMd5 = 60;
|
||||
string localFilepath = 70;
|
||||
int32 dangerLevel = 80;
|
||||
int64 totalSpace = 90;
|
||||
}
|
||||
message ApplyUploadReqV2 {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
int64 fileSize = 30;
|
||||
string fileName = 40;
|
||||
bytes bytes_10mMd5 = 50;
|
||||
bytes bytes_3sha = 60;
|
||||
string localFilepath = 70;
|
||||
int32 dangerLevel = 80;
|
||||
int64 totalSpace = 90;
|
||||
}
|
||||
message ApplyUploadReqV3 {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
int64 fileSize = 30;
|
||||
string fileName = 40;
|
||||
bytes bytes_10mMd5 = 50;
|
||||
bytes sha = 60;
|
||||
string localFilepath = 70;
|
||||
int32 dangerLevel = 80;
|
||||
int64 totalSpace = 90;
|
||||
}
|
||||
message ApplyUploadRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
int64 totalSpace = 30;
|
||||
int64 usedSpace = 40;
|
||||
int64 uploadedSize = 50;
|
||||
string uploadIp = 60;
|
||||
string uploadDomain = 70;
|
||||
int32 uploadPort = 80;
|
||||
bytes uuid = 90;
|
||||
bytes uploadKey = 100;
|
||||
bool boolFileExist = 110;
|
||||
int32 packSize = 120;
|
||||
repeated string uploadipList = 130;
|
||||
}
|
||||
message ApplyUploadRspV2 {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
int64 totalSpace = 30;
|
||||
int64 usedSpace = 40;
|
||||
int64 uploadedSize = 50;
|
||||
string uploadIp = 60;
|
||||
string uploadDomain = 70;
|
||||
int32 uploadPort = 80;
|
||||
bytes uuid = 90;
|
||||
bytes uploadKey = 100;
|
||||
bool boolFileExist = 110;
|
||||
int32 packSize = 120;
|
||||
repeated string uploadipList = 130;
|
||||
int32 httpsvrApiVer = 140;
|
||||
bytes sha = 141;
|
||||
}
|
||||
message ApplyUploadRspV3 {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
int64 totalSpace = 30;
|
||||
int64 usedSpace = 40;
|
||||
int64 uploadedSize = 50;
|
||||
string uploadIp = 60;
|
||||
string uploadDomain = 70;
|
||||
int32 uploadPort = 80;
|
||||
bytes uuid = 90;
|
||||
bytes uploadKey = 100;
|
||||
bool boolFileExist = 110;
|
||||
int32 packSize = 120;
|
||||
repeated string uploadipList = 130;
|
||||
}
|
||||
message DelMessageReq {
|
||||
int64 uinSender = 1;
|
||||
int64 uinReceiver = 2;
|
||||
int32 time = 10;
|
||||
int32 random = 20;
|
||||
int32 seqNo = 30;
|
||||
}
|
||||
message DeleteFileReq {
|
||||
int64 uin = 10;
|
||||
int64 peerUin = 20;
|
||||
int32 deleteType = 30;
|
||||
bytes uuid = 40;
|
||||
}
|
||||
message DeleteFileRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
}
|
||||
message DownloadInfo {
|
||||
bytes downloadKey = 10;
|
||||
string downloadIp = 20;
|
||||
string downloadDomain = 30;
|
||||
int32 port = 40;
|
||||
string downloadUrl = 50;
|
||||
repeated string downloadipList = 60;
|
||||
string cookie = 70;
|
||||
}
|
||||
message DownloadSuccReq {
|
||||
int64 uin = 10;
|
||||
bytes uuid = 20;
|
||||
}
|
||||
message DownloadSuccRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
int32 downStat = 30;
|
||||
}
|
||||
message ExtensionReq {
|
||||
int64 id = 1;
|
||||
int64 type = 2;
|
||||
string dstPhonenum = 3;
|
||||
int32 phoneConvertType = 4;
|
||||
bytes sig = 20;
|
||||
int64 routeId = 100;
|
||||
DelMessageReq delMessageReq = 90100;
|
||||
int32 downloadUrlType = 90200;
|
||||
int32 pttFormat = 90300;
|
||||
int32 isNeedInnerIp = 90400;
|
||||
int32 netType = 90500;
|
||||
int32 voiceType = 90600;
|
||||
int32 fileType = 90700;
|
||||
int32 pttTime = 90800;
|
||||
}
|
||||
message ExtensionRsp {
|
||||
}
|
||||
message FileInfo {
|
||||
int64 uin = 1;
|
||||
int32 dangerEvel = 2;
|
||||
int64 fileSize = 3;
|
||||
int32 lifeTime = 4;
|
||||
int32 uploadTime = 5;
|
||||
bytes uuid = 6;
|
||||
string fileName = 7;
|
||||
int32 absFileType = 90;
|
||||
bytes bytes_10mMd5 = 100;
|
||||
bytes sha = 101;
|
||||
int32 clientType = 110;
|
||||
int64 ownerUin = 120;
|
||||
int64 peerUin = 121;
|
||||
int32 expireTime = 130;
|
||||
}
|
||||
message FileQueryReq {
|
||||
int64 uin = 10;
|
||||
bytes uuid = 20;
|
||||
}
|
||||
message FileQueryRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
FileInfo fileInfo = 30;
|
||||
}
|
||||
message RecallFileReq {
|
||||
int64 uin = 1;
|
||||
bytes uuid = 2;
|
||||
}
|
||||
message RecallFileRsp {
|
||||
int32 retCode = 1;
|
||||
string retMsg = 2;
|
||||
}
|
||||
message RecvListQueryReq {
|
||||
int64 uin = 1;
|
||||
int32 beginIndex = 2;
|
||||
int32 reqCount = 3;
|
||||
}
|
||||
message RecvListQueryRsp {
|
||||
int32 retCode = 1;
|
||||
string retMsg = 2;
|
||||
int32 fileTotCount = 3;
|
||||
int32 beginIndex = 4;
|
||||
int32 rspFileCount = 5;
|
||||
int32 isEnd = 6;
|
||||
repeated FileInfo fileList = 7;
|
||||
}
|
||||
message RenewFileReq {
|
||||
int64 uin = 1;
|
||||
bytes uuid = 2;
|
||||
int32 addTtl = 3;
|
||||
}
|
||||
message RenewFileRsp {
|
||||
int32 retCode = 1;
|
||||
string retMsg = 2;
|
||||
}
|
||||
message ReqBody {
|
||||
int32 cmd = 1;
|
||||
int32 seq = 2;
|
||||
RecvListQueryReq recvListQueryReq = 3;
|
||||
SendListQueryReq sendListQueryReq = 4;
|
||||
RenewFileReq renewFileReq = 5;
|
||||
RecallFileReq recallFileReq = 6;
|
||||
ApplyUploadReq applyUploadReq = 7;
|
||||
ApplyUploadHitReq applyUploadHitReq = 8;
|
||||
ApplyForwardFileReq applyForwardFileReq = 9;
|
||||
UploadSuccReq uploadSuccReq = 10;
|
||||
DeleteFileReq deleteFileReq = 11;
|
||||
DownloadSuccReq downloadSuccReq = 12;
|
||||
ApplyDownloadAbsReq applyDownloadAbsReq = 13;
|
||||
ApplyDownloadReq applyDownloadReq = 14;
|
||||
ApplyListDownloadReq applyListDownloadReq = 15;
|
||||
FileQueryReq fileQueryReq = 16;
|
||||
ApplyCopyFromReq applyCopyFromReq = 17;
|
||||
ApplyUploadReqV2 applyUploadReqV2 = 18;
|
||||
ApplyUploadReqV3 applyUploadReqV3 = 19;
|
||||
ApplyUploadHitReqV2 applyUploadHitReqV2 = 20;
|
||||
ApplyUploadHitReqV3 applyUploadHitReqV3 = 21;
|
||||
int32 businessId = 101;
|
||||
int32 clientType = 102;
|
||||
ApplyCopyToReq applyCopyToReq = 90000;
|
||||
//ApplyCleanTrafficReq applyCleanTrafficReq = 90001; empty message
|
||||
ApplyGetTrafficReq applyGetTrafficReq = 90002;
|
||||
ExtensionReq extensionReq = 99999;
|
||||
}
|
||||
message RspBody {
|
||||
int32 cmd = 1;
|
||||
int32 seq = 2;
|
||||
RecvListQueryRsp recvListQueryRsp = 3;
|
||||
SendListQueryRsp sendListQueryRsp = 4;
|
||||
RenewFileRsp renewFileRsp = 5;
|
||||
RecallFileRsp recallFileRsp = 6;
|
||||
ApplyUploadRsp applyUploadRsp = 7;
|
||||
ApplyUploadHitRsp applyUploadHitRsp = 8;
|
||||
ApplyForwardFileRsp applyForwardFileRsp = 9;
|
||||
UploadSuccRsp uploadSuccRsp = 10;
|
||||
DeleteFileRsp deleteFileRsp = 11;
|
||||
DownloadSuccRsp downloadSuccRsp = 12;
|
||||
ApplyDownloadAbsRsp applyDownloadAbsRsp = 13;
|
||||
ApplyDownloadRsp applyDownloadRsp = 14;
|
||||
ApplyListDownloadRsp applyListDownloadRsp = 15;
|
||||
FileQueryRsp fileQueryRsp = 16;
|
||||
ApplyCopyFromRsp applyCopyFromRsp = 17;
|
||||
ApplyUploadRspV2 applyUploadRspV2 = 18;
|
||||
ApplyUploadRspV3 applyUploadRspV3 = 19;
|
||||
ApplyUploadHitRspV2 applyUploadHitRspV2 = 20;
|
||||
ApplyUploadHitRspV3 applyUploadHitRspV3 = 21;
|
||||
int32 businessId = 101;
|
||||
int32 clientType = 102;
|
||||
ApplyCopyToRsp applyCopyToRsp = 90000;
|
||||
ApplyCleanTrafficRsp applyCleanTrafficRsp = 90001;
|
||||
ApplyGetTrafficRsp applyGetTrafficRsp = 90002;
|
||||
ExtensionRsp extensionRsp = 99999;
|
||||
|
||||
}
|
||||
message SendListQueryReq {
|
||||
int64 uin = 1;
|
||||
int32 beginIndex = 2;
|
||||
int32 reqCount = 3;
|
||||
}
|
||||
message SendListQueryRsp {
|
||||
int32 retCode = 1;
|
||||
string retMsg = 2;
|
||||
int32 fileTotCount = 3;
|
||||
int32 beginIndex = 4;
|
||||
int32 rspFileCount = 5;
|
||||
int32 isEnd = 6;
|
||||
int64 totLimit = 7;
|
||||
int64 usedLimit = 8;
|
||||
repeated FileInfo fileList = 9;
|
||||
}
|
||||
message UploadSuccReq {
|
||||
int64 senderUin = 10;
|
||||
int64 recverUin = 20;
|
||||
bytes uuid = 30;
|
||||
}
|
||||
message UploadSuccRsp {
|
||||
int32 retCode = 10;
|
||||
string retMsg = 20;
|
||||
FileInfo fileInfo = 30;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.25.0
|
||||
// protoc v3.13.0
|
||||
// protoc v3.11.4
|
||||
// source: msg.proto
|
||||
|
||||
package msg
|
||||
@ -6073,6 +6073,69 @@ func (x *MsgElemInfoServtype3) GetFlashC2CPic() *NotOnlineImage {
|
||||
return nil
|
||||
}
|
||||
|
||||
type SubMsgType0X4Body struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
NotOnlineFile *NotOnlineFile `protobuf:"bytes,1,opt,name=notOnlineFile,proto3" json:"notOnlineFile,omitempty"`
|
||||
MsgTime uint32 `protobuf:"varint,2,opt,name=msgTime,proto3" json:"msgTime,omitempty"`
|
||||
OnlineFileForPolyToOffline uint32 `protobuf:"varint,3,opt,name=onlineFileForPolyToOffline,proto3" json:"onlineFileForPolyToOffline,omitempty"` // fileImageInfo
|
||||
}
|
||||
|
||||
func (x *SubMsgType0X4Body) Reset() {
|
||||
*x = SubMsgType0X4Body{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_msg_proto_msgTypes[57]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *SubMsgType0X4Body) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*SubMsgType0X4Body) ProtoMessage() {}
|
||||
|
||||
func (x *SubMsgType0X4Body) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_msg_proto_msgTypes[57]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use SubMsgType0X4Body.ProtoReflect.Descriptor instead.
|
||||
func (*SubMsgType0X4Body) Descriptor() ([]byte, []int) {
|
||||
return file_msg_proto_rawDescGZIP(), []int{57}
|
||||
}
|
||||
|
||||
func (x *SubMsgType0X4Body) GetNotOnlineFile() *NotOnlineFile {
|
||||
if x != nil {
|
||||
return x.NotOnlineFile
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *SubMsgType0X4Body) GetMsgTime() uint32 {
|
||||
if x != nil {
|
||||
return x.MsgTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *SubMsgType0X4Body) GetOnlineFileForPolyToOffline() uint32 {
|
||||
if x != nil {
|
||||
return x.OnlineFileForPolyToOffline
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type ResvAttr struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
@ -6084,7 +6147,7 @@ type ResvAttr struct {
|
||||
func (x *ResvAttr) Reset() {
|
||||
*x = ResvAttr{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_msg_proto_msgTypes[57]
|
||||
mi := &file_msg_proto_msgTypes[58]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -6097,7 +6160,7 @@ func (x *ResvAttr) String() string {
|
||||
func (*ResvAttr) ProtoMessage() {}
|
||||
|
||||
func (x *ResvAttr) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_msg_proto_msgTypes[57]
|
||||
mi := &file_msg_proto_msgTypes[58]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -6110,7 +6173,7 @@ func (x *ResvAttr) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use ResvAttr.ProtoReflect.Descriptor instead.
|
||||
func (*ResvAttr) Descriptor() ([]byte, []int) {
|
||||
return file_msg_proto_rawDescGZIP(), []int{57}
|
||||
return file_msg_proto_rawDescGZIP(), []int{58}
|
||||
}
|
||||
|
||||
func (x *ResvAttr) GetImageShow() *AnimationImageShow {
|
||||
@ -6132,7 +6195,7 @@ type AnimationImageShow struct {
|
||||
func (x *AnimationImageShow) Reset() {
|
||||
*x = AnimationImageShow{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_msg_proto_msgTypes[58]
|
||||
mi := &file_msg_proto_msgTypes[59]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -6145,7 +6208,7 @@ func (x *AnimationImageShow) String() string {
|
||||
func (*AnimationImageShow) ProtoMessage() {}
|
||||
|
||||
func (x *AnimationImageShow) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_msg_proto_msgTypes[58]
|
||||
mi := &file_msg_proto_msgTypes[59]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -6158,7 +6221,7 @@ func (x *AnimationImageShow) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use AnimationImageShow.ProtoReflect.Descriptor instead.
|
||||
func (*AnimationImageShow) Descriptor() ([]byte, []int) {
|
||||
return file_msg_proto_rawDescGZIP(), []int{58}
|
||||
return file_msg_proto_rawDescGZIP(), []int{59}
|
||||
}
|
||||
|
||||
func (x *AnimationImageShow) GetEffectId() int32 {
|
||||
@ -7135,20 +7198,31 @@ var file_msg_proto_rawDesc = []byte{
|
||||
0x61, 0x73, 0x68, 0x5f, 0x63, 0x32, 0x63, 0x5f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x0f, 0x2e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61,
|
||||
0x67, 0x65, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x43, 0x32, 0x63, 0x50, 0x69, 0x63, 0x22,
|
||||
0x3e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x76, 0x41, 0x74, 0x74, 0x72, 0x12, 0x32, 0x0a, 0x0a, 0x69,
|
||||
0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||
0x13, 0x2e, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65,
|
||||
0x53, 0x68, 0x6f, 0x77, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x22,
|
||||
0x5a, 0x0a, 0x12, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67,
|
||||
0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f,
|
||||
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74,
|
||||
0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
|
||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x61, 0x6e, 0x69,
|
||||
0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x2a, 0x2e, 0x0a, 0x08, 0x53,
|
||||
0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54,
|
||||
0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4d, 0x45, 0x10,
|
||||
0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x42, 0x07, 0x5a, 0x05, 0x2e,
|
||||
0x3b, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0xa3, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x30, 0x78,
|
||||
0x34, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x34, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69,
|
||||
0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4e,
|
||||
0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0d, 0x6e, 0x6f,
|
||||
0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
|
||||
0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x73,
|
||||
0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46,
|
||||
0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x79, 0x54, 0x6f, 0x4f, 0x66, 0x66, 0x6c,
|
||||
0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e,
|
||||
0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x79, 0x54, 0x6f, 0x4f, 0x66,
|
||||
0x66, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x3e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x76, 0x41, 0x74, 0x74,
|
||||
0x72, 0x12, 0x32, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18,
|
||||
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67,
|
||||
0x65, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x5a, 0x0a, 0x12, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x65,
|
||||
0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
|
||||
0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6e, 0x69, 0x6d,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x0c, 0x52, 0x0e, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x2a, 0x2e, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a,
|
||||
0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54,
|
||||
0x49, 0x4e, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10,
|
||||
0x02, 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x3b, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
@ -7164,7 +7238,7 @@ func file_msg_proto_rawDescGZIP() []byte {
|
||||
}
|
||||
|
||||
var file_msg_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||
var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 59)
|
||||
var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 60)
|
||||
var file_msg_proto_goTypes = []interface{}{
|
||||
(SyncFlag)(0), // 0: SyncFlag
|
||||
(*GetMessageRequest)(nil), // 1: GetMessageRequest
|
||||
@ -7224,8 +7298,9 @@ var file_msg_proto_goTypes = []interface{}{
|
||||
(*PbMultiMsgNew)(nil), // 55: PbMultiMsgNew
|
||||
(*PbMultiMsgTransmit)(nil), // 56: PbMultiMsgTransmit
|
||||
(*MsgElemInfoServtype3)(nil), // 57: MsgElemInfo_servtype3
|
||||
(*ResvAttr)(nil), // 58: ResvAttr
|
||||
(*AnimationImageShow)(nil), // 59: AnimationImageShow
|
||||
(*SubMsgType0X4Body)(nil), // 58: SubMsgType0x4Body
|
||||
(*ResvAttr)(nil), // 59: ResvAttr
|
||||
(*AnimationImageShow)(nil), // 60: AnimationImageShow
|
||||
}
|
||||
var file_msg_proto_depIdxs = []int32{
|
||||
0, // 0: GetMessageRequest.syncFlag:type_name -> SyncFlag
|
||||
@ -7289,12 +7364,13 @@ var file_msg_proto_depIdxs = []int32{
|
||||
54, // 58: PbMultiMsgTransmit.pbItemList:type_name -> PbMultiMsgItem
|
||||
41, // 59: MsgElemInfo_servtype3.flash_troop_pic:type_name -> CustomFace
|
||||
31, // 60: MsgElemInfo_servtype3.flash_c2c_pic:type_name -> NotOnlineImage
|
||||
59, // 61: ResvAttr.image_show:type_name -> AnimationImageShow
|
||||
62, // [62:62] is the sub-list for method output_type
|
||||
62, // [62:62] is the sub-list for method input_type
|
||||
62, // [62:62] is the sub-list for extension type_name
|
||||
62, // [62:62] is the sub-list for extension extendee
|
||||
0, // [0:62] is the sub-list for field type_name
|
||||
32, // 61: SubMsgType0x4Body.notOnlineFile:type_name -> NotOnlineFile
|
||||
60, // 62: ResvAttr.image_show:type_name -> AnimationImageShow
|
||||
63, // [63:63] is the sub-list for method output_type
|
||||
63, // [63:63] is the sub-list for method input_type
|
||||
63, // [63:63] is the sub-list for extension type_name
|
||||
63, // [63:63] is the sub-list for extension extendee
|
||||
0, // [0:63] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_msg_proto_init() }
|
||||
@ -7988,7 +8064,7 @@ func file_msg_proto_init() {
|
||||
}
|
||||
}
|
||||
file_msg_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ResvAttr); i {
|
||||
switch v := v.(*SubMsgType0X4Body); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@ -8000,6 +8076,18 @@ func file_msg_proto_init() {
|
||||
}
|
||||
}
|
||||
file_msg_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ResvAttr); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_msg_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*AnimationImageShow); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
@ -8018,7 +8106,7 @@ func file_msg_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_msg_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 59,
|
||||
NumMessages: 60,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
@ -698,11 +698,18 @@ message PbMultiMsgTransmit {
|
||||
repeated PbMultiMsgItem pbItemList = 2;
|
||||
}
|
||||
|
||||
message MsgElemInfo_servtype3{
|
||||
message MsgElemInfo_servtype3 {
|
||||
CustomFace flash_troop_pic = 1;
|
||||
NotOnlineImage flash_c2c_pic = 2;
|
||||
}
|
||||
|
||||
message SubMsgType0x4Body {
|
||||
NotOnlineFile notOnlineFile = 1;
|
||||
uint32 msgTime = 2;
|
||||
uint32 onlineFileForPolyToOffline = 3;
|
||||
// fileImageInfo
|
||||
}
|
||||
|
||||
enum SyncFlag {
|
||||
START = 0;
|
||||
CONTINUME = 1;
|
||||
@ -710,7 +717,7 @@ enum SyncFlag {
|
||||
}
|
||||
|
||||
message ResvAttr {
|
||||
AnimationImageShow image_show = 7;
|
||||
AnimationImageShow image_show = 7;
|
||||
}
|
||||
|
||||
message AnimationImageShow {
|
||||
|
@ -476,6 +476,108 @@ func (x *D8FCClientInfo) GetIngClientver() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
type D8FCCommCardNameBuf struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
RichCardName []*D8FCRichCardNameElem `protobuf:"bytes,1,rep,name=richCardName" json:"richCardName,omitempty"`
|
||||
}
|
||||
|
||||
func (x *D8FCCommCardNameBuf) Reset() {
|
||||
*x = D8FCCommCardNameBuf{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_oidb0x8fc_proto_msgTypes[5]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *D8FCCommCardNameBuf) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*D8FCCommCardNameBuf) ProtoMessage() {}
|
||||
|
||||
func (x *D8FCCommCardNameBuf) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_oidb0x8fc_proto_msgTypes[5]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use D8FCCommCardNameBuf.ProtoReflect.Descriptor instead.
|
||||
func (*D8FCCommCardNameBuf) Descriptor() ([]byte, []int) {
|
||||
return file_oidb0x8fc_proto_rawDescGZIP(), []int{5}
|
||||
}
|
||||
|
||||
func (x *D8FCCommCardNameBuf) GetRichCardName() []*D8FCRichCardNameElem {
|
||||
if x != nil {
|
||||
return x.RichCardName
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type D8FCRichCardNameElem struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Ctrl []byte `protobuf:"bytes,1,opt,name=ctrl" json:"ctrl,omitempty"`
|
||||
Text []byte `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
|
||||
}
|
||||
|
||||
func (x *D8FCRichCardNameElem) Reset() {
|
||||
*x = D8FCRichCardNameElem{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_oidb0x8fc_proto_msgTypes[6]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *D8FCRichCardNameElem) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*D8FCRichCardNameElem) ProtoMessage() {}
|
||||
|
||||
func (x *D8FCRichCardNameElem) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_oidb0x8fc_proto_msgTypes[6]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use D8FCRichCardNameElem.ProtoReflect.Descriptor instead.
|
||||
func (*D8FCRichCardNameElem) Descriptor() ([]byte, []int) {
|
||||
return file_oidb0x8fc_proto_rawDescGZIP(), []int{6}
|
||||
}
|
||||
|
||||
func (x *D8FCRichCardNameElem) GetCtrl() []byte {
|
||||
if x != nil {
|
||||
return x.Ctrl
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *D8FCRichCardNameElem) GetText() []byte {
|
||||
if x != nil {
|
||||
return x.Text
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_oidb0x8fc_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_oidb0x8fc_proto_rawDesc = []byte{
|
||||
@ -549,8 +651,17 @@ var file_oidb0x8fc_proto_rawDesc = []byte{
|
||||
0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x06, 0x69, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x67, 0x43,
|
||||
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
|
||||
0x69, 0x6e, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x76, 0x65, 0x72, 0x42, 0x08, 0x5a, 0x06,
|
||||
0x2e, 0x3b, 0x6f, 0x69, 0x64, 0x62,
|
||||
0x69, 0x6e, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x76, 0x65, 0x72, 0x22, 0x50, 0x0a, 0x13,
|
||||
0x44, 0x38, 0x46, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65,
|
||||
0x42, 0x75, 0x66, 0x12, 0x39, 0x0a, 0x0c, 0x72, 0x69, 0x63, 0x68, 0x43, 0x61, 0x72, 0x64, 0x4e,
|
||||
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x44, 0x38, 0x46, 0x43,
|
||||
0x52, 0x69, 0x63, 0x68, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6c, 0x65, 0x6d,
|
||||
0x52, 0x0c, 0x72, 0x69, 0x63, 0x68, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3e,
|
||||
0x0a, 0x14, 0x44, 0x38, 0x46, 0x43, 0x52, 0x69, 0x63, 0x68, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61,
|
||||
0x6d, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x74, 0x72, 0x6c, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x63, 0x74, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65,
|
||||
0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x42, 0x08,
|
||||
0x5a, 0x06, 0x2e, 0x3b, 0x6f, 0x69, 0x64, 0x62,
|
||||
}
|
||||
|
||||
var (
|
||||
@ -565,24 +676,27 @@ func file_oidb0x8fc_proto_rawDescGZIP() []byte {
|
||||
return file_oidb0x8fc_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_oidb0x8fc_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
|
||||
var file_oidb0x8fc_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
|
||||
var file_oidb0x8fc_proto_goTypes = []interface{}{
|
||||
(*D8FCReqBody)(nil), // 0: D8FCReqBody
|
||||
(*D8FCMemberInfo)(nil), // 1: D8FCMemberInfo
|
||||
(*D8FCCardNameElem)(nil), // 2: D8FCCardNameElem
|
||||
(*D8FCLevelName)(nil), // 3: D8FCLevelName
|
||||
(*D8FCClientInfo)(nil), // 4: D8FCClientInfo
|
||||
(*D8FCReqBody)(nil), // 0: D8FCReqBody
|
||||
(*D8FCMemberInfo)(nil), // 1: D8FCMemberInfo
|
||||
(*D8FCCardNameElem)(nil), // 2: D8FCCardNameElem
|
||||
(*D8FCLevelName)(nil), // 3: D8FCLevelName
|
||||
(*D8FCClientInfo)(nil), // 4: D8FCClientInfo
|
||||
(*D8FCCommCardNameBuf)(nil), // 5: D8FCCommCardNameBuf
|
||||
(*D8FCRichCardNameElem)(nil), // 6: D8FCRichCardNameElem
|
||||
}
|
||||
var file_oidb0x8fc_proto_depIdxs = []int32{
|
||||
1, // 0: D8FCReqBody.memLevelInfo:type_name -> D8FCMemberInfo
|
||||
3, // 1: D8FCReqBody.levelName:type_name -> D8FCLevelName
|
||||
4, // 2: D8FCReqBody.msgClientInfo:type_name -> D8FCClientInfo
|
||||
2, // 3: D8FCMemberInfo.richCardName:type_name -> D8FCCardNameElem
|
||||
4, // [4:4] is the sub-list for method output_type
|
||||
4, // [4:4] is the sub-list for method input_type
|
||||
4, // [4:4] is the sub-list for extension type_name
|
||||
4, // [4:4] is the sub-list for extension extendee
|
||||
0, // [0:4] is the sub-list for field type_name
|
||||
6, // 4: D8FCCommCardNameBuf.richCardName:type_name -> D8FCRichCardNameElem
|
||||
5, // [5:5] is the sub-list for method output_type
|
||||
5, // [5:5] is the sub-list for method input_type
|
||||
5, // [5:5] is the sub-list for extension type_name
|
||||
5, // [5:5] is the sub-list for extension extendee
|
||||
0, // [0:5] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_oidb0x8fc_proto_init() }
|
||||
@ -651,6 +765,30 @@ func file_oidb0x8fc_proto_init() {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_oidb0x8fc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*D8FCCommCardNameBuf); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_oidb0x8fc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*D8FCRichCardNameElem); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
@ -658,7 +796,7 @@ func file_oidb0x8fc_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_oidb0x8fc_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 5,
|
||||
NumMessages: 7,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
@ -47,4 +47,13 @@ message D8FCLevelName {
|
||||
message D8FCClientInfo {
|
||||
optional int32 implat = 1;
|
||||
optional string ingClientver = 2;
|
||||
}
|
||||
|
||||
message D8FCCommCardNameBuf {
|
||||
repeated D8FCRichCardNameElem richCardName = 1;
|
||||
}
|
||||
|
||||
message D8FCRichCardNameElem {
|
||||
optional bytes ctrl = 1;
|
||||
optional bytes text = 2;
|
||||
}
|
@ -69,7 +69,7 @@ func (e *ImageElement) Pack() (r []*msg.Elem) {
|
||||
return
|
||||
}
|
||||
|
||||
func (e *GroupImageElement) Pack(r []*msg.Elem) {
|
||||
func (e *GroupImageElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
r = append(r, &msg.Elem{
|
||||
CustomFace: &msg.CustomFace{
|
||||
@ -157,13 +157,13 @@ func (e *FriendFlashPicElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
flash := &msg.MsgElemInfoServtype3{
|
||||
FlashC2CPic: &msg.NotOnlineImage{
|
||||
FilePath: e.ImageId,
|
||||
ResId: e.ImageId,
|
||||
OldPicMd5: false,
|
||||
PicMd5: e.Md5,
|
||||
DownloadPath: e.ImageId,
|
||||
Original: 1,
|
||||
PbReserve: []byte{0x78, 0x02},
|
||||
FilePath: e.ImageId,
|
||||
ResId: e.ImageId,
|
||||
OldPicMd5: false,
|
||||
PicMd5: e.Md5,
|
||||
DownloadPath: e.ImageId,
|
||||
Original: 1,
|
||||
PbReserve: []byte{0x78, 0x02},
|
||||
},
|
||||
}
|
||||
data, _ := proto.Marshal(flash)
|
||||
@ -213,20 +213,20 @@ func (e *GroupFlashPicElement) Pack() (r []*msg.Elem) {
|
||||
func (e *GroupShowPicElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
res := &msg.ResvAttr{ImageShow: &msg.AnimationImageShow{
|
||||
EffectId: e.EffectId,
|
||||
EffectId: e.EffectId,
|
||||
AnimationParam: []byte("{}"),
|
||||
}}
|
||||
reserve, _ := proto.Marshal(res)
|
||||
r = append(r, &msg.Elem{
|
||||
CustomFace: &msg.CustomFace{
|
||||
FileType: 0,
|
||||
Useful: 1,
|
||||
FileType: 0,
|
||||
Useful: 1,
|
||||
ImageType: 1001,
|
||||
FileId: int32(e.FileId),
|
||||
FilePath: e.ImageId,
|
||||
Size: e.Size,
|
||||
Md5: e.Md5[:],
|
||||
Flag: []byte{0x11,0x00,0x00,0x00},
|
||||
FileId: int32(e.FileId),
|
||||
FilePath: e.ImageId,
|
||||
Size: e.Size,
|
||||
Md5: e.Md5[:],
|
||||
Flag: []byte{0x11, 0x00, 0x00, 0x00},
|
||||
//OldData: imgOld,
|
||||
PbReserve: reserve,
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user