Make erc use auth-source to look up channel keys
* lisp/erc/erc-join.el (erc-server-join-channel): New function to look up the channel password via auth-source. (erc-autojoin-channels): Use it. (erc-autojoin-after-ident): Ditto. (erc-autojoin-channels-alist): Mention auth-source.
This commit is contained in:
parent
ec3e5f739a
commit
b245988452
3 changed files with 37 additions and 2 deletions
4
etc/NEWS
4
etc/NEWS
|
@ -39,6 +39,10 @@ been adding them there, put them somewhere else, eg site-lisp.
|
|||
* Editing Changes in Emacs 24.2
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 24.2
|
||||
|
||||
** erc will look up server/channel names via auth-source and use the
|
||||
channel keys found, if any.
|
||||
|
||||
|
||||
* New Modes and Packages in Emacs 24.2
|
||||
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* erc-join.el (erc-server-join-channel): New function to look up
|
||||
the channel password via auth-source.
|
||||
(erc-autojoin-channels): Use it.
|
||||
(erc-autojoin-after-ident): Ditto.
|
||||
(erc-autojoin-channels-alist): Mention auth-source.
|
||||
|
||||
2012-04-10 Deniz Dogan <deniz@dogan.se> (tiny change)
|
||||
|
||||
* erc.el (erc-display-prompt): Adds the field text property to the
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
;;; Code:
|
||||
|
||||
(require 'erc)
|
||||
(require 'auth-source)
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(defgroup erc-autojoin nil
|
||||
|
@ -56,6 +57,13 @@ Every element in the alist has the form (SERVER . CHANNELS).
|
|||
SERVER is a regexp matching the server, and channels is the
|
||||
list of channels to join.
|
||||
|
||||
If the channel(s) require channel keys for joining, the passwords
|
||||
are found via auth-source. For instance, if you use ~/.authinfo
|
||||
as your auth-source backend, then put something like the
|
||||
following in that file:
|
||||
|
||||
machine irc.example.net login \"#fsf\" password sEcReT
|
||||
|
||||
Customize this variable to set the value for your first connect.
|
||||
Once you are connected and join and part channels, this alist
|
||||
keeps track of what channels you are on, and will join them
|
||||
|
@ -131,7 +139,7 @@ This function is run from `erc-nickserv-identified-hook'."
|
|||
(when (string-match (car l) server)
|
||||
(dolist (chan (cdr l))
|
||||
(unless (erc-member-ignore-case chan joined)
|
||||
(erc-server-send (concat "join " chan))))))))
|
||||
(erc-server-join-channel server chan)))))))
|
||||
nil)
|
||||
|
||||
(defun erc-autojoin-channels (server nick)
|
||||
|
@ -148,10 +156,25 @@ This function is run from `erc-nickserv-identified-hook'."
|
|||
(dolist (l erc-autojoin-channels-alist)
|
||||
(when (string-match (car l) server)
|
||||
(dolist (chan (cdr l))
|
||||
(erc-server-send (concat "join " chan))))))
|
||||
(erc-server-join-channel server chan)))))
|
||||
;; Return nil to avoid stomping on any other hook funcs.
|
||||
nil)
|
||||
|
||||
(defun erc-server-join-channel (server channel)
|
||||
(let* ((secret (plist-get (nth 0 (auth-source-search
|
||||
:max 1
|
||||
:host server
|
||||
:port "irc"
|
||||
:user channel))
|
||||
:secret))
|
||||
(password (if (functionp secret)
|
||||
(funcall secret)
|
||||
secret)))
|
||||
(erc-server-send (concat "join " channel
|
||||
(if password
|
||||
(concat " " password)
|
||||
"")))))
|
||||
|
||||
(defun erc-autojoin-add (proc parsed)
|
||||
"Add the channel being joined to `erc-autojoin-channels-alist'."
|
||||
(let* ((chnl (erc-response.contents parsed))
|
||||
|
|
Loading…
Add table
Reference in a new issue