Census: IRC Services that Make Sense

Census is an IRC Services forked from Andrew Church's IRC Services.

It provides the basic NickServ, ChanServ, and OperServ, but offers the following:

MemoServ MemeServ FileServ PasteServ SpamServ BotServ DataServ

IRC Services (also called just "Services" for short) is a system of services to be used with Internet Relay Chat networks. Services provides for definitive nickname and channel ownership, as well as the ability to send messages ("memos") to offline users, and gives IRC operators considerably more control over the network.

In particular, Services provides the following features to an IRC network:

    Nickname management. Services allows users to "register" nicknames, and will prevent users other than the registrant from using them. Services also maintains information about each registered nickname, including the last time the nick's owner was online as well as a URL and E-mail address that can be set by the user.
    Channel management. Like nicknames, Services allows users to register channels as well. A channel's owner can give privileges to other users of the channel, such as auto-opping or the ability to set various channel options, or conversely deny other users the ability to obtain channel operator privileges or even enter the channel altogether. Services will remember the topic on the channel even after the last user leaves, and can automatically set modes on the channel whenever a user joins it.
    Messages to offline users. Probably every IRC user has gone through the experience of waiting and waiting for someone to come online in order to pass a message along or ask a question. Services alleviates this with a "memo" system, allowing users to leave messages for other users even if the recipient is not online at the time; the recipient will be notified of the memo the next time they log on.
    Centralized network control. Services includes features which allow IRC operators greater control over the IRC network through a single point, and also defines multiple privilege levels for IRC operators with respect to Services itself. For example, IRC operators with sufficient privileges can use Services to set modes on any channel; it is also possible to ban users or groups of users from connecting to the network entirely, and such bans ("autokills" in Services terminology) will remain active even if a server, or Services itself, splits from the network. 

Furthermore, each of these sets of features can be configured or disabled to match individual networks' policies.

Back to top

1-2. Overview of Services clients

Each of the major feature groups mentioned in section 1-1 above is controlled through a Services client, a nickname associated with that particular set of features. (These are often called "pseudoclients", since they are not true clients, like IRC programs used by humans, but conveniences to simplify access to Services' features.) These clients, as well as others which handle smaller areas of network control, are briefly described below; a more detailed discussion of each feature is presented in section 3, while complete information on each of the commands used to control each client can be found in section 4.

NickServ handles registration and maintenance of nicknames. Its primary functions include:

    registration and de-registration (dropping) of nicknames;
    verification of nickname users, including password authentication, and removal (either automatically or upon request) of unauthorized users;
    creation and deletion of nickname aliases (links), which allow a single user to own and switch between multiple nicknames which share settings;
    control of nickname options, including security level (whether to require a password or simply check the user's username and hostname), associated URL and E-mail address, and what information to show or not show to other users;
    recording of nickname usage information, including the nickname's last used time and the username and hostname of the nickname's last user; and
    expiration of nicknames that have not been used in a certain period of time.

Services has the ability to send messages to users in multiple languages; a user who has registered their nickname can select from any of the supported languages (English, Dutch, French, German, Hungarian, Japanese, Russian, Spanish, and Turkish). A default language can also be configured for users who have not registered their nicknames or have not selected a specific language.

Furthermore, NickServ has the ability to verify E-mail addresses associated with nicknames, by sending an "authentication code" to the E-mail address and not allowing the owner any privileges associated with the nickname until the owner sends that authentication code back to NickServ. This feature can help maintain accountability of users for their actions on IRC by requiring a valid E-mail address at which the user of a nickname can be contacted if problems arise.

ChanServ is to channels what NickServ is to nicknames; it handles registration and maintenance of channels on the IRC network. Its functions in large part mirror those of NickServ, and include:

    registration and dropping of channels (a user who registers a channel is known as the channel's founder);
    verification of channel users, through either direct password authentication or NickServ verification;
    control of channel access and autokick lists (see below);
    monitoring and adjustment of channel modes, including automatically giving channel-operator or voice privileges or "inviting" authorized users into invite-only channels;
    control of channel options, such as preventing users from changing the topic or controlling the strictness with which channel modes and privileges are enforced, and setting a URL or E-mail address for the channel;
    recording of channel usage information, including the last time a verified user was in the channel; and
    expiration of channels that have not been used in a certain period of time. 

One major difference between nicknames and channels is the access list. While nicknames may have an "access list" that lists addresses which NickServ will recognize as "allowed to use the nickname"—a feature that has little value if passwords are used as the primary means of verification—channel access lists play a much greater role, in that they control which users (nicknames) have what degree of access to (privileges in) the channel. The founder of a channel will always have full access to the channel, but the founder can, via the access list, designate other users who will receive a certain subset of channel privileges. For example, the founder might give privileges to some users to automatically receive channel operator (+o) status when they enter the channel; those users might then, in turn, designate other users to automatically receive voice (+v) status if the channel is moderated. Certain levels of access also allow users to use privileged ChanServ features, such as management of the "autokick list", explained below, or commands which remove channel bans on a user or invite the user into a channel.

Conversely, the autokick list (often referred to as the "AKICK list", from the name of the command—AKICK—which controls it) specifies users which are not to be allowed access to the channel at all. If a user joins a channel whose autokick list they are listed on, ChanServ will kick them out of the channel and set a channel ban which prevents them from entering again. Since a malicious user could easily enter using an unregistered nickname, channel founders (or other privileged users) can enter username/hostname masks as well as nicknames in the autokick list.

As channels are complex beasts, ChanServ features many options which control how the channel is managed; for example, ChanServ can be set to disallow any changes to the channel topic (if a user changes the topic, ChanServ will cancel the change by restoring the previous topic), or to prevent any users not explicitly entered in the access list from using the channel. ChanServ can also enforce a certain set of modes on a channel; for example, a channel which wants to stay hidden from casual users could use ChanServ to ensure that the +s (secret) mode is always set on the channel.

If the founder of a channel loses his nickname, whether by explicitly dropping it or by letting it expire, the channel will be dropped as well. If this should happen by accident, it can be difficult to restore all of the channel settings. To help avoid this problem, ChanServ allows channel founders to designate a successor for the channel. If the founder's nickname should ever be dropped or expire, then ChanServ will give the channel to the successor—making them the new founder of the channel—rather than dropping the channel.

MemoServ handles storage and notification of memos, short messages between IRC users. Memos can be thought of as an intermediate stage between realtime chat and E-mail; they are sent and read in the same way as ordinary chatting, but can be sent even if the recipient is not online at the time, and the recipient can read the memos at his or her leisure. Memos are particularly useful for short messages for which it would not be worth the time to start up an E-mail client and type out a complete message, or for cases where the nickname of the recipient is known but the recipient's E-mail address is not (or the recipient does not have an E-mail address at all).

MemoServ's four main functions are sending memos, listing memos which have been received, reading memos, and deleting memos after they have been read. Users can also set memo options, which include whether to notify them of new memos when they log on and whether they should be able to receive memos at all, and can have memos automatically forwarded to an authenticated E-mail address.

In addition to memos between users, memos can also be sent to channels; such memos will be sent to all users with sufficient privileges on the channel. This type of memo can be used, for example, to inform channel operators about a problem user, or as a way for users to ask questions about the channel.

OperServ provides access to the "network control" functionality of Services. Available only to IRC operators, OperServ allows:

    broadcasts of messages to the entire network (global notices), as well as recording of news messages to be sent to users when they connect to the network;
    control of modes in any channel, as well as the ability to kick any user from any channel;
    banning certain users from the entire network (autokill list and S-lines, described below);
    limiting the number of users which can connect from a single IP address, useful for preventing "cloning" (sessions), as well as making exceptions to those limits;
    disconnecting all users from a given IP address;
    preventing certain servers from connecting to the network ("juping");
    setting global Services options; and
    restarting or shutting down Services itself. 

Many of these functions can, if misused, have disastrous effects for the entire network; thus, OperServ implements a privilege system to limit which IRC operators can use which functions. Four different privilege levels are defined: normal IRC operator, Services operator, Services administrator, and Services super-user (also known as "Services root", from the Unix tradition of using the username "root" for the system super-user). Normal IRC operators can use very few of the functions above, while the Services super-user has absolute control over Services and the IRC network.

Of particular note are the autokill list and S-line features, which are to the network as autokick lists are to channels; users in these lists will be prohibited from connecting to any server on the network, and will be disconnected immediately if they do connect. The difference between the two is what they prohibit; the autokill list prohibits certain combinations of username and hostname, much like autokick lists do, while S-lines, named after the commands used by a certain IRC server to implement them, prohibit nicknames, "real names", or IP addresses (IP address checking is only available with a few IRC servers).

OperServ also includes a separate client, by default called Global, which is used to send global (network-wide) notices and news messages to users. Many networks rename this client to the same name as their network; the name of the client (as well as all other Services clients) can be changed by editing the configuration file, as described in section 2-4.

StatServ is an additional client which monitors and keeps basic statistical information regarding network usage. It can be useful to check, for example, which servers are getting the most use, or whether certain servers have a tendency to split from the network frequently.

In addition to the clients above, Services also has a built-in HTTP (web) server, which allows access to Services information (such as registered nickname and channel information and network statistics) without having to connect to the IRC network. See section 3-6 for more information about the HTTP server.