2016-08-14 19:48:51 +00:00
|
|
|
package config
|
2016-07-11 19:23:33 +00:00
|
|
|
|
|
|
|
import (
|
2016-09-18 17:21:15 +00:00
|
|
|
"github.com/BurntSushi/toml"
|
2016-07-11 19:23:33 +00:00
|
|
|
"log"
|
|
|
|
)
|
|
|
|
|
2016-08-14 19:48:51 +00:00
|
|
|
type Message struct {
|
2016-09-18 17:21:15 +00:00
|
|
|
Text string
|
|
|
|
Channel string
|
|
|
|
Username string
|
|
|
|
Origin string
|
|
|
|
FullOrigin string
|
|
|
|
Protocol string
|
|
|
|
}
|
|
|
|
|
|
|
|
type Protocol struct {
|
|
|
|
BindAddress string // mattermost, slack
|
2016-09-19 18:53:26 +00:00
|
|
|
Guild string // discord
|
2016-09-18 17:21:15 +00:00
|
|
|
IconURL string // mattermost, slack
|
|
|
|
IgnoreNicks string // all protocols
|
|
|
|
Jid string // xmpp
|
|
|
|
Login string // mattermost
|
|
|
|
Muc string // xmpp
|
|
|
|
Name string // all protocols
|
|
|
|
Nick string // all protocols
|
|
|
|
NickFormatter string // mattermost, slack
|
|
|
|
NickServNick string // IRC
|
|
|
|
NickServPassword string // IRC
|
|
|
|
NicksPerRow int // mattermost, slack
|
|
|
|
NoTLS bool // mattermost
|
|
|
|
Password string // IRC,mattermost,XMPP
|
|
|
|
PrefixMessagesWithNick bool // mattemost, slack
|
|
|
|
Protocol string //all protocols
|
|
|
|
RemoteNickFormat string // all protocols
|
2016-09-19 18:53:26 +00:00
|
|
|
Server string // IRC,mattermost,XMPP,discord
|
2016-09-18 17:21:15 +00:00
|
|
|
ShowJoinPart bool // all protocols
|
|
|
|
SkipTLSVerify bool // IRC, mattermost
|
|
|
|
Team string // mattermost
|
2016-09-19 18:53:26 +00:00
|
|
|
Token string // gitter, slack, discord
|
2016-09-18 17:21:15 +00:00
|
|
|
URL string // mattermost, slack
|
|
|
|
UseAPI bool // mattermost, slack
|
|
|
|
UseSASL bool // IRC
|
|
|
|
UseTLS bool // IRC
|
|
|
|
}
|
|
|
|
|
|
|
|
type Bridge struct {
|
|
|
|
Account string
|
|
|
|
Channel string
|
|
|
|
}
|
|
|
|
|
|
|
|
type Gateway struct {
|
|
|
|
Name string
|
|
|
|
Enable bool
|
|
|
|
In []Bridge
|
|
|
|
Out []Bridge
|
2016-08-14 19:48:51 +00:00
|
|
|
}
|
|
|
|
|
2016-09-30 21:19:47 +00:00
|
|
|
type SameChannelGateway struct {
|
|
|
|
Name string
|
|
|
|
Enable bool
|
|
|
|
Channels []string
|
|
|
|
Accounts []string
|
|
|
|
}
|
|
|
|
|
2016-07-11 19:23:33 +00:00
|
|
|
type Config struct {
|
2016-09-30 21:19:47 +00:00
|
|
|
IRC map[string]Protocol
|
|
|
|
Mattermost map[string]Protocol
|
|
|
|
Slack map[string]Protocol
|
|
|
|
Gitter map[string]Protocol
|
|
|
|
Xmpp map[string]Protocol
|
|
|
|
Discord map[string]Protocol
|
|
|
|
Gateway []Gateway
|
|
|
|
SameChannelGateway []SameChannelGateway
|
2016-07-11 19:23:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func NewConfig(cfgfile string) *Config {
|
|
|
|
var cfg Config
|
2016-09-20 21:18:51 +00:00
|
|
|
if _, err := toml.DecodeFile(cfgfile, &cfg); err != nil {
|
2016-07-11 19:23:33 +00:00
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
return &cfg
|
|
|
|
}
|