From 7fd853ef0b716e7e0a57ae5d2ba7820bde31bbcc Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Mon, 20 Jul 2020 05:49:11 +0800 Subject: [PATCH] add: friend message sending. add: friend image uploading. --- client/builders.go | 71 +- client/client.go | 107 +- client/decoders.go | 48 +- client/entities.go | 5 +- client/highway.go | 47 + client/pb/cmd0x352/cmd0x352.pb.go | 1842 +++++++++++++++++++++++++++++ client/pb/cmd0x352/cmd0x352.proto | 143 +++ client/pb/data.proto | 5 +- message/elements.go | 10 + message/message.go | 12 + protocol/protocol_global.go | 1 - 11 files changed, 2236 insertions(+), 55 deletions(-) create mode 100644 client/highway.go create mode 100644 client/pb/cmd0x352/cmd0x352.pb.go create mode 100644 client/pb/cmd0x352/cmd0x352.proto delete mode 100644 protocol/protocol_global.go diff --git a/client/builders.go b/client/builders.go index 47f82cb6..9deee8d9 100644 --- a/client/builders.go +++ b/client/builders.go @@ -2,9 +2,11 @@ package client import ( "crypto/md5" + "encoding/hex" "github.com/Mrs4s/MiraiGo/binary" "github.com/Mrs4s/MiraiGo/binary/jce" "github.com/Mrs4s/MiraiGo/client/pb" + "github.com/Mrs4s/MiraiGo/client/pb/cmd0x352" "github.com/Mrs4s/MiraiGo/client/pb/msg" "github.com/Mrs4s/MiraiGo/client/pb/structmsg" "github.com/Mrs4s/MiraiGo/message" @@ -13,7 +15,14 @@ import ( "github.com/Mrs4s/MiraiGo/protocol/tlv" "github.com/Mrs4s/MiraiGo/utils" "github.com/golang/protobuf/proto" + "math/rand" "strconv" + "time" +) + +var ( + syncConst1 = rand.Int63() + syncConst2 = rand.Int63() ) func (c *QQClient) buildLoginPacket() (uint16, []byte) { @@ -383,7 +392,7 @@ func (c *QQClient) buildGroupSendingPacket(groupCode int64, r int32, m *message. Elems: message.ToProtoElems(m.Elements), }, }, - MsgSeq: c.nextMessageSeq(), + MsgSeq: c.nextGroupSeq(), MsgRand: r, SyncCookie: EmptyBytes, MsgVia: 1, @@ -394,6 +403,66 @@ func (c *QQClient) buildGroupSendingPacket(groupCode int64, r int32, m *message. return seq, packet } +// MessageSvc.PbSendMsg +func (c *QQClient) buildFriendSendingPacket(target int64, r int32, m *message.SendingMessage) (uint16, []byte) { + seq := c.nextSeq() + req := &msg.SendMessageRequest{ + RoutingHead: &msg.RoutingHead{C2C: &msg.C2C{ToUin: target}}, + ContentHead: &msg.ContentHead{PkgNum: 1}, + MsgBody: &msg.MessageBody{ + RichText: &msg.RichText{ + Elems: message.ToProtoElems(m.Elements), + }, + }, + MsgSeq: c.nextFriendSeq(), + MsgRand: r, + SyncCookie: func() []byte { + cookie := &msg.SyncCookie{ + Time: time.Now().Unix(), + Ran1: rand.Int63(), + Ran2: rand.Int63(), + Const1: syncConst1, + Const2: syncConst2, + Const3: 0x1d, + } + b, _ := proto.Marshal(cookie) + return b + }(), + } + payload, _ := proto.Marshal(req) + packet := packets.BuildUniPacket(c.Uin, seq, "MessageSvc.PbSendMsg", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload) + return seq, packet +} + +// LongConn.OffPicUp +func (c *QQClient) buildOffPicUpPacket(target int64, md5 []byte, size int32) (uint16, []byte) { + seq := c.nextSeq() + req := &cmd0x352.ReqBody{ + Subcmd: 1, + MsgTryupImgReq: []*cmd0x352.D352TryUpImgReq{ + { + SrcUin: int32(c.Uin), + DstUin: int32(target), + FileMd5: md5, + FileSize: size, + Filename: hex.EncodeToString(md5) + ".jpg", + SrcTerm: 5, + PlatformType: 9, + BuType: 1, + ImgOriginal: 1, + ImgType: 1000, + BuildVer: "8.2.7.4410", + FileIndex: EmptyBytes, + SrvUpload: 1, + TransferUrl: EmptyBytes, + }, + }, + } + payload, _ := proto.Marshal(req) + packet := packets.BuildUniPacket(c.Uin, seq, "LongConn.OffPicUp", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload) + return seq, packet +} + // ImgStore.GroupPicUp func (c *QQClient) buildGroupImageStorePacket(groupCode int64, md5 []byte, size int32) (uint16, []byte) { seq := c.nextSeq() diff --git a/client/client.go b/client/client.go index 6b6bf85a..f64eae74 100644 --- a/client/client.go +++ b/client/client.go @@ -4,11 +4,9 @@ import ( "crypto/md5" "errors" "github.com/Mrs4s/MiraiGo/binary" - "github.com/Mrs4s/MiraiGo/client/pb" "github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/MiraiGo/protocol/packets" "github.com/Mrs4s/MiraiGo/utils" - "github.com/golang/protobuf/proto" "io" "log" "math/rand" @@ -28,6 +26,7 @@ type QQClient struct { Gender uint16 FriendList []*FriendInfo GroupList []*GroupInfo + Online bool SequenceId uint16 OutGoingPacketSessionId []byte @@ -50,14 +49,14 @@ type QQClient struct { timeDiff int64 sigInfo *loginSigInfo pwdFlag bool - running bool lastMessageSeq int32 lastMessageSeqTmp sync.Map groupMsgBuilders sync.Map onlinePushCache []int16 // reset on reconnect requestPacketRequestId int32 - messageSeq int32 + groupSeq int32 + friendSeq int32 groupDataTransSeq int32 eventHandlers *eventHandlers @@ -107,6 +106,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { "friendlist.GetTroopListReqV2": decodeGroupListResponse, "friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse, "ImgStore.GroupPicUp": decodeGroupImageStoreResponse, + "LongConn.OffPicUp": decodeOffPicUpResponse, "ProfileService.Pb.ReqSystemMsgNew.Group": decodeSystemMsgGroupPacket, "ProfileService.Pb.ReqSystemMsgNew.Friend": decodeSystemMsgFriendPacket, //"MultiMsg.ApplyDown": decodeMultiMsgDownPacket, @@ -114,7 +114,8 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { handlers: map[uint16]func(interface{}, error){}, sigInfo: &loginSigInfo{}, requestPacketRequestId: 1921334513, - messageSeq: 22911, + groupSeq: 22911, + friendSeq: 22911, ksid: []byte("|454001228437590|A8.2.7.27f6ea96"), eventHandlers: &eventHandlers{}, groupListLock: new(sync.Mutex), @@ -125,14 +126,14 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { // Login send login request func (c *QQClient) Login() (*LoginResponse, error) { - if c.running { - return nil, ErrAlreadyRunning + if c.Online { + return nil, ErrAlreadyOnline } err := c.connect() if err != nil { return nil, err } - c.running = true + c.Online = true go c.loop() seq, packet := c.buildLoginPacket() rsp, err := c.sendAndWait(seq, packet) @@ -226,6 +227,12 @@ func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage) return ret } +func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) { + mr := int32(rand.Uint32()) + _, pkt := c.buildFriendSendingPacket(target, mr, m) + _ = c.send(pkt) +} + func (c *QQClient) RecallGroupMessage(groupCode int64, msgId, msgInternalId int32) { _, pkt := c.buildGroupRecallPacket(groupCode, msgId, msgInternalId) _ = c.send(pkt) @@ -238,7 +245,7 @@ func (c *QQClient) UploadGroupImage(groupCode int64, img []byte) (*message.Group if err != nil { return nil, err } - rsp := r.(groupImageUploadResponse) + rsp := r.(imageUploadResponse) if rsp.ResultCode != 0 { return nil, errors.New(rsp.Message) } @@ -247,48 +254,52 @@ func (c *QQClient) UploadGroupImage(groupCode int64, img []byte) (*message.Group } for i, ip := range rsp.UploadIp { updServer := binary.UInt32ToIPV4Address(uint32(ip)) - conn, err := net.DialTimeout("tcp", updServer+":"+strconv.FormatInt(int64(rsp.UploadPort[i]), 10), time.Second*5) + err := c.highwayUploadImage(updServer+":"+strconv.FormatInt(int64(rsp.UploadPort[i]), 10), rsp.UploadKey, img) if err != nil { - continue - } - if conn.SetDeadline(time.Now().Add(time.Second*10)) != nil { - _ = conn.Close() - continue - } - pkt := c.buildImageUploadPacket(img, rsp.UploadKey, 2, h) - for _, p := range pkt { - _, err = conn.Write(p) - } - if err != nil { - continue - } - r := binary.NewNetworkReader(conn) - _, err = r.ReadByte() - if err != nil { - continue - } - hl, _ := r.ReadInt32() - _, _ = r.ReadBytes(4) - payload, _ := r.ReadBytes(int(hl)) - _ = conn.Close() - rsp := pb.RspDataHighwayHead{} - if proto.Unmarshal(payload, &rsp) != nil { - continue - } - if rsp.ErrorCode != 0 { - return nil, errors.New("upload failed") + return nil, err } return message.NewGroupImage(binary.CalculateImageResourceId(h[:]), h[:]), nil } return nil, errors.New("upload failed") } +func (c *QQClient) UploadPrivateImage(target int64, img []byte) (*message.FriendImageElement, error) { + return c.uploadPrivateImage(target, img, 0) +} + +func (c *QQClient) uploadPrivateImage(target int64, img []byte, count int) (*message.FriendImageElement, error) { + count++ + h := md5.Sum(img) + i, err := c.sendAndWait(c.buildOffPicUpPacket(target, h[:], int32(len(img)))) + if err != nil { + return nil, err + } + rsp := i.(imageUploadResponse) + if rsp.ResultCode != 0 { + return nil, errors.New(rsp.Message) + } + if !rsp.IsExists { + if _, err = c.UploadGroupImage(0, img); err != nil { + return nil, err + } + // safe + if count >= 5 { + return nil, errors.New("upload failed") + } + return c.uploadPrivateImage(target, img, count) + } + return &message.FriendImageElement{ + ImageId: rsp.ResourceId, + Md5: h[:], + }, nil +} + func (c *QQClient) QueryGroupImage(groupCode int64, hash []byte, size int32) (*message.GroupImageElement, error) { r, err := c.sendAndWait(c.buildGroupImageStorePacket(groupCode, hash, size)) if err != nil { return nil, err } - rsp := r.(groupImageUploadResponse) + rsp := r.(imageUploadResponse) if rsp.ResultCode != 0 { return nil, errors.New(rsp.Message) } @@ -448,9 +459,15 @@ func (c *QQClient) nextPacketSeq() int32 { return s } -func (c *QQClient) nextMessageSeq() int32 { - s := atomic.LoadInt32(&c.messageSeq) - atomic.AddInt32(&c.messageSeq, 2) +func (c *QQClient) nextGroupSeq() int32 { + s := atomic.LoadInt32(&c.groupSeq) + atomic.AddInt32(&c.groupSeq, 2) + return s +} + +func (c *QQClient) nextFriendSeq() int32 { + s := atomic.LoadInt32(&c.friendSeq) + atomic.AddInt32(&c.friendSeq, 2) return s } @@ -487,12 +504,12 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte) (interface{}, error) { func (c *QQClient) loop() { reader := binary.NewNetworkReader(c.Conn) - for c.running { + for c.Online { l, err := reader.ReadInt32() if err == io.EOF || err == io.ErrClosedPipe { err = c.connect() if err != nil { - c.running = false + c.Online = false return } reader = binary.NewNetworkReader(c.Conn) @@ -537,7 +554,7 @@ func (c *QQClient) loop() { } func (c *QQClient) heartbeat() { - for c.running { + for c.Online { time.Sleep(time.Second * 30) seq := c.nextSeq() sso := packets.BuildSsoPacket(seq, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid) diff --git a/client/decoders.go b/client/decoders.go index d2ea991c..e7b6ae00 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -5,6 +5,7 @@ import ( "github.com/Mrs4s/MiraiGo/binary" "github.com/Mrs4s/MiraiGo/binary/jce" "github.com/Mrs4s/MiraiGo/client/pb" + "github.com/Mrs4s/MiraiGo/client/pb/cmd0x352" "github.com/Mrs4s/MiraiGo/client/pb/msg" "github.com/Mrs4s/MiraiGo/client/pb/structmsg" "github.com/golang/protobuf/proto" @@ -211,7 +212,9 @@ func decodeMessageSvcPacket(c *QQClient, _ uint16, payload []byte) (interface{}, continue } if c.lastMessageSeq >= message.Head.MsgSeq { - continue + if c.lastMessageSeq-message.Head.MsgSeq < 1000 { + continue + } } c.lastMessageSeq = message.Head.MsgSeq c.dispatchFriendMessage(c.parsePrivateMessage(message)) @@ -360,21 +363,58 @@ func decodeGroupImageStoreResponse(_ *QQClient, _ uint16, payload []byte) (inter } rsp := pkt.MsgTryupImgRsp[0] if rsp.Result != 0 { - return groupImageUploadResponse{ + return imageUploadResponse{ ResultCode: rsp.Result, Message: rsp.FailMsg, }, nil } if rsp.BoolFileExit { - return groupImageUploadResponse{IsExists: true}, nil + return imageUploadResponse{IsExists: true}, nil } - return groupImageUploadResponse{ + return imageUploadResponse{ UploadKey: rsp.UpUkey, UploadIp: rsp.Uint32UpIp, UploadPort: rsp.Uint32UpPort, }, nil } +func decodeOffPicUpResponse(c *QQClient, _ uint16, payload []byte) (interface{}, error) { + rsp := cmd0x352.RspBody{} + if err := proto.Unmarshal(payload, &rsp); err != nil { + return nil, err + } + if rsp.FailMsg != "" { + return imageUploadResponse{ + ResultCode: -1, + Message: rsp.FailMsg, + }, nil + } + if rsp.Subcmd != 1 || len(rsp.MsgTryupImgRsp) == 0 { + return imageUploadResponse{ + ResultCode: -2, + }, nil + } + imgRsp := rsp.MsgTryupImgRsp[0] + if imgRsp.Result != 0 { + return imageUploadResponse{ + ResultCode: imgRsp.Result, + Message: imgRsp.FailMsg, + }, nil + } + if imgRsp.BoolFileExit { + return imageUploadResponse{ + IsExists: true, + ResourceId: imgRsp.UpResid, + }, nil + } + return imageUploadResponse{ + ResourceId: imgRsp.UpResid, + UploadKey: imgRsp.UpUkey, + UploadIp: imgRsp.Uint32UpIp, + UploadPort: imgRsp.Uint32UpPort, + }, nil +} + func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interface{}, error) { request := &jce.RequestPacket{} request.ReadFrom(jce.NewJceReader(payload)) diff --git a/client/entities.go b/client/entities.go index 1c43f688..2567c2ac 100644 --- a/client/entities.go +++ b/client/entities.go @@ -6,7 +6,7 @@ import ( ) var ( - ErrAlreadyRunning = errors.New("already running") + ErrAlreadyOnline = errors.New("already online") ) type ( @@ -139,12 +139,13 @@ type ( list []*GroupMemberInfo } - groupImageUploadResponse struct { + imageUploadResponse struct { ResultCode int32 Message string IsExists bool + ResourceId string UploadKey []byte UploadIp []int32 UploadPort []int32 diff --git a/client/highway.go b/client/highway.go new file mode 100644 index 00000000..29a26203 --- /dev/null +++ b/client/highway.go @@ -0,0 +1,47 @@ +package client + +import ( + "crypto/md5" + "errors" + "github.com/Mrs4s/MiraiGo/binary" + "github.com/Mrs4s/MiraiGo/client/pb" + "github.com/golang/protobuf/proto" + "net" + "time" +) + +func (c *QQClient) highwayUploadImage(ser string, updKey, img []byte) error { + conn, err := net.DialTimeout("tcp", ser, time.Second*5) + if err != nil { + return err + } + defer conn.Close() + if err = conn.SetDeadline(time.Now().Add(time.Second * 10)); err != nil { + return err + } + h := md5.Sum(img) + pkt := c.buildImageUploadPacket(img, updKey, 2, h) + for _, p := range pkt { + _, err = conn.Write(p) + } + if err != nil { + return err + } + r := binary.NewNetworkReader(conn) + _, err = r.ReadByte() + if err != nil { + return err + } + hl, _ := r.ReadInt32() + _, _ = r.ReadBytes(4) + payload, _ := r.ReadBytes(int(hl)) + _ = conn.Close() + rsp := pb.RspDataHighwayHead{} + if err = proto.Unmarshal(payload, &rsp); err != nil { + return err + } + if rsp.ErrorCode != 0 { + return errors.New("upload failed") + } + return nil +} diff --git a/client/pb/cmd0x352/cmd0x352.pb.go b/client/pb/cmd0x352/cmd0x352.pb.go new file mode 100644 index 00000000..9e94f424 --- /dev/null +++ b/client/pb/cmd0x352/cmd0x352.pb.go @@ -0,0 +1,1842 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.11.4 +// source: cmd0x352.proto + +package cmd0x352 + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type DelImgReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SrcUin int64 `protobuf:"varint,1,opt,name=srcUin,proto3" json:"srcUin,omitempty"` + DstUin int64 `protobuf:"varint,2,opt,name=dstUin,proto3" json:"dstUin,omitempty"` + ReqTerm int32 `protobuf:"varint,3,opt,name=reqTerm,proto3" json:"reqTerm,omitempty"` + ReqPlatformType int32 `protobuf:"varint,4,opt,name=reqPlatformType,proto3" json:"reqPlatformType,omitempty"` + BuType int32 `protobuf:"varint,5,opt,name=buType,proto3" json:"buType,omitempty"` + BuildVer []byte `protobuf:"bytes,6,opt,name=buildVer,proto3" json:"buildVer,omitempty"` + FileResid []byte `protobuf:"bytes,7,opt,name=fileResid,proto3" json:"fileResid,omitempty"` + PicWidth int32 `protobuf:"varint,8,opt,name=picWidth,proto3" json:"picWidth,omitempty"` + PicHeight int32 `protobuf:"varint,9,opt,name=picHeight,proto3" json:"picHeight,omitempty"` +} + +func (x *DelImgReq) Reset() { + *x = DelImgReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelImgReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelImgReq) ProtoMessage() {} + +func (x *DelImgReq) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[0] + 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 DelImgReq.ProtoReflect.Descriptor instead. +func (*DelImgReq) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{0} +} + +func (x *DelImgReq) GetSrcUin() int64 { + if x != nil { + return x.SrcUin + } + return 0 +} + +func (x *DelImgReq) GetDstUin() int64 { + if x != nil { + return x.DstUin + } + return 0 +} + +func (x *DelImgReq) GetReqTerm() int32 { + if x != nil { + return x.ReqTerm + } + return 0 +} + +func (x *DelImgReq) GetReqPlatformType() int32 { + if x != nil { + return x.ReqPlatformType + } + return 0 +} + +func (x *DelImgReq) GetBuType() int32 { + if x != nil { + return x.BuType + } + return 0 +} + +func (x *DelImgReq) GetBuildVer() []byte { + if x != nil { + return x.BuildVer + } + return nil +} + +func (x *DelImgReq) GetFileResid() []byte { + if x != nil { + return x.FileResid + } + return nil +} + +func (x *DelImgReq) GetPicWidth() int32 { + if x != nil { + return x.PicWidth + } + return 0 +} + +func (x *DelImgReq) GetPicHeight() int32 { + if x != nil { + return x.PicHeight + } + return 0 +} + +type DelImgRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result int32 `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"` + FailMsg []byte `protobuf:"bytes,2,opt,name=failMsg,proto3" json:"failMsg,omitempty"` + FileResid []byte `protobuf:"bytes,3,opt,name=fileResid,proto3" json:"fileResid,omitempty"` +} + +func (x *DelImgRsp) Reset() { + *x = DelImgRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelImgRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelImgRsp) ProtoMessage() {} + +func (x *DelImgRsp) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[1] + 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 DelImgRsp.ProtoReflect.Descriptor instead. +func (*DelImgRsp) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{1} +} + +func (x *DelImgRsp) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *DelImgRsp) GetFailMsg() []byte { + if x != nil { + return x.FailMsg + } + return nil +} + +func (x *DelImgRsp) GetFileResid() []byte { + if x != nil { + return x.FileResid + } + return nil +} + +type GetImgUrlReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SrcUin int64 `protobuf:"varint,1,opt,name=srcUin,proto3" json:"srcUin,omitempty"` + DstUin int64 `protobuf:"varint,2,opt,name=dstUin,proto3" json:"dstUin,omitempty"` + FileResid []byte `protobuf:"bytes,3,opt,name=fileResid,proto3" json:"fileResid,omitempty"` + UrlFlag int32 `protobuf:"varint,4,opt,name=urlFlag,proto3" json:"urlFlag,omitempty"` + UrlType int32 `protobuf:"varint,6,opt,name=urlType,proto3" json:"urlType,omitempty"` + ReqTerm int32 `protobuf:"varint,7,opt,name=reqTerm,proto3" json:"reqTerm,omitempty"` + ReqPlatformType int32 `protobuf:"varint,8,opt,name=reqPlatformType,proto3" json:"reqPlatformType,omitempty"` + SrcFileType int32 `protobuf:"varint,9,opt,name=srcFileType,proto3" json:"srcFileType,omitempty"` + InnerIp int32 `protobuf:"varint,10,opt,name=innerIp,proto3" json:"innerIp,omitempty"` + BoolAddressBook bool `protobuf:"varint,11,opt,name=boolAddressBook,proto3" json:"boolAddressBook,omitempty"` + BuType int32 `protobuf:"varint,12,opt,name=buType,proto3" json:"buType,omitempty"` + BuildVer []byte `protobuf:"bytes,13,opt,name=buildVer,proto3" json:"buildVer,omitempty"` + PicUpTimestamp int32 `protobuf:"varint,14,opt,name=picUpTimestamp,proto3" json:"picUpTimestamp,omitempty"` + ReqTransferType int32 `protobuf:"varint,15,opt,name=reqTransferType,proto3" json:"reqTransferType,omitempty"` +} + +func (x *GetImgUrlReq) Reset() { + *x = GetImgUrlReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetImgUrlReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetImgUrlReq) ProtoMessage() {} + +func (x *GetImgUrlReq) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[2] + 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 GetImgUrlReq.ProtoReflect.Descriptor instead. +func (*GetImgUrlReq) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{2} +} + +func (x *GetImgUrlReq) GetSrcUin() int64 { + if x != nil { + return x.SrcUin + } + return 0 +} + +func (x *GetImgUrlReq) GetDstUin() int64 { + if x != nil { + return x.DstUin + } + return 0 +} + +func (x *GetImgUrlReq) GetFileResid() []byte { + if x != nil { + return x.FileResid + } + return nil +} + +func (x *GetImgUrlReq) GetUrlFlag() int32 { + if x != nil { + return x.UrlFlag + } + return 0 +} + +func (x *GetImgUrlReq) GetUrlType() int32 { + if x != nil { + return x.UrlType + } + return 0 +} + +func (x *GetImgUrlReq) GetReqTerm() int32 { + if x != nil { + return x.ReqTerm + } + return 0 +} + +func (x *GetImgUrlReq) GetReqPlatformType() int32 { + if x != nil { + return x.ReqPlatformType + } + return 0 +} + +func (x *GetImgUrlReq) GetSrcFileType() int32 { + if x != nil { + return x.SrcFileType + } + return 0 +} + +func (x *GetImgUrlReq) GetInnerIp() int32 { + if x != nil { + return x.InnerIp + } + return 0 +} + +func (x *GetImgUrlReq) GetBoolAddressBook() bool { + if x != nil { + return x.BoolAddressBook + } + return false +} + +func (x *GetImgUrlReq) GetBuType() int32 { + if x != nil { + return x.BuType + } + return 0 +} + +func (x *GetImgUrlReq) GetBuildVer() []byte { + if x != nil { + return x.BuildVer + } + return nil +} + +func (x *GetImgUrlReq) GetPicUpTimestamp() int32 { + if x != nil { + return x.PicUpTimestamp + } + return 0 +} + +func (x *GetImgUrlReq) GetReqTransferType() int32 { + if x != nil { + return x.ReqTransferType + } + return 0 +} + +type GetImgUrlRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FileResid []byte `protobuf:"bytes,1,opt,name=fileResid,proto3" json:"fileResid,omitempty"` + ClientIp int32 `protobuf:"varint,2,opt,name=clientIp,proto3" json:"clientIp,omitempty"` + Result int32 `protobuf:"varint,3,opt,name=result,proto3" json:"result,omitempty"` + FailMsg []byte `protobuf:"bytes,4,opt,name=failMsg,proto3" json:"failMsg,omitempty"` + BytesThumbDownUrl []byte `protobuf:"bytes,5,opt,name=bytesThumbDownUrl,proto3" json:"bytesThumbDownUrl,omitempty"` + BytesOriginalDownUrl []byte `protobuf:"bytes,6,opt,name=bytesOriginalDownUrl,proto3" json:"bytesOriginalDownUrl,omitempty"` + MsgImgInfo *D352ImgInfo `protobuf:"bytes,7,opt,name=msgImgInfo,proto3" json:"msgImgInfo,omitempty"` + Uint32DownIp []int32 `protobuf:"varint,8,rep,packed,name=uint32DownIp,proto3" json:"uint32DownIp,omitempty"` + Uint32DownPort []int32 `protobuf:"varint,9,rep,packed,name=uint32DownPort,proto3" json:"uint32DownPort,omitempty"` + ThumbDownPara []byte `protobuf:"bytes,10,opt,name=thumbDownPara,proto3" json:"thumbDownPara,omitempty"` + OriginalDownPara []byte `protobuf:"bytes,11,opt,name=originalDownPara,proto3" json:"originalDownPara,omitempty"` + DownDomain []byte `protobuf:"bytes,12,opt,name=downDomain,proto3" json:"downDomain,omitempty"` + BytesBigDownUrl []byte `protobuf:"bytes,13,opt,name=bytesBigDownUrl,proto3" json:"bytesBigDownUrl,omitempty"` + BigDownPara []byte `protobuf:"bytes,14,opt,name=bigDownPara,proto3" json:"bigDownPara,omitempty"` + BigThumbDownPara []byte `protobuf:"bytes,15,opt,name=bigThumbDownPara,proto3" json:"bigThumbDownPara,omitempty"` + HttpsUrlFlag int32 `protobuf:"varint,16,opt,name=httpsUrlFlag,proto3" json:"httpsUrlFlag,omitempty"` + MsgDownIp6 []*IPv6Info `protobuf:"bytes,26,rep,name=msgDownIp6,proto3" json:"msgDownIp6,omitempty"` + ClientIp6 []byte `protobuf:"bytes,27,opt,name=clientIp6,proto3" json:"clientIp6,omitempty"` +} + +func (x *GetImgUrlRsp) Reset() { + *x = GetImgUrlRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetImgUrlRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetImgUrlRsp) ProtoMessage() {} + +func (x *GetImgUrlRsp) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[3] + 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 GetImgUrlRsp.ProtoReflect.Descriptor instead. +func (*GetImgUrlRsp) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{3} +} + +func (x *GetImgUrlRsp) GetFileResid() []byte { + if x != nil { + return x.FileResid + } + return nil +} + +func (x *GetImgUrlRsp) GetClientIp() int32 { + if x != nil { + return x.ClientIp + } + return 0 +} + +func (x *GetImgUrlRsp) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *GetImgUrlRsp) GetFailMsg() []byte { + if x != nil { + return x.FailMsg + } + return nil +} + +func (x *GetImgUrlRsp) GetBytesThumbDownUrl() []byte { + if x != nil { + return x.BytesThumbDownUrl + } + return nil +} + +func (x *GetImgUrlRsp) GetBytesOriginalDownUrl() []byte { + if x != nil { + return x.BytesOriginalDownUrl + } + return nil +} + +func (x *GetImgUrlRsp) GetMsgImgInfo() *D352ImgInfo { + if x != nil { + return x.MsgImgInfo + } + return nil +} + +func (x *GetImgUrlRsp) GetUint32DownIp() []int32 { + if x != nil { + return x.Uint32DownIp + } + return nil +} + +func (x *GetImgUrlRsp) GetUint32DownPort() []int32 { + if x != nil { + return x.Uint32DownPort + } + return nil +} + +func (x *GetImgUrlRsp) GetThumbDownPara() []byte { + if x != nil { + return x.ThumbDownPara + } + return nil +} + +func (x *GetImgUrlRsp) GetOriginalDownPara() []byte { + if x != nil { + return x.OriginalDownPara + } + return nil +} + +func (x *GetImgUrlRsp) GetDownDomain() []byte { + if x != nil { + return x.DownDomain + } + return nil +} + +func (x *GetImgUrlRsp) GetBytesBigDownUrl() []byte { + if x != nil { + return x.BytesBigDownUrl + } + return nil +} + +func (x *GetImgUrlRsp) GetBigDownPara() []byte { + if x != nil { + return x.BigDownPara + } + return nil +} + +func (x *GetImgUrlRsp) GetBigThumbDownPara() []byte { + if x != nil { + return x.BigThumbDownPara + } + return nil +} + +func (x *GetImgUrlRsp) GetHttpsUrlFlag() int32 { + if x != nil { + return x.HttpsUrlFlag + } + return 0 +} + +func (x *GetImgUrlRsp) GetMsgDownIp6() []*IPv6Info { + if x != nil { + return x.MsgDownIp6 + } + return nil +} + +func (x *GetImgUrlRsp) GetClientIp6() []byte { + if x != nil { + return x.ClientIp6 + } + return nil +} + +type D352ImgInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FileMd5 []byte `protobuf:"bytes,1,opt,name=fileMd5,proto3" json:"fileMd5,omitempty"` + FileType int32 `protobuf:"varint,2,opt,name=fileType,proto3" json:"fileType,omitempty"` + FileSize int64 `protobuf:"varint,3,opt,name=fileSize,proto3" json:"fileSize,omitempty"` + FileWidth int32 `protobuf:"varint,4,opt,name=fileWidth,proto3" json:"fileWidth,omitempty"` + FileHeight int32 `protobuf:"varint,5,opt,name=fileHeight,proto3" json:"fileHeight,omitempty"` + FileFlag int64 `protobuf:"varint,6,opt,name=fileFlag,proto3" json:"fileFlag,omitempty"` + FileCutPos int32 `protobuf:"varint,7,opt,name=fileCutPos,proto3" json:"fileCutPos,omitempty"` +} + +func (x *D352ImgInfo) Reset() { + *x = D352ImgInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D352ImgInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D352ImgInfo) ProtoMessage() {} + +func (x *D352ImgInfo) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[4] + 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 D352ImgInfo.ProtoReflect.Descriptor instead. +func (*D352ImgInfo) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{4} +} + +func (x *D352ImgInfo) GetFileMd5() []byte { + if x != nil { + return x.FileMd5 + } + return nil +} + +func (x *D352ImgInfo) GetFileType() int32 { + if x != nil { + return x.FileType + } + return 0 +} + +func (x *D352ImgInfo) GetFileSize() int64 { + if x != nil { + return x.FileSize + } + return 0 +} + +func (x *D352ImgInfo) GetFileWidth() int32 { + if x != nil { + return x.FileWidth + } + return 0 +} + +func (x *D352ImgInfo) GetFileHeight() int32 { + if x != nil { + return x.FileHeight + } + return 0 +} + +func (x *D352ImgInfo) GetFileFlag() int64 { + if x != nil { + return x.FileFlag + } + return 0 +} + +func (x *D352ImgInfo) GetFileCutPos() int32 { + if x != nil { + return x.FileCutPos + } + return 0 +} + +type IPv6Info struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ip6 []byte `protobuf:"bytes,1,opt,name=ip6,proto3" json:"ip6,omitempty"` + Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` +} + +func (x *IPv6Info) Reset() { + *x = IPv6Info{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IPv6Info) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IPv6Info) ProtoMessage() {} + +func (x *IPv6Info) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_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 IPv6Info.ProtoReflect.Descriptor instead. +func (*IPv6Info) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{5} +} + +func (x *IPv6Info) GetIp6() []byte { + if x != nil { + return x.Ip6 + } + return nil +} + +func (x *IPv6Info) GetPort() int32 { + if x != nil { + return x.Port + } + return 0 +} + +type ReqBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subcmd int32 `protobuf:"varint,1,opt,name=subcmd,proto3" json:"subcmd,omitempty"` + MsgTryupImgReq []*D352TryUpImgReq `protobuf:"bytes,2,rep,name=msgTryupImgReq,proto3" json:"msgTryupImgReq,omitempty"` + MsgGetimgUrlReq []*GetImgUrlReq `protobuf:"bytes,3,rep,name=msgGetimgUrlReq,proto3" json:"msgGetimgUrlReq,omitempty"` + MsgDelImgReq []*DelImgReq `protobuf:"bytes,4,rep,name=msgDelImgReq,proto3" json:"msgDelImgReq,omitempty"` + NetType int32 `protobuf:"varint,10,opt,name=netType,proto3" json:"netType,omitempty"` +} + +func (x *ReqBody) Reset() { + *x = ReqBody{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReqBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqBody) ProtoMessage() {} + +func (x *ReqBody) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_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 ReqBody.ProtoReflect.Descriptor instead. +func (*ReqBody) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{6} +} + +func (x *ReqBody) GetSubcmd() int32 { + if x != nil { + return x.Subcmd + } + return 0 +} + +func (x *ReqBody) GetMsgTryupImgReq() []*D352TryUpImgReq { + if x != nil { + return x.MsgTryupImgReq + } + return nil +} + +func (x *ReqBody) GetMsgGetimgUrlReq() []*GetImgUrlReq { + if x != nil { + return x.MsgGetimgUrlReq + } + return nil +} + +func (x *ReqBody) GetMsgDelImgReq() []*DelImgReq { + if x != nil { + return x.MsgDelImgReq + } + return nil +} + +func (x *ReqBody) GetNetType() int32 { + if x != nil { + return x.NetType + } + return 0 +} + +type RspBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subcmd int32 `protobuf:"varint,1,opt,name=subcmd,proto3" json:"subcmd,omitempty"` + MsgTryupImgRsp []*TryUpImgRsp `protobuf:"bytes,2,rep,name=msgTryupImgRsp,proto3" json:"msgTryupImgRsp,omitempty"` + MsgGetimgUrlRsp []*GetImgUrlRsp `protobuf:"bytes,3,rep,name=msgGetimgUrlRsp,proto3" json:"msgGetimgUrlRsp,omitempty"` + BoolNewBigchan bool `protobuf:"varint,4,opt,name=boolNewBigchan,proto3" json:"boolNewBigchan,omitempty"` + MsgDelImgRsp []*DelImgRsp `protobuf:"bytes,5,rep,name=msgDelImgRsp,proto3" json:"msgDelImgRsp,omitempty"` + FailMsg string `protobuf:"bytes,10,opt,name=failMsg,proto3" json:"failMsg,omitempty"` +} + +func (x *RspBody) Reset() { + *x = RspBody{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspBody) ProtoMessage() {} + +func (x *RspBody) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[7] + 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 RspBody.ProtoReflect.Descriptor instead. +func (*RspBody) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{7} +} + +func (x *RspBody) GetSubcmd() int32 { + if x != nil { + return x.Subcmd + } + return 0 +} + +func (x *RspBody) GetMsgTryupImgRsp() []*TryUpImgRsp { + if x != nil { + return x.MsgTryupImgRsp + } + return nil +} + +func (x *RspBody) GetMsgGetimgUrlRsp() []*GetImgUrlRsp { + if x != nil { + return x.MsgGetimgUrlRsp + } + return nil +} + +func (x *RspBody) GetBoolNewBigchan() bool { + if x != nil { + return x.BoolNewBigchan + } + return false +} + +func (x *RspBody) GetMsgDelImgRsp() []*DelImgRsp { + if x != nil { + return x.MsgDelImgRsp + } + return nil +} + +func (x *RspBody) GetFailMsg() string { + if x != nil { + return x.FailMsg + } + return "" +} + +type D352TryUpImgReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SrcUin int32 `protobuf:"varint,1,opt,name=srcUin,proto3" json:"srcUin,omitempty"` + DstUin int32 `protobuf:"varint,2,opt,name=dstUin,proto3" json:"dstUin,omitempty"` + FileId int32 `protobuf:"varint,3,opt,name=fileId,proto3" json:"fileId,omitempty"` + FileMd5 []byte `protobuf:"bytes,4,opt,name=fileMd5,proto3" json:"fileMd5,omitempty"` + FileSize int32 `protobuf:"varint,5,opt,name=fileSize,proto3" json:"fileSize,omitempty"` + Filename string `protobuf:"bytes,6,opt,name=filename,proto3" json:"filename,omitempty"` + SrcTerm int32 `protobuf:"varint,7,opt,name=srcTerm,proto3" json:"srcTerm,omitempty"` + PlatformType int32 `protobuf:"varint,8,opt,name=platformType,proto3" json:"platformType,omitempty"` + InnerIP int32 `protobuf:"varint,9,opt,name=innerIP,proto3" json:"innerIP,omitempty"` + AddressBook int32 `protobuf:"varint,10,opt,name=addressBook,proto3" json:"addressBook,omitempty"` + Retry int32 `protobuf:"varint,11,opt,name=retry,proto3" json:"retry,omitempty"` + BuType int32 `protobuf:"varint,12,opt,name=buType,proto3" json:"buType,omitempty"` + ImgOriginal int32 `protobuf:"varint,13,opt,name=imgOriginal,proto3" json:"imgOriginal,omitempty"` + ImgWidth int32 `protobuf:"varint,14,opt,name=imgWidth,proto3" json:"imgWidth,omitempty"` + ImgHeight int32 `protobuf:"varint,15,opt,name=imgHeight,proto3" json:"imgHeight,omitempty"` + ImgType int32 `protobuf:"varint,16,opt,name=imgType,proto3" json:"imgType,omitempty"` + BuildVer string `protobuf:"bytes,17,opt,name=buildVer,proto3" json:"buildVer,omitempty"` + FileIndex []byte `protobuf:"bytes,18,opt,name=fileIndex,proto3" json:"fileIndex,omitempty"` + FileStoreDays int32 `protobuf:"varint,19,opt,name=fileStoreDays,proto3" json:"fileStoreDays,omitempty"` + StepFlag int32 `protobuf:"varint,20,opt,name=stepFlag,proto3" json:"stepFlag,omitempty"` + RejectTryFast int32 `protobuf:"varint,21,opt,name=rejectTryFast,proto3" json:"rejectTryFast,omitempty"` + SrvUpload int32 `protobuf:"varint,22,opt,name=srvUpload,proto3" json:"srvUpload,omitempty"` + TransferUrl []byte `protobuf:"bytes,23,opt,name=transferUrl,proto3" json:"transferUrl,omitempty"` +} + +func (x *D352TryUpImgReq) Reset() { + *x = D352TryUpImgReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D352TryUpImgReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D352TryUpImgReq) ProtoMessage() {} + +func (x *D352TryUpImgReq) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[8] + 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 D352TryUpImgReq.ProtoReflect.Descriptor instead. +func (*D352TryUpImgReq) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{8} +} + +func (x *D352TryUpImgReq) GetSrcUin() int32 { + if x != nil { + return x.SrcUin + } + return 0 +} + +func (x *D352TryUpImgReq) GetDstUin() int32 { + if x != nil { + return x.DstUin + } + return 0 +} + +func (x *D352TryUpImgReq) GetFileId() int32 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *D352TryUpImgReq) GetFileMd5() []byte { + if x != nil { + return x.FileMd5 + } + return nil +} + +func (x *D352TryUpImgReq) GetFileSize() int32 { + if x != nil { + return x.FileSize + } + return 0 +} + +func (x *D352TryUpImgReq) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *D352TryUpImgReq) GetSrcTerm() int32 { + if x != nil { + return x.SrcTerm + } + return 0 +} + +func (x *D352TryUpImgReq) GetPlatformType() int32 { + if x != nil { + return x.PlatformType + } + return 0 +} + +func (x *D352TryUpImgReq) GetInnerIP() int32 { + if x != nil { + return x.InnerIP + } + return 0 +} + +func (x *D352TryUpImgReq) GetAddressBook() int32 { + if x != nil { + return x.AddressBook + } + return 0 +} + +func (x *D352TryUpImgReq) GetRetry() int32 { + if x != nil { + return x.Retry + } + return 0 +} + +func (x *D352TryUpImgReq) GetBuType() int32 { + if x != nil { + return x.BuType + } + return 0 +} + +func (x *D352TryUpImgReq) GetImgOriginal() int32 { + if x != nil { + return x.ImgOriginal + } + return 0 +} + +func (x *D352TryUpImgReq) GetImgWidth() int32 { + if x != nil { + return x.ImgWidth + } + return 0 +} + +func (x *D352TryUpImgReq) GetImgHeight() int32 { + if x != nil { + return x.ImgHeight + } + return 0 +} + +func (x *D352TryUpImgReq) GetImgType() int32 { + if x != nil { + return x.ImgType + } + return 0 +} + +func (x *D352TryUpImgReq) GetBuildVer() string { + if x != nil { + return x.BuildVer + } + return "" +} + +func (x *D352TryUpImgReq) GetFileIndex() []byte { + if x != nil { + return x.FileIndex + } + return nil +} + +func (x *D352TryUpImgReq) GetFileStoreDays() int32 { + if x != nil { + return x.FileStoreDays + } + return 0 +} + +func (x *D352TryUpImgReq) GetStepFlag() int32 { + if x != nil { + return x.StepFlag + } + return 0 +} + +func (x *D352TryUpImgReq) GetRejectTryFast() int32 { + if x != nil { + return x.RejectTryFast + } + return 0 +} + +func (x *D352TryUpImgReq) GetSrvUpload() int32 { + if x != nil { + return x.SrvUpload + } + return 0 +} + +func (x *D352TryUpImgReq) GetTransferUrl() []byte { + if x != nil { + return x.TransferUrl + } + return nil +} + +type TryUpImgRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FileId int64 `protobuf:"varint,1,opt,name=fileId,proto3" json:"fileId,omitempty"` + ClientIp int32 `protobuf:"varint,2,opt,name=clientIp,proto3" json:"clientIp,omitempty"` + Result int32 `protobuf:"varint,3,opt,name=result,proto3" json:"result,omitempty"` + FailMsg string `protobuf:"bytes,4,opt,name=failMsg,proto3" json:"failMsg,omitempty"` + BoolFileExit bool `protobuf:"varint,5,opt,name=boolFileExit,proto3" json:"boolFileExit,omitempty"` + MsgImgInfo *D352ImgInfo `protobuf:"bytes,6,opt,name=msgImgInfo,proto3" json:"msgImgInfo,omitempty"` + Uint32UpIp []int32 `protobuf:"varint,7,rep,packed,name=uint32UpIp,proto3" json:"uint32UpIp,omitempty"` + Uint32UpPort []int32 `protobuf:"varint,8,rep,packed,name=uint32UpPort,proto3" json:"uint32UpPort,omitempty"` + UpUkey []byte `protobuf:"bytes,9,opt,name=upUkey,proto3" json:"upUkey,omitempty"` + UpResid string `protobuf:"bytes,10,opt,name=upResid,proto3" json:"upResid,omitempty"` + UpUuid string `protobuf:"bytes,11,opt,name=upUuid,proto3" json:"upUuid,omitempty"` + UpOffset int64 `protobuf:"varint,12,opt,name=upOffset,proto3" json:"upOffset,omitempty"` + BlockSize int64 `protobuf:"varint,13,opt,name=blockSize,proto3" json:"blockSize,omitempty"` + EncryptDstip []byte `protobuf:"bytes,14,opt,name=encryptDstip,proto3" json:"encryptDstip,omitempty"` + Roamdays int32 `protobuf:"varint,15,opt,name=roamdays,proto3" json:"roamdays,omitempty"` + MsgUpIp6 []*IPv6Info `protobuf:"bytes,26,rep,name=msgUpIp6,proto3" json:"msgUpIp6,omitempty"` + ClientIp6 []byte `protobuf:"bytes,27,opt,name=clientIp6,proto3" json:"clientIp6,omitempty"` + ThumbDownPara []byte `protobuf:"bytes,60,opt,name=thumbDownPara,proto3" json:"thumbDownPara,omitempty"` + OriginalDownPara []byte `protobuf:"bytes,61,opt,name=originalDownPara,proto3" json:"originalDownPara,omitempty"` + DownDomain []byte `protobuf:"bytes,62,opt,name=downDomain,proto3" json:"downDomain,omitempty"` + BigDownPara []byte `protobuf:"bytes,64,opt,name=bigDownPara,proto3" json:"bigDownPara,omitempty"` + BigThumbDownPara []byte `protobuf:"bytes,65,opt,name=bigThumbDownPara,proto3" json:"bigThumbDownPara,omitempty"` + HttpsUrlFlag int32 `protobuf:"varint,66,opt,name=httpsUrlFlag,proto3" json:"httpsUrlFlag,omitempty"` + MsgInfo4Busi *TryUpInfo4Busi `protobuf:"bytes,1001,opt,name=msgInfo4busi,proto3" json:"msgInfo4busi,omitempty"` +} + +func (x *TryUpImgRsp) Reset() { + *x = TryUpImgRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TryUpImgRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TryUpImgRsp) ProtoMessage() {} + +func (x *TryUpImgRsp) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[9] + 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 TryUpImgRsp.ProtoReflect.Descriptor instead. +func (*TryUpImgRsp) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{9} +} + +func (x *TryUpImgRsp) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *TryUpImgRsp) GetClientIp() int32 { + if x != nil { + return x.ClientIp + } + return 0 +} + +func (x *TryUpImgRsp) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *TryUpImgRsp) GetFailMsg() string { + if x != nil { + return x.FailMsg + } + return "" +} + +func (x *TryUpImgRsp) GetBoolFileExit() bool { + if x != nil { + return x.BoolFileExit + } + return false +} + +func (x *TryUpImgRsp) GetMsgImgInfo() *D352ImgInfo { + if x != nil { + return x.MsgImgInfo + } + return nil +} + +func (x *TryUpImgRsp) GetUint32UpIp() []int32 { + if x != nil { + return x.Uint32UpIp + } + return nil +} + +func (x *TryUpImgRsp) GetUint32UpPort() []int32 { + if x != nil { + return x.Uint32UpPort + } + return nil +} + +func (x *TryUpImgRsp) GetUpUkey() []byte { + if x != nil { + return x.UpUkey + } + return nil +} + +func (x *TryUpImgRsp) GetUpResid() string { + if x != nil { + return x.UpResid + } + return "" +} + +func (x *TryUpImgRsp) GetUpUuid() string { + if x != nil { + return x.UpUuid + } + return "" +} + +func (x *TryUpImgRsp) GetUpOffset() int64 { + if x != nil { + return x.UpOffset + } + return 0 +} + +func (x *TryUpImgRsp) GetBlockSize() int64 { + if x != nil { + return x.BlockSize + } + return 0 +} + +func (x *TryUpImgRsp) GetEncryptDstip() []byte { + if x != nil { + return x.EncryptDstip + } + return nil +} + +func (x *TryUpImgRsp) GetRoamdays() int32 { + if x != nil { + return x.Roamdays + } + return 0 +} + +func (x *TryUpImgRsp) GetMsgUpIp6() []*IPv6Info { + if x != nil { + return x.MsgUpIp6 + } + return nil +} + +func (x *TryUpImgRsp) GetClientIp6() []byte { + if x != nil { + return x.ClientIp6 + } + return nil +} + +func (x *TryUpImgRsp) GetThumbDownPara() []byte { + if x != nil { + return x.ThumbDownPara + } + return nil +} + +func (x *TryUpImgRsp) GetOriginalDownPara() []byte { + if x != nil { + return x.OriginalDownPara + } + return nil +} + +func (x *TryUpImgRsp) GetDownDomain() []byte { + if x != nil { + return x.DownDomain + } + return nil +} + +func (x *TryUpImgRsp) GetBigDownPara() []byte { + if x != nil { + return x.BigDownPara + } + return nil +} + +func (x *TryUpImgRsp) GetBigThumbDownPara() []byte { + if x != nil { + return x.BigThumbDownPara + } + return nil +} + +func (x *TryUpImgRsp) GetHttpsUrlFlag() int32 { + if x != nil { + return x.HttpsUrlFlag + } + return 0 +} + +func (x *TryUpImgRsp) GetMsgInfo4Busi() *TryUpInfo4Busi { + if x != nil { + return x.MsgInfo4Busi + } + return nil +} + +type TryUpInfo4Busi struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FileResid []byte `protobuf:"bytes,1,opt,name=fileResid,proto3" json:"fileResid,omitempty"` + DownDomain []byte `protobuf:"bytes,2,opt,name=downDomain,proto3" json:"downDomain,omitempty"` + ThumbDownUrl []byte `protobuf:"bytes,3,opt,name=thumbDownUrl,proto3" json:"thumbDownUrl,omitempty"` + OriginalDownUrl []byte `protobuf:"bytes,4,opt,name=originalDownUrl,proto3" json:"originalDownUrl,omitempty"` + BigDownUrl []byte `protobuf:"bytes,5,opt,name=bigDownUrl,proto3" json:"bigDownUrl,omitempty"` +} + +func (x *TryUpInfo4Busi) Reset() { + *x = TryUpInfo4Busi{} + if protoimpl.UnsafeEnabled { + mi := &file_cmd0x352_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TryUpInfo4Busi) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TryUpInfo4Busi) ProtoMessage() {} + +func (x *TryUpInfo4Busi) ProtoReflect() protoreflect.Message { + mi := &file_cmd0x352_proto_msgTypes[10] + 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 TryUpInfo4Busi.ProtoReflect.Descriptor instead. +func (*TryUpInfo4Busi) Descriptor() ([]byte, []int) { + return file_cmd0x352_proto_rawDescGZIP(), []int{10} +} + +func (x *TryUpInfo4Busi) GetFileResid() []byte { + if x != nil { + return x.FileResid + } + return nil +} + +func (x *TryUpInfo4Busi) GetDownDomain() []byte { + if x != nil { + return x.DownDomain + } + return nil +} + +func (x *TryUpInfo4Busi) GetThumbDownUrl() []byte { + if x != nil { + return x.ThumbDownUrl + } + return nil +} + +func (x *TryUpInfo4Busi) GetOriginalDownUrl() []byte { + if x != nil { + return x.OriginalDownUrl + } + return nil +} + +func (x *TryUpInfo4Busi) GetBigDownUrl() []byte { + if x != nil { + return x.BigDownUrl + } + return nil +} + +var File_cmd0x352_proto protoreflect.FileDescriptor + +var file_cmd0x352_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x63, 0x6d, 0x64, 0x30, 0x78, 0x33, 0x35, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x71, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, 0x74, 0x68, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, 0x74, 0x68, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x5b, + 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, 0x22, 0xc0, 0x03, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x72, + 0x63, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x72, + 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x72, 0x6c, + 0x46, 0x6c, 0x61, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x72, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x72, 0x63, 0x46, 0x69, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x12, 0x28, + 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6f, 0x6f, + 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, + 0x70, 0x69, 0x63, 0x55, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x69, 0x63, 0x55, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, + 0x65, 0x71, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0xad, + 0x05, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x52, 0x73, 0x70, 0x12, + 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x11, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x68, 0x75, + 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x14, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x62, 0x79, 0x74, 0x65, 0x73, 0x4f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, + 0x0a, 0x6d, 0x73, 0x67, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x44, 0x33, 0x35, 0x32, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0a, 0x6d, 0x73, 0x67, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x75, + 0x69, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x12, + 0x26, 0x0a, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x72, + 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x44, + 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x68, 0x75, 0x6d, 0x62, + 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, + 0x74, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x2a, 0x0a, + 0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, + 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, + 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x77, + 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x64, + 0x6f, 0x77, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x42, 0x69, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x69, 0x67, 0x44, 0x6f, 0x77, 0x6e, + 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, + 0x72, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x62, 0x69, 0x67, 0x44, 0x6f, 0x77, + 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x69, 0x67, 0x54, 0x68, 0x75, 0x6d, + 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x10, 0x62, 0x69, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, + 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x55, 0x72, 0x6c, 0x46, 0x6c, 0x61, + 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x55, 0x72, + 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x29, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x44, 0x6f, 0x77, 0x6e, + 0x49, 0x70, 0x36, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x49, 0x50, 0x76, 0x36, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x36, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x36, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x36, 0x22, 0xd9, + 0x01, 0x0a, 0x0b, 0x44, 0x33, 0x35, 0x32, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, + 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1e, + 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, + 0x6c, 0x65, 0x43, 0x75, 0x74, 0x50, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x66, 0x69, 0x6c, 0x65, 0x43, 0x75, 0x74, 0x50, 0x6f, 0x73, 0x22, 0x30, 0x0a, 0x08, 0x49, 0x50, + 0x76, 0x36, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x36, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x03, 0x69, 0x70, 0x36, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xde, 0x01, 0x0a, + 0x07, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x63, + 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, + 0x12, 0x38, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x75, 0x70, 0x49, 0x6d, 0x67, 0x52, + 0x65, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x44, 0x33, 0x35, 0x32, 0x54, + 0x72, 0x79, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x71, 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x54, + 0x72, 0x79, 0x75, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x71, 0x12, 0x37, 0x0a, 0x0f, 0x6d, 0x73, + 0x67, 0x47, 0x65, 0x74, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x52, + 0x65, 0x71, 0x52, 0x0f, 0x6d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, + 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x0c, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x49, 0x6d, 0x67, + 0x52, 0x65, 0x71, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x65, 0x6c, 0x49, + 0x6d, 0x67, 0x52, 0x65, 0x71, 0x52, 0x0c, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x49, 0x6d, 0x67, + 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x82, 0x02, + 0x0a, 0x07, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, + 0x63, 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, 0x63, 0x6d, + 0x64, 0x12, 0x34, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x75, 0x70, 0x49, 0x6d, 0x67, + 0x52, 0x73, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x54, 0x72, 0x79, 0x55, + 0x70, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x75, + 0x70, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0f, 0x6d, 0x73, 0x67, 0x47, 0x65, + 0x74, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x52, 0x73, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x52, 0x73, 0x70, 0x52, + 0x0f, 0x6d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x52, 0x73, 0x70, + 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x4e, 0x65, 0x77, 0x42, 0x69, 0x67, 0x63, 0x68, + 0x61, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x4e, 0x65, + 0x77, 0x42, 0x69, 0x67, 0x63, 0x68, 0x61, 0x6e, 0x12, 0x2e, 0x0a, 0x0c, 0x6d, 0x73, 0x67, 0x44, + 0x65, 0x6c, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x52, 0x0c, 0x6d, 0x73, 0x67, 0x44, + 0x65, 0x6c, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, + 0x4d, 0x73, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, + 0x73, 0x67, 0x22, 0xab, 0x05, 0x0a, 0x0f, 0x44, 0x33, 0x35, 0x32, 0x54, 0x72, 0x79, 0x55, 0x70, + 0x49, 0x6d, 0x67, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x50, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x50, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x42, 0x6f, 0x6f, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, + 0x74, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x67, 0x4f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, + 0x6d, 0x67, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, + 0x67, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6d, + 0x67, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x67, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6d, 0x67, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6d, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, + 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x79, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x79, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x73, 0x74, 0x65, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x73, 0x74, 0x65, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, + 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x79, 0x46, 0x61, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x79, 0x46, 0x61, 0x73, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x72, 0x76, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x72, 0x76, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x55, 0x72, 0x6c, + 0x22, 0xac, 0x06, 0x0a, 0x0b, 0x54, 0x72, 0x79, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, + 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, + 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x69, + 0x6c, 0x65, 0x45, 0x78, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, + 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x0a, 0x6d, 0x73, + 0x67, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x44, 0x33, 0x35, 0x32, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6d, 0x73, + 0x67, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x75, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, + 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x75, 0x70, + 0x55, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, 0x52, 0x65, 0x73, 0x69, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x70, 0x52, 0x65, 0x73, 0x69, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x70, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x70, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x70, 0x4f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x70, 0x4f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x44, 0x73, 0x74, 0x69, 0x70, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x44, + 0x73, 0x74, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x61, 0x6d, 0x64, 0x61, 0x79, 0x73, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x6f, 0x61, 0x6d, 0x64, 0x61, 0x79, 0x73, + 0x12, 0x25, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x55, 0x70, 0x49, 0x70, 0x36, 0x18, 0x1a, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x49, 0x50, 0x76, 0x36, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6d, + 0x73, 0x67, 0x55, 0x70, 0x49, 0x70, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x70, 0x36, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x70, 0x36, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, + 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x74, 0x68, + 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x6f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, + 0x3d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, + 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x64, 0x6f, 0x77, + 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x67, 0x44, 0x6f, + 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x62, 0x69, + 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x69, 0x67, + 0x54, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, 0x41, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x10, 0x62, 0x69, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, + 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x55, 0x72, + 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x42, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x55, 0x72, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x34, 0x0a, 0x0c, 0x6d, 0x73, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x34, 0x62, 0x75, 0x73, 0x69, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x54, 0x72, 0x79, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x34, 0x42, 0x75, 0x73, + 0x69, 0x52, 0x0c, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x34, 0x62, 0x75, 0x73, 0x69, 0x22, + 0xbc, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x79, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x34, 0x42, 0x75, + 0x73, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x69, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, + 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, + 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x6f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1e, + 0x0a, 0x0a, 0x62, 0x69, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x69, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, 0x42, 0x0c, + 0x5a, 0x0a, 0x2e, 0x3b, 0x63, 0x6d, 0x64, 0x30, 0x78, 0x33, 0x35, 0x32, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_cmd0x352_proto_rawDescOnce sync.Once + file_cmd0x352_proto_rawDescData = file_cmd0x352_proto_rawDesc +) + +func file_cmd0x352_proto_rawDescGZIP() []byte { + file_cmd0x352_proto_rawDescOnce.Do(func() { + file_cmd0x352_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd0x352_proto_rawDescData) + }) + return file_cmd0x352_proto_rawDescData +} + +var file_cmd0x352_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_cmd0x352_proto_goTypes = []interface{}{ + (*DelImgReq)(nil), // 0: DelImgReq + (*DelImgRsp)(nil), // 1: DelImgRsp + (*GetImgUrlReq)(nil), // 2: GetImgUrlReq + (*GetImgUrlRsp)(nil), // 3: GetImgUrlRsp + (*D352ImgInfo)(nil), // 4: D352ImgInfo + (*IPv6Info)(nil), // 5: IPv6Info + (*ReqBody)(nil), // 6: ReqBody + (*RspBody)(nil), // 7: RspBody + (*D352TryUpImgReq)(nil), // 8: D352TryUpImgReq + (*TryUpImgRsp)(nil), // 9: TryUpImgRsp + (*TryUpInfo4Busi)(nil), // 10: TryUpInfo4Busi +} +var file_cmd0x352_proto_depIdxs = []int32{ + 4, // 0: GetImgUrlRsp.msgImgInfo:type_name -> D352ImgInfo + 5, // 1: GetImgUrlRsp.msgDownIp6:type_name -> IPv6Info + 8, // 2: ReqBody.msgTryupImgReq:type_name -> D352TryUpImgReq + 2, // 3: ReqBody.msgGetimgUrlReq:type_name -> GetImgUrlReq + 0, // 4: ReqBody.msgDelImgReq:type_name -> DelImgReq + 9, // 5: RspBody.msgTryupImgRsp:type_name -> TryUpImgRsp + 3, // 6: RspBody.msgGetimgUrlRsp:type_name -> GetImgUrlRsp + 1, // 7: RspBody.msgDelImgRsp:type_name -> DelImgRsp + 4, // 8: TryUpImgRsp.msgImgInfo:type_name -> D352ImgInfo + 5, // 9: TryUpImgRsp.msgUpIp6:type_name -> IPv6Info + 10, // 10: TryUpImgRsp.msgInfo4busi:type_name -> TryUpInfo4Busi + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_cmd0x352_proto_init() } +func file_cmd0x352_proto_init() { + if File_cmd0x352_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_cmd0x352_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelImgReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelImgRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetImgUrlReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetImgUrlRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D352ImgInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IPv6Info); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D352TryUpImgReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TryUpImgRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmd0x352_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TryUpInfo4Busi); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cmd0x352_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_cmd0x352_proto_goTypes, + DependencyIndexes: file_cmd0x352_proto_depIdxs, + MessageInfos: file_cmd0x352_proto_msgTypes, + }.Build() + File_cmd0x352_proto = out.File + file_cmd0x352_proto_rawDesc = nil + file_cmd0x352_proto_goTypes = nil + file_cmd0x352_proto_depIdxs = nil +} diff --git a/client/pb/cmd0x352/cmd0x352.proto b/client/pb/cmd0x352/cmd0x352.proto new file mode 100644 index 00000000..5f3ab99a --- /dev/null +++ b/client/pb/cmd0x352/cmd0x352.proto @@ -0,0 +1,143 @@ +syntax = "proto3"; + +option go_package = ".;cmd0x352"; + +message DelImgReq { + int64 srcUin = 1; + int64 dstUin = 2; + int32 reqTerm = 3; + int32 reqPlatformType = 4; + int32 buType = 5; + bytes buildVer = 6; + bytes fileResid = 7; + int32 picWidth = 8; + int32 picHeight = 9; +} +message DelImgRsp { + int32 result = 1; + bytes failMsg = 2; + bytes fileResid = 3; +} +message GetImgUrlReq { + int64 srcUin = 1; + int64 dstUin = 2; + bytes fileResid = 3; + int32 urlFlag = 4; + int32 urlType = 6; + int32 reqTerm = 7; + int32 reqPlatformType = 8; + int32 srcFileType = 9; + int32 innerIp = 10; + bool boolAddressBook = 11; + int32 buType = 12; + bytes buildVer = 13; + int32 picUpTimestamp = 14; + int32 reqTransferType = 15; +} +message GetImgUrlRsp { + bytes fileResid = 1; + int32 clientIp = 2; + int32 result = 3; + bytes failMsg = 4; + bytes bytesThumbDownUrl = 5; + bytes bytesOriginalDownUrl = 6; + D352ImgInfo msgImgInfo = 7; + repeated int32 uint32DownIp = 8; + repeated int32 uint32DownPort = 9; + bytes thumbDownPara = 10; + bytes originalDownPara = 11; + bytes downDomain = 12; + bytes bytesBigDownUrl = 13; + bytes bigDownPara = 14; + bytes bigThumbDownPara = 15; + int32 httpsUrlFlag = 16; + repeated IPv6Info msgDownIp6 = 26; + bytes clientIp6 = 27; +} +message D352ImgInfo { + bytes fileMd5 = 1; + int32 fileType = 2; + int64 fileSize = 3; + int32 fileWidth = 4; + int32 fileHeight = 5; + int64 fileFlag = 6; + int32 fileCutPos = 7; +} +message IPv6Info { + bytes ip6 = 1; + int32 port = 2; +} +message ReqBody { + int32 subcmd = 1; + repeated D352TryUpImgReq msgTryupImgReq = 2; + repeated GetImgUrlReq msgGetimgUrlReq = 3; + repeated DelImgReq msgDelImgReq = 4; + int32 netType = 10; +} +message RspBody { + int32 subcmd = 1; + repeated TryUpImgRsp msgTryupImgRsp = 2; + repeated GetImgUrlRsp msgGetimgUrlRsp = 3; + bool boolNewBigchan = 4; + repeated DelImgRsp msgDelImgRsp = 5; + string failMsg = 10; +} +message D352TryUpImgReq { + int32 srcUin = 1; + int32 dstUin = 2; + int32 fileId = 3; + bytes fileMd5 = 4; + int32 fileSize = 5; + string filename = 6; + int32 srcTerm = 7; + int32 platformType = 8; + int32 innerIP = 9; + int32 addressBook = 10; + int32 retry = 11; + int32 buType = 12; + int32 imgOriginal = 13; + int32 imgWidth = 14; + int32 imgHeight = 15; + int32 imgType = 16; + string buildVer = 17; + bytes fileIndex = 18; + int32 fileStoreDays = 19; + int32 stepFlag = 20; + int32 rejectTryFast = 21; + int32 srvUpload = 22; + bytes transferUrl = 23; +} +message TryUpImgRsp { + int64 fileId = 1; + int32 clientIp = 2; + int32 result = 3; + string failMsg = 4; + bool boolFileExit = 5; + D352ImgInfo msgImgInfo = 6; + repeated int32 uint32UpIp = 7; + repeated int32 uint32UpPort = 8; + bytes upUkey = 9; + string upResid = 10; + string upUuid = 11; + int64 upOffset = 12; + int64 blockSize = 13; + bytes encryptDstip = 14; + int32 roamdays = 15; + repeated IPv6Info msgUpIp6 = 26; + bytes clientIp6 = 27; + bytes thumbDownPara = 60; + bytes originalDownPara = 61; + bytes downDomain = 62; + bytes bigDownPara = 64; + bytes bigThumbDownPara = 65; + int32 httpsUrlFlag = 66; + TryUpInfo4Busi msgInfo4busi = 1001; +} +message TryUpInfo4Busi { + bytes fileResid = 1; + bytes downDomain = 2; + bytes thumbDownUrl = 3; + bytes originalDownUrl = 4; + bytes bigDownUrl = 5; +} + \ No newline at end of file diff --git a/client/pb/data.proto b/client/pb/data.proto index 0a59a4fb..0d8ea2b5 100644 --- a/client/pb/data.proto +++ b/client/pb/data.proto @@ -2,6 +2,7 @@ syntax = "proto3"; option go_package = ".;pb"; + message DeviceInfo { string bootloader = 1; string procVersion = 2; @@ -120,7 +121,7 @@ message TryUpImgReq { bytes fileIndex = 17; int64 dstUin = 18; int32 srvUpload = 19; - bytes transferUrl = 20; + bytes transferUrl = 20; } message TryUpImgResp { @@ -140,7 +141,7 @@ message ImgInfo { int32 fileType = 2; int64 fileSize = 3; int32 fileWidth = 4; - int32 fileHeight = 5; + int32 fileHeight = 5; } message DeleteMessageRequest { diff --git a/message/elements.go b/message/elements.go index 1e681bdc..8e603c4c 100644 --- a/message/elements.go +++ b/message/elements.go @@ -23,6 +23,12 @@ type GroupImageElement struct { Url string } +type FriendImageElement struct { + ImageId string + Md5 []byte + Url string +} + type FaceElement struct { Index int32 Name string @@ -115,6 +121,10 @@ func (e *GroupImageElement) Type() ElementType { return Image } +func (e *FriendImageElement) Type() ElementType { + return Image +} + func (e *AtElement) Type() ElementType { return At } diff --git a/message/message.go b/message/message.go index 0585b559..ce04e3b6 100644 --- a/message/message.go +++ b/message/message.go @@ -194,6 +194,18 @@ func ToProtoElems(elems []IMessageElement) (r []*msg.Elem) { 0x2D, 0x45, 0x41, 0x45, 0x33, 0x2D, 0x42, 0x33, 0x37, 0x43, 0x2D, 0x31, 0x30, 0x31, 0x46, 0x31, 0x45, 0x45, 0x42, 0x46, 0x35, 0x42, 0x35, 0x7D, 0x2E, 0x70, 0x6E, 0x67, 0x41}, }, }) + case *FriendImageElement: + r = append(r, &msg.Elem{ + NotOnlineImage: &msg.NotOnlineImage{ + FilePath: e.ImageId, + ResId: e.ImageId, + OldPicMd5: false, + PicMd5: e.Md5, + DownloadPath: e.ImageId, + Original: 1, + PbReserve: []byte{0x78, 0x02}, + }, + }) } } return diff --git a/protocol/protocol_global.go b/protocol/protocol_global.go deleted file mode 100644 index 2d0eaff9..00000000 --- a/protocol/protocol_global.go +++ /dev/null @@ -1 +0,0 @@ -package protocol