Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 69b534ee99972316f0cb14135599dcd1d4682499 Author: Fredrik de Vibe <fredrik.devibe@theqtcompany.com> Date: Mon Mar 21 19:28:16 2016 +0000 Add Freenode style NickServ-based authentication. If the server sends a NOTICE requesting identification, identify. diff --git a/config.go b/config.go index e3fba6c..c5684ab 100644 --- a/config.go +++ b/config.go @@ -166 +168 @@ type Config struct {   Password string   Channel string   UseSlackCircumfix bool + NickServNick string + NickServPassword string   }   Mattermost struct {   URL string diff --git a/matterbridge.go b/matterbridge.go index 89c1eb7..9570c21 100644 --- a/matterbridge.go +++ b/matterbridge.go @@ -1218 +1219 @@ import (  )    type Bridge struct { - i *irc.Connection - m *matterhook.Client - cmap map[string]string + i *irc.Connection + m *matterhook.Client + cmap map[string]string + ircNick string + ircNickPass string   *Config - ircnick string  }    func NewBridge(name string, config *Config) *Bridge {   b := &Bridge{}   b.Config = config   b.cmap = make(map[string]string) - b.ircnick = b.Config.IRC.Nick + b.ircNick = b.Config.IRC.Nick   if len(b.Config.Token) > 0 {   for _, val := range b.Config.Token {   b.cmap[val.IRCChannel] = val.MMChannel @@ -5116 +5216 @@ func (b *Bridge) createIRC(name string) *irc.Connection {  }    func (b *Bridge) handleNewConnection(event *irc.Event) { - b.ircnick = event.Arguments[0] + b.ircNick = event.Arguments[0]   b.setupChannels()  }    func (b *Bridge) setupChannels() {   i := b.i - log.Println("Joining", b.Config.IRC.Channel, "as", b.ircnick) + log.Println("Joining", b.Config.IRC.Channel, "as", b.ircNick)   i.Join(b.Config.IRC.Channel)   for _, val := range b.Config.Token { - log.Println("Joining", val.IRCChannel, "as", b.ircnick) + log.Println("Joining", val.IRCChannel, "as", b.ircNick)   i.Join(val.IRCChannel)   }   i.AddCallback("PRIVMSG", b.handlePrivMsg) @@ -818 +8214 @@ func (b *Bridge) handlePrivMsg(event *irc.Event) {  }    func (b *Bridge) handleJoinPart(event *irc.Event) { - b.Send(b.ircnick, "irc-"+event.Nick+" "+strings.ToLower(event.Code)+"s "+event.Message(), b.getMMChannel(event.Arguments[0])) - //b.SendType(b.ircnick, "irc-"+event.Nick+" "+strings.ToLower(event.Code)+"s "+event.Message(), b.getMMChannel(event.Arguments[0]), "join_leave") + b.Send(b.ircNick, "irc-"+event.Nick+" "+strings.ToLower(event.Code)+"s "+event.Message(), b.getMMChannel(event.Arguments[0])) + //b.SendType(b.ircNick, "irc-"+event.Nick+" "+strings.ToLower(event.Code)+"s "+event.Message(), b.getMMChannel(event.Arguments[0]), "join_leave") +} + +func (b *Bridge) handleNotice(event *irc.Event) { + if (strings.Contains(event.Message(), "This nickname is registered")) { + b.i.Privmsg(b.Config.IRC.NickServNick, "IDENTIFY " + b.Config.IRC.NickServPassword) + }  }    func tableformatter (nicks_s string, nicksPerRow int) string { @@ -13110 +13814 @@ func (b *Bridge) handleOther(event *irc.Event) {   b.handleNewConnection(event)   case "353":   log.Println("handleOther", b.getMMChannel(event.Arguments[0])) - b.Send(b.ircnick, b.formatnicks(event.Message()), b.getMMChannel(event.Arguments[0])) + b.Send(b.ircNick, b.formatnicks(event.Message()), b.getMMChannel(event.Arguments[0])) + case "NOTICE": + b.handleNotice(event)   default: - log.Printf("got unknown event: %+v\n", event); + log.Printf("UNKNOWN EVENT: %+v\n", event); + return   } + log.Printf("%+v\n", event);  }    func (b *Bridge) Send(nick string, message string, channel string) error { @@ -1947 +2057 @@ func (b *Bridge) handleMatter() {   return   case "!gif":   message.Text = b.giphyRandom(strings.Fields(strings.Replace(message.Text, "!gif ", "", 1))) - b.Send(b.ircnick, message.Text, b.getIRCChannel(message.Token)) + b.Send(b.ircNick, message.Text, b.getIRCChannel(message.Token))   return   }   texts := strings.Split(message.Text, "\n")