mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
feat: qidian protocol support.
This commit is contained in:
parent
8f474db6a3
commit
f2530cc66b
@ -42,7 +42,7 @@ func (c *QQClient) buildLoginPacket() (uint16, []byte) {
|
|||||||
w.Write(tlv.T1(uint32(c.Uin), SystemDeviceInfo.IpAddress))
|
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.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.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.T107(0))
|
||||||
w.Write(tlv.T142(c.version.ApkId))
|
w.Write(tlv.T142(c.version.ApkId))
|
||||||
w.Write(tlv.T144(
|
w.Write(tlv.T144(
|
||||||
@ -91,7 +91,7 @@ func (c *QQClient) buildLoginPacket() (uint16, []byte) {
|
|||||||
w.Write(tlv.T521(0))
|
w.Write(tlv.T521(0))
|
||||||
w.Write(tlv.T525(tlv.T536([]byte{0x01, 0x00})))
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
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.T116(c.version.MiscBitmap, c.version.SubSigmap))
|
||||||
w.Write(tlv.T401(c.g))
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ func (c *QQClient) buildQRCodeFetchRequestPacket() (uint16, []byte) {
|
|||||||
w.Write(tlv.T35(8))
|
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{})
|
packet := packets.BuildLoginPacket(0, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ func (c *QQClient) buildQRCodeResultQueryRequestPacket(sig []byte) (uint16, []by
|
|||||||
w.WriteUInt16(0) // const
|
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{})
|
packet := packets.BuildLoginPacket(0, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
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.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.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.T107(0))
|
||||||
w.Write(tlv.T142(c.version.ApkId))
|
w.Write(tlv.T142(c.version.ApkId))
|
||||||
w.Write(tlv.T144(
|
w.Write(tlv.T144(
|
||||||
@ -225,7 +225,7 @@ func (c *QQClient) buildQRCodeLoginPacket(t106, t16a, t318 []byte) (uint16, []by
|
|||||||
w.WriteBytesShort(t318)
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
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.T104(c.t104))
|
||||||
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
@ -259,7 +259,7 @@ func (c *QQClient) buildSMSRequestPacket() (uint16, []byte) {
|
|||||||
w.Write(tlv.T17A(9))
|
w.Write(tlv.T17A(9))
|
||||||
w.Write(tlv.T197())
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
@ -278,7 +278,7 @@ func (c *QQClient) buildSMSCodeSubmitPacket(code string) (uint16, []byte) {
|
|||||||
w.Write(tlv.T401(c.g))
|
w.Write(tlv.T401(c.g))
|
||||||
w.Write(tlv.T198())
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
@ -294,7 +294,7 @@ func (c *QQClient) buildTicketSubmitPacket(ticket string) (uint16, []byte) {
|
|||||||
w.Write(tlv.T104(c.t104))
|
w.Write(tlv.T104(c.t104))
|
||||||
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
@ -395,7 +395,7 @@ func (c *QQClient) buildRequestChangeSigPacket() (uint16, []byte) {
|
|||||||
}))
|
}))
|
||||||
// w.Write(tlv.T202(SystemDeviceInfo.WifiBSSID, SystemDeviceInfo.WifiSSID))
|
// 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{})
|
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
@ -443,7 +443,7 @@ func (c *QQClient) buildClientRegisterPacket() (uint16, []byte) {
|
|||||||
Context: make(map[string]string),
|
Context: make(map[string]string),
|
||||||
Status: 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)
|
packet := packets.BuildLoginPacket(c.Uin, 1, c.sigInfo.d2Key, sso, c.sigInfo.d2)
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ type QQClient struct {
|
|||||||
GroupList []*GroupInfo
|
GroupList []*GroupInfo
|
||||||
OnlineClients []*OtherClientInfo
|
OnlineClients []*OtherClientInfo
|
||||||
Online bool
|
Online bool
|
||||||
|
QiDian *QiDianAccountInfo
|
||||||
// NetLooping bool
|
// NetLooping bool
|
||||||
|
|
||||||
SequenceId int32
|
SequenceId int32
|
||||||
@ -75,7 +76,7 @@ type QQClient struct {
|
|||||||
randSeed []byte // t403
|
randSeed []byte // t403
|
||||||
timeDiff int64
|
timeDiff int64
|
||||||
sigInfo *loginSigInfo
|
sigInfo *loginSigInfo
|
||||||
highwaySession *highwaySessionInfo
|
bigDataSession *bigDataSessionInfo
|
||||||
srvSsoAddrs []string
|
srvSsoAddrs []string
|
||||||
otherSrvAddrs []string
|
otherSrvAddrs []string
|
||||||
fileStorageInfo *jce.FileStoragePushFSSvcList
|
fileStorageInfo *jce.FileStoragePushFSSvcList
|
||||||
@ -122,6 +123,15 @@ type loginSigInfo struct {
|
|||||||
pt4TokenMap map[string][]byte
|
pt4TokenMap map[string][]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type QiDianAccountInfo struct {
|
||||||
|
MasterUin int64
|
||||||
|
ExtName string
|
||||||
|
CreateTime int64
|
||||||
|
|
||||||
|
bigDataReqAddrs []string
|
||||||
|
bigDataReqSession *bigDataSessionInfo
|
||||||
|
}
|
||||||
|
|
||||||
type handlerInfo struct {
|
type handlerInfo struct {
|
||||||
fun func(i interface{}, err error)
|
fun func(i interface{}, err error)
|
||||||
params requestParams
|
params requestParams
|
||||||
@ -410,6 +420,10 @@ func (c *QQClient) init(tokenLogin bool) error {
|
|||||||
go c.doHeartbeat()
|
go c.doHeartbeat()
|
||||||
}
|
}
|
||||||
_ = c.RefreshStatus()
|
_ = 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())
|
seq, pkt := c.buildGetMessageRequestPacket(msg.SyncFlag_START, time.Now().Unix())
|
||||||
_, _ = c.sendAndWait(seq, pkt, requestParams{"used_reg_proxy": true, "init": true})
|
_, _ = c.sendAndWait(seq, pkt, requestParams{"used_reg_proxy": true, "init": true})
|
||||||
c.stat.once.Do(func() {
|
c.stat.once.Do(func() {
|
||||||
@ -536,8 +550,17 @@ func (c *QQClient) ReloadFriendList() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetFriendList request friend list
|
// GetFriendList
|
||||||
|
// 当使用普通QQ时: 请求好友列表
|
||||||
|
// 当使用企点QQ时: 请求外部联系人列表
|
||||||
func (c *QQClient) GetFriendList() (*FriendListResponse, error) {
|
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
|
curFriendCount := 0
|
||||||
r := &FriendListResponse{}
|
r := &FriendListResponse{}
|
||||||
for {
|
for {
|
||||||
@ -1110,7 +1133,7 @@ func (c *QQClient) doHeartbeat() {
|
|||||||
for c.Online {
|
for c.Online {
|
||||||
time.Sleep(time.Second * 30)
|
time.Sleep(time.Second * 30)
|
||||||
seq := c.nextSeq()
|
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{})
|
packet := packets.BuildLoginPacket(c.Uin, 0, []byte{}, sso, []byte{})
|
||||||
_, err := c.sendAndWait(seq, packet)
|
_, err := c.sendAndWait(seq, packet)
|
||||||
if errors.Is(err, utils.ErrConnectionClosed) {
|
if errors.Is(err, utils.ErrConnectionClosed) {
|
||||||
|
@ -346,7 +346,7 @@ func decodePushReqPacket(c *QQClient, _ *incomingPacketInfo, payload []byte) (in
|
|||||||
c.fileStorageInfo = list
|
c.fileStorageInfo = list
|
||||||
rsp := cmd0x6ff.C501RspBody{}
|
rsp := cmd0x6ff.C501RspBody{}
|
||||||
if err := proto.Unmarshal(list.BigDataChannel.PbBuf, &rsp); err == nil && rsp.RspBody != nil {
|
if err := proto.Unmarshal(list.BigDataChannel.PbBuf, &rsp); err == nil && rsp.RspBody != nil {
|
||||||
c.highwaySession = &highwaySessionInfo{
|
c.bigDataSession = &bigDataSessionInfo{
|
||||||
SigSession: rsp.RspBody.SigSession,
|
SigSession: rsp.RspBody.SigSession,
|
||||||
SessionKey: rsp.RspBody.SessionKey,
|
SessionKey: rsp.RspBody.SessionKey,
|
||||||
}
|
}
|
||||||
|
@ -279,7 +279,7 @@ type (
|
|||||||
Msg *message.GroupMessage
|
Msg *message.GroupMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
highwaySessionInfo struct {
|
bigDataSessionInfo struct {
|
||||||
SigSession []byte
|
SigSession []byte
|
||||||
SessionKey []byte
|
SessionKey []byte
|
||||||
}
|
}
|
||||||
@ -335,6 +335,7 @@ const (
|
|||||||
IPad ClientProtocol = 2
|
IPad ClientProtocol = 2
|
||||||
AndroidWatch ClientProtocol = 3
|
AndroidWatch ClientProtocol = 3
|
||||||
MacOS ClientProtocol = 4
|
MacOS ClientProtocol = 4
|
||||||
|
QiDian ClientProtocol = 5
|
||||||
)
|
)
|
||||||
|
|
||||||
func (r *UserJoinGroupRequest) Accept() {
|
func (r *UserJoinGroupRequest) Accept() {
|
||||||
|
@ -107,11 +107,13 @@ type (
|
|||||||
SortVersionName string
|
SortVersionName string
|
||||||
SdkVersion string
|
SdkVersion string
|
||||||
AppId uint32
|
AppId uint32
|
||||||
|
SubAppId uint32
|
||||||
BuildTime uint32
|
BuildTime uint32
|
||||||
SSOVersion uint32
|
SSOVersion uint32
|
||||||
MiscBitmap uint32
|
MiscBitmap uint32
|
||||||
SubSigmap uint32
|
SubSigmap uint32
|
||||||
MainSigMap uint32
|
MainSigMap uint32
|
||||||
|
Protocol ClientProtocol
|
||||||
}
|
}
|
||||||
|
|
||||||
incomingPacketInfo struct {
|
incomingPacketInfo struct {
|
||||||
@ -194,6 +196,7 @@ func genVersionInfo(p ClientProtocol) *versionInfo {
|
|||||||
return &versionInfo{
|
return &versionInfo{
|
||||||
ApkId: "com.tencent.mobileqq",
|
ApkId: "com.tencent.mobileqq",
|
||||||
AppId: 537066738,
|
AppId: 537066738,
|
||||||
|
SubAppId: 537066738,
|
||||||
SortVersionName: "8.5.0",
|
SortVersionName: "8.5.0",
|
||||||
BuildTime: 1607689988,
|
BuildTime: 1607689988,
|
||||||
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
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,
|
MiscBitmap: 184024956,
|
||||||
SubSigmap: 0x10400,
|
SubSigmap: 0x10400,
|
||||||
MainSigMap: 34869472,
|
MainSigMap: 34869472,
|
||||||
|
Protocol: p,
|
||||||
}
|
}
|
||||||
case AndroidWatch:
|
case AndroidWatch:
|
||||||
return &versionInfo{
|
return &versionInfo{
|
||||||
ApkId: "com.tencent.qqlite",
|
ApkId: "com.tencent.qqlite",
|
||||||
AppId: 537064446,
|
AppId: 537064446,
|
||||||
|
SubAppId: 537064446,
|
||||||
SortVersionName: "2.0.5",
|
SortVersionName: "2.0.5",
|
||||||
BuildTime: 1559564731,
|
BuildTime: 1559564731,
|
||||||
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
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,
|
MiscBitmap: 16252796,
|
||||||
SubSigmap: 0x10400,
|
SubSigmap: 0x10400,
|
||||||
MainSigMap: 34869472,
|
MainSigMap: 34869472,
|
||||||
|
Protocol: p,
|
||||||
}
|
}
|
||||||
case IPad:
|
case IPad:
|
||||||
return &versionInfo{
|
return &versionInfo{
|
||||||
ApkId: "com.tencent.minihd.qq",
|
ApkId: "com.tencent.minihd.qq",
|
||||||
AppId: 537065739,
|
AppId: 537065739,
|
||||||
|
SubAppId: 537065739,
|
||||||
SortVersionName: "5.8.9",
|
SortVersionName: "5.8.9",
|
||||||
BuildTime: 1595836208,
|
BuildTime: 1595836208,
|
||||||
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
|
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,
|
MiscBitmap: 150470524,
|
||||||
SubSigmap: 66560,
|
SubSigmap: 66560,
|
||||||
MainSigMap: 1970400,
|
MainSigMap: 1970400,
|
||||||
|
Protocol: p,
|
||||||
}
|
}
|
||||||
case MacOS:
|
case MacOS:
|
||||||
return &versionInfo{
|
return &versionInfo{
|
||||||
ApkId: "com.tencent.minihd.qq",
|
ApkId: "com.tencent.minihd.qq",
|
||||||
AppId: 537064315,
|
AppId: 537064315,
|
||||||
|
SubAppId: 537064315,
|
||||||
SortVersionName: "5.8.9",
|
SortVersionName: "5.8.9",
|
||||||
BuildTime: 1595836208,
|
BuildTime: 1595836208,
|
||||||
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
|
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,
|
MiscBitmap: 150470524,
|
||||||
SubSigmap: 66560,
|
SubSigmap: 66560,
|
||||||
MainSigMap: 1970400,
|
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
|
return nil
|
||||||
|
@ -234,7 +234,7 @@ func (fs *GroupFileSystem) UploadFile(p, name, folderId string) error {
|
|||||||
},
|
},
|
||||||
Unknown3: proto.Int32(0),
|
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")
|
return errors.Wrap(err, "upload failed")
|
||||||
}
|
}
|
||||||
_, pkt := fs.client.buildGroupFileFeedsRequest(fs.GroupCode, rsp.FileId, rsp.BusId, rand.Int31())
|
_, pkt := fs.client.buildGroupFileFeedsRequest(fs.GroupCode, rsp.FileId, rsp.BusId, rand.Int31())
|
||||||
|
@ -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?")
|
return nil, errors.New("srv addrs not found. maybe miss some packet?")
|
||||||
}
|
}
|
||||||
if encrypt {
|
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?")
|
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
|
const chunkSize = 8192 * 16
|
||||||
conn, err := net.DialTimeout("tcp", c.srvSsoAddrs[0], time.Second*20)
|
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?")
|
return nil, errors.New("srv addrs not found. maybe miss some packet?")
|
||||||
}
|
}
|
||||||
if encrypt {
|
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?")
|
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)
|
stat, err := os.Stat(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -243,7 +243,7 @@ func (c *QQClient) uploadOcrImage(img io.Reader, length int64, sum []byte) (stri
|
|||||||
ActionType: proto.Uint32(0),
|
ActionType: proto.Uint32(0),
|
||||||
Uuid: binary.GenUUID(r),
|
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 {
|
if err != nil {
|
||||||
return "", errors.Wrap(err, "upload ocr image error")
|
return "", errors.Wrap(err, "upload ocr image error")
|
||||||
}
|
}
|
||||||
|
945
client/pb/cmd0x3f6/cmd0x3f6.pb.go
Normal file
945
client/pb/cmd0x3f6/cmd0x3f6.pb.go
Normal 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
|
||||||
|
}
|
73
client/pb/cmd0x3f6/cmd0x3f6.proto
Normal file
73
client/pb/cmd0x3f6/cmd0x3f6.proto
Normal 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;
|
||||||
|
}
|
1577
client/pb/cmd0x6ff/smbcmd0x519.pb.go
Normal file
1577
client/pb/cmd0x6ff/smbcmd0x519.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
119
client/pb/cmd0x6ff/smbcmd0x519.proto
Normal file
119
client/pb/cmd0x6ff/smbcmd0x519.proto
Normal 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;
|
||||||
|
}
|
@ -1,18 +1,17 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.25.0
|
// protoc-gen-go v1.25.0
|
||||||
// protoc v3.11.4
|
// protoc v3.14.0
|
||||||
// source: busi.proto
|
// source: subcmd0x501.proto
|
||||||
|
|
||||||
package cmd0x6ff
|
package cmd0x6ff
|
||||||
|
|
||||||
import (
|
import (
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -228,11 +227,9 @@ type SubCmd0X501RspBody struct {
|
|||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
SigSession []byte `protobuf:"bytes,1,opt,name=sigSession" json:"sigSession,omitempty"`
|
SigSession []byte `protobuf:"bytes,1,opt,name=sigSession" json:"sigSession,omitempty"`
|
||||||
SessionKey []byte `protobuf:"bytes,2,opt,name=sessionKey" json:"sessionKey,omitempty"`
|
SessionKey []byte `protobuf:"bytes,2,opt,name=sessionKey" json:"sessionKey,omitempty"`
|
||||||
Addrs []*SrvAddrs `protobuf:"bytes,3,rep,name=addrs" json:"addrs,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"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SubCmd0X501RspBody) Reset() {
|
func (x *SubCmd0X501RspBody) Reset() {
|
||||||
@ -288,18 +285,59 @@ func (x *SubCmd0X501RspBody) GetAddrs() []*SrvAddrs {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SubCmd0X501RspBody) GetShareType() uint32 {
|
type SrvAddrs struct {
|
||||||
if x != nil && x.ShareType != nil {
|
state protoimpl.MessageState
|
||||||
return *x.ShareType
|
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
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SubCmd0X501RspBody) GetShareChannel() uint32 {
|
func (x *SrvAddrs) GetAddrs() []*IpAddr {
|
||||||
if x != nil && x.ShareChannel != nil {
|
if x != nil {
|
||||||
return *x.ShareChannel
|
return x.Addrs
|
||||||
}
|
}
|
||||||
return 0
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type IpAddr struct {
|
type IpAddr struct {
|
||||||
@ -316,7 +354,7 @@ type IpAddr struct {
|
|||||||
func (x *IpAddr) Reset() {
|
func (x *IpAddr) Reset() {
|
||||||
*x = IpAddr{}
|
*x = IpAddr{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_subcmd0x501_proto_msgTypes[4]
|
mi := &file_subcmd0x501_proto_msgTypes[5]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -329,7 +367,7 @@ func (x *IpAddr) String() string {
|
|||||||
func (*IpAddr) ProtoMessage() {}
|
func (*IpAddr) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *IpAddr) ProtoReflect() protoreflect.Message {
|
func (x *IpAddr) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_subcmd0x501_proto_msgTypes[4]
|
mi := &file_subcmd0x501_proto_msgTypes[5]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -342,7 +380,7 @@ func (x *IpAddr) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use IpAddr.ProtoReflect.Descriptor instead.
|
// Deprecated: Use IpAddr.ProtoReflect.Descriptor instead.
|
||||||
func (*IpAddr) Descriptor() ([]byte, []int) {
|
func (*IpAddr) Descriptor() ([]byte, []int) {
|
||||||
return file_subcmd0x501_proto_rawDescGZIP(), []int{4}
|
return file_subcmd0x501_proto_rawDescGZIP(), []int{5}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *IpAddr) GetType() uint32 {
|
func (x *IpAddr) GetType() uint32 {
|
||||||
@ -373,61 +411,6 @@ func (x *IpAddr) GetArea() uint32 {
|
|||||||
return 0
|
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 protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_subcmd0x501_proto_rawDesc = []byte{
|
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,
|
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,
|
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,
|
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,
|
0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x62, 0x69, 0x64, 0x22, 0x75, 0x0a, 0x12, 0x53, 0x75,
|
||||||
0x75, 0x62, 0x43, 0x6d, 0x64, 0x30, 0x78, 0x35, 0x30, 0x31, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64,
|
0x62, 0x43, 0x6d, 0x64, 0x30, 0x78, 0x35, 0x30, 0x31, 0x52, 0x73, 0x70, 0x42, 0x6f, 0x64, 0x79,
|
||||||
0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18,
|
0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01,
|
||||||
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
|
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
||||||
0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18,
|
0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x02,
|
||||||
0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65,
|
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79,
|
||||||
0x79, 0x12, 0x1f, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
|
0x12, 0x1f, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
||||||
0x32, 0x09, 0x2e, 0x53, 0x72, 0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x52, 0x05, 0x61, 0x64, 0x64,
|
0x09, 0x2e, 0x53, 0x72, 0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72,
|
||||||
0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18,
|
0x73, 0x22, 0x4b, 0x0a, 0x08, 0x53, 0x72, 0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x20, 0x0a,
|
||||||
0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65,
|
0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
|
0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
|
||||||
0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, 0x68, 0x61,
|
0x1d, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07,
|
||||||
0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x54, 0x0a, 0x06, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12,
|
0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x22, 0x54,
|
||||||
0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79,
|
0x0a, 0x06, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
|
||||||
0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02,
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02,
|
||||||
0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
|
0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04,
|
||||||
0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x04,
|
0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74,
|
||||||
0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x22, 0x4b, 0x0a, 0x08, 0x53, 0x72,
|
0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04,
|
||||||
0x76, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
|
0x61, 0x72, 0x65, 0x61, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x3b, 0x63, 0x6d, 0x64, 0x30, 0x78, 0x36,
|
||||||
0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x72,
|
0x66, 0x66,
|
||||||
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,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -499,14 +478,14 @@ var file_subcmd0x501_proto_goTypes = []interface{}{
|
|||||||
(*C501RspBody)(nil), // 1: C501RspBody
|
(*C501RspBody)(nil), // 1: C501RspBody
|
||||||
(*SubCmd0X501ReqBody)(nil), // 2: SubCmd0x501ReqBody
|
(*SubCmd0X501ReqBody)(nil), // 2: SubCmd0x501ReqBody
|
||||||
(*SubCmd0X501RspBody)(nil), // 3: SubCmd0x501RspBody
|
(*SubCmd0X501RspBody)(nil), // 3: SubCmd0x501RspBody
|
||||||
(*IpAddr)(nil), // 4: IpAddr
|
(*SrvAddrs)(nil), // 4: SrvAddrs
|
||||||
(*SrvAddrs)(nil), // 5: SrvAddrs
|
(*IpAddr)(nil), // 5: IpAddr
|
||||||
}
|
}
|
||||||
var file_subcmd0x501_proto_depIdxs = []int32{
|
var file_subcmd0x501_proto_depIdxs = []int32{
|
||||||
2, // 0: C501ReqBody.ReqBody:type_name -> SubCmd0x501ReqBody
|
2, // 0: C501ReqBody.ReqBody:type_name -> SubCmd0x501ReqBody
|
||||||
3, // 1: C501RspBody.RspBody:type_name -> SubCmd0x501RspBody
|
3, // 1: C501RspBody.RspBody:type_name -> SubCmd0x501RspBody
|
||||||
5, // 2: SubCmd0x501RspBody.addrs:type_name -> SrvAddrs
|
4, // 2: SubCmd0x501RspBody.addrs:type_name -> SrvAddrs
|
||||||
4, // 3: SrvAddrs.addrs:type_name -> IpAddr
|
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 output_type
|
||||||
4, // [4:4] is the sub-list for method input_type
|
4, // [4:4] is the sub-list for method input_type
|
||||||
4, // [4:4] is the sub-list for extension type_name
|
4, // [4:4] is the sub-list for extension type_name
|
||||||
@ -569,7 +548,7 @@ func file_subcmd0x501_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_subcmd0x501_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
file_subcmd0x501_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*IpAddr); i {
|
switch v := v.(*SrvAddrs); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -581,7 +560,7 @@ func file_subcmd0x501_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_subcmd0x501_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
file_subcmd0x501_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*SrvAddrs); i {
|
switch v := v.(*IpAddr); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
|
1476
client/pb/msg/head.pb.go
Normal file
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
123
client/pb/msg/head.proto
Normal 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;
|
||||||
|
}
|
@ -1,18 +1,17 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.23.0
|
// protoc-gen-go v1.25.0
|
||||||
// protoc v3.14.0
|
// protoc v3.14.0
|
||||||
// source: msg.proto
|
// source: msg.proto
|
||||||
|
|
||||||
package msg
|
package msg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.23.0
|
// protoc-gen-go v1.25.0
|
||||||
// protoc v3.14.0
|
// protoc v3.14.0
|
||||||
// source: objmsg.proto
|
// source: objmsg.proto
|
||||||
|
|
||||||
package msg
|
package msg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.23.0
|
// protoc-gen-go v1.25.0
|
||||||
// protoc v3.14.0
|
// protoc v3.14.0
|
||||||
// source: report.proto
|
// source: report.proto
|
||||||
|
|
||||||
package msg
|
package msg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -31,7 +31,7 @@ func (c *QQClient) UploadGroupPtt(groupCode int64, voice io.ReadSeeker) (*messag
|
|||||||
fh := h.Sum(nil)
|
fh := h.Sum(nil)
|
||||||
_, _ = voice.Seek(0, io.SeekStart)
|
_, _ = voice.Seek(0, io.SeekStart)
|
||||||
ext := c.buildGroupPttStoreBDHExt(groupCode, fh[:], int32(length), 0, int32(length))
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -66,7 +66,7 @@ func (c *QQClient) UploadPrivatePtt(target int64, voice io.ReadSeeker) (*message
|
|||||||
fh := h.Sum(nil)
|
fh := h.Sum(nil)
|
||||||
_, _ = voice.Seek(0, io.SeekStart)
|
_, _ = voice.Seek(0, io.SeekStart)
|
||||||
ext := c.buildC2CPttStoreBDHExt(target, fh[:], int32(length), int32(length))
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -132,14 +132,14 @@ func (c *QQClient) UploadGroupShortVideo(groupCode int64, video, thumb io.ReadSe
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err != nil || cp() != nil {
|
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 {
|
} else {
|
||||||
_ = file.Close()
|
_ = 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)
|
_ = os.Remove(cache)
|
||||||
}
|
}
|
||||||
} else {
|
} 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 {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "upload video file error")
|
return nil, errors.Wrap(err, "upload video file error")
|
||||||
|
191
client/qidian.go
Normal file
191
client/qidian.go
Normal 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
|
||||||
|
}
|
@ -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) {
|
return binary.NewWriterF(func(p *binary.Writer) {
|
||||||
p.WriteIntLvPacket(4, func(writer *binary.Writer) {
|
p.WriteIntLvPacket(4, func(writer *binary.Writer) {
|
||||||
writer.WriteUInt32(uint32(seq))
|
writer.WriteUInt32(uint32(seq))
|
||||||
writer.WriteUInt32(appID)
|
writer.WriteUInt32(appID)
|
||||||
writer.WriteUInt32(appID)
|
writer.WriteUInt32(subAppID)
|
||||||
writer.Write([]byte{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00})
|
writer.Write([]byte{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00})
|
||||||
if len(extData) == 0 || len(extData) == 4 {
|
if len(extData) == 0 || len(extData) == 4 {
|
||||||
writer.WriteUInt32(0x04)
|
writer.WriteUInt32(0x04)
|
||||||
|
@ -5,6 +5,8 @@ import (
|
|||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"math/big"
|
"math/big"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -62,6 +64,11 @@ func ChineseLength(str string, limit int) int {
|
|||||||
return sum
|
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.
|
// B2S converts byte slice to a string without memory allocation.
|
||||||
// See https://groups.google.com/forum/#!msg/Golang-Nuts/ENgbUzYvCuU/90yGx7GUAgAJ .
|
// See https://groups.google.com/forum/#!msg/Golang-Nuts/ENgbUzYvCuU/90yGx7GUAgAJ .
|
||||||
// from github.com/savsgio/gotils/strconv
|
// from github.com/savsgio/gotils/strconv
|
||||||
|
Loading…
x
Reference in New Issue
Block a user