Refactor: Consolidate packages into modules, enhance packet handling, and add UnCodablePacket structure
This commit is contained in:
+26
-14
@@ -4,7 +4,6 @@ import (
|
||||
"bytes"
|
||||
"compress/zlib"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
|
||||
@@ -14,6 +13,12 @@ import (
|
||||
|
||||
var BadPacketTypeError = errors.New("bad packet type")
|
||||
|
||||
// UnCodablePacket represents a packet that could not be decoded due to querser not supporting all packets.
|
||||
type UnCodablePacket struct {
|
||||
Err error
|
||||
Data []byte
|
||||
}
|
||||
|
||||
type Actor int
|
||||
|
||||
const (
|
||||
@@ -54,15 +59,22 @@ type Conn struct {
|
||||
}
|
||||
|
||||
func (c *Conn) Send(packet any) (err error) {
|
||||
packetIdentifier := generated.TypeToPacketIdentifier(c.Version, c.Actor.SendDirection(), c.State, packet)
|
||||
if packetIdentifier == "" {
|
||||
err = BadPacketTypeError
|
||||
return
|
||||
}
|
||||
rawPacketBuffer := bytes.NewBuffer(nil)
|
||||
err = generated.EncodePacket(c.Version, c.Actor.SendDirection(), c.State, packetIdentifier, packet, rawPacketBuffer)
|
||||
if err != nil {
|
||||
return
|
||||
var rawPacketBytes []byte
|
||||
switch packet := packet.(type) {
|
||||
case UnCodablePacket:
|
||||
rawPacketBytes = packet.Data
|
||||
default:
|
||||
packetIdentifier := generated.TypeToPacketIdentifier(c.Version, c.Actor.SendDirection(), c.State, packet)
|
||||
if packetIdentifier == "" {
|
||||
err = BadPacketTypeError
|
||||
return
|
||||
}
|
||||
rawPacketBuffer := bytes.NewBuffer(nil)
|
||||
err = generated.EncodePacket(c.Version, c.Actor.SendDirection(), c.State, packetIdentifier, packet, rawPacketBuffer)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
rawPacketBytes = rawPacketBuffer.Bytes()
|
||||
}
|
||||
var packetBytes []byte
|
||||
if c.CompressionThreshold > 0 {
|
||||
@@ -72,7 +84,7 @@ func (c *Conn) Send(packet any) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = zlib.NewWriter(packetBuffer).Write(rawPacketBuffer.Bytes())
|
||||
_, err = zlib.NewWriter(packetBuffer).Write(rawPacketBytes)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -81,14 +93,14 @@ func (c *Conn) Send(packet any) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = packetBuffer.Write(rawPacketBuffer.Bytes())
|
||||
_, err = packetBuffer.Write(rawPacketBytes)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
packetBytes = packetBuffer.Bytes()
|
||||
} else {
|
||||
packetBytes = rawPacketBuffer.Bytes()
|
||||
packetBytes = rawPacketBytes
|
||||
}
|
||||
err = queser.VarInt(len(packetBytes)).Encode(c.W)
|
||||
if err != nil {
|
||||
@@ -136,7 +148,7 @@ func (c *Conn) Receive() (packet any, err error) {
|
||||
packetBuff := bytes.NewBuffer(packetBytes)
|
||||
packet, err = generated.DecodePacket(c.Version, c.Actor.ReceiveDirection(), c.State, packetBuff)
|
||||
if err != nil {
|
||||
fmt.Printf("%#v\n", packetBytes)
|
||||
packet = UnCodablePacket{Err: err, Data: packetBytes}
|
||||
return
|
||||
}
|
||||
return
|
||||
|
||||
@@ -4,15 +4,15 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strom"
|
||||
"strom/modules/loginclient"
|
||||
"strom/modules"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
var altAccount = loginclient.Account{
|
||||
Username: "449stan_Ytb",
|
||||
Uuid: uuid.MustParse("caec076c80c34637a31b44874ffa009d"),
|
||||
Token: "eyJraWQiOiIwNDkxODEiLCJhbGciOiJSUzI1NiJ9.eyJ4dWlkIjoiMjUzNTQwOTA1OTUxMzgxOSIsImFnZyI6IkFkdWx0Iiwic3ViIjoiMjY4OGQ0ZTktZmZiZi00N2FkLTlkYWYtZDU3ZWY5Yzg5YWE0IiwiYXV0aCI6IlhCT1giLCJucyI6ImRlZmF1bHQiLCJyb2xlcyI6W10sImlzcyI6ImF1dGhlbnRpY2F0aW9uIiwiZmxhZ3MiOlsib3JkZXJzXzIwMjIiLCJtdWx0aXBsYXllciIsInR3b2ZhY3RvcmF1dGgiLCJtc2FtaWdyYXRpb25fc3RhZ2U0Il0sInByb2ZpbGVzIjp7Im1jIjoiY2FlYzA3NmMtODBjMy00NjM3LWEzMWItNDQ4NzRmZmEwMDlkIn0sInBsYXRmb3JtIjoiUENfTEFVTkNIRVIiLCJwZmQiOlt7InR5cGUiOiJtYyIsImlkIjoiY2FlYzA3NmMtODBjMy00NjM3LWEzMWItNDQ4NzRmZmEwMDlkIiwibmFtZSI6IjQ0OXN0YW5fWXRiIn1dLCJuYmYiOjE3NjI4NDc4OTgsImV4cCI6MTc2MjkzNDI5OCwiaWF0IjoxNzYyODQ3ODk4LCJhaWQiOiJjMzZhOWZiNi00ZjJhLTQxZmYtOTBiZC1hZTdjYzkyMDMxZWIifQ.bcyq-FrP4XXESyKBr4TFstsjw8tgjY5cz_p7ansohPV_VfbKqBeLV-E1XYySwKj6BRuc0dAuW6nGdwE9qlv94tRtapVb1q1W__-GguVWOD16TaEi6dmzDyw8--lpI6eL657lPkzFaVeNrSHNPCPn0ltGcZzlOv1XYJwZM8D1yj57x7aXaOMmJqLY8R5zCgfWp_TnGPjJrbd_gV-N5wP9z_vL6jQKj5bvaTkYqItLq5tTFWbX1wAoeSV47D3mtZfx2N4rGgeUSQ1bYanUZ_eMuH6hSwrwxzqn_-HwN2PA7j0VFVUOu54FRqJbw8D4H6tAf3SY1xIjFC5GUu22IbVP3Q",
|
||||
var altAccount = modules.Account{
|
||||
Username: "laibergraceful70",
|
||||
Uuid: uuid.MustParse("3a863af533e5452591e913e021bfa724"),
|
||||
Token: "eyJraWQiOiIwNDkxODEiLCJhbGciOiJSUzI1NiJ9.eyJ4dWlkIjoiMjc3NzIxOTc3MDIzMjM1OCIsImFnZyI6IkFkdWx0Iiwic3ViIjoiMzczMjI0OTktZTAwYS0…JRnCbAsBJl5zg-GAu6NkX1JCvpWdQkgFb0H5RYi2dIUKhNpP57WG2gh562T3BoPELVXDQZQVUBzDFeDuVDGGSkKmSmhzO7l-fEPBt2CjnaLCyr1FmYFSRzDBy1w",
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
@@ -25,7 +25,7 @@ func (c *Client) Default(event any) (err error) {
|
||||
}
|
||||
|
||||
func (c *Client) OnStart(_ strom.OnStart) (err error) {
|
||||
err = loginclient.Login(c.Conn, altAccount)
|
||||
err = modules.Login(c.Conn, altAccount)
|
||||
if errors.Is(err, strom.HandlerDone) {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package modules
|
||||
|
||||
import "strom"
|
||||
|
||||
func IgnoreConfig(c *strom.Conn) (err error) {
|
||||
return
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package loginclient
|
||||
package modules
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@@ -1,4 +1,4 @@
|
||||
package statusclient
|
||||
package modules
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
Reference in New Issue
Block a user