Thumbnail

rani/matterbridge.git

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

commit b4596abeeb68941212b7a8fd71adf2760f21c0f0 Author: Wim <wim@42.be> Date: Thu Nov 22 22:46:38 2018 +0000 Fix Nickserv logic (irc) #602 diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index 36c1cfd..538f882 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -2877 +2876 @@ func (b *Birc) handleNewConnection(client *girc.Client, event girc.Event) {   i := b.i   b.Nick = event.Params[0]   - i.Handlers.Add(girc.RPL_ENDOFMOTD, b.handleOtherAuth)   i.Handlers.Add("PRIVMSG", b.handlePrivMsg)   i.Handlers.Add("CTCP_ACTION", b.handlePrivMsg)   i.Handlers.Add(girc.RPL_TOPICWHOTIME, b.handleTopicWhoTime) @@ -2968 +2956 @@ func (b *Birc) handleNewConnection(client *girc.Client, event girc.Event) {   i.Handlers.Add("PART", b.handleJoinPart)   i.Handlers.Add("QUIT", b.handleJoinPart)   i.Handlers.Add("KICK", b.handleJoinPart) - // we are now fully connected - b.connected <- struct{}{}  }    func (b *Birc) handleJoinPart(client *girc.Client, event girc.Event) { @@ -3348 +3317 @@ func (b *Birc) handleJoinPart(client *girc.Client, event girc.Event) {    func (b *Birc) handleNotice(client *girc.Client, event girc.Event) {   if strings.Contains(event.String(), "This nickname is registered") && event.Source.Name == b.GetString("NickServNick") { - b.Log.Debugf("Sending identify to nickserv %s", b.GetString("NickServNick")) - b.i.Cmd.Message(b.GetString("NickServNick"), "IDENTIFY "+b.GetString("NickServPassword")) + b.handleNickServ()   } else {   b.handlePrivMsg(client, event)   } @@ -35710 +35311 @@ func (b *Birc) handleOther(client *girc.Client, event girc.Event) {  }    func (b *Birc) handleOtherAuth(client *girc.Client, event girc.Event) { - if strings.EqualFold(b.GetString("NickServNick"), "Q@CServe.quakenet.org") { - b.Log.Debugf("Authenticating %s against %s", b.GetString("NickServUsername"), b.GetString("NickServNick")) - b.i.Cmd.Message(b.GetString("NickServNick"), "AUTH "+b.GetString("NickServUsername")+" "+b.GetString("NickServPassword")) - } + b.handleNickServ() + // give nickserv some slack + time.Sleep(time.Second * 5) + // we are now fully connected + b.connected <- struct{}{}  }    func (b *Birc) skipPrivMsg(event girc.Event) bool { @@ -4643 +46115 @@ func (b *Birc) storeNames(client *girc.Client, event girc.Event) {  func (b *Birc) formatnicks(nicks []string) string {   return strings.Join(nicks, ", ") + " currently on IRC"  } + +func (b *Birc) handleNickServ() { + if !b.GetBool("UseSASL") && b.GetString("NickServNick") != "" && b.GetString("NickServPassword") != "" { + b.Log.Debugf("Sending identify to nickserv %s", b.GetString("NickServNick")) + b.i.Cmd.Message(b.GetString("NickServNick"), "IDENTIFY "+b.GetString("NickServPassword")) + } + if strings.EqualFold(b.GetString("NickServNick"), "Q@CServe.quakenet.org") { + b.Log.Debugf("Authenticating %s against %s", b.GetString("NickServUsername"), b.GetString("NickServNick")) + b.i.Cmd.Message(b.GetString("NickServNick"), "AUTH "+b.GetString("NickServUsername")+" "+b.GetString("NickServPassword")) + } + +}