Add documentation for extensions/filter
This commit is contained in:
parent
0ca18d072a
commit
28bcd75330
2 changed files with 73 additions and 0 deletions
46
doc/features/filter.txt
Normal file
46
doc/features/filter.txt
Normal file
|
@ -0,0 +1,46 @@
|
|||
extensions/filter module documentation
|
||||
--------------------------------------
|
||||
|
||||
The filter extension implements message content filtering using
|
||||
solanum's hook framework and Intel's Hyperscan regular expression
|
||||
matching library.
|
||||
|
||||
It requires an x86_64 processor with SSSE3 extensions.
|
||||
|
||||
To operate, the filter requires a database of regular expessions
|
||||
that have been compiled using the Hyperscan library's
|
||||
hs_compile_multi() or hs_compile_ext_multi() functions.
|
||||
|
||||
The command SETFILTER is used to manage operation of the filter and to
|
||||
load compiled Hyperscan databases.
|
||||
|
||||
General documenation of SETFILTER is available using the 'HELP SETFILTER'
|
||||
command.
|
||||
|
||||
For each expression in the database, the three least significant bits
|
||||
of the expression ID are used to indicate which action the ircd should
|
||||
take in the event of a match:
|
||||
|
||||
001 (1) DROP - The message will be dropped and the client will be sent
|
||||
an ERR_CANNOTSENDTOCHAN message.
|
||||
010 (2) KILL - The connection from which the message was recevied will
|
||||
be closed.
|
||||
100 (4) ALARM - A Server Notice will be generated indicating that an
|
||||
expression was matched. The nick, user, hostname and
|
||||
IP address will be reported. For privacy, the expression
|
||||
that has been matched will not be disclosed.
|
||||
|
||||
Messages are passed to the filter module in a format similar to an
|
||||
IRC messages:
|
||||
|
||||
0:nick!user@host#1 PRIVMSG #help :hello!
|
||||
|
||||
The number at the start of the line indicates the scanning pass:
|
||||
Messages are scanned twice, once as they were received (0), and once
|
||||
with any formatting or unprintable characters stripped (1).
|
||||
|
||||
By default, 'nick', 'user' and 'host' will contain *. This behaviour
|
||||
can be changed at build time if filtering on these fields is required.
|
||||
|
||||
The number after the # will be 0 or 1 depending on whether the sending
|
||||
client was identified to a NickServ account.
|
27
help/opers/setfilter
Normal file
27
help/opers/setfilter
Normal file
|
@ -0,0 +1,27 @@
|
|||
SETFILTER * ENABLE
|
||||
SETFILTER * DISABLE
|
||||
SETFILTER * DROP
|
||||
SETFILTER * ABORT
|
||||
SETFILTER [server-mask] <check> { NEW | APPLY | +<data> }
|
||||
|
||||
Manages Hyperscan message filtering.
|
||||
|
||||
ENABLE activates filtering.
|
||||
|
||||
DISABLE deactivates filtering. It can be re-enabled with ENABLE.
|
||||
|
||||
DROP unloads the currently loaded Hyperscan database, if any.
|
||||
|
||||
ABORT cancels a database load operation started with NEW.
|
||||
|
||||
NEW prepares a buffer to accept a new Hyperscan database.
|
||||
|
||||
<data> is a base64 encoded chunk of a serialized hyperscan database.
|
||||
|
||||
APPLY deserialises the buffer and sets the resulting hyperscan database
|
||||
as the one to use for filtering.
|
||||
|
||||
<check> can be any string and must be the same for all NEW, +<data>, and
|
||||
APPLY commands for a single hyperscan database.
|
||||
|
||||
Requires Oper Priv: oper:admin
|
Loading…
Reference in a new issue