Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  BLOG::SPAM::PLUGIN::SAMPLE (3)

.ds Aq ’


Blog::Spam::Plugin::Sample - A sample plugin.



This is a sample plugin which is designed to demonstrate the functionality which a plugin may implement to be usefully called by Blog::Spam::Server.

As this is an example plugin it does nothing useful.


The <B>Blog::Spam::ServerB> receives comment data, via XML::RPC, from remote clients.

These incoming comments, and associated meta-data, will be examined by each known plugin in turn. If a single plugin determines the comment is SPAM then all further testing is ceased.

This module is an example of one such plugin, and when the server is installed it will be called in order, along with any others.


For a plugin to be loaded it must live beneath the Blog::Spam::Plugin namespace.

There are only a single mandatory method which must be implemented (new), and several optional methods (classifyComment, testComment, expire, logMessage).

The <B>newB> method is required for the plugin loading to succeed. The optional methods are invoked at various points in the servers lifecycle, if they are present.

For example the <B>testCommentB> method will be called to test the state of an incoming comment SPAM or OK. The <B>expireB> method will be called periodically, if available, to carry out house-keeping tasks.

The <B>classifyCommentB> method is called only when a request to retrain a comment is received.

Finally the <B>logMessageB> method will be invoked when the server has determined an incoming message is either SPAM or OK.



This method is called when the server is started, and all plugins are loaded.

This method is mandatory.

A given plugin will only be initialised once when the server is launched, which permits the plugin to cache state internally if it wishes.


This method is invoked upon the reception of an incoming comment to test.

The arguments are a pointer to the server object, and a hash of values read from the remote client. (These remote keys include such things as the IP address of the comment submitter, their name, their email address and the comment itself. For a complete list of available keys please consult Blog::Spam::API.)
ip The IP address of the comment submitter.
comment The text of the comment received.
There are two valid return values OK, which means the comment should be allowed to continue, and SPAM which means the plugin has determined the comment to be SPAM.

Optionally the SPAM result may be qualified with a human-readable explanation:

   return "SPAM:This comment defames me";


This method is <B>optionalB>.

Some plugins maintain state which must be expired. If this method is implemented it will be invoked upon a regular frequency, with the intention that a plugin may expire its state at that time.

There are two arguments, the first is a handle to the Blog::Spam::Server object, and the second is a frequency label:
hourly This method has been called once per hour.
daily This method has been called once per day.
weekly This method has been called once per week.


This method is <B>optionalB>.

This method is called whenever a comment is submitted for retraining, because the server was judged to return the wrong result.

The parameters received are identical to those of the <B>testCommentB> method - with the addition of a new key train:
spam The comment was returned by the server as being OK but it should have been marked as SPAM.
ok The comment was previously judged as SPAM, but this was an error and the comment was actually both welcome and valid.


This method is <B>optionalB>.

This method will be called when the server wishes to log a result of a connection. ie. It will be called once for each comment at the end of the <B>testCommentB> function.

The message structure, as submitted to testing, will be supplied as a hash, and this hash will contain a pair of additional keys:
result The result of the test OK or SPAM:[reason].
blocker If the result of the test was not OK then the name of the plugin which caused the rejection will be saved in this key.


Steve Kemp


Copyright (c) 2008-2010 by Steve Kemp. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The LICENSE file contains the full text of the license.

Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 BLOG::SPAM::PLUGIN::SAMPLE (3) 2010-09-24

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.