Refactor: Consolidate packages into modules, enhance packet handling, and add UnCodablePacket structure

This commit is contained in:
adman
2025-11-25 20:57:04 +01:00
parent 275f28a7c8
commit 4f5b6441c8
5 changed files with 41 additions and 22 deletions
+17 -5
View File
@@ -4,7 +4,6 @@ import (
"bytes" "bytes"
"compress/zlib" "compress/zlib"
"errors" "errors"
"fmt"
"io" "io"
"net" "net"
@@ -14,6 +13,12 @@ import (
var BadPacketTypeError = errors.New("bad packet type") 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 type Actor int
const ( const (
@@ -54,6 +59,11 @@ type Conn struct {
} }
func (c *Conn) Send(packet any) (err error) { func (c *Conn) Send(packet any) (err error) {
var rawPacketBytes []byte
switch packet := packet.(type) {
case UnCodablePacket:
rawPacketBytes = packet.Data
default:
packetIdentifier := generated.TypeToPacketIdentifier(c.Version, c.Actor.SendDirection(), c.State, packet) packetIdentifier := generated.TypeToPacketIdentifier(c.Version, c.Actor.SendDirection(), c.State, packet)
if packetIdentifier == "" { if packetIdentifier == "" {
err = BadPacketTypeError err = BadPacketTypeError
@@ -64,6 +74,8 @@ func (c *Conn) Send(packet any) (err error) {
if err != nil { if err != nil {
return return
} }
rawPacketBytes = rawPacketBuffer.Bytes()
}
var packetBytes []byte var packetBytes []byte
if c.CompressionThreshold > 0 { if c.CompressionThreshold > 0 {
packetBuffer := bytes.NewBuffer(nil) packetBuffer := bytes.NewBuffer(nil)
@@ -72,7 +84,7 @@ func (c *Conn) Send(packet any) (err error) {
if err != nil { if err != nil {
return return
} }
_, err = zlib.NewWriter(packetBuffer).Write(rawPacketBuffer.Bytes()) _, err = zlib.NewWriter(packetBuffer).Write(rawPacketBytes)
if err != nil { if err != nil {
return return
} }
@@ -81,14 +93,14 @@ func (c *Conn) Send(packet any) (err error) {
if err != nil { if err != nil {
return return
} }
_, err = packetBuffer.Write(rawPacketBuffer.Bytes()) _, err = packetBuffer.Write(rawPacketBytes)
if err != nil { if err != nil {
return return
} }
} }
packetBytes = packetBuffer.Bytes() packetBytes = packetBuffer.Bytes()
} else { } else {
packetBytes = rawPacketBuffer.Bytes() packetBytes = rawPacketBytes
} }
err = queser.VarInt(len(packetBytes)).Encode(c.W) err = queser.VarInt(len(packetBytes)).Encode(c.W)
if err != nil { if err != nil {
@@ -136,7 +148,7 @@ func (c *Conn) Receive() (packet any, err error) {
packetBuff := bytes.NewBuffer(packetBytes) packetBuff := bytes.NewBuffer(packetBytes)
packet, err = generated.DecodePacket(c.Version, c.Actor.ReceiveDirection(), c.State, packetBuff) packet, err = generated.DecodePacket(c.Version, c.Actor.ReceiveDirection(), c.State, packetBuff)
if err != nil { if err != nil {
fmt.Printf("%#v\n", packetBytes) packet = UnCodablePacket{Err: err, Data: packetBytes}
return return
} }
return return
+6 -6
View File
@@ -4,15 +4,15 @@ import (
"errors" "errors"
"fmt" "fmt"
"strom" "strom"
"strom/modules/loginclient" "strom/modules"
"github.com/google/uuid" "github.com/google/uuid"
) )
var altAccount = loginclient.Account{ var altAccount = modules.Account{
Username: "449stan_Ytb", Username: "laibergraceful70",
Uuid: uuid.MustParse("caec076c80c34637a31b44874ffa009d"), Uuid: uuid.MustParse("3a863af533e5452591e913e021bfa724"),
Token: "eyJraWQiOiIwNDkxODEiLCJhbGciOiJSUzI1NiJ9.eyJ4dWlkIjoiMjUzNTQwOTA1OTUxMzgxOSIsImFnZyI6IkFkdWx0Iiwic3ViIjoiMjY4OGQ0ZTktZmZiZi00N2FkLTlkYWYtZDU3ZWY5Yzg5YWE0IiwiYXV0aCI6IlhCT1giLCJucyI6ImRlZmF1bHQiLCJyb2xlcyI6W10sImlzcyI6ImF1dGhlbnRpY2F0aW9uIiwiZmxhZ3MiOlsib3JkZXJzXzIwMjIiLCJtdWx0aXBsYXllciIsInR3b2ZhY3RvcmF1dGgiLCJtc2FtaWdyYXRpb25fc3RhZ2U0Il0sInByb2ZpbGVzIjp7Im1jIjoiY2FlYzA3NmMtODBjMy00NjM3LWEzMWItNDQ4NzRmZmEwMDlkIn0sInBsYXRmb3JtIjoiUENfTEFVTkNIRVIiLCJwZmQiOlt7InR5cGUiOiJtYyIsImlkIjoiY2FlYzA3NmMtODBjMy00NjM3LWEzMWItNDQ4NzRmZmEwMDlkIiwibmFtZSI6IjQ0OXN0YW5fWXRiIn1dLCJuYmYiOjE3NjI4NDc4OTgsImV4cCI6MTc2MjkzNDI5OCwiaWF0IjoxNzYyODQ3ODk4LCJhaWQiOiJjMzZhOWZiNi00ZjJhLTQxZmYtOTBiZC1hZTdjYzkyMDMxZWIifQ.bcyq-FrP4XXESyKBr4TFstsjw8tgjY5cz_p7ansohPV_VfbKqBeLV-E1XYySwKj6BRuc0dAuW6nGdwE9qlv94tRtapVb1q1W__-GguVWOD16TaEi6dmzDyw8--lpI6eL657lPkzFaVeNrSHNPCPn0ltGcZzlOv1XYJwZM8D1yj57x7aXaOMmJqLY8R5zCgfWp_TnGPjJrbd_gV-N5wP9z_vL6jQKj5bvaTkYqItLq5tTFWbX1wAoeSV47D3mtZfx2N4rGgeUSQ1bYanUZ_eMuH6hSwrwxzqn_-HwN2PA7j0VFVUOu54FRqJbw8D4H6tAf3SY1xIjFC5GUu22IbVP3Q", Token: "eyJraWQiOiIwNDkxODEiLCJhbGciOiJSUzI1NiJ9.eyJ4dWlkIjoiMjc3NzIxOTc3MDIzMjM1OCIsImFnZyI6IkFkdWx0Iiwic3ViIjoiMzczMjI0OTktZTAwYS0…JRnCbAsBJl5zg-GAu6NkX1JCvpWdQkgFb0H5RYi2dIUKhNpP57WG2gh562T3BoPELVXDQZQVUBzDFeDuVDGGSkKmSmhzO7l-fEPBt2CjnaLCyr1FmYFSRzDBy1w",
} }
type Client struct { type Client struct {
@@ -25,7 +25,7 @@ func (c *Client) Default(event any) (err error) {
} }
func (c *Client) OnStart(_ strom.OnStart) (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) { if errors.Is(err, strom.HandlerDone) {
return nil return nil
} }
+7
View File
@@ -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 ( import (
"bytes" "bytes"
@@ -1,4 +1,4 @@
package statusclient package modules
import ( import (
"fmt" "fmt"