From c12932912e292d322e6451aa4357c48863a8ecc0 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Wed, 17 Dec 2003 00:02:57 +0000 Subject: [PATCH] r8348: add nickserv identity password reply --- debian/changelog | 6 ++++++ logger.lisp | 31 ++++++++++++++++++++----------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3f008d5..d426376 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cl-irc-logger (0.3-1) unstable; urgency=low + + * New upstream + + -- Kevin M. Rosenberg Tue, 16 Dec 2003 17:02:35 -0700 + cl-irc-logger (0.2-1) unstable; urgency=low * Initial upload diff --git a/logger.lisp b/logger.lisp index e0da56a..a1b8f5b 100644 --- a/logger.lisp +++ b/logger.lisp @@ -20,6 +20,8 @@ :documentation "IRC connection object.") (nick :initarg :nick :reader nickname :documentation "Nickname of the bot.") + (password :initarg :password :reader password + :documentation "Nickname's nickserver password.") (server :initarg :server :reader server :documentation "Connected IRC server.") (channels :initarg :channels :reader channels @@ -45,6 +47,9 @@ (defun find-logger-with-nick (nick) (find nick (the list *loggers*) :test #'string-equal :key #'nickname)) +(defun find-logger-with-connection (conn) + (find conn (the list *loggers*) :test #'eq :key #'connection)) + (defun make-output-name (name year month day) (format nil "~A-~4,'0D.~2,'0D.~2,'0D" (string-left-trim '(#\#) name) year month day)) @@ -273,7 +278,13 @@ (output-event msg :kick (first (arguments msg)))) (defun notice-hook (msg) - (output-event msg :notice (first (arguments msg)) (trailing-argument msg))) + (if (and (string-equal (source msg) "NickServ") + (string-equal "owned by someone else" (trailing-argument msg))) + (let ((logger (find-logger-with-connection (connection msg)))) + (if logger + (privmsg (connection msg) (source msg) (format nil "IDENTIFY ~A" (password logger))) + (warn "NickServ asks for identity with connection not found."))) + (output-event msg :notice (first (arguments msg)) (trailing-argument msg)))) (defun topic-hook (msg) (output-event msg :topic (first (arguments msg)) (trailing-argument msg))) @@ -297,9 +308,8 @@ "Returns T if output is setup for a single channel directory structure." (and (pathnamep user-output) (null (pathname-name user-output)))) -(defun create-logger (nick server &key channels output - (logging-stream t) - (formats '(:text))) +(defun create-logger (nick server &key channels output password + (logging-stream t) (formats '(:text))) "OUTPUT may be a pathname or a stream" ;; check arguments (assert channels) @@ -316,6 +326,7 @@ 'logger :connection conn :nick nick + :password password :server server :channels (make-channels channels formats output) :user-output output @@ -337,8 +348,8 @@ (defun start-logger (logger async) (if async - (read-message-loop-background (connection logger)) - (read-message-loop (connection logger)))) + (start-background-message-handler (connection logger)) + (read-message-loop (connection logger)))) (defun quit-logger (nick) "Quit the active connection with nick and remove from active list." @@ -359,15 +370,13 @@ (delete nick *loggers* :test #'string-equal :key #'nickname)) t)))) -(defun add-logger (nick server &key channels output - (logging-stream t) - (async t) - (formats '(:text))) +(defun add-logger (nick server &key channels output (password "") + (logging-stream t) (async t) (formats '(:text))) (when (find-logger-with-nick nick) (warn "Closing previously active connection.") (quit-logger nick)) (let ((logger (create-logger nick server :channels channels :output output - :logging-stream logging-stream + :logging-stream logging-stream :password password :formats formats))) (push logger *loggers*) (start-logger logger async) -- 2.34.1