This repository has been archived on 2019-06-23. You can view files and clone it, but cannot push or open issues or pull requests.
mumbledj/main.go

88 lines
2 KiB
Go
Raw Normal View History

2014-12-09 06:45:22 +01:00
/*
* MumbleDJ
* By Matthieu Grieger
* main.go
* Copyright (c) 2014 Matthieu Grieger (MIT License)
*/
package main
import (
2014-12-10 00:41:50 +01:00
"flag"
"fmt"
2014-12-09 06:45:22 +01:00
"github.com/layeh/gumble/gumble"
"github.com/layeh/gumble/gumbleutil"
)
// MumbleDJ type declaration
type mumbledj struct {
config gumble.Config
client *gumble.Client
keepAlive chan bool
defaultChannel string
conf DjConfig
}
func (dj *mumbledj) OnConnect(e *gumble.ConnectEvent) {
if dj.client.Channels().Find(dj.defaultChannel) != nil {
dj.client.Self().Move(dj.client.Channels().Find(dj.defaultChannel))
} else {
fmt.Println("No channel specified, moving to root...")
}
2014-12-13 05:52:07 +01:00
err := loadConfiguration()
2014-12-13 05:52:07 +01:00
if err == nil {
fmt.Println("Configuration successfully loaded!")
2014-12-13 18:22:30 +01:00
} else {
panic(err)
2014-12-13 05:52:07 +01:00
}
}
func (dj *mumbledj) OnDisconnect(e *gumble.DisconnectEvent) {
dj.keepAlive <- true
}
func (dj *mumbledj) OnTextMessage(e *gumble.TextMessageEvent) {
2014-12-13 05:52:07 +01:00
if e.Message[0] == '!' {
parseCommand(e.Sender.Name(), e.Message[1:])
}
}
var dj = mumbledj {
keepAlive: make(chan bool),
2014-12-09 06:45:22 +01:00
}
2014-12-10 00:41:50 +01:00
func main() {
var address, port, username, password, channel string
2014-12-10 00:41:50 +01:00
flag.StringVar(&address, "server", "localhost", "address for Mumble server")
flag.StringVar(&port, "port", "64738", "port for Mumble server")
flag.StringVar(&username, "username", "MumbleDJ", "username of MumbleDJ on server")
flag.StringVar(&password, "password", "", "password for Mumble server (if needed)")
flag.StringVar(&channel, "channel", "", "default channel for MumbleDJ")
2014-12-10 00:41:50 +01:00
flag.Parse()
dj.client = gumble.NewClient(&dj.config)
dj.config = gumble.Config{
2014-12-10 00:41:50 +01:00
Username: username,
Password: password,
Address: address + ":" + port,
}
dj.defaultChannel = channel
2014-12-10 00:41:50 +01:00
dj.client.Attach(gumbleutil.Listener{
Connect: dj.OnConnect,
Disconnect: dj.OnDisconnect,
TextMessage: dj.OnTextMessage,
})
// IMPORTANT NOTE: This will be changed later once released. Not really safe at the
// moment.
dj.config.TLSConfig.InsecureSkipVerify = true
if err := dj.client.Connect(); err != nil {
2014-12-10 00:41:50 +01:00
panic(err)
}
<-dj.keepAlive
2014-12-10 00:41:50 +01:00
}