summaryrefslogtreecommitdiff
path: root/doc/resv.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/resv.txt')
-rw-r--r--doc/resv.txt115
1 files changed, 115 insertions, 0 deletions
diff --git a/doc/resv.txt b/doc/resv.txt
new file mode 100644
index 0000000..d1e0fdc
--- /dev/null
+++ b/doc/resv.txt
@@ -0,0 +1,115 @@
+/*
+ * doc/resv.txt - Overview of the resv system
+ * Lee Hardy <lee@leeh.co.uk>
+ *
+ * Copyright (C) 2001 Hybrid Development Team
+ *
+ * $Id$
+ */
+
+ RESV
+ -======-
+
+- What is resv, and why was it coded?
+
+ Resv is a method of 'juping' or 'reserving' nicks and channels, to prevent
+ local clients using them. It is commonly used to block channels which
+ are home to abusers, and which attract DoS. It can also be used to stop
+ people pretending to be services, on a network that doesn't support them.
+
+ It was coded to replace the method in hybrid-6 of blocking channels and
+ nicks, and was implemented in a much cleaner way to make it faster.
+
+ The hybrid-6 method used to have to physically create channels, and
+ suffered flaws, resv does not.
+
+- How can I create a resv?
+
+ There are two types of resv. 'permanent' and 'temporary'. Temporary
+ resv's will be erased when a server restarts (they will stay through a
+ rehash). Permanent resv's will stay through a restart.
+
+ You may add permanent resv's into ircd.conf, but they are deprecated.
+ They should have the reason for the resv, followed by the nicks and
+ channels being resv'd. The following would block the channel
+ #services, the nick 'services' and any nick ending in 'serv' (ie: chanserv)
+
+ resv {
+ reason = "There are no services on this network";
+ channel = "#services";
+ nick = "services";
+ nick = "*serv";
+ };
+
+ All resv's created by RESV are stored in cresv.conf or nresv.conf depending
+ on the nature of the RESV.
+
+ Syntax: /quote resv <#channel|nick> :<reason>
+
+ So to resv #warez:
+ /quote resv #warez :No warez on this network.
+
+ To resv kiddie01:
+ /quote resv kiddie01 :Abuse
+
+ To resv clone*:
+ /quote resv clone* :clones
+
+ If a non admin does this, he will see:
+ -irc.leeh.co.uk- You must be an admin to perform a wildcard RESV
+
+- How do I remove a resv?
+
+ If the resv is stored in ircd.conf, then the resv must be removed from there,
+ then a /rehash, should do the trick.
+
+ If the resv was made using /RESV, then use the unresv command:
+
+ Syntax: /quote unresv <#channel|nick>
+
+- Can I make a resv on all servers?
+
+ No. In Hybrid resv's are local only. If a channel is full of abusers,
+ the solution is not to just block the channel, the abusers themselves
+ should be removed through /kline and /dline.
+
+- How do I list resv's?
+
+ To list all current resv's:
+ /stats q
+
+ Which will give a reply like:
+ q #warez No warez *@*
+ Q hax No hackers allowed here
+
+ If the first letter is a 'q', then the resv is in [cn]resv.conf, if the
+ first letter is a 'Q' then the resv is hardcoded (in ircd.conf).
+
+- What does a client see if they try using a channel/nick that is resv'd?
+
+ They see the numeric 437 (ERR_UNAVAILRESOURCE)
+
+ Other networks (namely IRCNet) use this numeric on a split, to indicate
+ the channel cannot be joined, as such it is recognised by a lot of
+ clients.
+
+- Can an oper see when someone tries to use a resv'd nick/channel?
+
+ No. When there is a valid reason for this, then possibly, but I honestly
+ don't see why anyone needs it.
+
+- Can I resv a local channel?
+
+ Yes. It takes the same format as creating a resv on a normal channel:
+ /resv &clones :no clonebots!
+
+- Do you support wildcard channel resv's?
+
+ No. This is mainly for speed reasons. When we are searching nicks, we
+ cannot just check if the nick, and the item in the list of resv'd nicks
+ are string equal, we have to check if they match, so we have to search a
+ full list. With channels however, we can search a hash table to see if an
+ entry exists, if it doesn't, then the channel isn't resv'd. We don't have
+ to search through all the channels.
+
+ Besides.. it's legal for a channel to be called #*warez* anyway ;)