1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00

feat: qidian protocol support.

This commit is contained in:
Mrs4s 2021-05-03 14:43:39 +08:00
parent 8f474db6a3
commit f2530cc66b
No known key found for this signature in database
GPG Key ID: 3186E98FA19CE3A7
22 changed files with 4684 additions and 148 deletions

View File

@ -42,7 +42,7 @@ func (c *QQClient) buildLoginPacket() (uint16, []byte) {
w.Write(tlv.T1(uint32(c.Uin), SystemDeviceInfo.IpAddress))
w.Write(tlv.T106(uint32(c.Uin), 0, c.version.AppId, c.version.SSOVersion, c.PasswordMd5, true, SystemDeviceInfo.Guid, SystemDeviceInfo.TgtgtKey, 0))
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
w.Write(tlv.T100(c.version.SSOVersion, c.version.AppId, c.version.MainSigMap))
w.Write(tlv.T100(c.version.SSOVersion, c.version.SubAppId, c.version.MainSigMap))
w.Write(tlv.T107(0))
w.Write(tlv.T142(c.version.ApkId))
w.Write(tlv.T144(
@ -91,7 +91,7 @@ func (c *QQClient) buildLoginPacket() (uint16, []byte) {
w.Write(tlv.T521(0))
w.Write(tlv.T525(tlv.T536([]byte{0x01, 0x00})))
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -107,7 +107,7 @@ func (c *QQClient) buildDeviceLockLoginPacket() (uint16, []byte) {
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
w.Write(tlv.T401(c.g))
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -134,7 +134,7 @@ func (c *QQClient) buildQRCodeFetchRequestPacket() (uint16, []byte) {
w.Write(tlv.T35(8))
}))
})
sso := packets.BuildSsoPacket(seq, watch.AppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, watch.AppId, c.version.SubAppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(0, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -157,7 +157,7 @@ func (c *QQClient) buildQRCodeResultQueryRequestPacket(sig []byte) (uint16, []by
w.WriteUInt16(0) // const
}))
})
sso := packets.BuildSsoPacket(seq, watch.AppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, watch.AppId, c.version.SubAppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(0, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -176,7 +176,7 @@ func (c *QQClient) buildQRCodeLoginPacket(t106, t16a, t318 []byte) (uint16, []by
}))
// w.Write(tlv.T106(uint32(c.Uin), 0, c.version.AppId, c.version.SSOVersion, c.PasswordMd5, true, SystemDeviceInfo.Guid, SystemDeviceInfo.TgtgtKey, 0))
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
w.Write(tlv.T100(c.version.SSOVersion, c.version.AppId, c.version.MainSigMap))
w.Write(tlv.T100(c.version.SSOVersion, c.version.SubAppId, c.version.MainSigMap))
w.Write(tlv.T107(0))
w.Write(tlv.T142(c.version.ApkId))
w.Write(tlv.T144(
@ -225,7 +225,7 @@ func (c *QQClient) buildQRCodeLoginPacket(t106, t16a, t318 []byte) (uint16, []by
w.WriteBytesShort(t318)
}))
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -241,7 +241,7 @@ func (c *QQClient) buildCaptchaPacket(result string, sign []byte) (uint16, []byt
w.Write(tlv.T104(c.t104))
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -259,7 +259,7 @@ func (c *QQClient) buildSMSRequestPacket() (uint16, []byte) {
w.Write(tlv.T17A(9))
w.Write(tlv.T197())
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -278,7 +278,7 @@ func (c *QQClient) buildSMSCodeSubmitPacket(code string) (uint16, []byte) {
w.Write(tlv.T401(c.g))
w.Write(tlv.T198())
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -294,7 +294,7 @@ func (c *QQClient) buildTicketSubmitPacket(ticket string) (uint16, []byte) {
w.Write(tlv.T104(c.t104))
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -395,7 +395,7 @@ func (c *QQClient) buildRequestChangeSigPacket() (uint16, []byte) {
}))
// w.Write(tlv.T202(SystemDeviceInfo.WifiBSSID, SystemDeviceInfo.WifiSSID))
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.exchange_emp", SystemDeviceInfo.IMEI, c.sigInfo.tgt, c.OutGoingPacketSessionId, req, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "wtlogin.exchange_emp", SystemDeviceInfo.IMEI, c.sigInfo.tgt, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
@ -443,7 +443,7 @@ func (c *QQClient) buildClientRegisterPacket() (uint16, []byte) {
Context: make(map[string]string),
Status: make(map[string]string),
}
sso := packets.BuildSsoPacket(seq, c.version.AppId, "StatSvc.register", SystemDeviceInfo.IMEI, c.sigInfo.tgt, c.OutGoingPacketSessionId, pkt.ToBytes(), c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "StatSvc.register", SystemDeviceInfo.IMEI, c.sigInfo.tgt, c.OutGoingPacketSessionId, pkt.ToBytes(), c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 1, c.sigInfo.d2Key, sso, c.sigInfo.d2)
return seq, packet
}

View File

@ -43,6 +43,7 @@ type QQClient struct {
GroupList []*GroupInfo
OnlineClients []*OtherClientInfo
Online bool
QiDian *QiDianAccountInfo
// NetLooping bool
SequenceId int32
@ -75,7 +76,7 @@ type QQClient struct {
randSeed []byte // t403
timeDiff int64
sigInfo *loginSigInfo
highwaySession *highwaySessionInfo
bigDataSession *bigDataSessionInfo
srvSsoAddrs []string
otherSrvAddrs []string
fileStorageInfo *jce.FileStoragePushFSSvcList
@ -122,6 +123,15 @@ type loginSigInfo struct {
pt4TokenMap map[string][]byte
}
type QiDianAccountInfo struct {
MasterUin int64
ExtName string
CreateTime int64
bigDataReqAddrs []string
bigDataReqSession *bigDataSessionInfo
}
type handlerInfo struct {
fun func(i interface{}, err error)
params requestParams
@ -410,6 +420,10 @@ func (c *QQClient) init(tokenLogin bool) error {
go c.doHeartbeat()
}
_ = c.RefreshStatus()
if c.version.Protocol == QiDian {
_, _ = c.sendAndWait(c.buildLoginExtraPacket()) // 小登录
_, _ = c.sendAndWait(c.buildConnKeyRequestPacket()) // big data key 如果等待 config push 的话时间来不及
}
seq, pkt := c.buildGetMessageRequestPacket(msg.SyncFlag_START, time.Now().Unix())
_, _ = c.sendAndWait(seq, pkt, requestParams{"used_reg_proxy": true, "init": true})
c.stat.once.Do(func() {
@ -536,8 +550,17 @@ func (c *QQClient) ReloadFriendList() error {
return nil
}
// GetFriendList request friend list
// GetFriendList
// 当使用普通QQ时: 请求好友列表
// 当使用企点QQ时: 请求外部联系人列表
func (c *QQClient) GetFriendList() (*FriendListResponse, error) {
if c.version.Protocol == QiDian {
rsp, err := c.getQiDianAddressDetailList()
if err != nil {
return nil, err
}
return &FriendListResponse{TotalCount: int32(len(rsp)), List: rsp}, nil
}
curFriendCount := 0
r := &FriendListResponse{}
for {
@ -1110,7 +1133,7 @@ func (c *QQClient) doHeartbeat() {
for c.Online {
time.Sleep(time.Second * 30)
seq := c.nextSeq()
sso := packets.BuildSsoPacket(seq, c.version.AppId, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid)
sso := packets.BuildSsoPacket(seq, c.version.AppId, c.version.SubAppId, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 0, []byte{}, sso, []byte{})
_, err := c.sendAndWait(seq, packet)
if errors.Is(err, utils.ErrConnectionClosed) {

View File

@ -346,7 +346,7 @@ func decodePushReqPacket(c *QQClient, _ *incomingPacketInfo, payload []byte) (in
c.fileStorageInfo = list
rsp := cmd0x6ff.C501RspBody{}
if err := proto.Unmarshal(list.BigDataChannel.PbBuf, &rsp); err == nil && rsp.RspBody != nil {
c.highwaySession = &highwaySessionInfo{
c.bigDataSession = &bigDataSessionInfo{
SigSession: rsp.RspBody.SigSession,
SessionKey: rsp.RspBody.SessionKey,
}

View File

@ -279,7 +279,7 @@ type (
Msg *message.GroupMessage
}
highwaySessionInfo struct {
bigDataSessionInfo struct {
SigSession []byte
SessionKey []byte
}
@ -335,6 +335,7 @@ const (
IPad ClientProtocol = 2
AndroidWatch ClientProtocol = 3
MacOS ClientProtocol = 4
QiDian ClientProtocol = 5
)
func (r *UserJoinGroupRequest) Accept() {

View File

@ -107,11 +107,13 @@ type (
SortVersionName string
SdkVersion string
AppId uint32
SubAppId uint32
BuildTime uint32
SSOVersion uint32
MiscBitmap uint32
SubSigmap uint32
MainSigMap uint32
Protocol ClientProtocol
}
incomingPacketInfo struct {
@ -194,6 +196,7 @@ func genVersionInfo(p ClientProtocol) *versionInfo {
return &versionInfo{
ApkId: "com.tencent.mobileqq",
AppId: 537066738,
SubAppId: 537066738,
SortVersionName: "8.5.0",
BuildTime: 1607689988,
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
@ -202,11 +205,13 @@ func genVersionInfo(p ClientProtocol) *versionInfo {
MiscBitmap: 184024956,
SubSigmap: 0x10400,
MainSigMap: 34869472,
Protocol: p,
}
case AndroidWatch:
return &versionInfo{
ApkId: "com.tencent.qqlite",
AppId: 537064446,
SubAppId: 537064446,
SortVersionName: "2.0.5",
BuildTime: 1559564731,
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
@ -215,11 +220,13 @@ func genVersionInfo(p ClientProtocol) *versionInfo {
MiscBitmap: 16252796,
SubSigmap: 0x10400,
MainSigMap: 34869472,
Protocol: p,
}
case IPad:
return &versionInfo{
ApkId: "com.tencent.minihd.qq",
AppId: 537065739,
SubAppId: 537065739,
SortVersionName: "5.8.9",
BuildTime: 1595836208,
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
@ -228,11 +235,13 @@ func genVersionInfo(p ClientProtocol) *versionInfo {
MiscBitmap: 150470524,
SubSigmap: 66560,
MainSigMap: 1970400,
Protocol: p,
}
case MacOS:
return &versionInfo{
ApkId: "com.tencent.minihd.qq",
AppId: 537064315,
SubAppId: 537064315,
SortVersionName: "5.8.9",
BuildTime: 1595836208,
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
@ -241,6 +250,22 @@ func genVersionInfo(p ClientProtocol) *versionInfo {
MiscBitmap: 150470524,
SubSigmap: 66560,
MainSigMap: 1970400,
Protocol: p,
}
case QiDian:
return &versionInfo{
ApkId: "com.tencent.qidian",
AppId: 537061386,
SubAppId: 537036590,
SortVersionName: "3.8.6",
BuildTime: 1556628836,
ApkSign: []byte{160, 30, 236, 171, 133, 233, 227, 186, 43, 15, 106, 21, 140, 133, 92, 41},
SdkVersion: "6.0.0.2365",
SSOVersion: 5,
MiscBitmap: 49807228,
SubSigmap: 66560,
MainSigMap: 34869472,
Protocol: p,
}
}
return nil

View File

@ -234,7 +234,7 @@ func (fs *GroupFileSystem) UploadFile(p, name, folderId string) error {
},
Unknown3: proto.Int32(0),
})
if _, err = fs.client.excitingUploadStream(file, 71, fs.client.highwaySession.SigSession, ext); err != nil {
if _, err = fs.client.excitingUploadStream(file, 71, fs.client.bigDataSession.SigSession, ext); err != nil {
return errors.Wrap(err, "upload failed")
}
_, pkt := fs.client.buildGroupFileFeedsRequest(fs.GroupCode, rsp.FileId, rsp.BusId, rand.Int31())

View File

@ -111,10 +111,10 @@ func (c *QQClient) highwayUploadByBDH(stream io.Reader, length int64, cmdId int3
return nil, errors.New("srv addrs not found. maybe miss some packet?")
}
if encrypt {
if c.highwaySession == nil || len(c.highwaySession.SessionKey) == 0 {
if c.bigDataSession == nil || len(c.bigDataSession.SessionKey) == 0 {
return nil, errors.New("session key not found. maybe miss some packet?")
}
ext = binary.NewTeaCipher(c.highwaySession.SessionKey).Encrypt(ext)
ext = binary.NewTeaCipher(c.bigDataSession.SessionKey).Encrypt(ext)
}
const chunkSize = 8192 * 16
conn, err := net.DialTimeout("tcp", c.srvSsoAddrs[0], time.Second*20)
@ -202,10 +202,10 @@ func (c *QQClient) highwayUploadFileMultiThreadingByBDH(path string, cmdId int32
return nil, errors.New("srv addrs not found. maybe miss some packet?")
}
if encrypt {
if c.highwaySession == nil || len(c.highwaySession.SessionKey) == 0 {
if c.bigDataSession == nil || len(c.bigDataSession.SessionKey) == 0 {
return nil, errors.New("session key not found. maybe miss some packet?")
}
ext = binary.NewTeaCipher(c.highwaySession.SessionKey).Encrypt(ext)
ext = binary.NewTeaCipher(c.bigDataSession.SessionKey).Encrypt(ext)
}
stat, err := os.Stat(path)
if err != nil {

View File

@ -243,7 +243,7 @@ func (c *QQClient) uploadOcrImage(img io.Reader, length int64, sum []byte) (stri
ActionType: proto.Uint32(0),
Uuid: binary.GenUUID(r),
})
rsp, err := c.highwayUploadByBDH(img, length, 76, c.highwaySession.SigSession, sum, ext, false)
rsp, err := c.highwayUploadByBDH(img, length, 76, c.bigDataSession.SigSession, sum, ext, false)
if err != nil {
return "", errors.Wrap(err, "upload ocr image error")
}

View File

@ -0,0 +1,945 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.14.0
// source: cmd0x3f6.proto
package cmd0x3f6
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 C3F6ReqBody struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SubCmd *uint32 `protobuf:"varint,1,opt,name=subCmd" json:"subCmd,omitempty"`
CrmCommonHead *C3F6CRMMsgHead `protobuf:"bytes,2,opt,name=crmCommonHead" json:"crmCommonHead,omitempty"`
SubcmdLoginProcessCompleteReqBody *QDUserLoginProcessCompleteReqBody `protobuf:"bytes,42,opt,name=subcmdLoginProcessCompleteReqBody" json:"subcmdLoginProcessCompleteReqBody,omitempty"`
}
func (x *C3F6ReqBody) Reset() {
*x = C3F6ReqBody{}
if protoimpl.UnsafeEnabled {
mi := &file_cmd0x3f6_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *C3F6ReqBody) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*C3F6ReqBody) ProtoMessage() {}
func (x *C3F6ReqBody) ProtoReflect() protoreflect.Message {
mi := &file_cmd0x3f6_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 C3F6ReqBody.ProtoReflect.Descriptor instead.
func (*C3F6ReqBody) Descriptor() ([]byte, []int) {
return file_cmd0x3f6_proto_rawDescGZIP(), []int{0}
}
func (x *C3F6ReqBody) GetSubCmd() uint32 {
if x != nil && x.SubCmd != nil {
return *x.SubCmd
}
return 0
}
func (x *C3F6ReqBody) GetCrmCommonHead() *C3F6CRMMsgHead {
if x != nil {
return x.CrmCommonHead
}
return nil
}
func (x *C3F6ReqBody) GetSubcmdLoginProcessCompleteReqBody() *QDUserLoginProcessCompleteReqBody {
if x != nil {
return x.SubcmdLoginProcessCompleteReqBody
}
return nil
}
type C3F6RspBody struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SubCmd *uint32 `protobuf:"varint,1,opt,name=subCmd" json:"subCmd,omitempty"`
CrmCommonHead *C3F6CRMMsgHead `protobuf:"bytes,2,opt,name=crmCommonHead" json:"crmCommonHead,omitempty"`
SubcmdLoginProcessCompleteRspBody *QDUserLoginProcessCompleteRspBody `protobuf:"bytes,42,opt,name=subcmdLoginProcessCompleteRspBody" json:"subcmdLoginProcessCompleteRspBody,omitempty"`
}
func (x *C3F6RspBody) Reset() {
*x = C3F6RspBody{}
if protoimpl.UnsafeEnabled {
mi := &file_cmd0x3f6_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *C3F6RspBody) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*C3F6RspBody) ProtoMessage() {}
func (x *C3F6RspBody) ProtoReflect() protoreflect.Message {
mi := &file_cmd0x3f6_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 C3F6RspBody.ProtoReflect.Descriptor instead.
func (*C3F6RspBody) Descriptor() ([]byte, []int) {
return file_cmd0x3f6_proto_rawDescGZIP(), []int{1}
}
func (x *C3F6RspBody) GetSubCmd() uint32 {
if x != nil && x.SubCmd != nil {
return *x.SubCmd
}
return 0
}
func (x *C3F6RspBody) GetCrmCommonHead() *C3F6CRMMsgHead {
if x != nil {
return x.CrmCommonHead
}
return nil
}
func (x *C3F6RspBody) GetSubcmdLoginProcessCompleteRspBody() *QDUserLoginProcessCompleteRspBody {
if x != nil {
return x.SubcmdLoginProcessCompleteRspBody
}
return nil
}
type QDUserLoginProcessCompleteReqBody struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Kfext *uint64 `protobuf:"varint,1,opt,name=kfext" json:"kfext,omitempty"`
Pubno *uint32 `protobuf:"varint,2,opt,name=pubno" json:"pubno,omitempty"`
Buildno *uint32 `protobuf:"varint,3,opt,name=buildno" json:"buildno,omitempty"`
TerminalType *uint32 `protobuf:"varint,4,opt,name=terminalType" json:"terminalType,omitempty"`
Status *uint32 `protobuf:"varint,5,opt,name=status" json:"status,omitempty"`
LoginTime *uint32 `protobuf:"varint,6,opt,name=loginTime" json:"loginTime,omitempty"`
HardwareInfo *string `protobuf:"bytes,7,opt,name=hardwareInfo" json:"hardwareInfo,omitempty"`
SoftwareInfo *string `protobuf:"bytes,8,opt,name=softwareInfo" json:"softwareInfo,omitempty"`
Guid []byte `protobuf:"bytes,9,opt,name=guid" json:"guid,omitempty"`
AppName *string `protobuf:"bytes,10,opt,name=appName" json:"appName,omitempty"`
SubAppId *uint32 `protobuf:"varint,11,opt,name=subAppId" json:"subAppId,omitempty"`
}
func (x *QDUserLoginProcessCompleteReqBody) Reset() {
*x = QDUserLoginProcessCompleteReqBody{}
if protoimpl.UnsafeEnabled {
mi := &file_cmd0x3f6_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QDUserLoginProcessCompleteReqBody) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QDUserLoginProcessCompleteReqBody) ProtoMessage() {}
func (x *QDUserLoginProcessCompleteReqBody) ProtoReflect() protoreflect.Message {
mi := &file_cmd0x3f6_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 QDUserLoginProcessCompleteReqBody.ProtoReflect.Descriptor instead.
func (*QDUserLoginProcessCompleteReqBody) Descriptor() ([]byte, []int) {
return file_cmd0x3f6_proto_rawDescGZIP(), []int{2}
}
func (x *QDUserLoginProcessCompleteReqBody) GetKfext() uint64 {
if x != nil && x.Kfext != nil {
return *x.Kfext
}
return 0
}
func (x *QDUserLoginProcessCompleteReqBody) GetPubno() uint32 {
if x != nil && x.Pubno != nil {
return *x.Pubno
}
return 0
}
func (x *QDUserLoginProcessCompleteReqBody) GetBuildno() uint32 {
if x != nil && x.Buildno != nil {
return *x.Buildno
}
return 0
}
func (x *QDUserLoginProcessCompleteReqBody) GetTerminalType() uint32 {
if x != nil && x.TerminalType != nil {
return *x.TerminalType
}
return 0
}
func (x *QDUserLoginProcessCompleteReqBody) GetStatus() uint32 {
if x != nil && x.Status != nil {
return *x.Status
}
return 0
}
func (x *QDUserLoginProcessCompleteReqBody) GetLoginTime() uint32 {
if x != nil && x.LoginTime != nil {
return *x.LoginTime
}
return 0
}
func (x *QDUserLoginProcessCompleteReqBody) GetHardwareInfo() string {
if x != nil && x.HardwareInfo != nil {
return *x.HardwareInfo
}
return ""
}
func (x *QDUserLoginProcessCompleteReqBody) GetSoftwareInfo() string {
if x != nil && x.SoftwareInfo != nil {
return *x.SoftwareInfo
}
return ""
}
func (x *QDUserLoginProcessCompleteReqBody) GetGuid() []byte {
if x != nil {
return x.Guid
}
return nil
}
func (x *QDUserLoginProcessCompleteReqBody) GetAppName() string {
if x != nil && x.AppName != nil {
return *x.AppName
}
return ""
}
func (x *QDUserLoginProcessCompleteReqBody) GetSubAppId() uint32 {
if x != nil && x.SubAppId != nil {
return *x.SubAppId
}
return 0
}
type QDUserLoginProcessCompleteRspBody struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Ret *RetInfo `protobuf:"bytes,1,opt,name=ret" json:"ret,omitempty"`
Url *string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
Mobile *string `protobuf:"bytes,3,opt,name=mobile" json:"mobile,omitempty"`
ExternalMobile *string `protobuf:"bytes,4,opt,name=externalMobile" json:"externalMobile,omitempty"`
DataAnalysisPriv *bool `protobuf:"varint,5,opt,name=dataAnalysisPriv" json:"dataAnalysisPriv,omitempty"`
DeviceLock *bool `protobuf:"varint,6,opt,name=deviceLock" json:"deviceLock,omitempty"`
ModulePrivilege *uint64 `protobuf:"varint,7,opt,name=modulePrivilege" json:"modulePrivilege,omitempty"`
ModuleSubPrivilege []uint32 `protobuf:"varint,8,rep,name=moduleSubPrivilege" json:"moduleSubPrivilege,omitempty"`
MasterSet *uint32 `protobuf:"varint,9,opt,name=masterSet" json:"masterSet,omitempty"`
ExtSet *uint32 `protobuf:"varint,10,opt,name=extSet" json:"extSet,omitempty"`
CorpConfProperty *uint64 `protobuf:"varint,11,opt,name=corpConfProperty" json:"corpConfProperty,omitempty"`
Corpuin *uint64 `protobuf:"varint,12,opt,name=corpuin" json:"corpuin,omitempty"`
Kfaccount *uint64 `protobuf:"varint,13,opt,name=kfaccount" json:"kfaccount,omitempty"`
SecurityLevel *uint32 `protobuf:"varint,14,opt,name=securityLevel" json:"securityLevel,omitempty"`
MsgTitle *string `protobuf:"bytes,15,opt,name=msgTitle" json:"msgTitle,omitempty"`
SuccNoticeMsg *string `protobuf:"bytes,16,opt,name=succNoticeMsg" json:"succNoticeMsg,omitempty"`
NameAccount *uint64 `protobuf:"varint,17,opt,name=nameAccount" json:"nameAccount,omitempty"`
CrmMigrateFlag *uint32 `protobuf:"varint,18,opt,name=crmMigrateFlag" json:"crmMigrateFlag,omitempty"`
ExtuinName *string `protobuf:"bytes,19,opt,name=extuinName" json:"extuinName,omitempty"`
OpenAccountTime *uint32 `protobuf:"varint,20,opt,name=openAccountTime" json:"openAccountTime,omitempty"`
}
func (x *QDUserLoginProcessCompleteRspBody) Reset() {
*x = QDUserLoginProcessCompleteRspBody{}
if protoimpl.UnsafeEnabled {
mi := &file_cmd0x3f6_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QDUserLoginProcessCompleteRspBody) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QDUserLoginProcessCompleteRspBody) ProtoMessage() {}
func (x *QDUserLoginProcessCompleteRspBody) ProtoReflect() protoreflect.Message {
mi := &file_cmd0x3f6_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 QDUserLoginProcessCompleteRspBody.ProtoReflect.Descriptor instead.
func (*QDUserLoginProcessCompleteRspBody) Descriptor() ([]byte, []int) {
return file_cmd0x3f6_proto_rawDescGZIP(), []int{3}
}
func (x *QDUserLoginProcessCompleteRspBody) GetRet() *RetInfo {
if x != nil {
return x.Ret
}
return nil
}
func (x *QDUserLoginProcessCompleteRspBody) GetUrl() string {
if x != nil && x.Url != nil {
return *x.Url
}
return ""
}
func (x *QDUserLoginProcessCompleteRspBody) GetMobile() string {
if x != nil && x.Mobile != nil {
return *x.Mobile
}
return ""
}
func (x *QDUserLoginProcessCompleteRspBody) GetExternalMobile() string {
if x != nil && x.ExternalMobile != nil {
return *x.ExternalMobile
}
return ""
}
func (x *QDUserLoginProcessCompleteRspBody) GetDataAnalysisPriv() bool {
if x != nil && x.DataAnalysisPriv != nil {
return *x.DataAnalysisPriv
}
return false
}
func (x *QDUserLoginProcessCompleteRspBody) GetDeviceLock() bool {
if x != nil && x.DeviceLock != nil {
return *x.DeviceLock
}
return false
}
func (x *QDUserLoginProcessCompleteRspBody) GetModulePrivilege() uint64 {
if x != nil && x.ModulePrivilege != nil {
return *x.ModulePrivilege
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetModuleSubPrivilege() []uint32 {
if x != nil {
return x.ModuleSubPrivilege
}
return nil
}
func (x *QDUserLoginProcessCompleteRspBody) GetMasterSet() uint32 {
if x != nil && x.MasterSet != nil {
return *x.MasterSet
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetExtSet() uint32 {
if x != nil && x.ExtSet != nil {
return *x.ExtSet
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetCorpConfProperty() uint64 {
if x != nil && x.CorpConfProperty != nil {
return *x.CorpConfProperty
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetCorpuin() uint64 {
if x != nil && x.Corpuin != nil {
return *x.Corpuin
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetKfaccount() uint64 {
if x != nil && x.Kfaccount != nil {
return *x.Kfaccount
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetSecurityLevel() uint32 {
if x != nil && x.SecurityLevel != nil {
return *x.SecurityLevel
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetMsgTitle() string {
if x != nil && x.MsgTitle != nil {
return *x.MsgTitle
}
return ""
}
func (x *QDUserLoginProcessCompleteRspBody) GetSuccNoticeMsg() string {
if x != nil && x.SuccNoticeMsg != nil {
return *x.SuccNoticeMsg
}
return ""
}
func (x *QDUserLoginProcessCompleteRspBody) GetNameAccount() uint64 {
if x != nil && x.NameAccount != nil {
return *x.NameAccount
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetCrmMigrateFlag() uint32 {
if x != nil && x.CrmMigrateFlag != nil {
return *x.CrmMigrateFlag
}
return 0
}
func (x *QDUserLoginProcessCompleteRspBody) GetExtuinName() string {
if x != nil && x.ExtuinName != nil {
return *x.ExtuinName
}
return ""
}
func (x *QDUserLoginProcessCompleteRspBody) GetOpenAccountTime() uint32 {
if x != nil && x.OpenAccountTime != nil {
return *x.OpenAccountTime
}
return 0
}
type RetInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RetCode *uint32 `protobuf:"varint,1,opt,name=retCode" json:"retCode,omitempty"`
ErrorMsg *string `protobuf:"bytes,2,opt,name=errorMsg" json:"errorMsg,omitempty"`
}
func (x *RetInfo) Reset() {
*x = RetInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_cmd0x3f6_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RetInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RetInfo) ProtoMessage() {}
func (x *RetInfo) ProtoReflect() protoreflect.Message {
mi := &file_cmd0x3f6_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 RetInfo.ProtoReflect.Descriptor instead.
func (*RetInfo) Descriptor() ([]byte, []int) {
return file_cmd0x3f6_proto_rawDescGZIP(), []int{4}
}
func (x *RetInfo) GetRetCode() uint32 {
if x != nil && x.RetCode != nil {
return *x.RetCode
}
return 0
}
func (x *RetInfo) GetErrorMsg() string {
if x != nil && x.ErrorMsg != nil {
return *x.ErrorMsg
}
return ""
}
type C3F6CRMMsgHead struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CrmSubCmd *uint32 `protobuf:"varint,1,opt,name=crmSubCmd" json:"crmSubCmd,omitempty"`
HeadLen *uint32 `protobuf:"varint,2,opt,name=headLen" json:"headLen,omitempty"`
VerNo *uint32 `protobuf:"varint,3,opt,name=verNo" json:"verNo,omitempty"`
KfUin *uint64 `protobuf:"varint,4,opt,name=kfUin" json:"kfUin,omitempty"`
Seq *uint32 `protobuf:"varint,5,opt,name=seq" json:"seq,omitempty"`
PackNum *uint32 `protobuf:"varint,6,opt,name=packNum" json:"packNum,omitempty"`
CurPack *uint32 `protobuf:"varint,7,opt,name=curPack" json:"curPack,omitempty"`
BufSig *string `protobuf:"bytes,8,opt,name=bufSig" json:"bufSig,omitempty"`
Clienttype *uint32 `protobuf:"varint,9,opt,name=clienttype" json:"clienttype,omitempty"`
LaborUin *uint64 `protobuf:"varint,10,opt,name=laborUin" json:"laborUin,omitempty"`
LaborName *string `protobuf:"bytes,11,opt,name=laborName" json:"laborName,omitempty"`
Kfaccount *uint64 `protobuf:"varint,12,opt,name=kfaccount" json:"kfaccount,omitempty"`
TraceId *string `protobuf:"bytes,13,opt,name=traceId" json:"traceId,omitempty"`
AppId *uint32 `protobuf:"varint,14,opt,name=appId" json:"appId,omitempty"`
}
func (x *C3F6CRMMsgHead) Reset() {
*x = C3F6CRMMsgHead{}
if protoimpl.UnsafeEnabled {
mi := &file_cmd0x3f6_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *C3F6CRMMsgHead) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*C3F6CRMMsgHead) ProtoMessage() {}
func (x *C3F6CRMMsgHead) ProtoReflect() protoreflect.Message {
mi := &file_cmd0x3f6_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 C3F6CRMMsgHead.ProtoReflect.Descriptor instead.
func (*C3F6CRMMsgHead) Descriptor() ([]byte, []int) {
return file_cmd0x3f6_proto_rawDescGZIP(), []int{5}
}
func (x *C3F6CRMMsgHead) GetCrmSubCmd() uint32 {
if x != nil && x.CrmSubCmd != nil {
return *x.CrmSubCmd
}
return 0
}
func (x *C3F6CRMMsgHead) GetHeadLen() uint32 {
if x != nil && x.HeadLen != nil {
return *x.HeadLen
}
return 0
}
func (x *C3F6CRMMsgHead) GetVerNo() uint32 {
if x != nil && x.VerNo != nil {
return *x.VerNo
}
return 0
}
func (x *C3F6CRMMsgHead) GetKfUin() uint64 {
if x != nil && x.KfUin != nil {
return *x.KfUin
}
return 0
}
func (x *C3F6CRMMsgHead) GetSeq() uint32 {
if x != nil && x.Seq != nil {
return *x.Seq
}
return 0
}
func (x *C3F6CRMMsgHead) GetPackNum() uint32 {
if x != nil && x.PackNum != nil {
return *x.PackNum
}
return 0
}
func (x *C3F6CRMMsgHead) GetCurPack() uint32 {
if x != nil && x.CurPack != nil {
return *x.CurPack
}
return 0
}
func (x *C3F6CRMMsgHead) GetBufSig() string {
if x != nil && x.BufSig != nil {
return *x.BufSig
}
return ""
}
func (x *C3F6CRMMsgHead) GetClienttype() uint32 {
if x != nil && x.Clienttype != nil {
return *x.Clienttype
}
return 0
}
func (x *C3F6CRMMsgHead) GetLaborUin() uint64 {
if x != nil && x.LaborUin != nil {
return *x.LaborUin
}
return 0
}
func (x *C3F6CRMMsgHead) GetLaborName() string {
if x != nil && x.LaborName != nil {
return *x.LaborName
}
return ""
}
func (x *C3F6CRMMsgHead) GetKfaccount() uint64 {
if x != nil && x.Kfaccount != nil {
return *x.Kfaccount
}
return 0
}
func (x *C3F6CRMMsgHead) GetTraceId() string {
if x != nil && x.TraceId != nil {
return *x.TraceId
}
return ""
}
func (x *C3F6CRMMsgHead) GetAppId() uint32 {
if x != nil && x.AppId != nil {
return *x.AppId
}
return 0
}
var File_cmd0x3f6_proto protoreflect.FileDescriptor
var file_cmd0x3f6_proto_rawDesc = []byte{
0x0a, 0x0e, 0x63, 0x6d, 0x64, 0x30, 0x78, 0x33, 0x66, 0x36, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x22, 0xce, 0x01, 0x0a, 0x0b, 0x43, 0x33, 0x46, 0x36, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79,
0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x12, 0x35, 0x0a, 0x0d, 0x63, 0x72, 0x6d, 0x43,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0f, 0x2e, 0x43, 0x33, 0x46, 0x36, 0x43, 0x52, 0x4d, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x61, 0x64,
0x52, 0x0d, 0x63, 0x72, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x12,
0x70, 0x0a, 0x21, 0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x72,
0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71,
0x42, 0x6f, 0x64, 0x79, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x51, 0x44, 0x55,
0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43,
0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x21,
0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x63, 0x65,
0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64,
0x79, 0x22, 0xce, 0x01, 0x0a, 0x0b, 0x43, 0x33, 0x46, 0x36, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64,
0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x12, 0x35, 0x0a, 0x0d, 0x63, 0x72, 0x6d,
0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x0f, 0x2e, 0x43, 0x33, 0x46, 0x36, 0x43, 0x52, 0x4d, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x61,
0x64, 0x52, 0x0d, 0x63, 0x72, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64,
0x12, 0x70, 0x0a, 0x21, 0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50,
0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x73,
0x70, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x51, 0x44,
0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x52,
0x21, 0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x63,
0x65, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x73, 0x70, 0x42, 0x6f,
0x64, 0x79, 0x22, 0xd5, 0x02, 0x0a, 0x21, 0x51, 0x44, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
0x65, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6b, 0x66, 0x65, 0x78,
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6b, 0x66, 0x65, 0x78, 0x74, 0x12, 0x14,
0x0a, 0x05, 0x70, 0x75, 0x62, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x70,
0x75, 0x62, 0x6e, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x6e, 0x6f, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x6e, 0x6f, 0x12, 0x22,
0x0a, 0x0c, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x54, 0x79,
0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f,
0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c,
0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x72, 0x64,
0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c,
0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x12, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
0x67, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a,
0x0a, 0x08, 0x73, 0x75, 0x62, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x08, 0x73, 0x75, 0x62, 0x41, 0x70, 0x70, 0x49, 0x64, 0x22, 0xcd, 0x05, 0x0a, 0x21, 0x51,
0x44, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64, 0x79,
0x12, 0x1a, 0x0a, 0x03, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e,
0x52, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03,
0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16,
0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x2a,
0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x72,
0x69, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x07, 0x20,
0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x69,
0x6c, 0x65, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x75,
0x62, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0d,
0x52, 0x12, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x50, 0x72, 0x69, 0x76, 0x69,
0x6c, 0x65, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65,
0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53,
0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x74, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x06, 0x65, 0x78, 0x74, 0x53, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f,
0x72, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0b,
0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x63, 0x6f, 0x72, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x50, 0x72,
0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x69,
0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x69, 0x6e,
0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x66, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20,
0x01, 0x28, 0x04, 0x52, 0x09, 0x6b, 0x66, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24,
0x0a, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18,
0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c,
0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x74, 0x6c, 0x65,
0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x74, 0x6c, 0x65,
0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x4d, 0x73,
0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x4e, 0x6f, 0x74,
0x69, 0x63, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x63,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d,
0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x6d, 0x4d,
0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0e, 0x63, 0x72, 0x6d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67,
0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x75, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x75, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54,
0x69, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x07, 0x52, 0x65,
0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x1a, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xfa, 0x02, 0x0a, 0x0e,
0x43, 0x33, 0x46, 0x36, 0x43, 0x52, 0x4d, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x61, 0x64, 0x12, 0x1c,
0x0a, 0x09, 0x63, 0x72, 0x6d, 0x53, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x09, 0x63, 0x72, 0x6d, 0x53, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x12, 0x18, 0x0a, 0x07,
0x68, 0x65, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x68,
0x65, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x14, 0x0a, 0x05,
0x6b, 0x66, 0x55, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6b, 0x66, 0x55,
0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x03, 0x73, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x18,
0x0a, 0x07, 0x63, 0x75, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x07, 0x63, 0x75, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x53,
0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x66, 0x53, 0x69, 0x67,
0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x79, 0x70, 0x65,
0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x04, 0x52, 0x08, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
0x6c, 0x61, 0x62, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x66,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6b,
0x66, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63,
0x65, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65,
0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x3b, 0x63, 0x6d,
0x64, 0x30, 0x78, 0x33, 0x66, 0x36,
}
var (
file_cmd0x3f6_proto_rawDescOnce sync.Once
file_cmd0x3f6_proto_rawDescData = file_cmd0x3f6_proto_rawDesc
)
func file_cmd0x3f6_proto_rawDescGZIP() []byte {
file_cmd0x3f6_proto_rawDescOnce.Do(func() {
file_cmd0x3f6_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd0x3f6_proto_rawDescData)
})
return file_cmd0x3f6_proto_rawDescData
}
var file_cmd0x3f6_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_cmd0x3f6_proto_goTypes = []interface{}{
(*C3F6ReqBody)(nil), // 0: C3F6ReqBody
(*C3F6RspBody)(nil), // 1: C3F6RspBody
(*QDUserLoginProcessCompleteReqBody)(nil), // 2: QDUserLoginProcessCompleteReqBody
(*QDUserLoginProcessCompleteRspBody)(nil), // 3: QDUserLoginProcessCompleteRspBody
(*RetInfo)(nil), // 4: RetInfo
(*C3F6CRMMsgHead)(nil), // 5: C3F6CRMMsgHead
}
var file_cmd0x3f6_proto_depIdxs = []int32{
5, // 0: C3F6ReqBody.crmCommonHead:type_name -> C3F6CRMMsgHead
2, // 1: C3F6ReqBody.subcmdLoginProcessCompleteReqBody:type_name -> QDUserLoginProcessCompleteReqBody
5, // 2: C3F6RspBody.crmCommonHead:type_name -> C3F6CRMMsgHead
3, // 3: C3F6RspBody.subcmdLoginProcessCompleteRspBody:type_name -> QDUserLoginProcessCompleteRspBody
4, // 4: QDUserLoginProcessCompleteRspBody.ret:type_name -> RetInfo
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_cmd0x3f6_proto_init() }
func file_cmd0x3f6_proto_init() {
if File_cmd0x3f6_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_cmd0x3f6_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*C3F6ReqBody); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cmd0x3f6_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*C3F6RspBody); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cmd0x3f6_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QDUserLoginProcessCompleteReqBody); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cmd0x3f6_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QDUserLoginProcessCompleteRspBody); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cmd0x3f6_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RetInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cmd0x3f6_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*C3F6CRMMsgHead); 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_cmd0x3f6_proto_rawDesc,
NumEnums: 0,
NumMessages: 6,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_cmd0x3f6_proto_goTypes,
DependencyIndexes: file_cmd0x3f6_proto_depIdxs,
MessageInfos: file_cmd0x3f6_proto_msgTypes,
}.Build()
File_cmd0x3f6_proto = out.File
file_cmd0x3f6_proto_rawDesc = nil
file_cmd0x3f6_proto_goTypes = nil
file_cmd0x3f6_proto_depIdxs = nil
}

View File

@ -0,0 +1,73 @@
syntax = "proto2";
option go_package = ".;cmd0x3f6";
message C3F6ReqBody {
optional uint32 subCmd = 1;
optional C3F6CRMMsgHead crmCommonHead = 2;
optional QDUserLoginProcessCompleteReqBody subcmdLoginProcessCompleteReqBody = 42;
}
message C3F6RspBody {
optional uint32 subCmd = 1;
optional C3F6CRMMsgHead crmCommonHead = 2;
optional QDUserLoginProcessCompleteRspBody subcmdLoginProcessCompleteRspBody = 42;
}
message QDUserLoginProcessCompleteReqBody {
optional uint64 kfext = 1;
optional uint32 pubno = 2;
optional uint32 buildno = 3;
optional uint32 terminalType = 4;
optional uint32 status = 5;
optional uint32 loginTime = 6;
optional string hardwareInfo = 7;
optional string softwareInfo = 8;
optional bytes guid = 9;
optional string appName = 10;
optional uint32 subAppId = 11;
}
message QDUserLoginProcessCompleteRspBody {
optional RetInfo ret = 1;
optional string url = 2;
optional string mobile = 3;
optional string externalMobile = 4;
optional bool dataAnalysisPriv = 5;
optional bool deviceLock = 6;
optional uint64 modulePrivilege = 7;
repeated uint32 moduleSubPrivilege = 8;
optional uint32 masterSet = 9;
optional uint32 extSet = 10;
optional uint64 corpConfProperty = 11;
optional uint64 corpuin = 12;
optional uint64 kfaccount = 13;
optional uint32 securityLevel = 14;
optional string msgTitle = 15;
optional string succNoticeMsg = 16;
optional uint64 nameAccount = 17;
optional uint32 crmMigrateFlag = 18;
optional string extuinName = 19;
optional uint32 openAccountTime = 20;
}
message RetInfo {
optional uint32 retCode = 1;
optional string errorMsg = 2;
}
message C3F6CRMMsgHead {
optional uint32 crmSubCmd = 1;
optional uint32 headLen = 2;
optional uint32 verNo = 3;
optional uint64 kfUin = 4;
optional uint32 seq = 5;
optional uint32 packNum = 6;
optional uint32 curPack = 7;
optional string bufSig = 8;
optional uint32 clienttype = 9;
optional uint64 laborUin = 10;
optional string laborName = 11;
optional uint64 kfaccount = 12;
optional string traceId = 13;
optional uint32 appId = 14;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,119 @@
syntax = "proto2";
option go_package = ".;cmd0x6ff";
message C519CRMMsgHead {
optional uint32 crmSubCmd = 1;
optional uint32 headLen = 2;
optional uint32 verNo = 3;
optional uint64 kfUin = 4;
optional uint32 seq = 5;
optional uint32 packNum = 6;
optional uint32 curPack = 7;
optional string bufSig = 8;
optional uint64 pubQq = 9;
optional uint32 clienttype = 10;
optional uint64 laborUin = 11;
optional string laborName = 12;
optional uint64 puin = 13;
}
message GetNavigationMenuReqBody {
optional uint64 puin = 1;
optional uint64 uin = 2;
optional uint32 verNo = 3;
}
message GetNavigationMenuRspBody {
optional C519RetInfo ret = 1;
optional int32 isShow = 2;
optional string uctMsg = 3;
optional uint32 verNo = 4;
}
message C519ReqBody {
optional uint32 subCmd = 1;
optional C519CRMMsgHead crmCommonHead = 2;
optional GetAddressDetailListReqBody getAddressDetailListReqBody = 33;
optional GetNavigationMenuReqBody getNavigationMenuReq = 35;
}
message C519RetInfo {
optional uint32 retCode = 1;
optional string errorMsg = 2;
}
message C519RspBody {
optional uint32 subCmd = 1;
optional C519CRMMsgHead crmCommonHead = 2;
optional GetAddressDetailListRspBody getAddressDetailListRspBody = 33;
optional GetNavigationMenuRspBody getNavigationMenuRsp = 35;
}
message GetAddressDetailListReqBody {
optional fixed32 timestamp = 1;
optional fixed64 timestamp2 = 2;
}
message GetAddressDetailListRspBody {
optional C519RetInfo ret = 1;
optional fixed32 timestamp = 2;
optional bool full = 3;
repeated AddressDetail addressDetail = 4;
optional fixed64 timestamp2 = 5;
}
message AddressDetail {
optional uint32 aid = 1;
optional fixed32 modifyTime = 2;
optional fixed32 createTime = 3;
optional uint32 status = 4;
optional uint32 groupid = 5;
optional bytes addGroupName = 6;
optional bytes name = 7;
optional uint32 gender = 8;
optional fixed32 birthday = 9;
optional bytes company0 = 10;
optional bytes companyPosition0 = 11;
optional bytes company1 = 12;
optional bytes companyPosition1 = 13;
optional bytes fixedPhone0 = 14;
optional bytes fixedPhone1 = 15;
optional bytes email0 = 16;
optional bytes email1 = 17;
optional bytes fax0 = 18;
optional bytes fax1 = 19;
optional bytes comment = 20;
optional bytes headUrl = 21;
repeated AddressMobileInfo mobilePhone = 22;
optional bool mobilePhoneUpdated = 23;
repeated AddressQQinfo qq = 24;
optional bool qqPhoneUpdated = 25;
optional fixed64 modifyTime2 = 26;
optional NewBizClientRegion clientRegion = 27;
optional NewBizClientRegionCode clientRegionCode = 28;
}
message AddressMobileInfo {
optional uint32 index = 1;
optional bytes account = 2;
optional bytes formattedAccount = 5;
}
message AddressQQinfo {
optional uint32 index = 1;
optional uint64 account = 2;
}
message NewBizClientRegion {
optional string clientNation = 1;
optional string clientProvince = 2;
optional string clientCity = 3;
optional string clientRegion = 4;
}
message NewBizClientRegionCode {
optional uint64 nationid = 1;
optional uint64 provinceid = 2;
optional uint64 cityid = 3;
optional uint64 regionid = 4;
}

View File

@ -1,18 +1,17 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.11.4
// source: busi.proto
// protoc v3.14.0
// source: subcmd0x501.proto
package cmd0x6ff
import (
reflect "reflect"
sync "sync"
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 (
@ -228,11 +227,9 @@ type SubCmd0X501RspBody struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SigSession []byte `protobuf:"bytes,1,opt,name=sigSession" json:"sigSession,omitempty"`
SessionKey []byte `protobuf:"bytes,2,opt,name=sessionKey" json:"sessionKey,omitempty"`
Addrs []*SrvAddrs `protobuf:"bytes,3,rep,name=addrs" json:"addrs,omitempty"`
ShareType *uint32 `protobuf:"varint,12,opt,name=shareType" json:"shareType,omitempty"`
ShareChannel *uint32 `protobuf:"varint,13,opt,name=shareChannel" json:"shareChannel,omitempty"`
SigSession []byte `protobuf:"bytes,1,opt,name=sigSession" json:"sigSession,omitempty"`
SessionKey []byte `protobuf:"bytes,2,opt,name=sessionKey" json:"sessionKey,omitempty"`
Addrs []*SrvAddrs `protobuf:"bytes,3,rep,name=addrs" json:"addrs,omitempty"`
}
func (x *SubCmd0X501RspBody) Reset() {
@ -288,18 +285,59 @@ func (x *SubCmd0X501RspBody) GetAddrs() []*SrvAddrs {
return nil
}
func (x *SubCmd0X501RspBody) GetShareType() uint32 {
if x != nil && x.ShareType != nil {
return *x.ShareType
type SrvAddrs struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServiceType *uint32 `protobuf:"varint,1,opt,name=serviceType" json:"serviceType,omitempty"`
Addrs []*IpAddr `protobuf:"bytes,2,rep,name=addrs" json:"addrs,omitempty"`
}
func (x *SrvAddrs) Reset() {
*x = SrvAddrs{}
if protoimpl.UnsafeEnabled {
mi := &file_subcmd0x501_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SrvAddrs) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SrvAddrs) ProtoMessage() {}
func (x *SrvAddrs) ProtoReflect() protoreflect.Message {
mi := &file_subcmd0x501_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 SrvAddrs.ProtoReflect.Descriptor instead.
func (*SrvAddrs) Descriptor() ([]byte, []int) {
return file_subcmd0x501_proto_rawDescGZIP(), []int{4}
}
func (x *SrvAddrs) GetServiceType() uint32 {
if x != nil && x.ServiceType != nil {
return *x.ServiceType
}
return 0
}
func (x *SubCmd0X501RspBody) GetShareChannel() uint32 {
if x != nil && x.ShareChannel != nil {
return *x.ShareChannel
func (x *SrvAddrs) GetAddrs() []*IpAddr {
if x != nil {
return x.Addrs
}
return 0
return nil
}
type IpAddr struct {
@ -316,7 +354,7 @@ type IpAddr struct {
func (x *IpAddr) Reset() {
*x = IpAddr{}
if protoimpl.UnsafeEnabled {
mi := &file_subcmd0x501_proto_msgTypes[4]
mi := &file_subcmd0x501_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -329,7 +367,7 @@ func (x *IpAddr) String() string {
func (*IpAddr) ProtoMessage() {}
func (x *IpAddr) ProtoReflect() protoreflect.Message {
mi := &file_subcmd0x501_proto_msgTypes[4]
mi := &file_subcmd0x501_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -342,7 +380,7 @@ func (x *IpAddr) ProtoReflect() protoreflect.Message {
// Deprecated: Use IpAddr.ProtoReflect.Descriptor instead.
func (*IpAddr) Descriptor() ([]byte, []int) {
return file_subcmd0x501_proto_rawDescGZIP(), []int{4}
return file_subcmd0x501_proto_rawDescGZIP(), []int{5}
}
func (x *IpAddr) GetType() uint32 {
@ -373,61 +411,6 @@ func (x *IpAddr) GetArea() uint32 {
return 0
}
type SrvAddrs struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ServiceType *uint32 `protobuf:"varint,1,opt,name=serviceType" json:"serviceType,omitempty"`
Addrs []*IpAddr `protobuf:"bytes,2,rep,name=addrs" json:"addrs,omitempty"`
}
func (x *SrvAddrs) Reset() {
*x = SrvAddrs{}
if protoimpl.UnsafeEnabled {
mi := &file_subcmd0x501_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SrvAddrs) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SrvAddrs) ProtoMessage() {}
func (x *SrvAddrs) ProtoReflect() protoreflect.Message {
mi := &file_subcmd0x501_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 SrvAddrs.ProtoReflect.Descriptor instead.
func (*SrvAddrs) Descriptor() ([]byte, []int) {
return file_subcmd0x501_proto_rawDescGZIP(), []int{5}
}
func (x *SrvAddrs) GetServiceType() uint32 {
if x != nil && x.ServiceType != nil {
return *x.ServiceType
}
return 0
}
func (x *SrvAddrs) GetAddrs() []*IpAddr {
if x != nil {
return x.Addrs
}
return nil
}
var File_subcmd0x501_proto protoreflect.FileDescriptor
var file_subcmd0x501_proto_rawDesc = []byte{
@ -455,30 +438,26 @@ var file_subcmd0x501_proto_rawDesc = []byte{
0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54,
0x79, 0x70, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18,
0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x62, 0x69, 0x64, 0x22, 0xb7, 0x01, 0x0a, 0x12, 0x53,
0x75, 0x62, 0x43, 0x6d, 0x64, 0x30, 0x78, 0x35, 0x30, 0x31, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64,
0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65,
0x79, 0x12, 0x1f, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x09, 0x2e, 0x53, 0x72, 0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x52, 0x05, 0x61, 0x64, 0x64,
0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18,
0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65,
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x54, 0x0a, 0x06, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12,
0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79,
0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02,
0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x22, 0x4b, 0x0a, 0x08, 0x53, 0x72,
0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72,
0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x3b, 0x63, 0x6d, 0x64,
0x30, 0x78, 0x36, 0x66, 0x66,
0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x62, 0x69, 0x64, 0x22, 0x75, 0x0a, 0x12, 0x53, 0x75,
0x62, 0x43, 0x6d, 0x64, 0x30, 0x78, 0x35, 0x30, 0x31, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64, 0x79,
0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79,
0x12, 0x1f, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x09, 0x2e, 0x53, 0x72, 0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72,
0x73, 0x22, 0x4b, 0x0a, 0x08, 0x53, 0x72, 0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x20, 0x0a,
0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
0x1d, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07,
0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x22, 0x54,
0x0a, 0x06, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04,
0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74,
0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04,
0x61, 0x72, 0x65, 0x61, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x3b, 0x63, 0x6d, 0x64, 0x30, 0x78, 0x36,
0x66, 0x66,
}
var (
@ -499,14 +478,14 @@ var file_subcmd0x501_proto_goTypes = []interface{}{
(*C501RspBody)(nil), // 1: C501RspBody
(*SubCmd0X501ReqBody)(nil), // 2: SubCmd0x501ReqBody
(*SubCmd0X501RspBody)(nil), // 3: SubCmd0x501RspBody
(*IpAddr)(nil), // 4: IpAddr
(*SrvAddrs)(nil), // 5: SrvAddrs
(*SrvAddrs)(nil), // 4: SrvAddrs
(*IpAddr)(nil), // 5: IpAddr
}
var file_subcmd0x501_proto_depIdxs = []int32{
2, // 0: C501ReqBody.ReqBody:type_name -> SubCmd0x501ReqBody
3, // 1: C501RspBody.RspBody:type_name -> SubCmd0x501RspBody
5, // 2: SubCmd0x501RspBody.addrs:type_name -> SrvAddrs
4, // 3: SrvAddrs.addrs:type_name -> IpAddr
4, // 2: SubCmd0x501RspBody.addrs:type_name -> SrvAddrs
5, // 3: SrvAddrs.addrs:type_name -> IpAddr
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
@ -569,7 +548,7 @@ func file_subcmd0x501_proto_init() {
}
}
file_subcmd0x501_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IpAddr); i {
switch v := v.(*SrvAddrs); i {
case 0:
return &v.state
case 1:
@ -581,7 +560,7 @@ func file_subcmd0x501_proto_init() {
}
}
file_subcmd0x501_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SrvAddrs); i {
switch v := v.(*IpAddr); i {
case 0:
return &v.state
case 1:

1476
client/pb/msg/head.pb.go Normal file

File diff suppressed because it is too large Load Diff

123
client/pb/msg/head.proto Normal file
View File

@ -0,0 +1,123 @@
syntax = "proto2";
option go_package = ".;msg";
message C2CHead {
optional uint64 toUin = 1;
optional uint64 fromUin = 2;
optional uint32 ccType = 3;
optional uint32 ccCmd = 4;
optional bytes authPicSig = 5;
optional bytes authSig = 6;
optional bytes authBuf = 7;
optional uint32 serverTime = 8;
optional uint32 clientTime = 9;
optional uint32 rand = 10;
optional string phoneNumber = 11;
}
message CSHead {
optional uint64 uin = 1;
optional uint32 command = 2;
optional uint32 seq = 3;
optional uint32 version = 4;
optional uint32 retryTimes = 5;
optional uint32 clientType = 6;
optional uint32 pubno = 7;
optional uint32 localid = 8;
optional uint32 timezone = 9;
optional fixed32 clientIp = 10;
optional uint32 clientPort = 11;
optional fixed32 connIp = 12;
optional uint32 connPort = 13;
optional fixed32 interfaceIp = 14;
optional uint32 interfacePort = 15;
optional fixed32 actualIp = 16;
optional uint32 flag = 17;
optional fixed32 timestamp = 18;
optional uint32 subcmd = 19;
optional uint32 result = 20;
optional uint32 appId = 21;
optional uint32 instanceId = 22;
optional uint64 sessionId = 23;
optional uint32 idcId = 24;
}
message DeltaHead {
optional uint64 totalLen = 1;
optional uint64 offset = 2;
optional uint64 ackOffset = 3;
optional bytes cookie = 4;
optional bytes ackCookie = 5;
optional uint32 result = 6;
optional uint32 flags = 7;
}
message IMHead {
optional uint32 headType = 1;
optional CSHead csHead = 2;
optional S2CHead s2CHead = 3;
optional HttpConnHead httpconnHead = 4;
optional uint32 paintFlag = 5;
optional LoginSig loginSig = 6;
optional DeltaHead deltaHead = 7;
optional C2CHead c2CHead = 8;
}
message HttpConnHead {
optional uint64 uin = 1;
optional uint32 command = 2;
optional uint32 subCommand = 3;
optional uint32 seq = 4;
optional uint32 version = 5;
optional uint32 retryTimes = 6;
optional uint32 clientType = 7;
optional uint32 pubNo = 8;
optional uint32 localId = 9;
optional uint32 timeZone = 10;
optional fixed32 clientIp = 11;
optional uint32 clientPort = 12;
optional fixed32 qzhttpIp = 13;
optional uint32 qzhttpPort = 14;
optional fixed32 sppIp = 15;
optional uint32 sppPort = 16;
optional uint32 flag = 17;
optional bytes key = 18;
optional uint32 compressType = 19;
optional uint32 originSize = 20;
optional uint32 errorCode = 21;
optional RedirectMsg redirect = 22;
optional uint32 commandId = 23;
optional uint32 serviceCmdid = 24;
optional TransOidbHead oidbhead = 25;
}
message LoginSig {
optional uint32 type = 1;
optional bytes sig = 2;
}
message RedirectMsg {
optional fixed32 lastRedirectIp = 1;
optional uint32 lastRedirectPort = 2;
optional fixed32 redirectIp = 3;
optional uint32 redirectPort = 4;
optional uint32 redirectCount = 5;
}
message S2CHead {
optional uint32 subMsgtype = 1;
optional uint32 msgType = 2;
optional uint64 fromUin = 3;
optional uint32 msgId = 4;
optional fixed32 relayIp = 5;
optional uint32 relayPort = 6;
optional uint64 toUin = 7;
}
message TransOidbHead {
optional uint32 command = 1;
optional uint32 serviceType = 2;
optional uint32 result = 3;
optional string errorMsg = 4;
}

View File

@ -1,18 +1,17 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc-gen-go v1.25.0
// protoc v3.14.0
// source: msg.proto
package msg
import (
reflect "reflect"
sync "sync"
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 (

View File

@ -1,18 +1,17 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc-gen-go v1.25.0
// protoc v3.14.0
// source: objmsg.proto
package msg
import (
reflect "reflect"
sync "sync"
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 (

View File

@ -1,18 +1,17 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc-gen-go v1.25.0
// protoc v3.14.0
// source: report.proto
package msg
import (
reflect "reflect"
sync "sync"
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 (

View File

@ -31,7 +31,7 @@ func (c *QQClient) UploadGroupPtt(groupCode int64, voice io.ReadSeeker) (*messag
fh := h.Sum(nil)
_, _ = voice.Seek(0, io.SeekStart)
ext := c.buildGroupPttStoreBDHExt(groupCode, fh[:], int32(length), 0, int32(length))
rsp, err := c.highwayUploadByBDH(voice, length, 29, c.highwaySession.SigSession, fh, ext, false)
rsp, err := c.highwayUploadByBDH(voice, length, 29, c.bigDataSession.SigSession, fh, ext, false)
if err != nil {
return nil, err
}
@ -66,7 +66,7 @@ func (c *QQClient) UploadPrivatePtt(target int64, voice io.ReadSeeker) (*message
fh := h.Sum(nil)
_, _ = voice.Seek(0, io.SeekStart)
ext := c.buildC2CPttStoreBDHExt(target, fh[:], int32(length), int32(length))
rsp, err := c.highwayUploadByBDH(voice, length, 26, c.highwaySession.SigSession, fh, ext, false)
rsp, err := c.highwayUploadByBDH(voice, length, 26, c.bigDataSession.SigSession, fh, ext, false)
if err != nil {
return nil, err
}
@ -132,14 +132,14 @@ func (c *QQClient) UploadGroupShortVideo(groupCode int64, video, thumb io.ReadSe
return err
}
if err != nil || cp() != nil {
hwRsp, err = c.highwayUploadByBDH(multi, length, 25, c.highwaySession.SigSession, fh, ext, true)
hwRsp, err = c.highwayUploadByBDH(multi, length, 25, c.bigDataSession.SigSession, fh, ext, true)
} else {
_ = file.Close()
hwRsp, err = c.highwayUploadFileMultiThreadingByBDH(cache, 25, 8, c.highwaySession.SigSession, ext, true)
hwRsp, err = c.highwayUploadFileMultiThreadingByBDH(cache, 25, 8, c.bigDataSession.SigSession, ext, true)
_ = os.Remove(cache)
}
} else {
hwRsp, err = c.highwayUploadByBDH(multi, length, 25, c.highwaySession.SigSession, fh, ext, true)
hwRsp, err = c.highwayUploadByBDH(multi, length, 25, c.bigDataSession.SigSession, fh, ext, true)
}
if err != nil {
return nil, errors.Wrap(err, "upload video file error")

191
client/qidian.go Normal file
View File

@ -0,0 +1,191 @@
// 企点协议相关特殊逻辑
package client
import (
"bytes"
"fmt"
"github.com/Mrs4s/MiraiGo/binary"
"github.com/Mrs4s/MiraiGo/client/pb/cmd0x3f6"
"github.com/Mrs4s/MiraiGo/client/pb/cmd0x6ff"
"github.com/Mrs4s/MiraiGo/client/pb/msg"
"github.com/Mrs4s/MiraiGo/protocol/packets"
"github.com/Mrs4s/MiraiGo/utils"
"github.com/golang/protobuf/proto"
"github.com/pkg/errors"
"io/ioutil"
"net/http"
)
func init() {
decoders["qidianservice.69"] = decodeLoginExtraResponse
decoders["HttpConn.0x6ff_501"] = decodeConnKeyResponse
}
// getQiDianAddressDetailList 外部联系人列表
func (c *QQClient) getQiDianAddressDetailList() ([]*FriendInfo, error) {
req := &cmd0x6ff.C519ReqBody{
SubCmd: proto.Uint32(33),
CrmCommonHead: &cmd0x6ff.C519CRMMsgHead{
KfUin: proto.Uint64(uint64(c.QiDian.MasterUin)),
VerNo: proto.Uint32(uint32(utils.ConvertSubVersionToInt(c.version.SortVersionName))),
CrmSubCmd: proto.Uint32(33),
LaborUin: proto.Uint64(uint64(c.Uin)),
},
GetAddressDetailListReqBody: &cmd0x6ff.GetAddressDetailListReqBody{
Timestamp2: proto.Uint64(0),
},
}
rspData, err := c.bigDataRequest(1305, req)
if err != nil {
return nil, errors.Wrap(err, "request error")
}
rsp := &cmd0x6ff.C519RspBody{}
if err = proto.Unmarshal(rspData, rsp); err != nil {
return nil, errors.Wrap(err, "unmarshal error")
}
if rsp.GetAddressDetailListRspBody == nil {
return nil, errors.New("rsp body is nil")
}
ret := []*FriendInfo{}
for _, detail := range rsp.GetAddressDetailListRspBody.AddressDetail {
if len(detail.Qq) == 0 {
c.Warning("address detail %v QQ is 0", string(detail.Name))
continue
}
ret = append(ret, &FriendInfo{
Uin: int64(detail.Qq[0].GetAccount()),
Nickname: string(detail.Name),
})
}
return ret, nil
}
func (c *QQClient) buildLoginExtraPacket() (uint16, []byte) {
seq := c.nextSeq()
req := &cmd0x3f6.C3F6ReqBody{
SubCmd: proto.Uint32(69),
CrmCommonHead: &cmd0x3f6.C3F6CRMMsgHead{
CrmSubCmd: proto.Uint32(69),
VerNo: proto.Uint32(uint32(utils.ConvertSubVersionToInt(c.version.SortVersionName))),
Clienttype: proto.Uint32(2),
},
SubcmdLoginProcessCompleteReqBody: &cmd0x3f6.QDUserLoginProcessCompleteReqBody{
Kfext: proto.Uint64(uint64(c.Uin)),
Pubno: &c.version.AppId,
Buildno: proto.Uint32(uint32(utils.ConvertSubVersionToInt(c.version.SortVersionName))),
TerminalType: proto.Uint32(2),
Status: proto.Uint32(10),
LoginTime: proto.Uint32(5),
HardwareInfo: proto.String(string(SystemDeviceInfo.Model)),
SoftwareInfo: proto.String(string(SystemDeviceInfo.Version.Release)),
Guid: SystemDeviceInfo.Guid,
AppName: &c.version.ApkId,
SubAppId: &c.version.AppId,
},
}
payload, _ := proto.Marshal(req)
packet := packets.BuildUniPacket(c.Uin, seq, "qidianservice.69", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload)
return seq, packet
}
func (c *QQClient) buildConnKeyRequestPacket() (uint16, []byte) {
seq := c.nextSeq()
req := &cmd0x6ff.C501ReqBody{
ReqBody: &cmd0x6ff.SubCmd0X501ReqBody{
Uin: proto.Uint64(uint64(c.Uin)),
IdcId: proto.Uint32(0),
Appid: proto.Uint32(16),
LoginSigType: proto.Uint32(1),
RequestFlag: proto.Uint32(3),
ServiceTypes: []uint32{1},
},
}
payload, _ := proto.Marshal(req)
packet := packets.BuildUniPacket(c.Uin, seq, "HttpConn.0x6ff_501", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload)
return seq, packet
}
func (c *QQClient) bigDataRequest(subCmd uint32, req proto.Message) ([]byte, error) {
if c.QiDian.bigDataReqSession == nil {
return nil, errors.New("please call conn key request method before")
}
data, _ := proto.Marshal(req)
head, _ := proto.Marshal(&msg.IMHead{
HeadType: proto.Uint32(4),
HttpconnHead: &msg.HttpConnHead{
Uin: proto.Uint64(uint64(c.Uin)),
Command: proto.Uint32(1791),
SubCommand: &subCmd,
Seq: proto.Uint32(uint32(c.nextHighwayApplySeq())),
Version: proto.Uint32(386), // todo: short version convert
Flag: proto.Uint32(1),
CompressType: proto.Uint32(0),
ErrorCode: proto.Uint32(0),
},
LoginSig: &msg.LoginSig{
Type: proto.Uint32(22),
Sig: c.QiDian.bigDataReqSession.SigSession,
},
})
tea := binary.NewTeaCipher(c.QiDian.bigDataReqSession.SessionKey)
body := tea.Encrypt(data)
url := fmt.Sprintf("http://%v/cgi-bin/httpconn", c.QiDian.bigDataReqAddrs[0])
httpReq, _ := http.NewRequest("POST", url, bytes.NewReader(binary.NewWriterF(func(w *binary.Writer) {
w.WriteByte(40)
w.WriteUInt32(uint32(len(head)))
w.WriteUInt32(uint32(len(body)))
w.Write(head)
w.Write(body)
w.WriteByte(41)
})))
rsp, err := http.DefaultClient.Do(httpReq)
if err != nil {
return nil, errors.Wrap(err, "request error")
}
rspBody, _ := ioutil.ReadAll(rsp.Body)
r := binary.NewReader(rspBody)
r.ReadByte()
l1 := int(r.ReadInt32())
l2 := int(r.ReadInt32())
r.ReadBytes(l1)
payload := r.ReadBytes(l2)
return tea.Decrypt(payload), nil
}
func decodeLoginExtraResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) {
rsp := cmd0x3f6.C3F6RspBody{}
if err := proto.Unmarshal(payload, &rsp); err != nil {
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
}
if rsp.SubcmdLoginProcessCompleteRspBody == nil {
return nil, errors.New("login process resp is nil")
}
c.QiDian = &QiDianAccountInfo{
MasterUin: int64(rsp.SubcmdLoginProcessCompleteRspBody.GetCorpuin()),
ExtName: rsp.SubcmdLoginProcessCompleteRspBody.GetExtuinName(),
CreateTime: int64(rsp.SubcmdLoginProcessCompleteRspBody.GetOpenAccountTime()),
}
return nil, nil
}
func decodeConnKeyResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) {
rsp := cmd0x6ff.C501RspBody{}
if err := proto.Unmarshal(payload, &rsp); err != nil {
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
}
if c.QiDian == nil {
return nil, errors.New("please call login extra before")
}
c.QiDian.bigDataReqSession = &bigDataSessionInfo{
SigSession: rsp.RspBody.SigSession,
SessionKey: rsp.RspBody.SessionKey,
}
for _, srv := range rsp.RspBody.Addrs {
if srv.GetServiceType() == 1 {
for _, addr := range srv.Addrs {
c.QiDian.bigDataReqAddrs = append(c.QiDian.bigDataReqAddrs, fmt.Sprintf("%v:%v", binary.UInt32ToIPV4Address(addr.GetIp()), addr.GetPort()))
}
}
}
return nil, nil
}

View File

@ -72,12 +72,12 @@ func BuildCode2DRequestPacket(seq uint32, j uint64, cmd uint16, bodyFunc func(wr
})
}
func BuildSsoPacket(seq uint16, appID uint32, commandName, imei string, extData, outPacketSessionId, body, ksid []byte) []byte {
func BuildSsoPacket(seq uint16, appID, subAppID uint32, commandName, imei string, extData, outPacketSessionId, body, ksid []byte) []byte {
return binary.NewWriterF(func(p *binary.Writer) {
p.WriteIntLvPacket(4, func(writer *binary.Writer) {
writer.WriteUInt32(uint32(seq))
writer.WriteUInt32(appID)
writer.WriteUInt32(appID)
writer.WriteUInt32(subAppID)
writer.Write([]byte{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00})
if len(extData) == 0 || len(extData) == 4 {
writer.WriteUInt32(0x04)

View File

@ -5,6 +5,8 @@ import (
"crypto/rand"
"math/big"
"reflect"
"strconv"
"strings"
"unsafe"
)
@ -62,6 +64,11 @@ func ChineseLength(str string, limit int) int {
return sum
}
func ConvertSubVersionToInt(str string) int32 {
i, _ := strconv.ParseInt(strings.Join(strings.Split(str, "."), ""), 10, 64)
return int32(i) * 10
}
// B2S converts byte slice to a string without memory allocation.
// See https://groups.google.com/forum/#!msg/Golang-Nuts/ENgbUzYvCuU/90yGx7GUAgAJ .
// from github.com/savsgio/gotils/strconv