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"
|
"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,15 +59,22 @@ type Conn struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Conn) Send(packet any) (err error) {
|
func (c *Conn) Send(packet any) (err error) {
|
||||||
packetIdentifier := generated.TypeToPacketIdentifier(c.Version, c.Actor.SendDirection(), c.State, packet)
|
var rawPacketBytes []byte
|
||||||
if packetIdentifier == "" {
|
switch packet := packet.(type) {
|
||||||
err = BadPacketTypeError
|
case UnCodablePacket:
|
||||||
return
|
rawPacketBytes = packet.Data
|
||||||
}
|
default:
|
||||||
rawPacketBuffer := bytes.NewBuffer(nil)
|
packetIdentifier := generated.TypeToPacketIdentifier(c.Version, c.Actor.SendDirection(), c.State, packet)
|
||||||
err = generated.EncodePacket(c.Version, c.Actor.SendDirection(), c.State, packetIdentifier, packet, rawPacketBuffer)
|
if packetIdentifier == "" {
|
||||||
if err != nil {
|
err = BadPacketTypeError
|
||||||
return
|
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
|
var packetBytes []byte
|
||||||
if c.CompressionThreshold > 0 {
|
if c.CompressionThreshold > 0 {
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
Reference in New Issue
Block a user