From 0b84c0c837a90d03b8079b9f8bcb9258640db0b5 Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Sat, 4 Oct 2014 23:05:24 +0530 Subject: [PATCH] Added password support --- config.cfg.template | 1 + hask-irc-core/Network/IRC/Bot.hs | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/config.cfg.template b/config.cfg.template index d553d25..ab39cbc 100644 --- a/config.cfg.template +++ b/config.cfg.template @@ -2,6 +2,7 @@ server = "irc.freenode.net" port = 6667 channel = "#testtesttest" nick = "haskman" +password = "xxxsss" timeout = 130 msghandlers = ["greeter", "welcomer", "messagelogger", "songsearch", "auth", "nicktracker", "tell"] diff --git a/hask-irc-core/Network/IRC/Bot.hs b/hask-irc-core/Network/IRC/Bot.hs index 35d4b4e..df6712e 100644 --- a/hask-irc-core/Network/IRC/Bot.hs +++ b/hask-irc-core/Network/IRC/Bot.hs @@ -7,6 +7,7 @@ module Network.IRC.Bot , messageProcessLoop ) where +import qualified Data.Configurator as CF import qualified Data.Text.Format as TF import qualified System.Log.Logger as HSL @@ -88,6 +89,7 @@ messageProcessLoop = go 0 status <- get Bot { .. } <- ask let nick = botNick botConfig + mpass <- io $ CF.lookup (config botConfig) "password" nStatus <- io . mask_ $ if idleFor >= (oneSec * botTimeout botConfig) @@ -101,7 +103,7 @@ messageProcessLoop = go 0 Timeout -> newMessage IdleMsg >>= sendMessage messageChan >> return Idle EOD -> infoM "Connection closed" >> return Disconnected Msg (msg@Message { .. }) -> do - nStatus <- handleMsg nick message + nStatus <- handleMsg nick message mpass sendMessage messageChan msg return nStatus @@ -113,14 +115,18 @@ messageProcessLoop = go 0 _ -> go 0 inChan messageChan where - handleMsg nick message + handleMsg nick message mpass | Just (JoinMsg user) <- fromMessage message, userNick user == nick = infoM "Joined" >> return Joined | Just (KickMsg { .. }) <- fromMessage message, kickedNick == nick = infoM "Kicked" >> return Kicked | Just NickInUseMsg <- fromMessage message = infoM "Nick already in use" >> return NickNotAvailable - | Just (ModeMsg { .. }) <- fromMessage message, modeUser == Self = - newMessage JoinCmd >>= sendMessage messageChan >> return Connected + | Just (ModeMsg { .. }) <- fromMessage message, modeUser == Self = do + whenJust mpass $ \pass -> do + msg <- newMessage $ PrivMsgReply (User (Nick "NickServ") "") $ "IDENTIFY " ++ pass + sendMessage messageChan msg + newMessage JoinCmd >>= sendMessage messageChan + return Connected | otherwise = return Connected