/* doc/kline.txt - Overview of the remote kline system * * Copyright (C) 2001-2002 Hybrid Development Team * * $Id: kline.txt,v 1.2 2004/02/02 23:42:55 ircd Exp $ */ Introduction ------------ ircd-hybrid-7 will allow opers to add klines on multiple servers, an extension and replacement of the old ircd-hybrid-6 method of sharing all klines between servers. Remote unkline is not currently supported, however an unofficial patch to support this exists in contrib/. Read contrib/README for more information. In this implementation, it is extended to be routable among servers which understand the "KLN" capability. This allows us to continue to "talk" to non remote kline capable servers without breaking anything. Usage ----- The old kline method has not been changed. To place a kline it is still: /quote kline :reason /quote kline [tkline_duration] :reason Scenario 1 ---------- Oper wishes to kline user@host on server irc.xyz.net /quote kline on irc.xyz.net :reason /quote kline [duration] on irc.xyz.net :reason Scenario 2 ---------- Oper wishes to kline user@host on all servers named *.uk /quote kline on *.uk :reason /quote kline [duration] on *.uk :reason Scenario 3 ---------- Oper wishes to place a network wide kline on user@host /quote kline on * :reason /quote kline [duration] on * :reason Authorisation ------------- For the kline to be accepted by the remote server, the server must have explicitly allowed klines from that user. This is done via a shared {}; block in ircd.conf. The shared block contains two settings, a user@host mask of the oper who is allowed to kline, and a servername. - If both of these options are present, klines will only be allowed from that specific user@host on that specific server. - If only the servername is present, all klines from opers on that server will be accepted. - If only the user@host is present, all klines from that user@host on any server will be accepted. - If neither are present, the shared block is invalid. shared { /* The name of the server we allow klines from */ name = "this.server.net"; /* the user@host allowed to kline */ user = "user@host.com"; }; Server to Server Protocol ------------------------- As mentioned above, each server capable of remote klines passes the capability KLN along. No server will send a KLINE to a server without a KLN capability. Server to server messages are formatted like this: ":oper KLINE target.server duration user host :reason" Note the difference between hybrid-6 GLINE which explicitly passed the oper user@host and server along. This was originally done to handle possible desync conditions, but is now shelved in favor of saving some bandwidth. oper: the nick of the oper performing the kline target.server: the server(s) this kline is destined for duration: the duration if a tkline, 0 if permanent. user: the 'user' portion of the kline host: the 'host' portion of the kline reason: the reason for the kline.