コード例 #1
0
ファイル: proxy.go プロジェクト: keyphact/pso2-go
func (h proxyHandlerBlocks) HandlePacket(c *Connection, p *packets.Packet) (bool, error) {
	Logger.Debugf("%s %s block list packet, rewriting addresses", h.proxy, c)

	b, err := packets.ParseBlocks(p)
	if err != nil {
		return false, err
	}

	for i := range b.Entries {
		e := &b.Entries[i]
		h.listener.EndpointAnnouncement(e.Address(), e.Port)
		e.SetAddress(h.addr)
	}

	packetType := p.Type
	p, err = b.Packet()

	if err != nil {
		return false, err
	}

	p.Type = packetType

	return true, h.proxy.Destination(c).WritePacket(p)
}
コード例 #2
0
ファイル: proxy.go プロジェクト: keyphact/pso2-go
func (h proxyHandlerRoom) HandlePacket(c *Connection, p *packets.Packet) (bool, error) {
	Logger.Debugf("%s %s room packet, rewriting address", h.proxy, c)

	r, err := packets.ParseRoom(p)
	if err != nil {
		return false, err
	}

	h.listener.EndpointAnnouncement(r.Address(), r.Port)
	r.SetAddress(h.addr)

	packetType := p.Type
	p, err = r.Packet()

	if err != nil {
		return false, err
	}

	p.Type = packetType

	return true, h.proxy.Destination(c).WritePacket(p)
}