;;; erc-services.el --- Identify to NickServ
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
'(("autodetect") ("nick-change") ("both")) nil t))))
(add-hook 'erc-server-NOTICE-functions
'erc-nickserv-identification-autodetect)
+ (unless erc-networks-mode
+ ;; Force-enable networks module, because we need it to set
+ ;; erc-network for us.
+ (erc-networks-enable))
(cond ((eq mode 'autodetect)
(setq erc-nickserv-identify-mode 'autodetect)
(add-hook 'erc-server-NOTICE-functions
(const iip)
(const OFTC)
(const QuakeNet)
+ (const Rizon)
(const SlashNET)
(symbol :tag "Network name"))
(repeat :tag "Nickname and password"
"IDENTIFY" nil nil nil)
(freenode
"NickServ!NickServ@services."
+ ;; freenode also accepts a password at login, see the `erc'
+ ;; :password argument.
"/msg\\s-NickServ\\s-\ 2IDENTIFY\ 2\\s-<password>"
"NickServ"
"IDENTIFY" nil nil
"IDENTIFY" nil "SQUERY" nil)
(OFTC
"NickServ!services@services.oftc.net"
- "type\\s-\ 2/msg\\s-NickServ\\s-IDENTIFY\\s-\1fpassword\1f\ 2."
+ ;; OFTC's NickServ doesn't ask you to identify anymore.
+ nil
"NickServ"
- "IDENTIFY" nil nil nil)
+ "IDENTIFY" nil nil
+ "You\\s-are\\s-successfully\\s-identified\\s-as\\s-\ 2")
+ (Rizon
+ "NickServ!service@rizon.net"
+ "This\\s-nickname\\s-is\\s-registered\\s-and\\s-protected."
+ "NickServ"
+ "IDENTIFY" nil nil
+ "Password\\s-accepted\\s--\\s-you\\s-are\\s-now\\s-recognized.")
(QuakeNet
nil nil
"Q@CServe.quakenet.org"
;; continue only if we're sure it's the real nickserv for this network
;; and it's told us we've successfully identified
(when (and sender (equal sspec sender)
+ success-regex
(string-match success-regex msg))
(erc-log "NickServ IDENTIFY success notification detected")
(run-hook-with-args 'erc-nickserv-identified-hook network nick)
nil)))
(defun erc-nickserv-identify-autodetect (proc parsed)
- "Check for a NickServ identify request everytime a notice is received.
-Make sure it is the real NickServ for this network and that it has
-specifically asked the user to IDENTIFY.
+ "Identify to NickServ when an identify request is received.
+Make sure it is the real NickServ for this network.
If `erc-prompt-for-nickserv-password' is non-nil, prompt the user for the
password for this nickname, otherwise try to send it automatically."
(unless (and (null erc-nickserv-passwords)
;; continue only if we're sure it's the real nickserv for this network
;; and it's asked us to identify
(when (and sender (equal sspec sender)
+ identify-regex
(string-match identify-regex msg))
(erc-log "NickServ IDENTIFY request detected")
(erc-nickserv-call-identify-function nick)