Switch to recommended form of GPLv3 permissions notice.
[bpt/emacs.git] / lisp / erc / erc-services.el
index 099166b..5062816 100644 (file)
@@ -1,13 +1,13 @@
 ;;; 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
@@ -15,9 +15,7 @@
 ;; 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:
 
@@ -123,6 +121,10 @@ You can also use M-x erc-nickserv-identify-mode to change modes."
                  '(("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
@@ -187,6 +189,7 @@ Example of use:
                        (const iip)
                        (const OFTC)
                        (const QuakeNet)
+                       (const Rizon)
                        (const SlashNET)
                        (symbol :tag "Network name"))
                (repeat :tag "Nickname and password"
@@ -227,6 +230,8 @@ Example of use:
      "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
@@ -249,9 +254,17 @@ Example of use:
      "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"
@@ -334,15 +347,15 @@ If this is the case, run `erc-nickserv-identified-hook'."
     ;; 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)
@@ -356,6 +369,7 @@ password for this nickname, otherwise try to send it automatically."
       ;; 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)