From 286fb4b18c7685ddd19c90f87658819359451a1d Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 18 Feb 2020 16:31:18 +0100 Subject: [PATCH] Add a -debug flag --- cmd/jounce/main.go | 3 +++ downstream.go | 10 ++++++++++ server.go | 1 + upstream.go | 7 +++++++ 4 files changed, 21 insertions(+) diff --git a/cmd/jounce/main.go b/cmd/jounce/main.go index 9e35167..91cca3f 100644 --- a/cmd/jounce/main.go +++ b/cmd/jounce/main.go @@ -12,8 +12,10 @@ import ( func main() { var addr, configPath string + var debug bool flag.StringVar(&addr, "listen", "", "listening address") flag.StringVar(&configPath, "config", "", "path to configuration file") + flag.BoolVar(&debug, "debug", false, "enable debug logging") flag.Parse() var cfg *config.Server @@ -54,6 +56,7 @@ func main() { srv := jounce.NewServer() // TODO: load from config/DB srv.Hostname = cfg.Hostname + srv.Debug = debug srv.Upstreams = []jounce.Upstream{{ Addr: "chat.freenode.net:6697", Nick: "jounce", diff --git a/downstream.go b/downstream.go index 53bf554..66f4a31 100644 --- a/downstream.go +++ b/downstream.go @@ -108,6 +108,10 @@ func (dc *downstreamConn) readMessages() error { return fmt.Errorf("failed to read IRC command: %v", err) } + if dc.srv.Debug { + dc.logger.Printf("received: %v", msg) + } + err = dc.handleMessage(msg) if ircErr, ok := err.(ircError); ok { ircErr.Message.Prefix = dc.srv.prefix() @@ -130,6 +134,9 @@ func (dc *downstreamConn) writeMessages() error { var closed bool select { case msg := <-dc.messages: + if dc.srv.Debug { + dc.logger.Printf("sent: %v", msg) + } err = dc.irc.WriteMessage(msg) case consumer := <-dc.consumers: for { @@ -137,6 +144,9 @@ func (dc *downstreamConn) writeMessages() error { if msg == nil { break } + if dc.srv.Debug { + dc.logger.Printf("sent: %v", msg) + } err = dc.irc.WriteMessage(msg) if err != nil { break diff --git a/server.go b/server.go index e4d96e3..c4b731a 100644 --- a/server.go +++ b/server.go @@ -102,6 +102,7 @@ type Server struct { Hostname string Logger Logger RingCap int + Debug bool Upstreams []Upstream // TODO: per-user lock sync.Mutex diff --git a/upstream.go b/upstream.go index 04ea2d1..5abff55 100644 --- a/upstream.go +++ b/upstream.go @@ -72,6 +72,9 @@ func connectToUpstream(u *user, upstream *Upstream) (*upstreamConn, error) { go func() { for msg := range msgs { + if uc.srv.Debug { + uc.logger.Printf("sent: %v", msg) + } if err := uc.irc.WriteMessage(msg); err != nil { uc.logger.Printf("failed to write message: %v", err) } @@ -344,6 +347,10 @@ func (uc *upstreamConn) readMessages() error { return fmt.Errorf("failed to read IRC command: %v", err) } + if uc.srv.Debug { + uc.logger.Printf("received: %v", msg) + } + if err := uc.handleMessage(msg); err != nil { uc.logger.Printf("failed to handle message %q: %v", msg, err) }