From ef241a869e997104fc63ebe77de3e19c6fa0be08 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 22 Mar 2025 11:06:51 +0800 Subject: [PATCH] Log incoming and outgoing messages --- git_hooks_handle.go | 2 +- go.mod | 2 +- go.sum | 4 ++-- irc.go | 31 +++++++++++++++++++++---------- diff --git a/git_hooks_handle.go b/git_hooks_handle.go index a58ff55bead8b674bf6e67ceae35e2cc1d092d56..11a117aae7246e55265ca9835db480687e83f2ad 100644 --- a/git_hooks_handle.go +++ b/git_hooks_handle.go @@ -237,7 +237,7 @@ } merge_request_url := genHTTPRemoteURL(packPass.groupPath, packPass.repoName)+"/contrib/"+strconv.FormatUint(uint64(newMRID), 10)+"/" fmt.Fprintln(sshStderr, ansiec.Blue+"Created merge request at", merge_request_url+ansiec.Reset) select { - case ircSendBuffered <- "PRIVMSG #chat :New merge request at " + merge_request_url + "\r\n": + case ircSendBuffered <- "PRIVMSG #chat :New merge request at " + merge_request_url: default: clog.Error("IRC SendQ exceeded") } diff --git a/go.mod b/go.mod index dc0981ca9528a9ec0825c03ffeb83f5a1eb2efed..44e44709d3a8c8a129a7f69a25af8dcc406f57b2 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ github.com/niklasfasching/go-org v1.7.0 github.com/tdewolff/minify/v2 v2.22.3 github.com/yuin/goldmark v1.7.8 go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250321131425-dda3538a9cd4 - go.lindenii.runxiyu.org/lindenii-irc v0.0.0-20250322024138-aabae52169ec + go.lindenii.runxiyu.org/lindenii-irc v0.0.0-20250322030600-1e47f911f1fa golang.org/x/crypto v0.36.0 ) diff --git a/go.sum b/go.sum index a65f3662a9f742193339c62642b4501dc015b173..524fb9852aa4e0ecea375adcad9fb0268a06e145 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250321131425-dda3538a9cd4 h1:xX6s8+Yo5fRHzVswlJvKQjjN6lZCG7lAh33dTXBqsYE= go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250321131425-dda3538a9cd4/go.mod h1:bOxuuGXA3UpbLb1lKohr2j2MVcGGLcqfAprGx9VCkMA= -go.lindenii.runxiyu.org/lindenii-irc v0.0.0-20250322024138-aabae52169ec h1:u7gMhK7KswwcuvD5S+H2nQ8dJwq269467/PzvCLcxiM= -go.lindenii.runxiyu.org/lindenii-irc v0.0.0-20250322024138-aabae52169ec/go.mod h1:fE6Ks8GK7PHZGAPkTWG593UmF7FmyugcRcqmey3Nvy0= +go.lindenii.runxiyu.org/lindenii-irc v0.0.0-20250322030600-1e47f911f1fa h1:LU3ZN/9xVUOEHyUCa5d+lvrL2sqhy/PR2iM2DuAQDqs= +go.lindenii.runxiyu.org/lindenii-irc v0.0.0-20250322030600-1e47f911f1fa/go.mod h1:fE6Ks8GK7PHZGAPkTWG593UmF7FmyugcRcqmey3Nvy0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= diff --git a/irc.go b/irc.go index be538150b72ac4ce8835689b35790e1ef2411904..e2b50373488f5e996df8a8b93dbd190bfd2c247d 100644 --- a/irc.go +++ b/irc.go @@ -32,10 +32,17 @@ } defer underlyingConn.Close() conn := irc.NewConn(underlyingConn) - _, err = conn.WriteString( - "NICK " + config.IRC.Nick + "\r\n" + - "USER " + config.IRC.User + " 0 * :" + config.IRC.Gecos + "\r\n", - ) + + logAndWriteLn := func(s string) (n int, err error) { + clog.Debug("IRC tx: " + s) + return conn.WriteString(s + "\r\n") + } + + _, err = logAndWriteLn("NICK " + config.IRC.Nick) + if err != nil { + return err + } + _, err = logAndWriteLn("USER " + config.IRC.User + " 0 * :" + config.IRC.Gecos) if err != nil { return err } @@ -49,20 +56,24 @@ case <-writeLoopAbort: return default: } - msg, err := conn.ReadMessage() + + msg, line, err := conn.ReadMessage() if err != nil { readLoopError <- err return } + + clog.Debug("IRC rx: " + line) + switch msg.Command { case "001": - _, err = conn.WriteString("JOIN #chat\r\n") + _, err = logAndWriteLn("JOIN #chat") if err != nil { readLoopError <- err return } case "PING": - _, err = conn.WriteString("PONG :" + msg.Args[0] + "\r\n") + _, err = logAndWriteLn("PONG :" + msg.Args[0]) if err != nil { readLoopError <- err return @@ -75,7 +86,7 @@ } if c.Nick != config.IRC.Nick { continue } - _, err = conn.WriteString("PRIVMSG #chat :test\r\n") + _, err = logAndWriteLn("PRIVMSG #chat :test") if err != nil { readLoopError <- err return @@ -90,7 +101,7 @@ select { case err = <-readLoopError: return err case s := <-ircSendBuffered: - _, err = conn.WriteString(s) + _, err = logAndWriteLn(s) if err != nil { select { case ircSendBuffered <- s: @@ -101,7 +112,7 @@ writeLoopAbort <- struct{}{} return err } case se := <-ircSendDirectChan: - _, err = conn.WriteString(se.content) + _, err = logAndWriteLn(se.content) se.errorBack <- err if err != nil { writeLoopAbort <- struct{}{} -- 2.48.1