# HG changeset patch # User Stefan Monnier # Date 1275945644 14400 # Node ID dbf3fd5a15941b2c7ec41dc81bc5a98c93ee6650 # Parent 319b48a599cfb80ff87cdc60fe2001f23e19d6c1 * lisp/net/rcirc.el: Add support for password authentication. (rcirc-server-alist): Add :password keyword. (rcirc): Ask for a password, or get it from the server's alist. (rcirc-connect): Add password argument. Pass it to server. diff -r 319b48a599cf -r dbf3fd5a1594 lisp/ChangeLog --- a/lisp/ChangeLog Sat Jun 05 22:36:27 2010 +0200 +++ b/lisp/ChangeLog Mon Jun 07 17:20:44 2010 -0400 @@ -1,3 +1,10 @@ +2010-06-07 Jonathan Rockway + + * net/rcirc.el: Add support for password authentication. + (rcirc-server-alist): Add :password keyword. + (rcirc): Ask for a password, or get it from the server's alist. + (rcirc-connect): Add password argument. Pass it to server. + 2010-06-05 Juanma Barranquero * net/dbus.el (dbus-register-method): Declare function. diff -r 319b48a599cf -r dbf3fd5a1594 lisp/net/rcirc.el --- a/lisp/net/rcirc.el Sat Jun 05 22:36:27 2010 +0200 +++ b/lisp/net/rcirc.el Mon Jun 07 17:20:44 2010 -0400 @@ -80,6 +80,11 @@ VALUE must be a string. If absent, `rcirc-default-user-name' is used. +`:password' + +VALUE must be a string. If absent, no PASS command will be sent +to the server. + `:full-name' VALUE must be a string. If absent, `rcirc-default-full-name' is @@ -94,6 +99,7 @@ :value-type (plist :options ((:nick string) (:port integer) (:user-name string) + (:password string) (:full-name string) (:channels (repeat string))))) :group 'rcirc) @@ -393,6 +399,8 @@ (or (plist-get server-plist :nick) rcirc-default-nick) 'rcirc-nick-name-history)) + (password (read-passwd "IRC Password: " + (plist-get server-plist 'password))) (channels (split-string (read-string "IRC Channels: " (mapconcat 'identity @@ -400,9 +408,13 @@ :channels) " ")) "[, ]+" t))) + + (when (= 0 (length password)) + (setq password nil)) + (rcirc-connect server port nick rcirc-default-user-name rcirc-default-full-name - channels)) + channels password)) ;; connect to servers in `rcirc-server-alist' (let (connected-servers) (dolist (c rcirc-server-alist) @@ -413,7 +425,8 @@ rcirc-default-user-name)) (full-name (or (plist-get (cdr c) :full-name) rcirc-default-full-name)) - (channels (plist-get (cdr c) :channels))) + (channels (plist-get (cdr c) :channels)) + (password (plist-get (cdr c) :password))) (when server (let (connected) (dolist (p (rcirc-process-list)) @@ -422,7 +435,7 @@ (if (not connected) (condition-case e (rcirc-connect server port nick user-name - full-name channels) + full-name channels password) (quit (message "Quit connecting to %s" server))) (with-current-buffer (process-buffer connected) (setq connected-servers @@ -454,7 +467,7 @@ ;;;###autoload (defun rcirc-connect (server &optional port nick user-name full-name - startup-channels) + startup-channels password) (save-excursion (message "Connecting to %s..." server) (let* ((inhibit-eol-conversion) @@ -503,6 +516,8 @@ (add-hook 'auto-save-hook 'rcirc-log-write) ;; identify + (when password + (rcirc-send-string process (concat "PASS " password))) (rcirc-send-string process (concat "NICK " nick)) (rcirc-send-string process (concat "USER " user-name " hostname servername :"