add debug logging flag
This commit is contained in:
21
barnard.go
21
barnard.go
@@ -2,6 +2,10 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
"layeh.com/barnard/uiterm"
|
"layeh.com/barnard/uiterm"
|
||||||
"layeh.com/gumble/gumble"
|
"layeh.com/gumble/gumble"
|
||||||
@@ -14,6 +18,10 @@ type Barnard struct {
|
|||||||
|
|
||||||
Address string
|
Address string
|
||||||
TLSConfig tls.Config
|
TLSConfig tls.Config
|
||||||
|
Debug bool
|
||||||
|
Logger *log.Logger
|
||||||
|
TreeWidth int
|
||||||
|
LogFile *os.File
|
||||||
|
|
||||||
Stream *gumbleopenal.Stream
|
Stream *gumbleopenal.Stream
|
||||||
|
|
||||||
@@ -24,3 +32,16 @@ type Barnard struct {
|
|||||||
UiTree uiterm.Tree
|
UiTree uiterm.Tree
|
||||||
UiInputStatus uiterm.Label
|
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(gumbleutil.AutoBitrate)
|
||||||
b.Config.Attach(b)
|
b.Config.Attach(b)
|
||||||
|
|
||||||
|
b.debugf("dialing %s", b.Address)
|
||||||
var err error
|
var err error
|
||||||
_, err = gumble.DialWithDialer(new(net.Dialer), b.Address, b.Config, &b.TLSConfig)
|
_, err = gumble.DialWithDialer(new(net.Dialer), b.Address, b.Config, &b.TLSConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -25,6 +26,7 @@ func (b *Barnard) start() {
|
|||||||
if os.Getenv("ALSOFT_LOGLEVEL") == "" {
|
if os.Getenv("ALSOFT_LOGLEVEL") == "" {
|
||||||
os.Setenv("ALSOFT_LOGLEVEL", "0")
|
os.Setenv("ALSOFT_LOGLEVEL", "0")
|
||||||
}
|
}
|
||||||
|
b.debugf("initializing audio stream")
|
||||||
if stream, err := gumbleopenal.New(b.Client); err != nil {
|
if stream, err := gumbleopenal.New(b.Client); err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "%s\n", err)
|
fmt.Fprintf(os.Stderr, "%s\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
@@ -35,6 +37,7 @@ func (b *Barnard) start() {
|
|||||||
|
|
||||||
func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
|
func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
|
||||||
b.Client = e.Client
|
b.Client = e.Client
|
||||||
|
b.debugf("connected to %s", b.Client.Conn.RemoteAddr())
|
||||||
|
|
||||||
b.Ui.SetActive(uiViewInput)
|
b.Ui.SetActive(uiViewInput)
|
||||||
b.UiTree.Rebuild()
|
b.UiTree.Rebuild()
|
||||||
@@ -48,6 +51,7 @@ func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
|
func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
|
||||||
|
b.debugf("disconnected (type=%d)", e.Type)
|
||||||
var reason string
|
var reason string
|
||||||
switch e.Type {
|
switch e.Type {
|
||||||
case gumble.DisconnectError:
|
case gumble.DisconnectError:
|
||||||
@@ -63,10 +67,14 @@ func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
|
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)
|
b.AddOutputMessage(e.Sender, e.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Barnard) OnUserChange(e *gumble.UserChangeEvent) {
|
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 {
|
if e.Type.Has(gumble.UserChangeChannel) && e.User == b.Client.Self {
|
||||||
b.UpdateInputStatus(fmt.Sprintf("To: %s", e.User.Channel.Name))
|
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) {
|
func (b *Barnard) OnPermissionDenied(e *gumble.PermissionDeniedEvent) {
|
||||||
|
b.debugf("permission denied (type=%d)", e.Type)
|
||||||
var info string
|
var info string
|
||||||
switch e.Type {
|
switch e.Type {
|
||||||
case gumble.PermissionDeniedOther:
|
case gumble.PermissionDeniedOther:
|
||||||
|
|||||||
19
main.go
19
main.go
@@ -4,6 +4,7 @@ import (
|
|||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
@@ -23,6 +24,9 @@ func main() {
|
|||||||
passwordPrompt := flag.Bool("password-prompt", false, "prompt for server password on stdin")
|
passwordPrompt := flag.Bool("password-prompt", false, "prompt for server password on stdin")
|
||||||
insecure := flag.Bool("insecure", false, "skip server certificate verification")
|
insecure := flag.Bool("insecure", false, "skip server certificate verification")
|
||||||
certificate := flag.String("certificate", "", "PEM encoded certificate and private key")
|
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()
|
flag.Parse()
|
||||||
|
|
||||||
@@ -56,6 +60,21 @@ func main() {
|
|||||||
|
|
||||||
b.Config.Username = *username
|
b.Config.Username = *username
|
||||||
b.Config.Password = pass
|
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 {
|
if *insecure {
|
||||||
b.TLSConfig.InsecureSkipVerify = true
|
b.TLSConfig.InsecureSkipVerify = true
|
||||||
|
|||||||
Reference in New Issue
Block a user