* Adding unplugged functions to spam-report.el in v5-10
@ 2005-04-21 19:56 Reiner Steib
2005-04-22 17:36 ` Ted Zlatanov
0 siblings, 1 reply; 3+ messages in thread
From: Reiner Steib @ 2005-04-21 19:56 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 969 bytes --]
Hi,
14 month ago we added the possibility to collect spam-reports in
unplugged more and submit all the requests when plugged.
As this is quite well tested and unlikely to break anything, I'd like
to add this to v5-10 too. Objection?
* spam-report.el (spam-report-unplug-agent)
(spam-report-plug-agent, spam-report-deagentize)
(spam-report-agentize, spam-report-url-ping-temp-agent-function):
support for the Agent in spam-report: when unplugged, report to a
file; when plugged, submit all the requests.
[Added missing offline functionality from trunk.]
* spam-report.el (spam-report-url-to-file)
(spam-report-requests-file): New function and variable for offline
reporting.
(spam-report-url-ping-function): Add `spam-report-url-to-file'
and user defined function.
(spam-report-process-queue): New function.
Process requests from `spam-report-requests-file'.
(spam-report-url-ping-mm-url): Autoload
[Added missing offline functionality from trunk.]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: rs-spam-report-gmane-offline-03.patch --]
[-- Type: text/x-patch, Size: 6326 bytes --]
--- spam-report.el 26 Nov 2004 03:07:44 -0000 6.9.2.2
+++ spam-report.el 21 Apr 2005 19:54:01 -0000
@@ -59,14 +59,32 @@
(defcustom spam-report-url-ping-function
'spam-report-url-ping-plain
- "Function to use for url ping spam reporting."
+ "Function to use for url ping spam reporting.
+The function must accept the arguments `host' and `report'."
: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))
+ spam-report-url-ping-mm-url)
+ (const :tag "Store request URLs in `spam-report-requests-file'"
+ spam-report-url-to-file)
+ (function :tag "User defined function" nil))
:group 'spam-report)
+(defcustom spam-report-requests-file
+ (nnheader-concat gnus-directory "spam/" "spam-report-requests.url")
+ ;; Is there a convention for the extension of such a file?
+ ;; Should we use `spam-directory'?
+ "File where spam report request are stored."
+ :type 'file
+ :group 'spam-report)
+
+(defvar spam-report-url-ping-temp-agent-function nil
+ "Internal variable for `spam-report-agentize' and `spam-report-deagentize'.
+This variable will store the value of `spam-report-url-ping-function' from
+before `spam-report-agentize' was run, so that `spam-report-deagentize' can
+undo that change.")
+
(defun spam-report-gmane (&rest articles)
"Report an article as spam through Gmane"
(dolist (article articles)
@@ -75,10 +93,11 @@
(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))
@@ -113,13 +132,112 @@
(format "GET %s HTTP/1.1\nUser-Agent: %s (spam-report.el)\nHost: %s\n\n"
report (gnus-emacs-version) host)))))
+;;;###autoload
+(defun spam-report-process-queue (&optional file keep)
+ "Report all queued requests from `spam-report-requests-file'.
+
+If FILE is given, use it instead of `spam-report-requests-file'.
+If KEEP is t, leave old requests in the file. If KEEP is the
+symbol `ask', query before flushing the queue file."
+ (interactive
+ (list (read-file-name
+ "File: "
+ (file-name-directory spam-report-requests-file)
+ spam-report-requests-file
+ nil
+ (file-name-nondirectory spam-report-requests-file))
+ current-prefix-arg))
+ (if (eq spam-report-url-ping-function 'spam-report-url-to-file)
+ (error (concat "Cannot process requests when "
+ "`spam-report-url-ping-function' is "
+ "`spam-report-url-to-file'."))
+ (gnus-message 7 "Processing requests using `%s'."
+ spam-report-url-ping-function))
+ (or file (setq file spam-report-requests-file))
+ (save-excursion
+ (set-buffer (find-file-noselect file))
+ (goto-char (point-min))
+ (while (and (not (eobp))
+ (re-search-forward
+ "http://\\([^/]+\\)\\(/.*\\) *$" (point-at-eol) t))
+ (funcall spam-report-url-ping-function (match-string 1) (match-string 2))
+ (forward-line 1))
+ (if (or (eq keep nil)
+ (and (eq keep 'ask)
+ (y-or-n-p
+ (format
+ "Flush requests from `%s'? " (current-buffer)))))
+ (progn
+ (gnus-message 7 "Flushing request file `%s'"
+ spam-report-requests-file)
+ (erase-buffer)
+ (save-buffer)
+ (kill-buffer (current-buffer)))
+ (gnus-message 7 "Keeping requests in `%s'" spam-report-requests-file))))
+
+;;;###autoload
(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)))
+ (let ((url (concat "http://" host report)))
(mm-url-insert url t))))
+
+;;;###autoload
+(defun spam-report-url-to-file (host report)
+ "Collect spam report requests in `spam-report-requests-file'.
+Customize `spam-report-url-ping-function' to use this function."
+ (let ((url (concat "http://" host report))
+ (file spam-report-requests-file))
+ (gnus-make-directory (file-name-directory file))
+ (gnus-message 9 "Writing URL `%s' to file `%s'" url file)
+ (with-temp-buffer
+ (insert url)
+ (newline)
+ (append-to-file (point-min) (point-max) file))))
+
+;;;###autoload
+(defun spam-report-agentize ()
+ "Add spam-report support to the Agent.
+Spam reports will be queued with \\[spam-report-url-to-file] when
+the Agent is unplugged, and will be submitted in a batch when the
+Agent is plugged."
+ (interactive)
+ (add-hook 'gnus-agent-plugged-hook 'spam-report-plug-agent)
+ (add-hook 'gnus-agent-unplugged-hook 'spam-report-unplug-agent))
+
+;;;###autoload
+(defun spam-report-deagentize ()
+ "Remove spam-report support from the Agent.
+Spam reports will be queued with the method used when
+\\[spam-report-agentize] was run."
+ (interactive)
+ (remove-hook 'gnus-agent-plugged-hook 'spam-report-plug-agent)
+ (remove-hook 'gnus-agent-unplugged-hook 'spam-report-unplug-agent))
+
+(defun spam-report-plug-agent ()
+ "Adjust spam report settings for plugged state.
+Process queued spam reports."
+ ;; Process the queue, unless the user only wanted to report to a file
+ ;; anyway.
+ (unless (equal spam-report-url-ping-temp-agent-function
+ 'spam-report-url-to-file)
+ (spam-report-process-queue))
+ ;; Set the reporting function, if we have memorized something otherwise,
+ ;; stick with plain URL reporting.
+ (setq spam-report-url-ping-function
+ (or spam-report-url-ping-temp-agent-function
+ 'spam-report-url-ping-plain)))
+
+(defun spam-report-unplug-agent ()
+ "Restore spam report settings for unplugged state."
+ ;; save the old value
+ (setq spam-report-url-ping-temp-agent-function
+ spam-report-url-ping-function)
+ ;; store all reports to file
+ (setq spam-report-url-ping-function
+ 'spam-report-url-to-file))
(provide 'spam-report)
[-- Attachment #3: Type: text/plain, Size: 114 bytes --]
Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Adding unplugged functions to spam-report.el in v5-10
2005-04-21 19:56 Adding unplugged functions to spam-report.el in v5-10 Reiner Steib
@ 2005-04-22 17:36 ` Ted Zlatanov
2005-04-24 17:18 ` Reiner Steib
0 siblings, 1 reply; 3+ messages in thread
From: Ted Zlatanov @ 2005-04-22 17:36 UTC (permalink / raw)
On Thu, 21 Apr 2005, reinersteib+gmane@imap.cc wrote:
> 14 month ago we added the possibility to collect spam-reports in
> unplugged more and submit all the requests when plugged.
>
> As this is quite well tested and unlikely to break anything, I'd like
> to add this to v5-10 too. Objection?
None here, I think that's fine.
Ted
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Adding unplugged functions to spam-report.el in v5-10
2005-04-22 17:36 ` Ted Zlatanov
@ 2005-04-24 17:18 ` Reiner Steib
0 siblings, 0 replies; 3+ messages in thread
From: Reiner Steib @ 2005-04-24 17:18 UTC (permalink / raw)
Cc: Miles Bader
On Fri, Apr 22 2005, Ted Zlatanov wrote:
> On Thu, 21 Apr 2005, reinersteib+gmane@imap.cc wrote:
>
>> 14 month ago we added the possibility to collect spam-reports in
>> unplugged more and submit all the requests when plugged.
>>
>> As this is quite well tested and unlikely to break anything, I'd like
>> to add this to v5-10 too. Objection?
>
> None here, I think that's fine.
Committed.
Miles, these changed don't need to be merged to the trunk, of course.
Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-04-24 17:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-21 19:56 Adding unplugged functions to spam-report.el in v5-10 Reiner Steib
2005-04-22 17:36 ` Ted Zlatanov
2005-04-24 17:18 ` Reiner Steib
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).