X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fspam-report.el;h=3a65d979bbe6494fdb066879fcb41d5e5d42dccc;hb=95d68c5c866ebf5e063f6681053e2c44d34b80d7;hp=7c11b95b7d5d879c63bce6f9dd56a1df113bf47c;hpb=c96e1e39b6d15cb54e8a6140e074d8bca6bff9e6;p=gnus diff --git a/lisp/spam-report.el b/lisp/spam-report.el index 7c11b95b7..3a65d979b 100644 --- a/lisp/spam-report.el +++ b/lisp/spam-report.el @@ -115,17 +115,32 @@ Reports is as ham when HAM is set." "Report an article as ham by resending via email." (spam-report-resend articles t)) -(defun spam-report-gmane (&rest articles) - "Report an article as spam through Gmane." +(defun spam-report-gmane-ham (&rest articles) + "Report ARTICLES as ham (unregister) through Gmane." (interactive (gnus-summary-work-articles current-prefix-arg)) (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) + (spam-report-gmane-internal t article))) + +(defun spam-report-gmane-spam (&rest articles) + "Report ARTICLES as spam through Gmane." + (interactive (gnus-summary-work-articles current-prefix-arg)) + (dolist (article articles) + (spam-report-gmane-internal nil article))) + +;; `spam-report-gmane' was an interactive entry point, so we should provide an +;; alias. +(defalias 'spam-report-gmane 'spam-report-gmane-spam) + +(defun spam-report-gmane-internal (unspam article) + "Report ARTICLE as spam or not-spam through Gmane, depending on UNSPAM." + (when (and gnus-newsgroup-name + (or (null spam-report-gmane-regex) + (string-match spam-report-gmane-regex gnus-newsgroup-name))) + (let ((rpt-host (if unspam "unspam.gmane.org" "spam.gmane.org"))) + (gnus-message 6 "Reporting article %d to %s..." article rpt-host) (if spam-report-gmane-use-article-number (spam-report-url-ping - "spam.gmane.org" + rpt-host (format "/%s:%d" (gnus-group-real-name gnus-newsgroup-name) article)) @@ -141,6 +156,7 @@ Reports is as ham when HAM is set." ;; There might be more than one Archived-At header so we need to ;; find (and transform) the one related to Gmane. (setq field (or (gnus-fetch-field "X-Report-Spam") + (gnus-fetch-field "X-Report-Unspam") (gnus-fetch-field "Archived-At"))) (setq host (progn (string-match @@ -150,7 +166,7 @@ Reports is as ham when HAM is set." (match-string 1 field))) (setq report (match-string 2 field)) (when (string-equal "permalink.gmane.org" host) - (setq host "spam.gmane.org") + (setq host rpt-host) (setq report (gnus-replace-in-string report "/\\([0-9]+\\)$" ":\\1"))) (setq url (format "http://%s%s" host report)) @@ -158,10 +174,9 @@ Reports is as ham when HAM is set." (gnus-message 3 "Could not find a spam report header in article %d..." article) - (gnus-message 7 "Reporting spam through URL %s..." url) + (gnus-message 7 "Reporting article through URL %s..." url) (spam-report-url-ping host report)))))))) - (defun spam-report-url-ping (host report) "Ping a host through HTTP, addressing a specific GET resource using the function specified by `spam-report-url-ping-function'." @@ -185,7 +200,7 @@ the function specified by `spam-report-url-ping-function'." (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))))) + report (gnus-extended-version) host))))) ;;;###autoload (defun spam-report-process-queue (&optional file keep)