Browse Source

add more debug stuffs.

master 1.0.4
Gisle Aune 4 years ago
parent
commit
b249a495a4
  1. 2
      .drone.yml
  2. 4
      Dockerfile
  3. 2
      go.mod
  4. 12
      go.sum
  5. 12
      internal/bot/bot.go
  6. 2
      internal/bot/channel.go
  7. 8
      internal/config/config.go
  8. 19
      main.go

2
.drone.yml

@ -35,7 +35,7 @@ steps:
- tag - tag
- name: go-build-1.14 - name: go-build-1.14
image: golang:1.13
image: golang:1.14
commands: commands:
- go mod download - go mod download
- CGO_ENABLED=0 go build -ldflags "-w -s" . - CGO_ENABLED=0 go build -ldflags "-w -s" .

4
Dockerfile

@ -1,6 +1,6 @@
## 1. Build Server ## 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 # Load repository into docker
WORKDIR /project WORKDIR /project

2
go.mod

@ -4,5 +4,5 @@ go 1.13
require ( require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible 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
) )

12
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 h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= 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=

12
internal/bot/bot.go

@ -76,6 +76,10 @@ func (bot *Bot) Connect(server string, ssl bool, maxRetries int) (err error) {
return err return err
} }
func (bot *Bot) ClientState() irc.ClientState {
return bot.client.State()
}
func (bot *Bot) addChannel(channelName string) *Channel { func (bot *Bot) addChannel(channelName string) *Channel {
if bot.channels[channelName] != nil { if bot.channels[channelName] != nil {
return bot.channels[channelName] return bot.channels[channelName]
@ -156,12 +160,14 @@ func (bot *Bot) loop() {
} }
} }
if len(joins) > 0 {
bot.client.Join(joins...)
}
if len(parts) > 0 { if len(parts) > 0 {
log.Println("Leaving", strings.Join(parts, ", "))
bot.client.Part(parts...) bot.client.Part(parts...)
} }
if len(joins) > 0 {
log.Println("Joining", strings.Join(joins, ", "))
bot.client.Join(joins...)
}
} }
case <-bot.loopCtx.Done(): case <-bot.loopCtx.Done():

2
internal/bot/channel.go

@ -132,7 +132,7 @@ func (channel *Channel) loop() {
if target != nil { if target != nil {
me, ok := target.UserList().User(channel.client.Nick()) me, ok := target.UserList().User(channel.client.Nick())
if !ok || !strings.ContainsRune(me.Modes, 'o') { 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 break
} }

8
internal/config/config.go

@ -14,10 +14,14 @@ type Config struct {
User string `json:"user"` User string `json:"user"`
RealName string `json:"realName"` RealName string `json:"realName"`
} `json:"bot"` } `json:"bot"`
Debug struct {
Enabled bool `json:"enabled"`
Listen string `json:"listen"`
} `json:"debug"`
Server struct { Server struct {
Address string `json:"server"` Address string `json:"server"`
SSL bool `json:"ssl"` SSL bool `json:"ssl"`
}
} `json:"server"`
API struct { API struct {
Endpoint string `json:"endpoint"` Endpoint string `json:"endpoint"`
Username string `json:"username"` Username string `json:"username"`
@ -32,7 +36,7 @@ type Config struct {
} `json:"commands"` } `json:"commands"`
Names struct { Names struct {
ChanServ string `json:"chanserv"` ChanServ string `json:"chanserv"`
}
} `json:"names"`
} }
var mutex sync.Mutex var mutex sync.Mutex

19
main.go

@ -2,7 +2,9 @@ package main
import ( import (
"context" "context"
"encoding/json"
"log" "log"
"net/http"
"os" "os"
"os/signal" "os/signal"
"strings" "strings"
@ -31,6 +33,23 @@ func main() {
os.Exit(1) 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. // Listen for a quit signal.
interrupt := make(chan os.Signal, 1) interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt) signal.Notify(interrupt, os.Interrupt)

Loading…
Cancel
Save