New option to scrub incoming CTCP commands
authorxor <xorboy@gmail.com>
Fri, 10 Jun 2011 19:39:01 +0000 (21:39 +0200)
committerAlexander Barton <alex@barton.de>
Sat, 25 Jun 2011 19:37:17 +0000 (21:37 +0200)
commitf087c68a99951d12ba91c5f6e1e0e548c5a5d912
tree25e6c3db70534ba62690285432f23e3d87d01510
parent6aad5a6706f2487019ff92da01509abda1d09b33
New option to scrub incoming CTCP commands

This patch makes it possible to scrub incomming CTCP commands from
other servers and clients alike. The ngircd oper can enable it from
the config file, by adding "ScrubCTCP = yes" under [OPTIONS]. It is
default off.

CTCP can be used to profile IRC users (get user clients name and
version, and also their IP addresses). This is not something we like
to happen when user pseudonymity/secrecy is important.

The server silently drops incomming CTCP requests from both other
servers and from users. The server that scrubs CTCP will not forward
the CTCP requests to other servers in the network either, which can
spell trouble if not every oper knows about the CTCP-scrubbing.
Scrubbing CTCP commands also means that it is not possible to send
files between users.

There is one exception to the CTCP scrubbing performed: ACTION ("/me
commands") requests are not scrubbed. ACTION is not dangerous to users
(unless they use OTR, which does not encrypt CTCP requests) and most
users would be confused if they were just dropped.

A CTCP request looks like this:

ctcp_char, COMMAND, arg0, arg1, arg2, .. argN, ctcp_char

ctcp_char is 0x01. (just like bold is 0x02 and color is 0x03.)

They are sent as part of a message and can be delivered to channels
and users alike.
src/ngircd/conf.c
src/ngircd/conf.h
src/ngircd/parse.c