22 February 2017

An IRC channel of your own

How can I create a new channel?

If you attempt to JOIN a channel that does not exist, it will be created for you, and you will be given operator status (‘ops’) on that channel. Subsequent users who join the same channel will not be given operator status (as long as the channel is not empty at the time they join).

What are the things I can do as a channel operator?

Just as you can use the MODE command to adjust your own user properties, you – as a channel operator – can set certain channel modes that affect your channel:

mode mnemonic property example comments
b ban users matching this user mask cannot join the channel nor talk on the channel /MODE #mychannel +b *!*@*saunalahti.fi You would typically ban someone if they acted in an abusive fashion and kicking him did not keep him from coming back and repeating the offense. A user can usually change his nickname right away, and can often obtain a new IP address (e.g. by using a VPN service), so you will probably want to ban whole domains, or in the absence of reverse DNS, networks (e.g. /MODE #mychannel +b *!*@192.0.2.*)
i invite-only only invited users may join the channel /MODE #mychannel +i
k key only users who enter this password may join the channel /MODE #mychannel +k secret Users will need to enter the password as a parameter to the JOIN command, e.g. /JOIN #mychannel secret
l limit maximum user limit /MODE #mychannel +l 10
m moderation only ‘voiced’ users will be able to talk on the channel /MODE #mychannel +m
n no external messages only users on the same channel will be able to send messages into the channel /MODE #mychannel +n Otherwise users will be able to use PRIVMSG to send to the channel even if they are not on it
o operator give someone channel operator status /MODE #mychannel +o MyFriend You should be careful when giving ops, because you are basically giving away the channel. Never op someone you would not trust the channel to, and never op someone without being certain they really are who you think they are (it’s easy to modify one’s nickname and ‘real name’ so that they match someone else’s). On the other hand your channel should have enough ops, otherwise it may easily become stuck in an opless status
p private make the channel ‘private’ /MODE #mychannel +p A private channel will not be included in a reply to NAMES command, unless the user issuing the command is on that channel
s secret make the channel ‘secret’ /MODE #mychannel +s A secret channel will not be included in a reply to a LIST or NAMES command, unless the user issuing the command is on that channel
t topic prevent normal users (i.e. non-chanops) from setting the channel topic /MODE #mychannel +t
v voice give someone a voice, i.e. allow him to speak on the channel /MODE #mychannel +v MyFriend Technically, this is relevant only if the channel is moderated (mode +m). However, some non-moderated channels use this voice flag to denote loyal and trusted non-chanop users

The above examples illustrate setting modes using the + sign. Modes can be removed by using the - sign instead. Mode changes can also be stacked on the same command line, as in /MODE #mychannel +im.

The following commands are available only to channel operators:

command action example comments
INVITE invite someone to the channel /INVITE MyFriend #mychannel
KICK remove someone from the channel /KICK #mychannel Jeff Abusive language The comment is optional

Also, if the channel mode +t is set, only channel operators may change the channel topic (done using the TOPIC command).

How do I keep my channel operator status while I am logged off?

Normal IRC functionality does not allow for servers to ‘remember’ channel operators; if you leave the channel, you will lose ops. If you are the last user to leave the channel it will cease to exist, and the next person to join it will get ops. If you are the last op but not the last user to leave, the channel will become ‘opless’, and the only way for someone to receive ops will be joining the channel at a moment when it is empty.

If your channel has a lot of users (or even a few users who idle constantly), you could give operator status to a few persons that you trust, and require them to op you (and each other) when necessary. This approach seems easy, but it is very insecure since no reliable authentication takes place; anyone with access to the same host or dynamic IP address scope could join the channel using your nickname and username, and receive ops. (Sooner or later some idiot chanop would probably even op an attacker on nickname alone.) Instead, I am going to suggest two more secure options.

screen

The first option is the easier one. It involves running the screen program or a similar utility on a host that is constantly connected to the net; most people I know use a Unix-type server located at work, at school or at their ISP.

Basically, you start screen, join IRC, and obtain channel operator status in one way or another. When it is time to log off you ‘detach’ the screen, leaving it to ‘idle’ in the background (if you do not explicitly detach the session, it will be automatically terminated when you log off). The next time you log on you restart screen, reconnecting to your detached session, and your IRC session will be there waiting for you just as if you never would have logged off in the first place.

IRC ‘bots’

The second option is running one or more IRC robots, usually called bots. This approach is much more versatile, but also a little more complicated. You still need a constantly-connected host to run your bot on, but after installation you do not need to log onto that machine (except for performing maintenance work). The bot sits on your channel 24/7, and when you join the channel and require ops, you just start a private chat with the bot, provide a password, and the bot will op you. You may not even need to request ops from the bot since you can perform channel maintenance, such as setting bans, through the bot instead.

Not all IRC servers allow bots; check the MOTD, displayed automatically when you connect, for details on that server’s bot policy and/or contact details (some servers require you to obtain authorization prior to running a bot). You can also view the MOTD for another server on the same network using the MOTD command (e.g. /MOTD irc.domain.com).

eggdrop

The #1 IRC bot is eggdrop, available for both Unix-like systems and Windows. eggdrop bots are very powerful; ‘out of the box’ features include botnet support, dynamic ban lists and a telnet server, and tcl scripts can be used to customize the bot to do just about anything you want.

In real life bots do crash or become disconnected, so you may want to run several instead of just one. Three eggdrop bots, connected together to form a botnet, are often enough to nicely take care of one or more channels.