Krop Spam — permanently stop spam in your blog comments

I’ve been tired of com­ment spam at my blogs (I also use Word­Press as a CMS engi­ne so com­ment spam is even more pain in the ass) so I have cre­ated a method to stop it. My method pro­ved to be very effi­cient and doesn’t need any human inte­rac­tion (whi­le plu­gins such as Aki­smet requ­ire blog owner to perio­di­cal­ly look thro­ugh spam fol­der to check if the­re are­n’t any fal­se posi­ti­ves). I have deci­ded to wrap it up in a plugin.

How does it work?

Well, I’ve noti­ced that spam­bots usu­al­ly direc­tly attack the wp-comments-post.php script that is a Word­Press com­ment pro­ces­sing script. Some (but this is real­ly rare) spam­mers also try to par­se the WWW page and when they find a <form> the­re, they just blin­dly fill it in and submit.

If you look into any Word­Press tem­pla­te sour­ce code, you’ll find that the­re is a <texta­rea name=„comment”> some­whe­re insi­de. This is a text field for com­ment con­tent that user enters. Spam­mers just fill it in with garbage.

What my plu­gin does is chan­ge this <texta­rea> name to some­thing meanin­gless for spam­mers (by default its „komen­ta­rzyk” which means „a lit­tle com­ment” in Polish 😉 ). This way, whe­ne­ver a spam­mer attacks your wp-comments-post.php direc­tly, he doesn’t fill now requ­ired „komen­ta­rzyk” field and the com­ment is not added. More­over, my plu­gin leaves the <texta­rea name=„comment” in the sour­ce code, but makes it small (1 row and 1 column only) and tries to hide it thro­ugh CSS (display: none) so human user will pro­ba­bly not fill that field in. Spam­mers don’t bother to check texta­re­a’s size nor do they under­stand CSS, so even when they par­se your webpa­ge, they not only fill in requ­ired „komen­ta­rzyk” field, but also fill in the „com­ment” field (becau­se they fill in just eve­ry­thing they find). This way they let your blog now they are bad people — if „com­ment” field is fil­led in, pro­ba­bly machi­ne fil­led in your com­ment form inste­ad of human. So we refu­se the com­ment to be added.

So, how to install the plugin?

1. Down­lo­ad the Krop Spam plu­gin and unzip it into your Word­Press wp-con­ten­t/plu­gins directory.
2. Ena­ble the plu­gin in Word­Press admin.
3. Open up wp-comments-post.php in your favo­ri­te text edi­tor and find a line that says:

$comment_content = trim($_POST['comment']);  

4. Repla­ce this line with fol­lo­wing fragment:

if(trim($_POST['comment']) != '') wp_die( __('Sorry, small comments field should be left empty - it\'s a spam trap.'));
$comment_content = trim($_POST['komentarzyk']);

5. You’re done 🙂

I have tested the plu­gin with few Word­Press the­mes found on the inter­net and it works cor­rec­tly. The only plu­gi­n’s requ­ire­ment is that it needs to have access to any tem­po­ra­ry direc­to­ry (usu­al­ly /tmp) on the server. It’s almost always possi­ble. If not — talk to you provider.

How efficient is it?

I have been using this method at my Kar­ko­no­sze page sin­ce a few mon­ths ago and it decre­ased the num­ber of spam I rece­ive from 20 – 30 a week to 1 in 3 mon­ths. The­re­’s no guaran­tee it will work for you though 😉

Fending questions off

In her blue eyes she­’s so blue
And her tears tear skies apart
All her colo­ur­s’ve lost the­ir hue
She­’s alo­ne and she knows that

Now she fends just for herself
Fends inco­ming questions off
All her life is fil­led with death
Peace of heart she­’s looking for

Eye to I and sight to side
Eve­ry day she­’s pas­sing through
Eager like eagle for flight
Out aga­in she seeks for truth

Tuning Freevo: display feedback when manually seeking

The­re is a nice featu­re in Fre­evo that allows one to seek the cur­ren­tly play­ing movie to any given posi­tion. One just needs to press 0 on the remo­te con­trol, then enter to which minu­te of the movie they wish to jump and press enter. For instan­ce, pres­sing 0,6,0,ENTER would fast for­ward the movie to the first hour. Unfor­tu­na­tel­ly, the­re is no visu­al feed­back whi­le pres­sing the­se keys. I tho­ught it would be nice to see „Seek to:” in mplay­er’s OSD when first pres­sed 0 and then see „Seek to: 6”, „Seek to: 60” whi­le pres­sing next buttons.

I mana­ged to do it in this way (sour­ce code edi­ting necessary):

1. Went to the /usr/lib/python2.4/site-packages/freevo/video/plugins directory.

2. Ope­ned up the mplay​er​.py file in text editor.

3. Found a line say­ing: def eventhandler(self, event, menuw=None):

4. Ten lines below def even­than­dler the­re is a line saying:

if event == VIDEO_MANUAL_SEEK:

5. After that line the­re is

rc.set_context('input')

just add that line:

self.app.write('osd_show_text "seek to: "\n')

below the rc.set_context line (self.app.write sho­uld be left ali­gned with tabs the same way rc.set_context is).

6. Fur­ther in the file the­re is a line saying:

self.seek = self.seek * 10 + int(event)

just add the line:

self.app.write('osd_show_text "seek to: ' + str(self.seek) + '"\n')

below the self​.seek line (self.app.write sho­uld be left ali­gned with tabs the same way self​.seek is).

7. Saved the file, restar­ted Fre­evo and voila!, it’s almost wor­king (I don’t know how to make it not disap­pe­ar after a second, but it does give visu­al feedback).

Tuning Freevo: subtitle and audio language switch

I deci­ded that posts in the Fre­evo cate­go­ry will be publi­shed in English so the tar­get audien­ce can be wider.

Fre­evo is a HTPC (Home The­atre Per­so­nal Com­pu­ter) over­lay for some of the most com­mon Linux mul­ti­me­dia appli­ca­tions (mplay­er, xine, etc). It is visu­al­ly and func­tio­nal­ly simi­lar to the Micro­so­ft’s Win­dows XP Media Cen­tre. I have made a PC box of some old com­po­nents that whe­re scat­te­red arro­und in my cel­lar, instal­led Ubun­tu Linux the­re, twe­aked A LOT to make it work with things like TV-OUT and remo­te con­trol and final­ly instal­led and con­fi­gu­red Fre­evo. It allows me to watch vir­tu­al­ly any kind of movies (DVD, DIVX, XVID, MKV, WMA, MPEG, etc.), play a col­lec­tion of my MP3 files, brow­se my pho­to­gra­phs and much more. Thanks to a huge hard dri­ve (250GB) I could put prac­ti­cal­ly who­le mul­ti­me­dia con­tent on the box.

In my first post I would like to give You some tips and tricks to ena­ble featu­res that are­n’t nor­mal­ly ava­ila­ble in Fre­evo (as of ver­sion 1.5.4).

O.K., let’s get going 🙂 The very first thing that I did­n’t like abo­ut Fre­evo was it’s una­bi­li­ty to select dif­fe­rent sub­ti­tles using my remo­te. It was espe­cial­ly annoy­ing when wat­ching MVK movies that have some sub­ti­tles (eg. English and French) enco­ded insi­de the video file. Mplay­er or Fre­evo auto­ma­ti­cal­ly selects embed­ded sub­ti­tles and igno­res the fact that the­re also exi­sts a spe­cial­ly pre­pa­red Movie_title.txt file with Polish (my nati­ve ton­gue 😉 ) subtitles.

So what needs to be done to fix that pro­blem is this:

1. Make sure You have some remo­te con­trol but­ton con­fi­gu­red and not used for any­thing in video con­text. Open up /etc/freevo/lircrc file and one of the sec­tions could be some­thing like this:

begin  
prog=freevo  
button=subtitle  
config=SUBTITLE  
end

2. Open up /etc/freevo/local_conf.py file and seek for a line

# EVENTS['video']['1'] = Event(VIDEO_SEND_MPLAYER_CMD, arg='contrast -100')

I’ve added two lines below:

EVENTS['video']['SUBTITLE'] = Event(VIDEO_SEND_MPLAYER_CMD, arg='sub_select')  
EVENTS['video']['LANG'] = Event(VIDEO_SEND_MPLAYER_CMD, arg='switch_audio')

The first one makes the SUBTITLE but­ton cyc­le thro­ugh all ava­ila­ble sub­ti­tles during the movie. The second line makes the LANG but­ton cyc­le thro­ugh dif­fe­rent ava­ila­ble ver­sions of audio. I find it use­ful when wat­ching DVDs whe­re default lan­gu­age often is dif­fe­rent than my native.

Yes, that is SOOO easy 🙂