From b249a495a43ebe68f8a5a29e646f058bcc362282 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Mon, 20 Jul 2020 20:15:55 +0200 Subject: [PATCH] add more debug stuffs. --- .drone.yml | 2 +- Dockerfile | 4 ++-- go.mod | 2 +- go.sum | 12 ++---------- internal/bot/bot.go | 12 +++++++++--- internal/bot/channel.go | 2 +- internal/config/config.go | 8 ++++++-- main.go | 19 +++++++++++++++++++ 8 files changed, 41 insertions(+), 20 deletions(-) diff --git a/.drone.yml b/.drone.yml index 66c4d98..0756c42 100644 --- a/.drone.yml +++ b/.drone.yml @@ -35,7 +35,7 @@ steps: - tag - name: go-build-1.14 - image: golang:1.13 + image: golang:1.14 commands: - go mod download - CGO_ENABLED=0 go build -ldflags "-w -s" . diff --git a/Dockerfile b/Dockerfile index a2bf5c4..88cf560 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ ## 1. Build Server -# Use Go 1.11 -FROM golang:1.11 AS build +# Use Go 1.14 +FROM golang:1.14 AS build # Load repository into docker WORKDIR /project diff --git a/go.mod b/go.mod index d3da6ec..2a71b7c 100644 --- a/go.mod +++ b/go.mod @@ -4,5 +4,5 @@ go 1.13 require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible - github.com/gissleh/irc v0.0.0-20200717144508-ec7511e0dfd4 + github.com/gissleh/irc v0.0.0-20200720173331-512ba5aa6fca ) diff --git a/go.sum b/go.sum index 3eacfaf..86ef99c 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,4 @@ -git.aiterp.net/gisle/irc v0.0.0-20190317212656-36c2a5ea38d3 h1:2UYpXoDYcgeIGxRX+5K2e/CK0BNAQUZ6xU/9JjQYwDk= -git.aiterp.net/gisle/irc v0.0.0-20190317212656-36c2a5ea38d3/go.mod h1:7uklwlzI0XI2O8ttooTH0suUpUmQ8Pviplg36smc1Aw= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/gissleh/irc v0.0.0-20200717144508-ec7511e0dfd4 h1:2rT4geKF5Zb0TyJjqp8ylUXwfrwIvMESdERItJtmtDI= -github.com/gissleh/irc v0.0.0-20200717144508-ec7511e0dfd4/go.mod h1:dUQ3oIxO/lK/Ga5Dq72/1tH861WBDJFkkBtbnqg6ZXc= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +github.com/gissleh/irc v0.0.0-20200720173331-512ba5aa6fca h1:vTL3kM7PkVnTy77i2/ewaC0VDmSEF7sAOMDTNIs6rKY= +github.com/gissleh/irc v0.0.0-20200720173331-512ba5aa6fca/go.mod h1:h2/fPlbnb11gFpitk0HGxYLgK+bCKGh55QSYNo36X8M= diff --git a/internal/bot/bot.go b/internal/bot/bot.go index 1fa1236..083c2ed 100644 --- a/internal/bot/bot.go +++ b/internal/bot/bot.go @@ -76,6 +76,10 @@ func (bot *Bot) Connect(server string, ssl bool, maxRetries int) (err error) { return err } +func (bot *Bot) ClientState() irc.ClientState { + return bot.client.State() +} + func (bot *Bot) addChannel(channelName string) *Channel { if bot.channels[channelName] != nil { return bot.channels[channelName] @@ -156,12 +160,14 @@ func (bot *Bot) loop() { } } - if len(joins) > 0 { - bot.client.Join(joins...) - } if len(parts) > 0 { + log.Println("Leaving", strings.Join(parts, ", ")) bot.client.Part(parts...) } + if len(joins) > 0 { + log.Println("Joining", strings.Join(joins, ", ")) + bot.client.Join(joins...) + } } case <-bot.loopCtx.Done(): diff --git a/internal/bot/channel.go b/internal/bot/channel.go index 1627229..6d067e7 100644 --- a/internal/bot/channel.go +++ b/internal/bot/channel.go @@ -132,7 +132,7 @@ func (channel *Channel) loop() { if target != nil { me, ok := target.UserList().User(channel.client.Nick()) if !ok || !strings.ContainsRune(me.Modes, 'o') { - channel.client.Say(channel.name, "This unit require operator privileges to serve this request.") + channel.client.Say(channel.name, "This unit has insufficient privileges.") break } diff --git a/internal/config/config.go b/internal/config/config.go index 7d0dbcf..bcf41c8 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -14,10 +14,14 @@ type Config struct { User string `json:"user"` RealName string `json:"realName"` } `json:"bot"` + Debug struct { + Enabled bool `json:"enabled"` + Listen string `json:"listen"` + } `json:"debug"` Server struct { Address string `json:"server"` SSL bool `json:"ssl"` - } + } `json:"server"` API struct { Endpoint string `json:"endpoint"` Username string `json:"username"` @@ -32,7 +36,7 @@ type Config struct { } `json:"commands"` Names struct { ChanServ string `json:"chanserv"` - } + } `json:"names"` } var mutex sync.Mutex diff --git a/main.go b/main.go index fbe436a..552c45d 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,9 @@ package main import ( "context" + "encoding/json" "log" + "net/http" "os" "os/signal" "strings" @@ -31,6 +33,23 @@ func main() { os.Exit(1) } + if conf.Debug.Enabled { + mux := http.NewServeMux() + + mux.HandleFunc("/state", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + _ = json.NewEncoder(w).Encode(bot.ClientState()) + }) + + go func() { + err := http.ListenAndServe(conf.Debug.Listen, mux) + if err != nil { + log.Println("Failed to setup debug listener", err) + } + }() + } + // Listen for a quit signal. interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, os.Interrupt)