* elmo-pop3.el (elmo-pop3-auth-apop): Signal `elmo-pop-auth-apop'
authorokada <okada>
Sun, 19 Nov 2000 21:41:37 +0000 (21:41 +0000)
committerokada <okada>
Sun, 19 Nov 2000 21:41:37 +0000 (21:41 +0000)
if error.
(elmo-network-authenticate-session): Use `elmo-pop-auth-user'
and `elmo-pop-auth-apop'.

elmo/ChangeLog
elmo/elmo-pop3.el

index 810779e..e806a80 100644 (file)
@@ -1,5 +1,12 @@
 2000-11-19  Kenichi OKADA  <okada@opaopa.org>
 
+       * elmo-pop3.el (elmo-pop3-auth-apop): Signal `elmo-pop-auth-apop'
+       if error.
+       (elmo-network-authenticate-session): Use `elmo-pop-auth-user'
+       and `elmo-pop-auth-apop'.
+
+2000-11-19  Kenichi OKADA  <okada@opaopa.org>
+
        * elmo-pop3.el (elmo-network-authenticate-session): Fix for `APOP'.
 
 2000-11-19  Kenichi OKADA  <okada@opaopa.org>
index b706009..e9b445c 100644 (file)
             t)
            (signal 'elmo-authenticate-error
                    '(elmo-pop3-auth-apop))))
-    (signal 'elmo-open-error '(elmo-pop-auth-user))))
+    (signal 'elmo-open-error '(elmo-pop-auth-apop))))
 
 ;;; dirty hack
-(defconst sasl-pop3-user-steps
-  '(sasl-pop3-user-response-1
-    sasl-pop3-user-response-2))
-
-(defun sasl-pop3-user-response-1 (client step)
-  (sasl-client-name client))
-
-(defun sasl-pop3-user-response-2 (client step)
-  (format "PASS %s"
-         (sasl-read-passphrase
-          (format "LOGIN passphrase for %s: "
-                  (sasl-client-name client)))))
-
-(put 'sasl-pop3-user 'sasl-mechanism
-     (sasl-make-mechanism "USER" sasl-pop3-user-steps))
-
-(provide 'sasl-pop3-user)
-
-(defconst sasl-pop3-apop-steps
-  '(ignore
-    sasl-pop3-apop-response))
-
-(defun sasl-pop3-apop-response (client step)
-  (require 'md5)
-  (format "%s %s"
-         (sasl-client-name client)
-         (md5
-          (concat
-           (sasl-step-data step)
-           (sasl-read-passphrase
-            (format "LOGIN passphrase for %s: "
-                    (sasl-client-name client)))))))
-
-(put 'sasl-pop3-apop 'sasl-mechanism
-     (sasl-make-mechanism "APOP" sasl-pop3-apop-steps))
-
-(provide 'sasl-pop3-apop)
+;;;(defconst sasl-pop3-user-steps
+;;;  '(ignore
+;;;    sasl-pop3-user-response-1
+;;;    sasl-pop3-user-response-2))
+;;;
+;;;(defun sasl-pop3-user-response-1 (client step)
+;;;  (sasl-client-name client))
+;;;
+;;;(defun sasl-pop3-user-response-2 (client step)
+;;;  (format "PASS %s"
+;;;      (sasl-read-passphrase
+;;;       (format "LOGIN passphrase for %s: "
+;;;               (sasl-client-name client)))))
+;;;
+;;;(put 'sasl-pop3-user 'sasl-mechanism
+;;;     (sasl-make-mechanism "USER" sasl-pop3-user-steps))
+;;;
+;;;(provide 'sasl-pop3-user)
+;;;
+;;;(defconst sasl-pop3-apop-steps
+;;;  '(ignore
+;;;    sasl-pop3-apop-response))
+;;;
+;;;(defun sasl-pop3-apop-response (client step)
+;;;  (require 'md5)
+;;;  (format "%s %s"
+;;;      (sasl-client-name client)
+;;;      (md5
+;;;       (concat
+;;;        (sasl-step-data step)
+;;;        (sasl-read-passphrase
+;;;         (format "LOGIN passphrase for %s: "
+;;;                 (sasl-client-name client)))))))
+;;;
+;;;(put 'sasl-pop3-apop 'sasl-mechanism
+;;;     (sasl-make-mechanism "APOP" sasl-pop3-apop-steps))
+;;;
+;;;(provide 'sasl-pop3-apop)
 
 (luna-define-method elmo-network-initialize-session-buffer :after
   ((session elmo-pop3-session) buffer)
   (with-current-buffer (process-buffer 
                        (elmo-network-session-process-internal session))
     (let* ((process (elmo-network-session-process-internal session))
-        (auth (elmo-network-session-auth-internal session))
-        (auth (mapcar '(lambda (mechanism) (upcase (symbol-name mechanism)))
-                      (if (listp auth) auth (list auth))))
-        (sasl-mechanism-alist
-         (append
-          sasl-mechanism-alist
-          (list '("USER" sasl-pop3-user)
-                '("APOP" sasl-pop3-apop))))
-        (sasl-mechanisms
-         (append sasl-mechanisms (list "USER" "APOP")))
-        (mechanism
-           (sasl-find-mechanism auth))
-        client name step response
-        sasl-read-passphrase)
-      (unless mechanism
-       (signal 'elmo-authenticate-error '(elmo-pop3-auth-no-mechanisms)))
-      (setq client
-           (sasl-make-client
-            mechanism
-            (elmo-network-session-user-internal session)
-            "pop"
-            (elmo-network-session-host-internal session)))
+          (auth (elmo-network-session-auth-internal session))
+          (auth (mapcar '(lambda (mechanism) (upcase (symbol-name mechanism)))
+                        (if (listp auth) auth (list auth))))
+;;;       (sasl-mechanism-alist
+;;;        (append
+;;;         sasl-mechanism-alist
+;;;         (list '("USER" sasl-pop3-user)
+;;;               '("APOP" sasl-pop3-apop))))
+;;;       (sasl-mechanisms
+;;;        (append sasl-mechanisms (list "USER" "APOP")))
+          client name step response mechanism
+          sasl-read-passphrase)
+      (or (and (string= "USER" (car auth))
+              (elmo-pop3-auth-user session))
+         (and (string= "APOP" (car auth))
+              (elmo-pop3-auth-apop session))
+         (progn
+          (setq mechanism (sasl-find-mechanism auth))
+          (unless mechanism
+            (signal 'elmo-authenticate-error '(elmo-pop3-auth-no-mechanisms)))
+          (setq client
+                (sasl-make-client
+                 mechanism
+                 (elmo-network-session-user-internal session)
+                 "pop"
+                 (elmo-network-session-host-internal session)))
 ;;;        (if elmo-pop3-auth-user-realm
 ;;;            (sasl-client-set-property client 'realm elmo-pop3-auth-user-realm))
-      (setq name (sasl-mechanism-name mechanism))
-;      (elmo-network-session-set-auth-internal session
-;                                            (intern (downcase name)))
-      (setq sasl-read-passphrase
-           (function
-            (lambda (prompt)
-              (elmo-get-passwd
-               (elmo-network-session-password-key session)))))
-      (setq step (sasl-next-step client nil))
-      (if (string= "APOP" name)
-         (if (string-match "^\+OK .*\\(<[^\>]+>\\)"
-                           (elmo-network-session-greeting-internal session))
-             (sasl-step-set-data
-              step
-              (match-string
-               1
-               (elmo-network-session-greeting-internal session)))
-           (signal 'elmo-authenticate-error '(elmo-pop3-no-capability-apop))))
-      (if (or (string= name "USER")
-             (string= name "APOP"))
-         (progn
-           (setq step (sasl-next-step client step))
-           (elmo-pop3-send-command
-            process
-            (format "%s %s" name
-                    (sasl-step-data step))))
-      (elmo-pop3-send-command
+          (setq name (sasl-mechanism-name mechanism))
+          (elmo-network-session-set-auth-internal session
+                                                  (intern (downcase name)))
+          (setq sasl-read-passphrase
+                (function
+                 (lambda (prompt)
+                   (elmo-get-passwd
+                    (elmo-network-session-password-key session)))))
+          (setq step (sasl-next-step client nil))
+;;;      (if (string= "APOP" name)
+;;;      (if (string-match "^\+OK .*\\(<[^\>]+>\\)"
+;;;                        (elmo-network-session-greeting-internal session))
+;;;          (sasl-step-set-data
+;;;           step
+;;;           (match-string
+;;;            1
+;;;            (elmo-network-session-greeting-internal session)))
+;;;        (signal 'elmo-authenticate-error '(elmo-pop3-no-capability-apop))))
+;;;      (if (or (string= name "USER")
+;;;          (string= name "APOP"))
+;;;      (progn
+;;;        (setq step (sasl-next-step client step))
+;;;        (elmo-pop3-send-command
+;;;         process
+;;;         (format "%s %s" name
+;;;                 (sasl-step-data step))))
+   (elmo-pop3-send-command
        process
        (concat "AUTH " name
               (and (sasl-step-data step)
                    (concat 
                     " "
                     (elmo-base64-encode-string
-                     (sasl-step-data step) 'no-line-break))))))
-    (catch 'done
+                     (sasl-step-data step) 'no-line-break)))));)
+   (catch 'done
       (while t
        (unless (setq response (elmo-pop3-read-response process t))
          (signal 'elmo-authenticate-error
         (if (sasl-step-data step)
             (elmo-base64-encode-string (sasl-step-data step)
                                        'no-line-break)
-          "")))))))
+          "")))))))))
 
 (luna-define-method elmo-network-setup-session ((session
                                                 elmo-pop3-session))