X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fspam-report.el;h=e10639b293ee9a29db636fe40e16e7ac4b5a25a6;hb=e05737bc7f676338c6c0270c57acacd9a8d4353b;hp=288a05e32ab94f616d2ebbd0da02a8ce20f773ee;hpb=6b44171ac17939df9984842425ffab8d97471b07;p=gnus diff --git a/lisp/spam-report.el b/lisp/spam-report.el index 288a05e32..e10639b29 100644 --- a/lisp/spam-report.el +++ b/lisp/spam-report.el @@ -31,6 +31,9 @@ (require 'gnus) (require 'gnus-sum) +(eval-and-compile + (autoload 'mm-url-insert "mm-url")) + (defgroup spam-report nil "Spam reporting configuration.") @@ -54,18 +57,28 @@ instead." :type 'boolean :group 'spam-report) -(defun spam-report-gmane (article) +(defcustom spam-report-url-ping-function + 'spam-report-url-ping-plain + "Function to use for url ping spam reporting." + :type '(choice + (const :tag "Connect directly" + spam-report-url-ping-plain) + (const :tag "Use the external program specified in `mm-url-program'" + spam-report-url-ping-mm-url)) + :group 'spam-report) + +(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)) + (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)) @@ -76,11 +89,15 @@ instead." (gnus-message 10 "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)))))) - + article))))))) (defun spam-report-url-ping (host report) - "Ping a host through HTTP, addressing a specific GET resource" + "Ping a host through HTTP, addressing a specific GET resource using +the function specified by `spam-report-url-ping-function'." + (funcall spam-report-url-ping-function host report)) + +(defun spam-report-url-ping-plain (host report) + "Ping a host through HTTP, addressing a specific GET resource." (let ((tcp-connection)) (with-temp-buffer (or (setq tcp-connection @@ -91,9 +108,18 @@ instead." 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 +the external program specified in `mm-url-program' to connect to +server." + (with-temp-buffer + (let ((url (concat "http://" host "/" report))) + (mm-url-insert url t)))) (provide 'spam-report)