add debug logging flag
This commit is contained in:
21
barnard.go
21
barnard.go
@@ -2,6 +2,10 @@ package main
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"layeh.com/barnard/uiterm"
|
||||
"layeh.com/gumble/gumble"
|
||||
@@ -14,6 +18,10 @@ type Barnard struct {
|
||||
|
||||
Address string
|
||||
TLSConfig tls.Config
|
||||
Debug bool
|
||||
Logger *log.Logger
|
||||
TreeWidth int
|
||||
LogFile *os.File
|
||||
|
||||
Stream *gumbleopenal.Stream
|
||||
|
||||
@@ -24,3 +32,16 @@ type Barnard struct {
|
||||
UiTree uiterm.Tree
|
||||
UiInputStatus uiterm.Label
|
||||
}
|
||||
|
||||
func (b *Barnard) debugf(format string, args ...interface{}) {
|
||||
if b.Debug && b.Logger != nil {
|
||||
b.Logger.Printf(format, args...)
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Barnard) logMessage(line string) {
|
||||
if b.LogFile != nil {
|
||||
now := time.Now()
|
||||
fmt.Fprintf(b.LogFile, "[%s] %s\n", now.Format("2006-01-02 15:04:05"), line)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ func (b *Barnard) start() {
|
||||
b.Config.Attach(gumbleutil.AutoBitrate)
|
||||
b.Config.Attach(b)
|
||||
|
||||
b.debugf("dialing %s", b.Address)
|
||||
var err error
|
||||
_, err = gumble.DialWithDialer(new(net.Dialer), b.Address, b.Config, &b.TLSConfig)
|
||||
if err != nil {
|
||||
@@ -25,6 +26,7 @@ func (b *Barnard) start() {
|
||||
if os.Getenv("ALSOFT_LOGLEVEL") == "" {
|
||||
os.Setenv("ALSOFT_LOGLEVEL", "0")
|
||||
}
|
||||
b.debugf("initializing audio stream")
|
||||
if stream, err := gumbleopenal.New(b.Client); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s\n", err)
|
||||
os.Exit(1)
|
||||
@@ -35,6 +37,7 @@ func (b *Barnard) start() {
|
||||
|
||||
func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
|
||||
b.Client = e.Client
|
||||
b.debugf("connected to %s", b.Client.Conn.RemoteAddr())
|
||||
|
||||
b.Ui.SetActive(uiViewInput)
|
||||
b.UiTree.Rebuild()
|
||||
@@ -48,6 +51,7 @@ func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
|
||||
}
|
||||
|
||||
func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
|
||||
b.debugf("disconnected (type=%d)", e.Type)
|
||||
var reason string
|
||||
switch e.Type {
|
||||
case gumble.DisconnectError:
|
||||
@@ -63,10 +67,14 @@ func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
|
||||
}
|
||||
|
||||
func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
|
||||
if e.Sender != nil {
|
||||
b.debugf("message from %s (%d bytes)", e.Sender.Name, len(e.Message))
|
||||
}
|
||||
b.AddOutputMessage(e.Sender, e.Message)
|
||||
}
|
||||
|
||||
func (b *Barnard) OnUserChange(e *gumble.UserChangeEvent) {
|
||||
b.debugf("user change: %s (type=%d)", e.User.Name, e.Type)
|
||||
if e.Type.Has(gumble.UserChangeChannel) && e.User == b.Client.Self {
|
||||
b.UpdateInputStatus(fmt.Sprintf("To: %s", e.User.Channel.Name))
|
||||
}
|
||||
@@ -80,6 +88,7 @@ func (b *Barnard) OnChannelChange(e *gumble.ChannelChangeEvent) {
|
||||
}
|
||||
|
||||
func (b *Barnard) OnPermissionDenied(e *gumble.PermissionDeniedEvent) {
|
||||
b.debugf("permission denied (type=%d)", e.Type)
|
||||
var info string
|
||||
switch e.Type {
|
||||
case gumble.PermissionDeniedOther:
|
||||
|
||||
19
main.go
19
main.go
@@ -4,6 +4,7 @@ import (
|
||||
"crypto/tls"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
|
||||
@@ -23,6 +24,9 @@ func main() {
|
||||
passwordPrompt := flag.Bool("password-prompt", false, "prompt for server password on stdin")
|
||||
insecure := flag.Bool("insecure", false, "skip server certificate verification")
|
||||
certificate := flag.String("certificate", "", "PEM encoded certificate and private key")
|
||||
debug := flag.Bool("debug", false, "enable debug logging to stderr")
|
||||
treeWidth := flag.Int("tree-width", 20, "width of the channel tree pane")
|
||||
logFile := flag.String("log", "", "write chat messages to file")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
@@ -56,6 +60,21 @@ func main() {
|
||||
|
||||
b.Config.Username = *username
|
||||
b.Config.Password = pass
|
||||
b.TreeWidth = *treeWidth
|
||||
b.Debug = *debug
|
||||
if b.Debug {
|
||||
b.Logger = log.New(os.Stderr, "barnard: ", log.Ltime)
|
||||
b.debugf("connecting to %s as %q", addr, *username)
|
||||
}
|
||||
if *logFile != "" {
|
||||
f, err := os.OpenFile(*logFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer f.Close()
|
||||
b.LogFile = f
|
||||
}
|
||||
|
||||
if *insecure {
|
||||
b.TLSConfig.InsecureSkipVerify = true
|
||||
|
||||
Reference in New Issue
Block a user