/* doc/jupes.txt - Overview of the jupe system 
 * Copyright (C) 2005 MusIRCd Development.
 * $Id: jupes.txt,v 1.3 2005/01/27 11:48:00 musirc Exp $
 */

- What is jupe

  Jupe is a method of 'juping' nicks and channels, to prevent local clients
  from 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.

- How can I create a jupe?

  There are two types of jupes. 'permanent' and 'temporary'. Temporary
  jupes will be erased when a server restarts (they will stay through a
  rehash). Permanent jupes will stay through a restart.

  You may add permanent jupes into ircd.conf. They should have the reason for the
  jupe, followed by the nicks and/or channels being juped. The following would 
  block the channel #services, the nick 'services' and any nick ending in 'serv'
  (ie: chanserv)

  cjupe {
  	reason = "There are no services on this network";
	channel="#services";
  };
  njupe {
        reason = "There are no services on this network";
	nick="services";
	nick="*serv";
  };

  All jupes's created by C/NJUPE are stored in cjupes.conf or njupes.conf depending
  on the nature of the JUPE.

    Syntax:  /quote CJUPE <channel> :<reason>
	     /quote NJUPE <nick> :<reason>

  So to jupe #warez:
    /quote cjupe #warez :No warez on this network.

  To jupe kiddie01:
    /quote njupe kiddie01 :Abuse

  To jupe clone*:
    /quote njupe clone* :clones

    If a non admin does this, he will see:
      -irc.leeh.co.uk- You must be an admin to perform a wildcard JUPE

- How do I remove a jupe?

  If the jupe is stored in ircd.conf, then the jupe must be removed from there,
  then a /rehash, should do the trick.

  If the jupe was made using C/NJUPE, then use the uncjupe or unnjupe command:
    
    Syntax: /quote uncjupe <channel>
	    /quote unnjupe <nick>

- Can I make a jupe on all servers?

  Yes. Only if the remote server supports C/NJUPES.

    Syntax: /quote cjupe <channel> on irc.server :reason
	    /quote njupe <nick> on irc.server :reason

- How do I list jupes?

  To list all current jupess:
    /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 jupe is in [cn]jupes.conf, if the
  first letter is a 'Q' then the jupes is in ircd.conf.
  
- What does a client see if they try using a channel/nick that is juped?

  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 juped nick/channel?

  Yes.

- Do you support wildcard channel jupes?

  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 juped 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 juped. We don't have
  to search through all the channels.

  Besides.. it's legal for a channel to be called #*warez* anyway ;)
