IRCOp guide

This is a guide for everyone who has their IRC server up and running and now needs to understand how to do server administration. Or, as we call it on IRC: how to do IRCOp tasks.

Before you read this
This guide assumes you have basic understanding of IRC. You are familiar with concepts like nicks, channels, user modes and channel modes, etc.

What is an IRCOp?
On IRC people with special server privileges are called "IRC Operators", often shortened to: "IRCOps" (and sometimes "Oper").

How to become an IRCOp
When setting up your server you should have added an Oper block. Then on IRC, you can type /OPER name-in-operblock password to become IRCOp.

There are various levels of IRCOp's. The operclass directive in the oper block will set this level. The highest is netadmin (which is in the default example configuration file), or netadmin-with-override (more about that later).

For more information or if you have problems /OPER'ing up, see: FAQ: How to become IRCOp / administrator

NOTE: The sections below will assume you managed to become an IRCOp.

Principles
Before we elaborate on what you can all do, let me introduce the two most popular principles / codes of conduct. It's up to you to decide which one you favor more and of course the options aren't as black/white as outlined below:

IRCOps control everything
IRCOps can join any channel, become a channel operator everywhere and reserve the right to do so whenever they deem fit.

This is often the idea someone has when setting up his/her first server. It also fits a centrally managed server where all channels are managed by server staff.

IRCOps don't interfere with channel matters
When there is a problem in a channel that can be resolved by the channel owners / channel operators, it is up to them to do so. IRCOps will only step in when security is at stake or users are harassed/spammed.

This is the most popular principle for more established servers. It allows more freedom to users.

Killing a user (KILL)
You can forcefully disconnect a user by issuing a KILL. You do this with /KILL nickname reason. The user can still reconnect.

You can also ban a user for a specified amount of time (or permanently). This comes in a few flavors:

Banning a user from the server (KLINE)
To ban a user from the server you can use /KLINE user@host duration reason. The duration is in seconds or a time expression such as 1h or 1d. Use a duration of 0 (zero) for a permanent ban. Example: This will ban all users with the host blah.example.org for 3600 seconds (one hour).

Banning a user from the network (GLINE)
To ban a user on the IRC network (so also on other linked servers), use /GLINE user@host duration reason. Example:

ZLINE, GZLINE
In addition to KLINE (local ban) and GLINE (network ban) there is also ZLINE and GZLINE. These are special in the sense that users matching (G)ZLINE's are killed immediately when they attempt to connect to the server. In contrast, KLINE/GLINE let's the user perform a hanshake. There are pro's and con's to this.

Because (G)ZLINE bans are enforced immediately they cause very little load on the server. On the other hand there are no DNS lookups done, no ident lookups, no nickname or username is known, SSL/TLS connections are never established. In short: it has a lot of downsides but it can be used if your server is under attack by a lot of clones.

In general our advice is not to use (G)ZLINE but to use KLINE/GLINE instead.

If you do want to use (G)ZLINE the syntax is: /GZLINE *@ip duration reason. Note that ZLINE is for local bans and GZLINE for network-wide. Example: As mentioned above, you need to specify an IP address and cannot use an hostname because DNS lookups are not done.

User list (WHO)
As an IRCOp you can use /WHO without parameters to see all users on the network. In contrast, a normal user can also use /WHO but will only see users that are visible to him (such as in the same channel).

User details
You are (hopefully) already familiar with the /WHOIS nickname command. As an IRCOp you will see additional information from users, such as the IP address of the user and all the channels the user in (even if they are secret).