diff --git a/client/config_ignorer.go b/client/config_ignorer.go index 0f7bfb8..9e45596 100644 --- a/client/config_ignorer.go +++ b/client/config_ignorer.go @@ -3,7 +3,6 @@ package client import ( "errors" "fmt" - "log/slog" "github.com/admin-else/strom/event" "github.com/admin-else/strom/proto" @@ -20,7 +19,7 @@ func (c *ConfigIgnorer) OnStart() (err error) { } func (c *ConfigIgnorer) Default(e event.Anything) (err error) { - slog.Debug("Config ignorer", "packet", fmt.Sprintf("%#v", e)) + c.Log.Debug("Config ignorer", "packet", fmt.Sprintf("%#v", e)) return } diff --git a/client/login.go b/client/login.go index e0a3793..7fea669 100644 --- a/client/login.go +++ b/client/login.go @@ -6,7 +6,6 @@ import ( "crypto/x509" "encoding/json" "errors" - "log/slog" "github.com/admin-else/strom/api" "github.com/admin-else/strom/crypto" @@ -45,7 +44,7 @@ func (s *LoginClient) OnDefault(event event.Unhandled) (err error) { if _, ok := event.Val.(proto_base.EncodeDecodeAble); !ok { return } - slog.Warn("unexpected packet during login client", "packet", event.Val) + s.Log.Warn("unexpected packet during login client", "packet", event.Val) return } diff --git a/proto/connection.go b/proto/connection.go index 4408eda..e1c3ef9 100644 --- a/proto/connection.go +++ b/proto/connection.go @@ -68,6 +68,8 @@ type Conn struct { asyncPackets bool asyncPacketsMutex sync.RWMutex + + Log *slog.Logger } func (c *Conn) StartConn() (err error) { @@ -209,7 +211,7 @@ func (c *Conn) sendRegisteredPacket(packet proto_base.EncodeDecodeAble) (err err debugPrint := slog.Default().Enabled(context.Background(), slog.LevelDebug) && slices.ContainsFunc(c.DebugPrintPackets, func(s string) bool { return strings.Contains(i.Name, s) }) if debugPrint { - slog.Debug("send", "actor", c.Actor, "packet", fmt.Sprintf("%#v", packet)) + c.Log.Debug("send", "actor", c.Actor, "packet", fmt.Sprintf("%#v", packet)) } return c.SendRaw(packetBuff.Bytes()) } @@ -263,7 +265,7 @@ func (c *Conn) Receive() (packet proto_base.EncodeDecodeAble, err error) { return } if debugPrint { - slog.Debug("recv", "packet", fmt.Sprintf("%#v", packet), "isListenerRegistered", isListenerRegistered) + c.Log.Debug("recv", "packet", fmt.Sprintf("%#v", packet), "isListenerRegistered", isListenerRegistered) } return } diff --git a/server/login_server.go b/server/login_server.go index 1afdba9..9d948d3 100644 --- a/server/login_server.go +++ b/server/login_server.go @@ -123,7 +123,7 @@ func (l *LoginServer) OnDefault(event event.Unhandled) (err error) { if _, ok := event.Val.(proto_base.EncodeDecodeAble); !ok { return } - slog.Warn("unexpected packet during login serving", "packet", event.Val) + l.Log.Warn("unexpected packet during login serving", "packet", event.Val) return } diff --git a/server/server.go b/server/server.go index 1857ec6..b9e92c2 100644 --- a/server/server.go +++ b/server/server.go @@ -16,6 +16,8 @@ func Servee(c net.Conn) (ret *proto.Conn) { ret.Conn = c ret.R = c ret.W = c + + ret.Log = slog.Default().With("conn", c.RemoteAddr()) return } @@ -35,10 +37,10 @@ func ServeClient(cNet net.Conn, factory Factory) { return } if err != nil { - slog.Error("Error while handling client", "error", err, "client", c.Conn.RemoteAddr()) + c.Log.Error("Error while handling client", "error", err, "client", c.Conn.RemoteAddr()) err = Kick(c, text.Pretty(err.Error())) if err != nil { - slog.Error("Error while kicking client", "error", err, "client", c.Conn.RemoteAddr()) + c.Log.Error("Error while kicking client", "error", err, "client", c.Conn.RemoteAddr()) } } } @@ -65,6 +67,7 @@ func StartServerWithOnConn(listenAddr string, onConn func(c *proto.Conn) (err er if err != nil { return } + defer l.Close() running := true for running { var cNet net.Conn @@ -80,10 +83,10 @@ func StartServerWithOnConn(listenAddr string, onConn func(c *proto.Conn) (err er if c.State() == proto_base.Status || c.State() == proto_base.Handshaking { return // we dont care about status packets } - slog.Error("Error while handling client", "error", connErr, "client", c.Conn.RemoteAddr()) + c.Log.Error("Error while handling client", "error", connErr, "client", c.Conn.RemoteAddr()) connErr = Kick(c, text.Pretty(connErr.Error())) if connErr != nil { - slog.Error("Error while kicking client", "error", connErr, "client", c.Conn.RemoteAddr()) + c.Log.Error("Error while kicking client", "error", connErr, "client", c.Conn.RemoteAddr()) } } if errors.Is(connErr, ShutDownServerErr) {