* message.el (message-cite-prefix-regexp): Use with-syntax-table.
[gnus] / lisp / spam-report.el
index 0f546aa..efd6778 100644 (file)
@@ -1,5 +1,5 @@
 ;;; spam-report.el --- Reporting spam
-;; Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
 
 ;; Author: Teodor Zlatanov <tzz@lifelogs.com>
 ;; Keywords: network
 
 (defcustom spam-report-gmane-regex nil
   "Regexp matching Gmane newsgroups, e.g. \"^nntp\\+.*:gmane\\.\"
-If you are using spam.el, consider setting gnus-spam-process-newsgroups 
-or the gnus-group-spam-exit-processor-report-gmane group/topic parameter 
+If you are using spam.el, consider setting gnus-spam-process-newsgroups
+or the gnus-group-spam-exit-processor-report-gmane group/topic parameter
 instead."
   :type '(radio (const nil)
                (regexp :format "%t: %v\n" :size 0 :value "^nntp\+.*:gmane\."))
   :group 'spam-report)
 
-(defcustom spam-report-gmane-spam-header 
+(defcustom spam-report-gmane-spam-header
   "^X-Report-Spam: http://\\([^/]+\\)\\(.*\\)$"
   "String matching Gmane spam-reporting header.  Two match groups are needed."
   :type 'regexp
@@ -61,24 +61,24 @@ instead."
   'spam-report-url-ping-plain
   "Function to use for url ping spam reporting."
   :type '(choice
-         (const :tag "Connect directly" 
+         (const :tag "Connect directly"
                 spam-report-url-ping-plain)
-         (const :tag "Use the external program specified in `mm-url-program'" 
+         (const :tag "Use the external program specified in `mm-url-program'"
                 spam-report-url-ping-mm-url))
   :group 'spam-report)
 
-(defun spam-report-gmane (article)
+(defun spam-report-gmane (&rest articles)
   "Report an article as spam through Gmane"
-  (interactive "nEnter the article number: ")
-  (when (and gnus-newsgroup-name
-            (or (null spam-report-gmane-regex)
-                (string-match spam-report-gmane-regex gnus-newsgroup-name)))
-    (gnus-message 6 "Reporting spam article %d to spam.gmane.org..." article)
+  (dolist (article articles)
+    (when (and gnus-newsgroup-name
+              (or (null spam-report-gmane-regex)
+                  (string-match spam-report-gmane-regex gnus-newsgroup-name)))
+      (gnus-message 6 "Reporting spam article %d to spam.gmane.org..." article)
       (if spam-report-gmane-use-article-number
-         (spam-report-url-ping "spam.gmane.org" 
-                   (format "/%s:%d"
-                           (gnus-group-real-name gnus-newsgroup-name)
-                           article))
+         (spam-report-url-ping "spam.gmane.org"
+                               (format "/%s:%d"
+                                       (gnus-group-real-name gnus-newsgroup-name)
+                                       article))
        (with-current-buffer nntp-server-buffer
          (gnus-request-head article gnus-newsgroup-name)
          (goto-char (point-min))
@@ -86,10 +86,10 @@ instead."
              (let* ((host (match-string 1))
                     (report (match-string 2))
                     (url (format "http://%s%s" host report)))
-               (gnus-message 10 "Reporting spam through URL %s..." url)
+               (gnus-message 7 "Reporting spam through URL %s..." url)
                (spam-report-url-ping host report))
-           (gnus-message 10 "Could not find X-Report-Spam in article %d..."
-                         article))))))
+           (gnus-message 3 "Could not find X-Report-Spam in article %d..."
+                         article)))))))
 
 (defun spam-report-url-ping (host report)
   "Ping a host through HTTP, addressing a specific GET resource using
@@ -101,16 +101,17 @@ the function specified by `spam-report-url-ping-function'."
   (let ((tcp-connection))
     (with-temp-buffer
       (or (setq tcp-connection
-               (open-network-stream 
+               (open-network-stream
                 "URL ping"
                 (buffer-name)
                 host
                 80))
          (error "Could not open connection to %s" host))
       (set-marker (process-mark tcp-connection) (point-min))
-      (process-send-string tcp-connection
-                          (format "GET %s HTTP/1.1\nHost: %s\n\n"
-                                  report host)))))
+      (process-send-string
+       tcp-connection
+       (format "GET %s HTTP/1.1\nUser-Agent: %s (spam-report.el)\nHost: %s\n\n"
+              report (gnus-emacs-version) host)))))
 
 (defun spam-report-url-ping-mm-url (host report)
   "Ping a host through HTTP, addressing a specific GET resource. Use