1 |
/* |
2 |
* doc/resv.txt - Overview of the resv system |
3 |
* Lee Hardy <lee@leeh.co.uk> |
4 |
* |
5 |
* Copyright (C) 2001 Hybrid Development Team |
6 |
* |
7 |
* $Id: resv.txt,v 7.6 2003/10/13 02:15:18 metalrock Exp $ |
8 |
*/ |
9 |
|
10 |
RESV |
11 |
-======- |
12 |
|
13 |
- What is resv, and why was it coded? |
14 |
|
15 |
Resv is a method of 'juping' or 'reserving' nicks and channels, to prevent |
16 |
local clients using them. It is commonly used to block channels which |
17 |
are home to abusers, and which attract DoS. It can also be used to stop |
18 |
people pretending to be services, on a network that doesn't support them. |
19 |
|
20 |
It was coded to replace the method in hybrid-6 of blocking channels and |
21 |
nicks, and was implemented in a much cleaner way to make it faster. |
22 |
|
23 |
The hybrid-6 method used to have to physically create channels, and |
24 |
suffered flaws, resv does not. |
25 |
|
26 |
- How can I create a resv? |
27 |
|
28 |
There are two types of resv. 'permanent' and 'temporary'. Temporary |
29 |
resv's will be erased when a server restarts (they will stay through a |
30 |
rehash). Permanent resv's will stay through a restart. |
31 |
|
32 |
You may add permanent resv's into ircd.conf, but they are deprecated. |
33 |
They should have the reason for the resv, followed by the nicks and |
34 |
channels being resv'd. The following would block the channel |
35 |
#services, the nick 'services' and any nick ending in 'serv' (ie: chanserv) |
36 |
|
37 |
resv { |
38 |
reason = "There are no services on this network"; |
39 |
channel = "#services"; |
40 |
nick = "services"; |
41 |
nick = "*serv"; |
42 |
}; |
43 |
|
44 |
All resv's created by RESV are stored in cresv.conf or nresv.conf depending |
45 |
on the nature of the RESV. |
46 |
|
47 |
Syntax: /quote resv <#channel|nick> :<reason> |
48 |
|
49 |
So to resv #warez: |
50 |
/quote resv #warez :No warez on this network. |
51 |
|
52 |
To resv kiddie01: |
53 |
/quote resv kiddie01 :Abuse |
54 |
|
55 |
To resv clone*: |
56 |
/quote resv clone* :clones |
57 |
|
58 |
If a non admin does this, he will see: |
59 |
-irc.leeh.co.uk- You must be an admin to perform a wildcard RESV |
60 |
|
61 |
- How do I remove a resv? |
62 |
|
63 |
If the resv is stored in ircd.conf, then the resv must be removed from there, |
64 |
then a /rehash, should do the trick. |
65 |
|
66 |
If the resv was made using /RESV, then use the unresv command: |
67 |
|
68 |
Syntax: /quote unresv <#channel|nick> |
69 |
|
70 |
- Can I make a resv on all servers? |
71 |
|
72 |
No. In Hybrid resv's are local only. If a channel is full of abusers, |
73 |
the solution is not to just block the channel, the abusers themselves |
74 |
should be removed through /kline and /dline. |
75 |
|
76 |
- How do I list resv's? |
77 |
|
78 |
To list all current resv's: |
79 |
/stats q |
80 |
|
81 |
Which will give a reply like: |
82 |
q #warez No warez *@* |
83 |
Q hax No hackers allowed here |
84 |
|
85 |
If the first letter is a 'q', then the resv is in [cn]resv.conf, if the |
86 |
first letter is a 'Q' then the resv is hardcoded (in ircd.conf). |
87 |
|
88 |
- What does a client see if they try using a channel/nick that is resv'd? |
89 |
|
90 |
They see the numeric 437 (ERR_UNAVAILRESOURCE) |
91 |
|
92 |
Other networks (namely IRCNet) use this numeric on a split, to indicate |
93 |
the channel cannot be joined, as such it is recognised by a lot of |
94 |
clients. |
95 |
|
96 |
- Can an oper see when someone tries to use a resv'd nick/channel? |
97 |
|
98 |
No. When there is a valid reason for this, then possibly, but I honestly |
99 |
don't see why anyone needs it. |
100 |
|
101 |
- Can I resv a local channel? |
102 |
|
103 |
Yes. It takes the same format as creating a resv on a normal channel: |
104 |
/resv &clones :no clonebots! |
105 |
|
106 |
- Do you support wildcard channel resv's? |
107 |
|
108 |
No. This is mainly for speed reasons. When we are searching nicks, we |
109 |
cannot just check if the nick, and the item in the list of resv'd nicks |
110 |
are string equal, we have to check if they match, so we have to search a |
111 |
full list. With channels however, we can search a hash table to see if an |
112 |
entry exists, if it doesn't, then the channel isn't resv'd. We don't have |
113 |
to search through all the channels. |
114 |
|
115 |
Besides.. it's legal for a channel to be called #*warez* anyway ;) |