Denial of Service

As I write this, GeekShed is suffering a large scale Denial of Service attack. It is expected that the attack is the result of a user being banned in the channel owned by Chris Pirillo. Following this ban, much flooding ensued. After this was quashed by #chris ops, a botnet was set on GeekShed. This was a relatively admirable botnet however it was fairly easily quashed by network staff.

Most of the servers that make up GeekShed are currently being bombarded with large volumes of ICMP and UDP traffic. Despite them being in data centres with large backbones and DDOS protection, they cannot withstand the volume of traffic being thrown at them and have buckled. Many of the servers have had to be null routed to prevent damage to other machines and customers. This is the second attack GeekShed has suffered as a result of someone being disgruntled at Chris Pirillo. Sadly, as Chris is currently now tucked up in bed and only offers the channel as a means for people to discuss tech related issues, this doesn’t affect him.

The people who are affected are the network staff who give their time and money to keep GeekShed running. The same network staff who donate their own servers for the good of GeekShed. The same network staff who are dragged out of bed at 4am to watch as their business sites crumble as a result of a misplaced attack.

It saddens me that someone would launch such an attack against a network of volunteers with such little cause. We must now sit out this attack and hope that the perpetrator realises the error of their ways or finds a more worthwhile place to attack. Until this time, service will be intermittent.

TOS Changes

We have today implemented a policy to help tackle ban evasion and various privacy issues on GeekShed. This policy underwent much discussion and we are confident that its implementation is beneficial for GeekShed and its users.

Our full Terms of Service can be found at the usual location.

The changes are as follows:

  • It is prohibited to assist users who are banned from GeekShed in communicating with other users on the network. This means that bots which relay information from one IRC network to GeekShed and back again are now prohibited. This also prohibits allowing banned users to in some way proxy through your Internet connection.
  • Due to the inherently public nature of IRC it is now allowed to post or relay channel conversations to other mediums (including the web, IM networks and other IRC networks) without warning the channel’s users or asking the permission of the channel owner. Channels which are an exception to this policy are those which are secret (chmode +s), private (chmode +p) or have ChanServ’s “Restricted Access” set on. It is prohibited to post or relay conversation from these channels to other mediums without the permission of the channel owner. Naturally, channel owners can modify this policy in any way they like for their own channel. For example, a channel owner of a public channel can prohibit the creation of channel stats by users or the posting of logs to quote databases, etc..
  • It is now prohibited to run any service which allows real time two way conversation between users who are directly connected to GeekShed and users who are not directly connected to GeekShed. This policy prohibits the use of relay bots which bring data from real time external sources such as IM and IRC networks and post it in GeekShed channels or private messages. This policy does not, however, prohibit the use of bots which provide services such as twitter feeds and RSS update notifications. If a user who is not connected to GeekShed would like to converse with users who are connected to GeekShed, they are more than welcome to connect and do so. This is unless, of course, they are banned.

If you have any questions on these changes, ask in #help on

GeekShed Bot Policy

A bot is defined as any client which joins a channel on the GeekShed IRC network and interacts with it through one or more automated scripts. If your own IRC client runs scripts which can be automatically triggered you are considered to be a bot and may be banned from the network for joining channels without the owner’s permission. To avoid this, be fully aware of the scripts that your client is running and ensure any trigger scripts are disabled in channels where permission has not been given to run them.

The following is an example of such a script:

<Phil> !uptime
<darkly57> I have been awake for 6days 7hrs 6mins 23secs

Bots are welcome on GeekShed providing that they abide by the Terms of Service. Although the whole of this document is relevant the parts especially relevant to bots are sections 7 and 8.

The most important thing to remember is: bots should NOT be joined to channels without the permission of the channel owner.

If you have any questions on allowed bots, please visit us in #help on

Setting a ban appeal procedure for your channel

We have written and loaded a module into services to allow you to specify a ban appeal procedure for your channel. This module will allow users to see your ban appeal information when they do /cs info #yourchannel and also online at We have made this URL easy to remember so that you can point people to it if they enter your channel asking about a ban in another channel.

Note: Because of the nature of services, this web page may be up to 5 mins out of date. Every channel with a ban appeal procedure specified will show up on this web page. If you do not wish your channel to show up do NOT specify a ban appeal procedure.

To specify ban appeal information for your channel use the following command:

/cs SET channel BANINFO [info]

An example of this would be:

/cs set #phil baninfo Bans cannot be appealed

To remove this, do the command with no appeal procedure specified. For example:

/cs set #phil baninfo

If you have any questions, ask in #help.

Ban Appeal Module

Due to the increasing number of people whining about channel bans in other channels, we came up with an easy solution. This was to create the page at and add information of channel’s ban appeal procedures. This page can than be linked to when someone is wondering what they can do about a channel ban.

However, this is a very messy solution and one that would take much time to maintain. Instead, we have come up with a better solution! We have written and loaded a module for Anope which allows anyone with access to ChanServ’s SET command, on a channel, to set a ban appeal procedure for that channel. This will, sometime in the near future, have the data taken from it and placed dynamically in the table you see in the link above. However, for the moment, ban appeal procedure info is shown if you do a “/cs info” command on a channel. For example: /cs info #help. You will see “Ban appeal information: Bans cannot be appealed”.

To set a ban appeal procedure on your channel use the following command:

/CS SET #channel BANINFO your ban info

For example:

/cs set #help baninfo Bans cannot be appealed

To remove the ban appeal procedure from your channel, just emit the procedure. For example:

/cs set #help baninfo

Anyone who requested that an appeal procedure be added to the site has had it automatically ported over into the new module.

Note: When the web page generation is complete EVERY channel with a ban appeal procedure set will be listed. If you don’t want your channel to be listed do not set an appeal procedure!

Ban Appeals

If you are banned from a channel on GeekShed you will find no help in other channels, especially #help. This post lists the ban appeal procedures for various channels on GeekShed. If the channel you were banned from is not listed on this page and you wish to appeal the ban you should PM the person who banned you. If they do not want to hear you out you should accept this and not PM them further.

This table lists the ban appeal procedures for channels:

Search For Channel:
Channel Appeal Procedure

How to add a list of users in your GeekShed IRC channel to your website

GeekShed now provides a live XML formatted output of users in your channel. This can be parsed and placed on your own website in the form of a list, table, etc.

The XML output can be found at An example of the use of this for #phil is To parse this into a table on your website, you can use the following PHP code. All you need do is place the code at the required location on the page and adjust the channel name at the top of the code. Following this, you can adjust the HTML to fit your site’s requirements.

// Edit This
$chan = 'phil';

// Don't edit this
$xml = simplexml_load_file(''.$chan);

<!-- Edit this HTML to suit your layout -->

      <td style="text-align: center;"><strong>Nickname</strong></td>
      <td style="text-align: center;"><strong>Status</strong></td>
      <td style="text-align: center;"><strong>Clones</strong></td>
      <td style="text-align: center;"><strong>Active (Not Away)</strong></td>

foreach ($xml->user as $user) {
   echo "\t<tr>\n";
   echo "\t\t<td style=\"text-align: center;\">{$user->nick}</td>\n";
   echo "\t\t<td style=\"text-align: center;\">{$user->status}</td>\n";
   echo "\t\t<td style=\"text-align: center;\">{$user->clones}</td>\n";
   echo "\t\t<td style=\"text-align: center;\">{$user->away}</td>\n";
   echo "\t</tr>\n";

You can also access the away message left by a user who is away using $user->awaymsg inside the foreach loop.

The DTD for the XML can be found at

As at 08 April 2010 the returned XML now has double escaped entities (e.g. < goes to &lt; and ASCII char 2 goes to &#002;). SimpleXML in the above example will do a single unescape on these such that &lt; goes to < such that it can be used in web pages whilst keeping them valid. If you use it for anything else you will need to be sure to unescape sufficiently to give you the original characters.

If you have any questions about this, ask in #help.