diff --git a/bridge/bridge.go b/bridge/bridge.go index 8fe233d6..a849ba67 100644 --- a/bridge/bridge.go +++ b/bridge/bridge.go @@ -14,47 +14,33 @@ type Bridge struct { *config.Config Source string Bridges []Bridger - kind string Channels []map[string]string ignoreNicks map[string][]string } -type FancyLog struct { - irc *log.Entry - mm *log.Entry - xmpp *log.Entry -} - type Bridger interface { Send(msg config.Message) error Name() string + Connect() error //Command(cmd string) string } -var flog FancyLog - -const Legacy = "legacy" - -func initFLog() { - flog.irc = log.WithFields(log.Fields{"module": "irc"}) - flog.mm = log.WithFields(log.Fields{"module": "mattermost"}) - flog.xmpp = log.WithFields(log.Fields{"module": "xmpp"}) -} - func NewBridge(cfg *config.Config) error { c := make(chan config.Message) - initFLog() b := &Bridge{} b.Config = cfg - if cfg.General.Irc { + if cfg.IRC.Enable { b.Bridges = append(b.Bridges, birc.New(cfg, c)) } - if cfg.General.Mattermost { + if cfg.Mattermost.Enable { b.Bridges = append(b.Bridges, bmattermost.New(cfg, c)) } - if cfg.General.Xmpp { + if cfg.Xmpp.Enable { b.Bridges = append(b.Bridges, bxmpp.New(cfg, c)) } + if len(b.Bridges) < 2 { + log.Fatalf("only %d sections enabled. Need at least 2 sections enabled (eg [IRC] and [mattermost]", len(b.Bridges)) + } b.mapChannels() b.mapIgnores() b.handleReceive(c) diff --git a/bridge/config/config.go b/bridge/config/config.go index 131ff95e..03836b63 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -26,6 +26,7 @@ type Config struct { NickServPassword string RemoteNickFormat string IgnoreNicks string + Enable bool } Mattermost struct { URL string @@ -44,6 +45,7 @@ type Config struct { RemoteNickFormat string IgnoreNicks string NoTLS bool + Enable bool } Xmpp struct { Jid string @@ -52,6 +54,7 @@ type Config struct { Muc string Nick string RemoteNickFormat string + Enable bool } Channel map[string]*struct { IRC string diff --git a/matterbridge.conf.sample b/matterbridge.conf.sample index f8f07f70..43d69a57 100644 --- a/matterbridge.conf.sample +++ b/matterbridge.conf.sample @@ -3,6 +3,9 @@ #IRC section ################################################################### [IRC] +#Enable enables this bridge +#OPTIONAL (default false) +Enable=true #irc server to connect to. #REQUIRED Server="irc.freenode.net:6667" @@ -45,6 +48,10 @@ IgnoreNicks="ircspammer1 ircspammer2" #XMPP section ################################################################### [XMPP] +#Enable enables this bridge +#OPTIONAL (default false) +Enable=true + #xmpp server to connect to. #REQUIRED Server="jabber.example.com:5222" @@ -71,6 +78,10 @@ Nick="xmppbot" ################################################################### [mattermost] +#Enable enables this bridge +#OPTIONAL (default false) +Enable=true + #### Settings for webhook matterbridge. #### These settings will not be used when using -plus switch which doesn't use #### webhooks. @@ -174,9 +185,3 @@ GiphyApiKey="dc6zaTOxFJmzC" #Enabling plus means you'll use the API version instead of the webhooks one Plus=false - -#Choose protocols to bridge. You need to specify at least two -#REQUIRED -Irc=true -Xmpp=false -Mattermost=true