func NewBridge(name string, config *Config, kind string) *Bridge { initFLog() b := &Bridge{} b.Config = config b.kind = kind b.ircNick = b.Config.IRC.Nick b.ircMap = make(map[string]string) b.MMirc.names = make(map[string][]string) b.ircIgnoreNicks = strings.Fields(b.Config.IRC.IgnoreNicks) b.mmIgnoreNicks = strings.Fields(b.Config.Mattermost.IgnoreNicks) if kind == Legacy { if len(b.Config.Token) > 0 { for _, val := range b.Config.Token { b.ircMap[val.IRCChannel] = val.MMChannel } } b.mh = matterhook.New(b.Config.Mattermost.URL, matterhook.Config{Port: b.Config.Mattermost.Port, Token: b.Config.Mattermost.Token, InsecureSkipVerify: b.Config.Mattermost.SkipTLSVerify, BindAddress: b.Config.Mattermost.BindAddress}) } else { b.mmMap = make(map[string]string) if len(b.Config.Channel) > 0 { for _, val := range b.Config.Channel { b.ircMap[val.IRC] = val.Mattermost b.mmMap[val.Mattermost] = val.IRC } } b.mc = matterclient.New(b.Config.Mattermost.Login, b.Config.Mattermost.Password, b.Config.Mattermost.Team, b.Config.Mattermost.Server) b.mc.SkipTLSVerify = b.Config.Mattermost.SkipTLSVerify b.mc.NoTLS = b.Config.Mattermost.NoTLS flog.mm.Infof("Trying login %s (team: %s) on %s", b.Config.Mattermost.Login, b.Config.Mattermost.Team, b.Config.Mattermost.Server) err := b.mc.Login() if err != nil { flog.mm.Fatal("Can not connect", err) } flog.mm.Info("Login ok") b.mc.JoinChannel(b.Config.Mattermost.Channel) if len(b.Config.Channel) > 0 { for _, val := range b.Config.Channel { b.mc.JoinChannel(val.Mattermost) } } go b.mc.WsReceiver() } flog.irc.Info("Trying IRC connection") b.i = b.createIRC(name) flog.irc.Info("Connection succeeded") go b.handleMatter() return b }
func (u *User) loginToMattermost() (*matterclient.MMClient, error) { mc := matterclient.New(u.Credentials.Login, u.Credentials.Pass, u.Credentials.Team, u.Credentials.Server) if u.Cfg.Insecure { mc.Credentials.NoTLS = true } mc.SetLogLevel(LogLevel) logger.Infof("login as %s (team: %s) on %s", u.Credentials.Login, u.Credentials.Team, u.Credentials.Server) err := mc.Login() if err != nil { logger.Error("login failed") return nil, err } logger.Info("login succeeded") u.mc = mc u.mc.WsQuit = false go mc.WsReceiver() go u.handleWsMessage() return mc, nil }