Skip to content

上传群文件存在问题 新发现 #344

@kkgg0521

Description

@kkgg0521

手表协议, 以下代码 只会走 t = 1 的情况将无法使用上传群文件接口

`

// ConfigPushSvc.PushReq
func decodePushReqPacket(c *QQClient, pkt *network.Packet) (any, error) {

request := &jce.RequestPacket{}
request.ReadFrom(jce.NewJceReader(pkt.Payload))
data := &jce.RequestDataVersion2{}
data.ReadFrom(jce.NewJceReader(request.SBuffer))
r := jce.NewJceReader(data.Map["PushReq"]["ConfigPush.PushReq"][1:])
t := r.ReadInt32(1)

jceBuf := r.ReadBytes(2)
if len(jceBuf) > 0 {
	switch t {
	case 1:
		ssoPkt := jce.NewJceReader(jceBuf)
		servers := ssoPkt.ReadSsoServerInfos(1)
		if len(servers) > 0 {
			var adds []netip.AddrPort
			for _, s := range servers {
				if strings.Contains(s.Server, "com") {
					continue
				}
				c.debug("got new server addr: %v location: %v", s.Server, s.Location)
				addr, err := netip.ParseAddr(s.Server)
				if err == nil {
					adds = append(adds, netip.AddrPortFrom(addr, uint16(s.Port)))
				}
			}
			f := true
			for _, e := range c.eventHandlers.serverUpdatedHandlers {
				cover(func() {
					if !e(c, &ServerUpdatedEvent{Servers: servers}) {
						f = false
					}
				})
			}
			if f {

				c.SetCustomServer(adds)
			}
			return nil, nil
		}
	case 2:
		fmtPkt := jce.NewJceReader(jceBuf)
		list := &jce.FileStoragePushFSSvcList{}
		list.ReadFrom(fmtPkt)
		c.debug("got file storage svc push.")
		// c.fileStorageInfo = list
		rsp := cmd0x6ff.C501RspBody{}
		if err := proto.Unmarshal(list.BigDataChannel.PbBuf, &rsp); err == nil && rsp.RspBody != nil {
			c.highwaySession.SigSession = rsp.RspBody.SigSession
			c.highwaySession.SessionKey = rsp.RspBody.SessionKey
			for _, srv := range rsp.RspBody.Addrs {
				if srv.ServiceType.Unwrap() == 10 {
					for _, addr := range srv.Addrs {
						c.highwaySession.AppendAddr(addr.Ip.Unwrap(), addr.Port.Unwrap())
					}
				}
				/*
					if srv.ServiceType.Unwrap() == 21 {
						for _, addr := range srv.Addrs {
							c.otherSrvAddrs = append(c.otherSrvAddrs, fmt.Sprintf("%v:%v", binary.UInt32ToIPV4Address(addr.Ip.Unwrap()), addr.Port.Unwrap()))
						}
					}

				*/
			}
		}
	}
}

seq := r.ReadInt64(3)
_, resp := c.buildConfPushRespPacket(t, seq, jceBuf)
return nil, c.sendPacket(resp)

}

`

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions