Availability
SCode Plugin v0.4 and v0.5 are available at Blojsom3 Plugins download page
.
Description
SCode Plugin creates a CAPTCHA image of a random security code numbers which would be used to prevent comment spam.

Dependencies
Commons Lang v2.2
JCaptcha v1.0RC2.0.1
(for gradient and funky flavors)
Kaptcha v1.1
(for kink, fisheye, and shadow flavors)
Upgrade Instruction
From v0.4 to v0.5
Installation and Setup
Place scodeplugin-x.y.jar, commons-lang-2.2.jar, jcaptcha-all-1.0-RC-2.0.1.jar, and kaptcha-1.1.jar in /WEB-INF/lib/ directory.
Add the following to /WEB-INF/classes/blojsom-plugins.xml file (only copy and paste the bits relevant to the version of scode you're using).
<bean id="scodeSimpleImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.SimpleImageEngine"/>
<bean id="scodeGradientImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.GradientImageEngine"/>
<bean id="scodeFunkyImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.FunkyImageEngine"/>
<bean id="scodeKinkImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.KinkImageEngine"/>
<bean id="scodeFishEyeImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.FishEyeImageEngine"/>
<bean id="scodeShadowImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.ShadowImageEngine"/>
<bean id="scodeImageFactory" class="com.mbledug.blojsom.plugin.scode.ImageFactory">
<constructor-arg>
<map>
<entry key="simple" value-ref="scodeSimpleImageEngine"/>
<entry key="gradient" value-ref="scodeGradientImageEngine"/>
<entry key="funky" value-ref="scodeFunkyImageEngine"/>
<entry key="kink" value-ref="scodeKinkImageEngine"/>
<entry key="fisheye" value-ref="scodeFishEyeImageEngine"/>
<entry key="shadow" value-ref="scodeShadowImageEngine"/>
</map>
</constructor-arg>
</bean>
<bean id="scode" class="com.mbledug.blojsom.plugin.scode.SCodePlugin" init-method="init" destroy-method="destroy">
<constructor-arg>
<ref bean="scodeImageFactory"/>
</constructor-arg>
</bean>
<bean id="scode" class="com.mbledug.blojsom.plugin.scode.SCodePlugin" init-method="init" destroy-method="destroy">
<constructor-arg>
<map>
<entry key="simple" value="com.mbledug.blojsom.plugin.scode.engine.SimpleImageEngine"/>
<entry key="gradient" value="com.mbledug.blojsom.plugin.scode.engine.GradientImageEngine"/>
<entry key="funky" value="com.mbledug.blojsom.plugin.scode.engine.FunkyImageEngine"/>
</map>
</constructor-arg>
</bean>
Add the following to /WEB-INF/web.xml file.
<servlet>
<servlet-name>SCode</servlet-name>
<servlet-class>com.mbledug.blojsom.plugin.scode.SCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SCode</servlet-name>
<url-pattern>/scode</url-pattern>
</servlet-mapping>
Modify HTML plugin chain from Blojsom administration menu plugins->mappings
Add "scode" to one of the flavor-based plugin chains. You must place it before "comment" within the chain, for example:
| html |
..., scode, ..., comment, ... |
Configure SCode properties from Blojsom administration menu weblog settings->properties->set property
| Property |
Sample Value |
Description |
| scode-enabled |
true |
Enable SCode Plugin. |
Make sure the following Java system property is set if running blojsom in a server environment without a display:
 | Headless Hosting
Some BSD/Linux virtual private/dedicated server hosts do not load the libraries necessary to run Java in a headless environment.
If you have root on a host missing X11 support, load the libraries with your favorite updater.
See Philip Isenhour's Linux X11 Libraries for Headless Mode for background and detailed notes. YMMV depending on OS, Java version, updating tool, and memory and storage limits with the host. |
Usage
Add SCode input textfield to your comment form:
E.g. for asual theme, add the code below to asual-entry.vm template.
<form id="commentform" method="post" action="$permalink">
...
<!-- START SCODE PLUGIN -->
<script type="text/javascript">
function reloadSCode() {
var scodeImage = document.getElementById("scodeImage");
scodeImage.src = "$BLOJSOM_BLOG.getBlogBaseURL()/scode?flavor=kink&t=" + (new Date()).getMilliseconds();
}
</script>
<p>
<span class="section">SCode:</span> (<span class="mandatory">*</span>)
<a href="javascript: reloadSCode();">Generate another code</a>
<br/>
<img id="scodeImage" src="$BLOJSOM_BLOG.getBlogBaseURL()/scode?flavor=kink" alt="SCode"/><br/>
<input type="text" name="scode" size="6" maxlength="6"/><br/>
Please enter the code as seen in the image above to post your comment.
</p>
<!-- END SCODE PLUGIN -->
...
</form>
There are currently 6 available flavors:
v0.4 onward:
funky
gradient
simple
v0.5 onward:
kink
fisheye
shadow
Extending
Create your own image engine by implementing com.mbledug.blojsom.plugin.scode.engine.ImageEngine interface.
Add the flavor to scode bean:
<bean id="scodeYourImageEngine" class="your.package.YourImageEngine"/>
<bean id="scodeImageFactory" class="com.mbledug.blojsom.plugin.scode.ImageFactory">
<constructor-arg>
<map>
...
<entry key="simple" value-ref="scodeYourImageEngine"/>
</map>
</constructor-arg>
</bean>
Display the SCode image with the new flavour.
<img src="$BLOJSOM_BLOG.getBlogBaseURL()/scode?flavor=newflavor" alt="SCode"/><br/>
Demo
Melbourne Photoblog