Refactor: Rename Connection to Conn, add proxy example, and enhance login client functionality
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strom"
|
||||
"strom/modules/loginclient"
|
||||
|
||||
"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",
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
*strom.Conn
|
||||
}
|
||||
|
||||
func (c *Client) Default(event any) (err error) {
|
||||
fmt.Printf("%T%v\n", event, event)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *Client) OnStart(_ strom.OnStart) (err error) {
|
||||
err = loginclient.Login(c.Conn, altAccount)
|
||||
if errors.Is(err, strom.HandlerDone) {
|
||||
return nil
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func main() {
|
||||
c, err := strom.Connect("127.0.0.1:25566")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer c.Close()
|
||||
err = c.Start(&Client{c})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"strom"
|
||||
|
||||
"github.com/admin-else/queser"
|
||||
"github.com/admin-else/queser/generated/v1_21_8"
|
||||
)
|
||||
|
||||
type ProxyClient struct {
|
||||
*strom.Conn
|
||||
Proxy *Proxy
|
||||
}
|
||||
|
||||
func (p *ProxyClient) Default(event any) (err error) {
|
||||
fmt.Printf("1 %T%v\n", event, event)
|
||||
err = p.Proxy.Send(event)
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ProxyClient) Compress(packet v1_21_8.LoginToClientPacketCompress) (err error) {
|
||||
err = p.Proxy.Send(packet)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
p.CompressionThreshold = int32(packet.Threshold)
|
||||
p.Proxy.CompressionThreshold = int32(packet.Threshold)
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ProxyClient) OnStart(_ strom.OnStart) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
type Proxy struct {
|
||||
*strom.Conn
|
||||
ProxyClient *ProxyClient
|
||||
}
|
||||
|
||||
func (p *Proxy) Default(event any) (err error) {
|
||||
fmt.Printf("2 %T%v\n", event, event)
|
||||
err = p.ProxyClient.Send(event)
|
||||
return
|
||||
}
|
||||
|
||||
func (p *Proxy) OnHandshake(packet v1_21_8.HandshakingToServerPacketSetProtocol) (err error) {
|
||||
err = p.ProxyClient.Send(packet)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
p.State = queser.State(packet.NextState)
|
||||
p.ProxyClient.State = queser.State(packet.NextState)
|
||||
return
|
||||
}
|
||||
|
||||
func (p *Proxy) OnLoginAcknowledged(packet v1_21_8.LoginToServerPacketLoginAcknowledged) (err error) {
|
||||
err = p.ProxyClient.Send(packet)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
p.State = queser.Configuration
|
||||
p.ProxyClient.State = queser.Configuration
|
||||
return
|
||||
}
|
||||
|
||||
func (p *Proxy) OnConfigFinish(packet v1_21_8.ConfigurationToServerPacketFinishConfiguration) (err error) {
|
||||
err = p.ProxyClient.Send(packet)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
p.State = queser.Play
|
||||
p.ProxyClient.State = queser.Play
|
||||
return
|
||||
}
|
||||
|
||||
func (p *Proxy) OnStart(_ strom.OnStart) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func handleConn(conn net.Conn) {
|
||||
defer conn.Close()
|
||||
s := strom.Servee(conn)
|
||||
p := &Proxy{Conn: s}
|
||||
c, err := strom.Connect("127.0.0.1:25566")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
p.ProxyClient = &ProxyClient{Conn: c, Proxy: p}
|
||||
errChan := make(chan error)
|
||||
go func() {
|
||||
errChan <- c.Start(p.ProxyClient)
|
||||
}()
|
||||
go func() {
|
||||
errChan <- s.Start(p)
|
||||
}()
|
||||
err = <-errChan
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func main() {
|
||||
l, err := net.Listen("tcp", ":25565")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
for {
|
||||
var c net.Conn
|
||||
c, err = l.Accept()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
go handleConn(c)
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strom"
|
||||
"strom/modules/loginclient"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func must(err error) {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
c, err := strom.ClientConnect("127.0.0.1:25566")
|
||||
must(err)
|
||||
err = c.Start(&loginclient.LoginClient{
|
||||
Account: 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",
|
||||
},
|
||||
Connection: c,
|
||||
})
|
||||
must(err)
|
||||
}
|
||||
Reference in New Issue
Block a user