aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Rockway2010-06-07 17:20:44 -0400
committerStefan Monnier2010-06-07 17:20:44 -0400
commit2d9a4946e70052df156d69d7737eb8e069933d21 (patch)
treef13f5cfa716243f97bb9733faf0ff664f1a2d374
parent35b148ee23a71d8a1e2c585eded278fa32208f8b (diff)
downloademacs-2d9a4946e70052df156d69d7737eb8e069933d21.tar.gz
emacs-2d9a4946e70052df156d69d7737eb8e069933d21.zip
* 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.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/net/rcirc.el23
2 files changed, 26 insertions, 4 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f4ba9e0fb40..a36b5be3f02 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12010-06-07 Jonathan Rockway <jon@jrock.us>
2
3 * net/rcirc.el: Add support for password authentication.
4 (rcirc-server-alist): Add :password keyword.
5 (rcirc): Ask for a password, or get it from the server's alist.
6 (rcirc-connect): Add password argument. Pass it to server.
7
12010-06-05 Juanma Barranquero <lekktu@gmail.com> 82010-06-05 Juanma Barranquero <lekktu@gmail.com>
2 9
3 * net/dbus.el (dbus-register-method): Declare function. 10 * net/dbus.el (dbus-register-method): Declare function.
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 8d70415148f..17e36855ac6 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -80,6 +80,11 @@ VALUE must be a number or string. If absent,
80VALUE must be a string. If absent, `rcirc-default-user-name' is 80VALUE must be a string. If absent, `rcirc-default-user-name' is
81used. 81used.
82 82
83`:password'
84
85VALUE must be a string. If absent, no PASS command will be sent
86to the server.
87
83`:full-name' 88`:full-name'
84 89
85VALUE must be a string. If absent, `rcirc-default-full-name' is 90VALUE must be a string. If absent, `rcirc-default-full-name' is
@@ -94,6 +99,7 @@ connected to automatically."
94 :value-type (plist :options ((:nick string) 99 :value-type (plist :options ((:nick string)
95 (:port integer) 100 (:port integer)
96 (:user-name string) 101 (:user-name string)
102 (:password string)
97 (:full-name string) 103 (:full-name string)
98 (:channels (repeat string))))) 104 (:channels (repeat string)))))
99 :group 'rcirc) 105 :group 'rcirc)
@@ -393,6 +399,8 @@ If ARG is non-nil, instead prompt for connection parameters."
393 (or (plist-get server-plist :nick) 399 (or (plist-get server-plist :nick)
394 rcirc-default-nick) 400 rcirc-default-nick)
395 'rcirc-nick-name-history)) 401 'rcirc-nick-name-history))
402 (password (read-passwd "IRC Password: "
403 (plist-get server-plist 'password)))
396 (channels (split-string 404 (channels (split-string
397 (read-string "IRC Channels: " 405 (read-string "IRC Channels: "
398 (mapconcat 'identity 406 (mapconcat 'identity
@@ -400,9 +408,13 @@ If ARG is non-nil, instead prompt for connection parameters."
400 :channels) 408 :channels)
401 " ")) 409 " "))
402 "[, ]+" t))) 410 "[, ]+" t)))
411
412 (when (= 0 (length password))
413 (setq password nil))
414
403 (rcirc-connect server port nick rcirc-default-user-name 415 (rcirc-connect server port nick rcirc-default-user-name
404 rcirc-default-full-name 416 rcirc-default-full-name
405 channels)) 417 channels password))
406 ;; connect to servers in `rcirc-server-alist' 418 ;; connect to servers in `rcirc-server-alist'
407 (let (connected-servers) 419 (let (connected-servers)
408 (dolist (c rcirc-server-alist) 420 (dolist (c rcirc-server-alist)
@@ -413,7 +425,8 @@ If ARG is non-nil, instead prompt for connection parameters."
413 rcirc-default-user-name)) 425 rcirc-default-user-name))
414 (full-name (or (plist-get (cdr c) :full-name) 426 (full-name (or (plist-get (cdr c) :full-name)
415 rcirc-default-full-name)) 427 rcirc-default-full-name))
416 (channels (plist-get (cdr c) :channels))) 428 (channels (plist-get (cdr c) :channels))
429 (password (plist-get (cdr c) :password)))
417 (when server 430 (when server
418 (let (connected) 431 (let (connected)
419 (dolist (p (rcirc-process-list)) 432 (dolist (p (rcirc-process-list))
@@ -422,7 +435,7 @@ If ARG is non-nil, instead prompt for connection parameters."
422 (if (not connected) 435 (if (not connected)
423 (condition-case e 436 (condition-case e
424 (rcirc-connect server port nick user-name 437 (rcirc-connect server port nick user-name
425 full-name channels) 438 full-name channels password)
426 (quit (message "Quit connecting to %s" server))) 439 (quit (message "Quit connecting to %s" server)))
427 (with-current-buffer (process-buffer connected) 440 (with-current-buffer (process-buffer connected)
428 (setq connected-servers 441 (setq connected-servers
@@ -454,7 +467,7 @@ If ARG is non-nil, instead prompt for connection parameters."
454 467
455;;;###autoload 468;;;###autoload
456(defun rcirc-connect (server &optional port nick user-name full-name 469(defun rcirc-connect (server &optional port nick user-name full-name
457 startup-channels) 470 startup-channels password)
458 (save-excursion 471 (save-excursion
459 (message "Connecting to %s..." server) 472 (message "Connecting to %s..." server)
460 (let* ((inhibit-eol-conversion) 473 (let* ((inhibit-eol-conversion)
@@ -503,6 +516,8 @@ If ARG is non-nil, instead prompt for connection parameters."
503 (add-hook 'auto-save-hook 'rcirc-log-write) 516 (add-hook 'auto-save-hook 'rcirc-log-write)
504 517
505 ;; identify 518 ;; identify
519 (when password
520 (rcirc-send-string process (concat "PASS " password)))
506 (rcirc-send-string process (concat "NICK " nick)) 521 (rcirc-send-string process (concat "NICK " nick))
507 (rcirc-send-string process (concat "USER " user-name 522 (rcirc-send-string process (concat "USER " user-name
508 " hostname servername :" 523 " hostname servername :"