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
+26 -14
View File
@@ -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
+6 -6
View File
@@ -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
}
+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 (
"bytes"
@@ -1,4 +1,4 @@
package statusclient
package modules
import (
"fmt"