From 4ee8790bce7d74dc2dcc5e4e99c5ed92d6b9f646 Mon Sep 17 00:00:00 2001
From: Drew Fisher <drew.m.fisher@gmail.com>
Date: Fri, 28 Jan 2011 14:23:09 -0600
Subject: [PATCH] Implement antispam tactics.

I've been getting a bunch of spam comments lately (I knew this day would
come).  This adds a field to the comment-submission page, and verifies
that the field contains a four-digit number.  Hopefully this will stop
most automated bots.
---
 shortlog.py        | 12 ++++++++++++
 templates/day.html |  1 +
 2 files changed, 13 insertions(+)

diff --git a/shortlog.py b/shortlog.py
index a341b66..a2606d3 100644
--- a/shortlog.py
+++ b/shortlog.py
@@ -147,9 +147,21 @@ class day:
 			web.template.Template.globals['len'] = len
 			print render.noentry("%s-%s-%s" % (year, month, day))
 
+	def verify(self, test):
+		if len(test) != 4:
+			return False
+		try:
+			x = int(test,10)
+		except ValueError:
+			return False
+		return True
 
 	def POST(self, year, month, day):
 		i = web.input()
+		bottest = i.bottest.strip()
+		if not self.verify(bottest):
+			web.redirect("http://127.0.0.1/go_away_bot.html")
+			return
 		name = i.name.strip()
 		email = i.email.strip()
 		website = i.website.strip()
diff --git a/templates/day.html b/templates/day.html
index df4b4fe..b2a5eac 100644
--- a/templates/day.html
+++ b/templates/day.html
@@ -34,6 +34,7 @@ $for c in comments:
 	<p><input name="name" type="text" size="30" aria-required="true" />Name</p>
 	<p><input name="email" type="text" size="30" aria-required="true" />Email (required, but won't be posted)</p>
 	<p><input name="website" type="text" size="30" aria-required="false" />Website (optional)</p>
+	<p><input name="bottest" type="text" size="30" aria-required="true" />Antispam: enter a four digit number</p>
 	<p><textarea name="comment" cols="45" rows="8" aria-required="true"></textarea></p>
 	<input name="submit" type="submit" id="submit" value="Post Comment" />
 </form>
-- 
2.39.5