diff options
author | Runxi Yu <me@runxiyu.org> | 2025-03-22 11:06:51 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-03-22 11:06:51 +0800 |
commit | ef241a869e997104fc63ebe77de3e19c6fa0be08 (patch) | |
tree | 164d45b391780a8634c6d10a248af311cdc4755a | |
parent | Handle error when doing NICK/USER (diff) | |
download | forge-ef241a869e997104fc63ebe77de3e19c6fa0be08.tar.gz forge-ef241a869e997104fc63ebe77de3e19c6fa0be08.tar.zst forge-ef241a869e997104fc63ebe77de3e19c6fa0be08.zip |
Log incoming and outgoing messages
-rw-r--r-- | git_hooks_handle.go | 2 | ||||
-rw-r--r-- | go.mod | 2 | ||||
-rw-r--r-- | go.sum | 4 | ||||
-rw-r--r-- | irc.go | 31 |
4 files changed, 25 insertions, 14 deletions
diff --git a/git_hooks_handle.go b/git_hooks_handle.go index a58ff55..11a117a 100644 --- a/git_hooks_handle.go +++ b/git_hooks_handle.go @@ -237,7 +237,7 @@ func hooksHandler(conn net.Conn) { 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") } @@ -14,7 +14,7 @@ require ( 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 ) @@ -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= @@ -32,10 +32,17 @@ func ircBotSession() error { 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 @@ func ircBotSession() error { 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 @@ func ircBotSession() error { 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 @@ func ircBotSession() error { 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 @@ func ircBotSession() error { return err } case se := <-ircSendDirectChan: - _, err = conn.WriteString(se.content) + _, err = logAndWriteLn(se.content) se.errorBack <- err if err != nil { writeLoopAbort <- struct{}{} |