Skip to content

July 2011 Update

Netgeeks has been idle for far too long and it’s time to change this. The old community format wasn’t working thus NetGeeks will now aim to bring the latest tech news in the format of a blog. Currently old posts are being imported into WordPress.

Refurbishment is currently undergoing some refurbishment. Old posts will be reposted and hopefully things will be rolling again soon! + Linux

DivX streaming from on windows was simple enough with the installation of the DivX web player. On linux, the old mplayerplug-inused to work fine when used with a greasemonkey script. Recently however this was depreciated in debian testing, and replaced with gecko-mediaplayer.

With the removal of the old mplayerplug-in for firefox, things stopped working! The videos would not load with gecko-mediaplayer (which uses gnome-mplayer rather than mplayer), and so after some investigation I was able to find a bug report where someone was having similar issues.

It appears to have been fixed in the latest release, but it is not yet in the debian repos. So in order to start using ninjavideo again, you need to compile gnome-mplayer an gecko-mediaplayer. I have keep all my source files in $HOME/src dir simply because it’s easier to manage. You can stick to your habits, or follow the instructions below.

sudo aptitude build-dep gnome-mplayer
sudo aptitude build-dep gecko-mediaplayer
cd ~/src
tar xzfv gnome-mplayer-
tar xzfv gecko-mediaplayer-

First let’s compile gnome-mplayer:

cd gnome-mplayer-
sudo make install

Then, gecko-mediaplayer:

cd gnome-mplayer-
sudo make install

And that’s it, you’re done! Restart firefox, remove/disable any conflicting plugins (e.g. totem, vlc) and ninjavideo should be running as it was!

CentOS5 – yum – cElementTree – Python

So you updated using yum, and lo and behold yum is no longer working. An attempt to use yum gives you the following:

$ yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

No module named cElementTree

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.4.3 (#1, Jul 27 2009, 17:57:39)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)]

If you cannot solve this problem yourself, please go to
the yum faq at:

I had this error on a CentOS5 VPS. Now, the fix for this is simple enough. It involves removal of some packages, then re-installing those packages we removed.

rpm -e yum yum-fastestmirror python-urlgrabber python-sqlite python-elementtree
rpm -i yum-3.2.22-20.el5.centos.noarch.rpm yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm python-urlgrabber-3.1.0-5.el5.noarch.rpm python-sqlite-1.1.7-1.2.1.i386.rpm python-elementtree-1.2.6-5.i386.rpm

Of course bear in mind the architecture and versions (depends when you are reading this post!) of the files.

This should get you up and running again.

Project Honey Pot – 1 Billion Spammers Served‏

I just received an email from project honey pot, 1 billion spammers have been served. The details are below:

On Wednesday, December 9, 2009 at 06:20 (GMT), Project Honey Pot achieved a
milestone: receiving its 1 billionth spam message. The billionth message was
an United States Internal Revenue Service phishing scam sent to an email
address that had been harvested more than two years ago. More than just a
single spam email, the billionth message represents the collective work of
you and tens of thousands of other web and email administrators like you in
more than 170 countries around the world. Together we have built Project
Honey Pot into the largest community tracking online fraud and abuse.

To celebrate this milestone, we sifted through five years of data to learn
more about spam and the spammers who send it. As a small token of thanks for
your help, we wanted to share some of our more interesting preliminary
findings. Click the following link for the Full Report:

Highlights include:

– Monday is the busiest day of the week for email spam, Saturday is the
– 12:00 (GMT) is the busiest hour of the day for spam, 23:00 (GMT) is the
– Malicious bots have increased at a compound annual growth rate (CAGR) of
378% since Project Honey Pot started
– Over the last five years, you’d have been 9 times more likely to get a
phishing message for Chase Bank than Bank of America, however Facebook is
rapidly becoming the most phished organization online
– Finland has some of the best computer security in the world, China some
of the worst
– It takes the average spammer 2 and a half weeks from when they first
harvest your email address to when they send you your first spam message,
but that’s twice as fast as they were five years ago
– Every time your email address is harvested from a website, you can expect
to receive more than 850 spam messages
– Spammers take holidays too: spam volumes drop nearly 21% on Christmas Day
and 32% on New Year’s Day
– And much more…..

We have published it under the Creative Commons Attribution license, so
don’t hesitate to share anything you find interesting. In the end, we
couldn’t have gathered this data without you.

Thank you for all your help over the last five years. Here’s to wishing you
happy holidays and a relatively spam-free New Year.

The Project Honey Pot Team

Python receives Linux New Media Award

Python has received the Linux New Media Award in the category Best Open Source Programming Language.

Knoppix inventor Klaus Knopper handed over the Best Open Source Programming Language prize, this year hotly disputed among the jury. The distinction went to Python. “The thing can do anything,” Knopper expressed. Martin von Löwis of the Python Foundation accepted the award for the Python community.

[mIRC] Request: Coloured nicks

This little snippet will simply colour nicknames when you send a message to a channel that contains nicknames within a line. It wont work if you have other on input events, I.e. acronyms, etc.. you’d have to implement it into that input event. Enjoy!

on *:INPUT:#:{
  if ($active == Status Window) return
  if ($left($1,1) == $readini($mircini,text,commandchar)) || ($left($1,1) == $chr(47)) return
  var %msg $1-
  var %num $numtok($1-,32)
  var %x 1
  while (%x <= %num) {
    var %rand $rand(2,15)
    if ($gettok(%msg,%x,32) ison $chan) var %msg $puttok(%msg,$+($chr(3),%rand,$gettok(%msg,%x,32),$chr(3)),%x,32)
    inc %x
  msg $chan %msg

[mIRC] Colour talker.

Version 1.02 – Now detects if +c or +S is set on the channel, and will stop using colour if it is.

Copy the code below:

; Colour talker v1.02
;- first release
;- fixed a silly coding error -_-, my bad (numbers wouldn't show in colour talker)
;- added a bit more error checking, still not perfect, but I can't be arsed right now.
;- Detects channel mode +S or +c (strip colour codes, block colour codes) and will stop using colour in accordance

on *:LOAD:{
   echo -atc info * Info: Successfully loaded colour talker.
   echo -atc info * Info: For a quick guide on how to use this, type /ctalk help.
   echo -atc info * Info: Alternatively you may use the menu, Colour Talker, to set up this script, it only takes a few moments. Enjoy ;).
on *:UNLOAD:{
   echo -atc info * Info: Unloading all colour talker variables...
   .unset %ctalk.*
   echo -atc info * Successfully unloaded colour talker.

#Ctalker off
on *:INPUT:*: {
   if ($left($1,1) == $chr(47)) || (Status Window == $active) || (@* iswm $active) return
   if ((c isincs $chan($chan).mode) || (S isincs $chan($chan).mode)) return
   if ($ctalk == $false) {
   echo -atc info * Error: You have colour talker enabled but have not set up your colours, type $+($chr(2),/ctalk set,$chr(2)) to set it up.
else {
   ;set start marker
   var %x 1
   ;loop, while marker is less than total tokens
   while (%x <= $gettok($1-,0,32)) {
   ;get the first letter of current token
   var %first $mid($gettok($1-,[ %x ],32),1,1)
   ;get the rest of the word, set it to our text variable
   var %text %text $replace($mid($gettok($1-,[ %x ],32),1,1),[ %first ], $+($chr(3),[ %ctalk.c1 ],[ %first ],$chr(3),[ %ctalk.c2 ])) $+ $mid($gettok($1-,[ %x ],32),2,$calc($len($gettok($1-,[ %x ],32) - 1)))
   ;increase our marker, move on to next token
   inc %x
   msg $active %text
#Ctalker END
alias ctalk {
   if $isid {
      if ($len(%ctalk.c1) == 1) || $len(%ctalk.c1) > 2) || (%ctalk.c1 > 15) || (%ctalk.c1 !isnum) return $false
      elseif ($len(%ctalk.c2) == 1) || $len(%ctalk.c2) > 2) || (%ctalk.c2 > 15) || (%ctalk.c2 !isnum) return $false
   else return $true
   if ($ctalk == $false) echo -atc info * Error: Type $+($chr(2),/ctalk set,$chr(2)) to set up.
   if ($1) {
      if ($1 == on) {
         if ($group(#ctalker) == on) echo -atc info * Error: Colour talker is already enabled
         else {
            .enable #ctalker
            echo -atc info * Info: Colour talker is now $+($chr(2),enabled,$chr(2))
      if ($1 == off) {
         if ($group(#ctalker) == off) echo -atc info * Error: Colour talker is already disabled
         else {
            .disable #ctalker
            echo -atc info * Info: Colour talker is now $+($chr(2),disabled,$chr(2))
      if ($1 == set) {
         var %ctalk.confirm $$input(We are now going to set up the colour talker! $+ $crlf $+ $crlf $+ Press "Ctrl + K" for colour reference.,oi,Colour Talker)
         set %ctalk.c1 $remove($$input(Choose a colour: e.g. 2,eo,Select Colour One,%ctalk.c1),$chr(3))
         if ($len(%ctalk.c1) > 2) || (%ctalk.c1 > 15) || (%ctalk.c1 !isnum) {
           echo -atc info * Error: Colour selected must be a numerical value between 0 and 15.
           goto colour1
         if ($len(%ctalk.c1) == 1) set %ctalk.c1 $+(0,%ctalk.c1)
         set %ctalk.c2 $remove($$input(Choose a colour: Ex. 12,eo,Select Colour Two,%ctalk.c2),$chr(3))
         if ($len(%ctalk.c2) > 2) || (%ctalk.c2 > 15) || (%ctalk.c2 !isnum) {
            echo -atc info * Error: Colour selected must be a numerical value between 0 and 15.
            goto colour1
         if ($len(%ctalk.c2) == 1) set %ctalk.c2 $+(0,%ctalk.c2)
      if ($1 == help) || ($1 == info) {
         echo -atc info $str($chr(42),115)
         echo -atc info * The colour talker enables you type in colours that will brighten up your IRC chat a bit (or annoy other users!).
         echo -atc info * Please note this script took just a few minutes to conjure up. Any problems get in touch! forgotten, #mIRC, #Coding,
         echo -atc info * Now the important stuff, how to use this thing:
         echo -atc info * To set the colour talker colours type: /ctalk on
         echo -atc info * To turn the colour talker on type: /ctalk on
         echo -atc info * To turn the colour talker off type: /ctalk on
         echo -atc info * For this guide again type: /ctalk help
         echo -atc info $str($chr(42),115)
   elseif ($1 == $null) echo -atc info * For help using the colour talker type: /ctalk help

menu channel,status {
Colour Talker
.Set Colours:ctalk set
.Help/Info:ctalk help
. -
. $iif($group(#Ctalker) == on,$style(1) Enable,Enable):ctalk on
. $iif($group(#Ctalker) == off,$style(1) Disable,Disable):ctalk off

/ctalk help
– Concise information on using this script

You can also use the popups.

I can’t remember who requested this script, and I’m sure I passed it on via IRC anyway. But regardless 😛 here it is for everyone else to see. As always comments/criticism/advise welcomed.

[mIRC] Request: Ban an IP file

A quick and short script written to zline IPs in a specified file. The IPs must be listed in the file as one IP per line, e.g.:

Follow the instructions to use.

; To use:
;1) Type /ipban.reset
;2) Ensure you specify the right file/directory in set %ipban.ipfile "nodes.csv"
;3) Type /ipban
;4) Wait until script completes, can take a while depending on size of file.

alias -l ipban_next {
  if (%ipban.pos <= {
    zline $+(*@,$read(%ipban.ipfile,%ipban.pos)) 1d Tor Exit Servers are not permitted on this network
    inc %ipban.pos
  else {
    echo -atc info *** Zlined IPs from %ipban.ipfile
    .unset %ipban.*
alias ipban {
  set %ipban.ipfile "nodes.csv"
  if ($isfile(%ipban.ipfile) == $false) { echo -atc info *** IP Ban Error: %ipban.ipfile does not exist | return }
  set $lines(%ipban.ipfile)
  if (%ipban.pos == $null) { set %ipban.pos 1 }
  .timer -m 1 5 ipban_next
alias ipban.reset .unset %ipban.*

Let me bring to attention my use of timers over a while loop for budding scripters.

The reason is for large IP files, a while loop will freeze your script. For this reason a timer was used with a 5 millisecond delay, ensuring fast zlines but without freezing the script.

I will edit this script to auto carry out /ipban.reset upon execution, but, as of now, this isn’t required as it does its job (plus I’m short on time again!!!).

Note: to edit the zline time and message:

zline $+(*@,$read(%ipban.ipfile,%ipban.pos)) 1d Tor Exit Servers are not permitted on this network

“1d” to something you want
“Tor Exit Servers are not permitted on this network” to something you want

Popular UK Dating Site Relies on MySQL to Power its Rapid Growth

MySQL AB, developer of the world’s most popular open source database, today announced that has selected the MySQL database server for its fast-growing Web 2.0 site. has rapidly become one of the most popular dating websites in the UK, with over 150,000 current users and a further 10,000 joining each month. At peak hours, there may be as many as 16,000 concurrent users in the system. Launched by TV personality Sarah Beeny and business partner Amanda Christie in September 2005, the site has been described as ‘more addictive than lemmings’.

The viral community growth of the site has been a challenge for its technical staff to keep up with. needed a fast, flexible and reliable database that would scale to support its growth. The database had to be cost-effective and backed by a high level of customer support to ensure availability at all times.

“After analysing the various solutions on the market, MySQL was the clear winner. We decided to design the site from the ground up with MySQL and PHP as the foundation in a classical scaled-out LAMP environment,” explains Matt Bridges,’s Technical Director. “I am extremely pleased with the technical support we have received from MySQL AB. We always get a quick response from someone who knows what they’re talking about. It’s the best customer service I’ve experienced from any software company.”

Matt Bridges and his team have found the MySQL database extremely well suited for the needs of a fast growing Web 2.0 site. “The speed of MySQL always impresses me and is the biggest benefit for us. We can squeeze in a surprisingly large amount of queries and concurrent users per second using low cost commodity hardware,” says Bridges. “We also leverage the flexibility to use specific storage engines for different needs.”

Managing Director, Amanda Christie, is enthusiastic about the continuing relationship with MySQL AB. “ changes people’s lives – we get reports of weddings every week here. If we are the maid of honour, then MySQL is the best man!”

Bertrand Matthelié, MySQL AB’s EMEA marketing director, said: “ is yet another demonstration of a fast-growing online company that has been able to jumpstart its business using MySQL. Using our high-performance database on lower-cost commodity hardware, companies can cost-effectively scale their infrastructure. We’re certainly delighted to contribute to so many happy couples in the UK!”