Many of the old compile-time options are now configured through the
server configuration file, ircd.conf.  This file is intended to
document each of these features.  Logging, although also configured
through the use of Feature entries, is documented in doc/readme.log.  NOTE
THAT THESE NAMES ARE CASE SENSITIVE!  Values are not case sensitive
unless stated otherwise in the documentation for that feature.

DOMAINNAME
 * Type: string
 * Default: picked by ./configure from /etc/resolv.conf

This option allows you to specify what you consider to be "local."  It
is only used for statistics.  When you issue the IRC command /STATS w,
the server will respond with statistics of how many clients have been
connecting to your server in the last minute, hour and day.  It will
give these statistics for all connections (including the servers), all
clients (from anywhere) and also for clients whose hostname ends on
the domain you specify here.  So if you are an ISP and you want to
know what the client load from your own domain is, specify that domain
here.  If you are unsure what to do, then it isn't really important
what you give here, just don't give an empty string.  A good guess is
the last two parts of your own hostname (i.e., if your hostname is
foo.bar.nowhere.org, specify "nowhere.org").  Note that the string you
give should NOT start with a "." and you should not use quotes.

RELIABLE_CLOCK
 * Type: boolean
 * Default: TRUE

You should really ONLY specify "TRUE" here when your system clock is
stable and accurate at all times (within a few seconds).  If you are
running ntpdate on a regular basis, or an equivalent like xntpd, to
keep your system clock synchronized over the network, then you might
have an accurate clock.  However, this is not guaranteed; for example,
it is known that xntpd gives unstable results on Linux in some cases.
Note that an unstable clock is worse then an clock that has a constant
offset, because the servers attempt to correct for a constant offset,
but do not correct jumps of your system clock!  In general you SHOULD
be running ntpdate or equivalent AND make sure it works when you run a
production server on Undernet.  Otherwise leave your clock alone and
specify "FALSE" here.  If unsure specify "FALSE"!

BUFFERPOOL
 * Type: integer
 * Default: 27000000

This specifies the maximum amount of RAM that your server will
allocate for buffering sendQs.  Small leafs can use a value as little
as 1000000, while large HUBs need to specify a value as high as
20000000.  If you run out of memory, clients and/or servers are
dropped with the error "Buffer allocation error"; then you will have
to increase this number (and install more RAM if appropriate).  If you
want a more educated guess for this value then realize that any value
is good if you _really_ would rather drop servers and clients than
allocate more memory; this will be the case when there is the danger
you may run out of memory for other allocations.  Even if you run the
daemon on a dedicated machine, specifying all of the RAM you have is a
bad thing, because running out of memory is a lot worse than dropping
clients in a controlled way; if possible you should have memory left
for all the internal structures (channels, clients, ban lists, receive
buffers) at all times.  On average, clients seem to use 150 bytes of
sendQ, but at peak moments this can easily increase to 2032 bytes per
client (sendQs are allocated in chunks of 2032 bytes).  The maximum
possible amount that can be allocated for sendQs is the number of
connected clients times whatever you specified as the maximum sendQ in
your Class blocks in the ircd.conf file.  That value will likely be larger
then the amount of RAM you have.  The educated guess I talked about
earlier would be "number of clients" times * 2048 bytes + "size of
net.burst" * n, where "n" is 1 for leafs and up to 5 for HUBs.  The
"size of net.burst" is about 125 bytes per online client (on the whole
network).  For large HUBs with 4000 clients on a network with 30,000
users, this results in 27 Mb.  Leafs could use 12 Mb.  Of course you
can use less when you have less than 4000 local clients.  This value
is in bytes.

HAS_FERGUSON_FLUSHER
 * Type: boolean
 * Default: FALSE

If you have a server with a lot of resources available, this option
will cause the server to attempt to flush its internal buffers before
dropping clients during a net break.  Don't define this if you don't
know for certain; if you're not careful this can end up rebooting
FreeBSD boxes.  For more information, refer to freebsd.txt, also in
this directory.

CLIENT_FLOOD
 * Type: integer
 * Default: 1024

Currently, everything that a client sends to a server is read by the
server and stored in a buffer (the clients receive queue).  The server
will process messages from this queue one by one (running over all
clients each time).  When a client sends new messages faster they get
processed, and the size of its receive buffer reaches this value, the
client is dropped with the error "Excess flood."  A reasonable value
is 1024 bytes.  The maximum size is 8000 bytes.

SERVER_PORT
 * Type: integer
 * Default: 4400

When an IRC operator attempts a connect to another server, he or she
may not know which port the connect should go to.  In this server
version, that operator may use the special port 0, in which case the
server will take the port from the Connect block.  If no port is
specified in the Connect block, however, the port specified by this
option will be used instead.

NODEFAULTMOTD
 * Type: boolean
 * Default: TRUE

Every time a client connects to your server, the full Message of the
Day (as specified by the Motd blocks or by the file specified by the MPATH
option) is sent to the client.  The server sends the Message of the
Day even though many clients permit the user to ignore it.  Many users
never read the message of the day anyway, making it a huge waste of
bandwidth.  If you specify "TRUE" here, then the server won't send the
MOTD to the client by default; instead, it will only tell the client
when the MOTD was last changed, and give instructions on how to obtain
it by typing /MOTD.

MOTD_BANNER
 * Type: string
 * Default: NULL

If you enable NODEFAULTMOTD, this specifies a one-line banner to be sent
to the client in addition to the instructions mentioned above.

PROVIDER
 * Type: string
 * Default: NULL

This string as added to the 001 numeric prefixed with "via" before the nick.
It's used for providing promotional space to providers as per CFV-202

KILL_IPMISMATCH
 * Type: boolean
 * Default: FALSE

When a client connects to your server, the IP address of the client is
reverse-resolved to obtain a hostname.  Then that hostname is resolved
to an IP address and compared with the IP address of the client.  If
they don't match, the client will appear with the IP address instead
of the hostname, unless KILL_IPMISMATCH is "TRUE," in which case the
client is simply disconnected.

IDLE_FROM_MSG
 * Type: boolean
 * Default: TRUE

The IRC command WHOIS gives an idle time for clients.  If you want
this idle time to be set to zero only when the client sends a PRIVMSG,
then you should specify "TRUE" here.  If you specify "FALSE," then the
idle time will be nullified on all messages except the server
PING/PONG.

HUB
 * Type: boolean
 * Default: FALSE

All servers of an IRC "network" are connected in a "tree" (no loops).
Servers that are only connected to one other server (called the
"uplink") are called "leafs"; servers that are connected to more than
one other server are called HUBs.  If you specify "FALSE" here then
your server will prevent itself from accidentally connecting to two
servers at once, thus keeping servers in poor network locations from
routing traffic.  Note that on Undernet, all newly linked servers are
linked as leafs during their test phase, and should specify "FALSE"
here.

WALLOPS_OPER_ONLY
 * Type: boolean
 * Default: FALSE

Setting this option removes the ability for clients that are not IRC
operators to see wallops messages.

NODNS
 * Type: boolean
 * Default: FALSE

If you are playing with the server off-line, and no DNS is available,
then long delays occur before the server starts up because it tries to
resolve the name given in the General block (which usually isn't given
in /etc/hosts) and for each connecting client.  If you specify "TRUE"
here, then a DNS lookup will be done only for the real hostname, and
the server will not try to resolve clients that connect to
"localhost."  Note that other DNS lookups are still done for outbound
connections.

RANDOM_SEED
 * Type: string
 * Default: none

When a client connects, the server sends the client a "cookie,"
consisting of a random number.  The client must return the cookie to
the server verbatim.  This is done to prevent IP spoofing.  The cookie
is generated by a pseudorandom number generator included in ircd.
This generator must be seeded with a phrase that is kept secret, to
ensure that the numbers it generates are not easily guessed.  The
value given to RANDOM_SEED may be a string of any length.  It should
not contain any characters that are considered special by the
configuration file system, such as ":" or "#"; the string should be at
least 8 characters long, but longer strings are better.  The
RANDOM_SEED may not be retrieved online.

DEFAULT_LIST_PARAM
 * Type: string
 * Default: none

The LIST command takes a single optional argument.  If given, that
argument is either a channel or a filter.  If that argument is not
given, then by default, /LIST will list all channels on the network.
Needless to say, this can generate a large amount of data on large
networks with many channels, as well as chewing up a lot of CPU time.
Server administrators can therefore set a default filter to be applied
to the channel list if the optional argument to LIST is omitted.

NICKNAMEHISTORYLENGTH
 * Type: integer
 * Default: 800

This value specifies the length of the nick name history list, which
is used for /WHOWAS and some nickname chasing in /KILL and /KICK.  It
uses about 300 to 400 bytes per entry.  Note that at a net break, so
many client disappear that the whole "whowas" list is refreshed a few
times (unless you make it rather large).  A reasonable value is "total
number of clients" / 25.

HOST_HIDING
 * Type: boolean
 * Default: TRUE

This selects whether local users can set umode +x, thus allowing them
to hide their hostname if they have also registered with a channel
service (i.e. they have the ACCOUNT flag set).

HIDDEN_HOST
 * Type: string
 * Default: Users.Nefarious

This selects the suffix for the hidden hostmask (see HOST_HIDING).

HIDDEN_IP
 * Type: string
 * Default: 127.0.0.1

This selects a fake IP to be shown on /USERIP and /WHO %i when the
target has a hidden host (see HOST_HIDING).

CONNEXIT_NOTICES
 * Type: boolean
 * Default: FALSE

This feature controls the generation of server notices when a user
connects to or disconnects from the server.  Enabling this feature may
have a performance impact.

KILLCHASETIMELIMIT
 * Type: integer
 * Default: 30

If a user changes his or her nickname just before an operator issues a
/KILL, the /KILL will be changed to follow the user the operator
intended to get.  This option specifies the time limit, in seconds,
for this nickname change; if the user changed his or her nickname more
than this many seconds ago, the /KILL will not be changed.  Don't
change this unless you really need to.

MAXCHANNELSPERUSER
 * Type: integer
 * Default: 20

This is the maximum number of channels a user can be in at a time.
The "mandatory" value on Undernet is currently 10.  Since it only
influences the local server when you decrease it, its up to you to
decide if you want to use a smaller value.  Do not use a larger value
however, because it DOES cost more memory and bandwidth on all other
servers when you allow users to join more channels simultaneously.
One of the most important reasons to choose a smaller value is the
fact that the "GUI" clients tend to stay on every channel they join
(they aren't bothered by flooding in other channels).  It DOES take
your bandwidth however to send all those messages for 10 different
channels to all your users.

AVBANLEN
 * Type: integer
 * Default: 40

This is the expected average ban mask length.  Leave it at 40.

MAXBANS
 * Type: integer
 * Default: 45

This is the maximum number of bans a user may set on a given channel.

MAXSILES
 * Type: integer
 * Default: 15

This is the maximum number of masks a user can silence at a time.  The
silence command allows users to filter messages directed at them from
certain users or domains, at the source server.  Increasing this
number allows users to use up more memory with inefficient use of the
command.  If you're not sure, don't change this.

HANGONGOODLINK
 * Type: integer
 * Default: 300

Often the net breaks for a short time and it is useful to try to
reestablish the same connection faster than CONNECTFREQUENCY would
allow, but to keep from trying again on a bad connection, we require
that the connection be open for a certain minimum time. The
recommended value is 300 seconds.

HANGONRETRYDELAY
 * Type: integer
 * Default: 10

When attempting to quickly reestablish a connection to a good link, we
give the net a few seconds to calm down. This time must be long enough
for the other end to also notice that the connection is broken. The
recommended value is 10 seconds.

CONNECTTIMEOUT
 * Type: integer
 * Default: 60

Number of seconds to wait for a connect(2) call to complete.  NOTE:
this must be at *LEAST* 10.  When a client connects, it has
CONNECTTIMEOUT - 10 seconds for its host to respond to an ident lookup
query and for a DNS lookup to complete. It is recommended that you not
change this value, but if you do, consider the fact that users whose
clients do not support NOSPOOF will have to type /QUOTE PING <big
number> before registration.

MAXIMUM_LINKS
 * Type: integer
 * Default: 1

This is the maximum number of links for the built-in client class 0.
Leave this value at 1.

PINGFREQUENCY
 * Type: integer
 * Default: 120

If the daemon doesn't receive anything from any of its links within
PINGFREQUENCY seconds, then the it will attempt to check for an active
link with a PING message.  If no reply is received within
(PINGFREQUENCY * 2) seconds, then the connection will be closed.  This
value may be overridden by a Class block in "ircd.conf" if the
connection's Client or Connect block in "ircd.conf" assigns a specific
class to the connection (recommended).

CONNECTFREQUENCY
 * Type: integer
 * Default: 600

This is the default frequency that the server attempts to reconnect
with its uplink server if it is set to auto connect to it. Note that
this value is overridden by a Class block in ircd.conf if the Connect
entries in ircd.conf assign a specific class to the connection.

DEFAULTMAXSENDQLENGTH
 * Type: integer
 * Default: 40000

This is the default value of the maximum sendQ length of connection
classes (see doc/example.conf for details on Class blocks).  You will
generally override this value in your "ircd.conf" with a Class block.

GLINEMAXUSERCOUNT
 * Type: integer
 * Default: 20

G-lines that affect too many users have to be set with a special
command, to prevent accidental G-lines of large blocks of users.  This
feature sets that particular threshold.

MPATH
 * Type: string
 * Default: "ircd.motd"

MPATH is the filename (relative to DPATH) or the full path of the
"Message of the Day" file.  The contents of this file will be sent to
every client that connects to the server, after registration.

RPATH
 * Type: string
 * Default: "remote.motd"

RPATH is the filename (relative to DPATH) or the full path of the
"Remote Message of the Day" file.  The contents of this file will be
sent to every remote client that issues a /MOTD <your server name>.
Only the first three lines are sent, so you might want to keep that in
mind while writing the file.

PPATH
 * Type: string
 * Default: "ircd.pid"

PPATH is the filename (relative to DPATH) or the full path of the
"PID" file.  It is used for storing the server's process ID so that a
ps(1) isn't necessary.

TOS_SERVER
 * Type: integer
 * Default: 0x08

This option is used to specify the type of service that will be
requested for connections to other servers.  The value may be given as
a hexadecimal integer.

TOS_CLIENT
 * Type: integer
 * Default: 0x08

This option is used to specify the type of service that will be
requested for connections to users.  The value may be given as a
hexadecimal integer.

POLLS_PER_LOOP
 * Type: integer
 * Default: 200

Some of the engines used by the event interface get a number of events
from the kernel at once.  Since the number retrieved can impact
performance, it can be tuned by modifying this value.  The engines
enforce a lower limit of 20.

CONFIG_OPERCMDS
 * Type: boolean
 * Default: TRUE

Since u2.10.11, several new oper-only features have been added that
involve changes to the server<->server protocol.  This configuration
option provides a single switch to prevent the use of these features
until the entire network has been upgraded.  It is not required that
all servers set this to "TRUE" in order for the features to be used,
as long as all servers are running u2.10.11 or above.

HIS_MAP
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /MAP from users.

HIS_SNOTICES
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes server notices from users.

HIS_SNOTICES_OPER_ONLY
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes server notices from users.

HIS_DEBUG_OPER_ONLY
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes server wallops from users.

HIS_WALLOPS
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes operator wallops from users.

HIS_LINKS
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /LINKS from users.

HIS_TRACE
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /TRACE from users.

HIS_STATS_a
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS a from users.

HIS_STATS_c
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS c from users.

HIS_STATS_d
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS d from users.

HIS_STATS_e
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS e from users.

HIS_STATS_f
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS f from users.

HIS_STATS_g
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS g from users.

HIS_STATS_i
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS i from users.

HIS_STATS_j
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS j from users.

HIS_STATS_J
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS J from users.

HIS_STATS_k
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS k from users.

HIS_STATS_l
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS l from users.

HIS_STATS_L
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS L from users.

HIS_STATS_M
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS M from users.

HIS_STATS_m
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS m from users.

HIS_STATS_o
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS o from users.

HIS_STATS_p
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS p from users.

HIS_STATS_q
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS q from users.

HIS_STATS_r
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS r from users.

HIS_STATS_R
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS R from users.

HIS_STATS_S
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS S from users.

HIS_STATS_t
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS t from users.

HIS_STATS_T
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS T from users.

HIS_STATS_u
 * Type: boolean
 * Default: FALSE

As per UnderNet CFV-165, this allows users to perform /STATS u.

HIS_STATS_U
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS U from users.

HIS_STATS_v
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS v from users.

HIS_STATS_w
 * Type: boolean
 * Default: FALSE

As per UnderNet CFV-165, this allows users to perform /STATS w.

HIS_STATS_x
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS x from users.

HIS_STATS_y
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS y from users.

HIS_STATS_z
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS z from users.

HIS_STATS_IAUTH
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this disables /STATS IAUTH and
/STATS IAUTHCONF from users.

HIS_WHOIS_SERVERNAME
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes server names in replies to /WHOIS.

HIS_WHOIS_IDLETIME
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes idle time in replies to /WHOIS.

HIS_WHO_SERVERNAME
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes server names in replies to /WHO.

HIS_WHO_HOPCOUNT
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this replaces hopcount to a static 3 in
replies to /WHO.

HIS_MODEWHO
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this doesn't show which server performed a channel
mode change.

HIS_BANWHO
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this doesn't show which server set a ban.

HIS_KILLWHO
 * Type: boolean
 * Default: FALSE

As per UnderNet CFV-165, this doesn't show which server or oper performed a
kill.

HIS_REWRITE
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this remaps remote numerics to come from the local
server.

HIS_REMOTE
 * Type: integer
 * Default: 1

As per UnderNet CFV-165, this disallows remote queries. (*sob!*)

HIS_NETSPLIT
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes server names in net break sign-offs.

HIS_WHOIS_LOCALCHAN
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes local channels in replies to /WHOIS.

HIS_SERVERNAME
 * Type: string
 * Default: "*.Nefarious"

As per UnderNet CFV-165, this is the "name" of the server shown to users on a
/WHOIS of another user.

HIS_SERVERINFO
 * Type: string
 * Default: "evilnet development"

As per UnderNet CFV-165, this is the "info" of the server shown to users on a
/WHOIS of another user.

HIS_URLSERVERS
 * Type: string
 * Default: "http://sourceforge.net/projects/evilnet/"

As per UnderNet CFV-165, this is the URL shown to users when they do a /MAP or
/LINKS.

NETWORK
 * Type: string
 * Default: "Nefarious"

This defines the network name as reported in the 005 "supported features"
numeric, and as used by the "Failed to deliver" message.

URL_CLIENTS
 * Type: string
 * Default: "http://www.ircreviews.org/clients/"

This defines a URL that users may visit to find compatible IRC clients.

URLREG
 * Type: string
 * Default: "http://sourceforge.net/projects/evilnet/"

This defines a URL that is used in server response 477 (ERR_NEEDREGGEDNICK) to
let users know which website they must visit to obtain a proper account for
authentication.

NICKLEN
 * Type: integer
 * Default: 15

This is the allowed length of the nickname length.  It may not be
larger than the NICKLEN #define, and should usually be the same
length.  The real purpose of this feature is to permit easy increases
in nickname length for a network.

IRCD_RES_RETRIES
 * Type: integer
 * Default: 2

This is the number of attempts the irc daemon's resolver will have at
trying to solicit a response from the DNS server.

IRCD_RES_TIMEOUT
 * Type: integer
 * Default: 4

When a DNS query is sent, the irc daemon's resolver will wait this many
seconds for a reply.  After this timeout has expired, it will retry again,
for as many retries as IRCD_RES_RETRIES allows.  This can be cut short by
AUTH_TIMEOUT expiring.
NOTE: Has no effect when using the adns resolver.

AUTH_TIMEOUT
 * Type: integer
 * Default: 9

This is the maximum number of seconds to wait for the ident lookup and
the DNS query to succeed.  On older (pre 2.10.11.06) servers this was
hard coded to 60 seconds.

IPCHECK_CLONE_LIMIT
 * Type: integer
 * Default: 4

The number of times you are allowed to connect within IPCHECK_CLONE_PERIOD
seconds before you are considered abusing the server and throttled.

IPCHECK_CLONE_PERIOD
 * Type: integer
 * Default: 40

The number of seconds you are allowed to connect IPCHECK_CLONE_LIMIT times
within before you are considered abusing the server and throttled.
For instance if you set IPCHECK_CLONE_LIMIT to 1, and IPCHECK_CLONE_PERIOD
to 10, then a user is only allowed to connect once in 10s, if they connect
again within 10s, then they are considered to be connecting too fast and
they are throttled.

IPCHECK_CLONE_DELAY
 * Type: integer
 * Default: 600

The number of seconds grace after restarting the server before the throttle
code kicks in.  Even if a user connects repetitively during this period,
they will never get throttled.  This is so after a restart users on a
multiuser box can all connect to a server simultaniously without being
considered an attack.

SOCKSENDBUF
 * Type: integer
 * Default: 61440

The send window size used for connections to other servers.

SOCKRECVBUF
 * Type: integer
 * Default: 61440

The receive window size used for connections to other servers.

ANNOUNCE_INVITES
 * Type: boolean
 * Default: FALSE

If set, send RPL_ISSUEDINVITE (345) to a channel's operators to
announce when someone is invited to the channel.

LOCAL_CHANNELS
 * Type: boolean
 * Default: TRUE

If set, allow users to create local channels.

TOPIC_BURST
 * Type: boolean
 * Default: TRUE

If set, send the current topic value and timestamp for channels during
burst.  This generally only makes sense for hubs to use, and it causes
a large increase in net.burst size.

CHANNELLEN
 * Type: integer
 * Default: 200

This is the allowed length of locally created channels.  It may not be
larger than the CHANNELLEN #define.  Like the NICKLEN feature, this is
intended to ease changes in channel name length across a network.

OPLEVELS
 * Type: boolean
 * Default: FALSE

This allows local users to set the +A and +U modes (admin and user
passwords, respectively) on channels where they are marked as channel
managers.  This feature must be disabled until all servers on the
network are able to interpret and handle these modes correctly.

ZANNELS
 * Type: boolean
 * Default: FALSE

This preserves empty channels with no admin password so that it is
impractical to become the channel manager by clearing out the channel.
It must be set to FALSE if there are both 2.10.11.x servers and
2.10.12.y servers on the network where y < 4.

CHECK
 * Type: boolean
 * Default: TRUE

When enabled an oper is allowed to use the CHECK command.

CHECK_EXTENDED
 * Type: boolean
 * Default: TRUE

When enabled extra information will be displayed for opers who are
using CHECK on local clients. Extra information like traffic counts.

MAX_CHECK_OUTPUT
 * Type: integer
 * Default: 1000

Maximum number of records displayed in any CHECK query.

OPER_WHOIS_PARANOIA
 * Type: boolean
 * Default: FALSE

Allows the use of the W opermode which will show /WHOIS attempts to opers when
they are done on themselves.

OPER_HIDE
 * Type: boolean
 * Default: FALSE

Allows opers with the HIDE_OPER priv in their Class or Operator block set to
yes to set user mode +H to hide their operator status from non-opers.

AUTOCHANMODES
 * Type: boolean
 * Default: FALSE

When a user joins a new channel the modes in AUTOCHANMODES_LIST will
be automatically set

AUTOCHANMODES_LIST
 * Type: string
 * Default: (no default)

If AUTOCHANMODES is enabled then any modes in here will be the modes
set for new channels upon join. Modes should be added in this format
"ntmn" etc.

UHNAMES
 * Type: boolean
 * Default: TRUE

If enabled NAMES replies for clients who announce UHNAMES support with
PROTOCTL will contain user and host portions too.

RESTARTPASS
 * Type: string
 * Default: (empty)

This is the password required for a server to actually restart when
the RESTART command is used. The if the password is empty then no
password is required. If you do not specify an encryption type it is
assumed that the given password is in crypt format. See the Operator
block section in example.conf for more information on password encryption
types.

DIEPASS
 * Type: string
 * Default: (empty)

This is the password required for a server to actually die when
the DIE command is used. The if the password is empty then no
password is required. If you do not specify an encryption type it is
assumed that the given password is in crypt format. See the Operator
block section in example.conf for more information on password encryption
types.

HIS_STATS_W
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS W from users.

TARGET_LIMITING
 * Type: boolean
 * Default: TRUE

Enables or disables target limit throttling.

OPER_XTRAOP
 * Type: boolean
 * Default: FALSE

Enables or disables the user of user mode +X for opers who have the priv
XTRAOP.

REMOTE_OPER
 * Type: boolean
 * Default: TRUE

Allows remote users to oper up remotly witthout requiring an O:Line on the server
they are on.

OPERMOTD
 * Type: boolean
 * Default: FALSE

Controls the use of the OPERMOTD command.

RULES
 * Type: boolean
 * Default: FALSE

Controls the use of the RULES command.

SHUNMAXUSERCOUNT
 * Type: integer
 * Default: 20

Maximum amount of users a Shun can affect when a shun is set via /SHUN.
Zlines set via services or servers will not be affected by this rule.

HIS_SHUN_REASON
 * Type: boolean
 * Default: TRUE

This HIDES the shun reason from the target when a shun is set
on them (when TRUE).

HIS_GLINE_REASON
 * Type: boolean
 * Default: TRUE

This will hide the gline reason from quit messages. The affected user(s) will
still see the reason via the YOURBANNEDCREEP numeric.

NOIDENT
 * Type: boolean
 * Default: FALSE

NOIDENT disables RFC 1413 (ident protocol) lookups of clients'
usernames.

EXTENDED_ACCOUNTS
 * Type: boolean
 * Default: TRUE

This enables 'extended' style AC syntax (used by your service to set
the account name.)  TRUE uses the subcommand paramiter R,M,U,C,A,D,H
to do LOC, rename and removal. FALSE uses old style. Set this to
TRUE if you use X3, FALSE for other services.

LOGIN_ON_CONNECT
 * Type: boolean
 * Default: FALSE

This selects whether local clients can specify a service bot login in
the connection phase. Read doc/readme.login-on-connect for details.

LOC_SENDHOST
 * Type: boolean
 * Default: FALSE

If enabled hostnames will be sent in Login on connect messages to servers.

LOC_SENDSSLFP
 * Type: boolean
 * Default: FALSE

If enabled, and LOC_SENDHOST is enabled, SSL client certificate fingerprints
will be included in Login on connect messages to servers.

LOC_DEFAULT_SERVICE
  * Type: string
  * Default: authserv

This is what nick on irc the login-on-connect account verification is sent
to. User can override it (to any service that supports it) using 3 param LOC.

LOC_TIMEOUT
  * Type: integer
  * Default: 3

Specifies the number of seconds before a Login On Connect request should
timeout.

STRICTUSERNAME
 * Type: boolean
 * Default: FALSE

If enabled then strict ident/username rules will be applied.

APASS_CANSEND
 * Type: boolean
 * Default: FALSE

If enabled users who join a chnnel using the +A key, or who set the +A key
can send to the channel. Default is they cannot to discourage the use of
the +A key during normal circumstances.

HOST_IN_TOPIC
 * Type: boolean
 * Default: FALSE

When an channel operator changes the channel topic their full
nick!ident@host will be displayed for the person who set the topic.
This can eliminate people faking other people when setting the topic.

HIS_STATS_s
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS s from users.

SETHOST
 * Type: boolean
 * Default: TRUE

Enables the /SETHOST command for users and operators.

FLEXIBLEKEYS
 * Type: boolean
 * Default: FALSE

Channel key rules over all modes. Eg a user can join a channel with the correct
key and be able to get around modes like limit and invite.

HIS_STATS_E
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS E from users.

SASL_SERVER
 * Type: string
 * Default: "*"

When set, SASL_SERVER specifies the name of the services server on the network
that is setup to handle SASL client authentication. When set to '*' the initial
SASL request is broadcast to all servers and the first SASL provider to respond
is used.

LISTDELAY
 * Type: integer
 * Default: 0

Length (in seconds) users will need to wait before /LIST will give results. A
value of 0 effectively disables this option.

ALLOW_OPLEVEL_CHANGE
 * Type: boolean
 * Default: FALSE

When enabled, MODE #channel +o Nick:level will change a users op level if they
already already have channel mode +o, instead of being discarded.

NETWORK_REHASH
 * Type: boolean
 * Default: TRUE

Allow this server to act upon a network-issued /rehash.

LIST_SHOWMODES_OPERONLY
 * Type: boolean
 * Default: FALSE

When enabled the LIST flag 'M' can only be used by IRCops.

LIST_PRIVATE_CHANNELS
 * Type: string
 * Default: none

When set, includes +p channels in LIST output with their topic and modes not
shown and their name replaced by the value of LIST_PRIVATE_CHANNELS as per
RFC 1459. The reccomended value for LIST_PRIVATE_CHANNELS is '*' however
RFC 1459 states that +p channels should be shown in LIST as 'Prv'.

MAXWATCHS
 * Type: integer
 * Default: 128

This is the maximum number of nicks a user can watch at a time.  The
watch command allows users to request a notification when another user with
a nick specified connects or disconnects from the server.  Increasing this
number allows users to use up more memory with inefficient use of the
command.  If you're not sure, don't change this.

HIS_STATS_Z
 * Type: boolean
 * Default: TRUE

As per UnderNet CFV-165, this removes /STATS Z from users.

SASL_TIMEOUT
  * Type: integer
  * Default: 8

Specifies the number of seconds before an SASL request should timeout.

NOMULTITARGETS
  * Type: boolean
  * Default: FALSE

When enabled has the same effect as setting channel mode +T on every
channel.

HIS_IRCOPS
 * Type: boolean
 * Default: TRUE

This removes IRCOPS from users.

HIS_IRCOPS_SERVERS
 * Type: boolean
 * Default: TRUE

This removes server names in the IRCOPS output from users.

SASL_SENDHOST
 * Type: boolean
 * Default: TRUE

When enabled causes Nefarious to send user@host:ip to services during
SASL communications.

SASL_AUTOHIDEHOST
 * Type: boolean
 * Default: TRUE

When enabled, users authenticating using SASL will automatically get
user mode +x to hide their host name (requires HOST_HIDING_STYLE 1 or 3)

SNOMASK_DEFAULT
 * Type: integer
 * Default: 1540

Server notice bits enabled by default for normal users.

SNOMASK_OPERDEFAULT
 * Type: integer
 * Default: 5645

Server notice bits enabled by default for IRC operators.

TPATH
 * Type: string
 * Default: "ircd.tune"

TPATH is the filename (relative to DPATH) or the full path of the tune data file.
The file contains user count information for LUSERS so that if the server has to
restart etc for any reason they will not loose their max local/global user counts.

CHMODE_m_NONICKCHANGE
 * Type: boolean
 * Default: TRUE

When set to TRUE channel mode +m (moderated channel) is also applied to nick
changes of users in the channe.

CHMODE_r_NONICKCHANGE
 * Type: boolean
 * Default: TRUE

When set to TRUE channel mode +r (no unregistered users) is also applied to nick
changes of users in the channe.

SILENCE_CHANMSGS
 * Type: boolean
 * Default: TRUE

When enabled SILENCE masks are applied to channel messages as well as to private
messages.

CHANNEL_CREATE_IRCOPONLY
 * Type: boolean
 * Default: FALSE

When enabled only IRCops can create channels.

JOIN_ON_REMOVEDELAY
 * Type: boolean
 * Default: TRUE

When enabled JOIN's are shown for delayed join users when channel mode +D is
removed. When disabled channel mode +d is set if there are any users who's
JOIN is still delayed.

DERESTRICT_HIDECHANS
 * Type: boolean
 * Default: TRUE

When enable user mode +p can be set by any user. When disabled only IRCops
with the hide_channels privilege can set user mode +p.

VALID_UTF8_CHANNELS_ONLY
 * Type: boolean
 * Default: TRUE

When enabled, channels will not be joinable if they have non-compliant UTF8
sequences

CHMODE_a
 * Type: boolean
 * Default: TRUE

Allows channel mode a (admin only) to be used.

CHMODE_c
 * Type: boolean
 * Default: TRUE

Allows channel mode c (block color) to be used.

CHMODE_C
 * Type: boolean
 * Default: TRUE

Allows channel mode C (no CTCP messages) to be used.

CHMODE_L
 * Type: boolean
 * Default: TRUE

Allows channel mode L (channel redirection) to be used.

CHMODE_M
 * Type: boolean
 * Default: TRUE

Allows channel mode M (account only) to be used.

CHMODE_N
 * Type: boolean
 * Default: TRUE

Allows channel mode N (no notice) to be used.

CHMODE_O
 * Type: boolean
 * Default: TRUE

Allows channel mode O (oper only) to be used.

CHMODE_Q
 * Type: boolean
 * Default: TRUE

Allows channel mode Q (block PART/QUIT messages) to be used.

CHMODE_S
 * Type: boolean
 * Default: TRUE

Allows channel mode S (strip color) to be used.

CHMODE_T
 * Type: boolean
 * Default: TRUE

Allows channel mode T (blocks PRIVMSG/NOTICE when the channel
is part of a comma seperated list of targets) to be used.

CHMODE_Z
 * Type: boolean
 * Default: TRUE

Allows channel mode Z (ssl users only) to be used.

HALFOPS
 * Type: boolean
 * Default: FALSE

This controls the use of half ops (+h). The server will still accept
half ops from other servers if its set to FALSE (to prevent desyncs)
just not from users.

EXCEPTS
 * Type: boolean
 * Default: FALSE

Allows the use of channel ban exemptions. THIS WILL BREAK SERVICES THAT ARE
UNPATCHED TO HANDLE THE NEW BURST LINE WE USE!

MAXEXCEPTS
 * Type: integer
 * Default: 30

This is the maximum number of excepts a user may set on a given channel.

AVEXCEPTLEN
 * Type: integer
 * Default: 40

This is the expected average except mask length.  Leave it at 40.

CHMODE_e_CHMODEEXCEPTION
 * Type: boolean
 * Default: FALSE

If enabled anyone on the +e exemption list will be able to bypass
modes +i/+k/+l.

HALFOP_DEHALFOP_SELF
 * Type: boolean
 * Default: FALSE

If enabled allows halfops to remove their own halfop status.

CHMODE_Z_STRICT
 * Type: boolean
 * Default: TRUE

When disabled channel mode +Z is less restrictive in that it allows
the +A and +U keys to bypass it and can be set whilst non-SSL users
are present on the channel. When enabled only services can join a
channel with channel mode +Z and channel mode +Z cannot be set on a
channel while non-SSL users are present.

MAX_BOUNCE
 * Type: integer
 * Default: 5

Maximum amount of links (+L) in a row a client will follow before error'ing.

EXTBANS
 * Type: boolean
 * Default: FALSE

If enabled extended bans will be allowed. Servers will still be able to set
them. This only controls /mode +b <extended ban> by clients.

EXTBAN_j_MAXDEPTH
 * Type: integer
 * Default: 1

Maximum depth extended ban type j can get to when searching the specified
channel for matching bans.

EXTBAN_j_MAXPERCHAN
 * Type: integer
 * Default: 1

Maximum number of extended bans of type j that can be set per channel.

EXTBAN_a
 * Type: boolean
 * Default: TRUE

Allows extended ban a (account) to be used.

EXTBAN_c
 * Type: boolean
 * Default: TRUE

Allows extended ban c (channel) to be used.

EXTBAN_j
 * Type: boolean
 * Default: TRUE

Allows extended ban j (shared bans) to be used.

EXTBAN_n
 * Type: boolean
 * Default: TRUE

Allows extended ban n (nick change) to be used.

EXTBAN_q
 * Type: boolean
 * Default: TRUE

Allows extended ban q (quiet) to be used.

EXTBAN_r
 * Type: boolean
 * Default: TRUE

Allows extended ban r (realname) to be used.

EXTBAN_m
 * Type: boolean
 * Default: TRUE

Allows extended ban m (mark on any user) to be used.

EXTBAN_M
 * Type: boolean
 * Default: TRUE

Allows extended ban M (mark on unauthenticated user) to be used.

OMPATH
 * Type: string
 * Default: "operircd.motd"

OMPATH is the filename (relative to DPATH) or the full path of the
"Message of the Day" file.  The contents of this file will be sent to
every operator upon opering.

EPATH
 * Type: string
 * Default: "ircd.rules"

EPATH is the filename (relative to DPATH) or the full path of the rules file.
Users can see these using the rules command which will need to be enabled if you
wish to use RULES. See the RULES feature.

HIDDEN_HOST_QUIT
 * Type: boolean
 * Default: TRUE

When enabled the ircd will send "Registered" and "Unregistered" when clients
set and unset +x (hidden host). This applies to both host hiding styles.

HIDDEN_HOST_SET_MESSAGE
 * Type: string
 * Default: "Registered"

The message sent in the quit message when a user sets +x.

HIDDEN_HOST_UNSET_MESSAGE
 * Type: string
 * Default: "UnRegistered"

The message sent in the quit message when a user sets -x.

ALLOWRMX
 * Type: boolean
 * Default: FALSE

If enabled when HOST_HIDING_STYLE is set to 1 users will be able to remove
their hidden host (-x).

OPERHOST_HIDING
 * Type: boolean
 * Default: TRUE

When TRUE any oper setting +x will get the hidden host set via
HIDDEN_OPERHOST instead of the host set in HIDDEN_HOST.

HIDDEN_OPERHOST
 * Type: string
 * Default: Staff.Nefarious

This selects the suffix for the hidden hostmask for IRC Operators
(see OPERHOST_HIDING).

HOST_HIDING_STYLE
 * Type: integer
 * Default: 1

Value 1 will give you hidden hosts of ie users.network.tld, Value 2 will
give you UnrealIRCd style hosts Prefix-554F4C88D.isp.tld and Value 3
will give you Value 1 for authenticated users and Value 2 for
unauthenticated users.

HOST_HIDING_PREFIX
 * Type: string
 * Default: Nefarious

This selects the suffix for the hidden hostmask style 2.

HOST_HIDING_KEY1
 * Type: string
 * Default: aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW

One of the 3 unique host hiding keys used to encrypt style 2 hidden
hosts. These must all be different.

HOST_HIDING_KEY2
 * Type: string
 * Default: sdfjkLJKHlkjdkfjsdklfjlkjKLJ

One of the 3 unique host hiding keys used to encrypt style 2 hidden
hosts. These must all be different.

HOST_HIDING_KEY3
 * Type: string
 * Default: KJklJSDFLkjLKDFJSLKjlKJFlkjS

One of the 3 unique host hiding keys used to encrypt style 2 hidden
hosts. These must all be different.

HOST_HIDING_COMPONENTS
 * Type: integer
 * Default: 1

Specifies the maximum number of host name components to be replaced when
using HOST_HIDING_STYLE 2 and 3.

CTCP_VERSIONING
 * Type: boolean
 * Default: FALSE

Enables CTCP versioning for clients on connect.

CTCP_VERSIONING_KILL
 * Type: boolean
 * Default: FALSE

Kills clients who match specified versions.

CTCP_VERSIONING_CHAN
 * Type: boolean
 * Default: FALSE

If enabled version replies will be sent to the channel set for
CTCP_VERSIONING_CHANNAME

CTCP_VERSIONING_CHANNAME
 * Type: string
 * Default: #opers

Channel where version replies are sent to if CTCP_VERSIONING_CHAN
is enabled (See above).

CTCP_VERSIONING_USEMSG
 * Type: boolean
 * Default: FALSE

If enabled version replies sent to the channel set for CTCP_VERSIONING_CHANNAME
will be sent using privmsgs instead of notices.

CTCP_VERSIONING_NOTICE
 * Type: string
 * Default: *** Checking your client version

Message sent to clients during the versioning process on connect.

CTCP_VERSIONING_NICK
 * Type: string
 * Default: NULL

Specifies the nick used to send CTCP VERSION requests to clients when they connect.
Note however that when set this nick will not be available for use by users.

GEOIP_ENABLE
 * Type: boolean
 * Default: FALSE

Enables or disable GeoIP support. This requires either GEOIP_FILE or MMDB_FILE
to be set for this feature to work.

MMDB_FILE
 * Type: boolean
 * Default: "GeoLite2-Country.mmdb"

Path to a MaxMindDB format file containing at least country data for IPs.
Can be downloaded from https://dev.maxmind.com/geoip/geoip2/geolite2/

GEOIP_FILE
 * Type: string
 * Default: "GeoIP.dat"

Path to GeoIP.dat for IPv4 GeoIP support.

GEOIP_IPV6_FILE
 * Type: string
 * Default: "GeoIPv6.dat"

Path to GeoIPv6.dat for IPv6 GeoIP support.

SSL_CERTFILE
 * Type: string
 * Default: "ircd.pem"

Path to SSL certificate file to use as this servers identity.

SSL_KEYFILE
 * Type: string
 * Default: "ircd.pem"

Path to the private key associated with the certificate specified
by SSL_CERTFILE.

SSL_CACERTFILE
 * Type: string
 * Default: NULL

When set specifies the name and path of a file containing trusted CA
certificates for client certificate verification.

SSL_VERIFYCERT
 * Type: boolean
 * Default: FALSE

When enabled client certificates must pass validation to connect.

SSL_NOSELFSIGNED
 * Type: boolean
 * Default: FALSE

When disabled self signed client certificates will be allowed to connect.
Requires SSL_VERIFYCERT be enabled too.

SSL_REQUIRECLIENTCERT
 * Type: boolean
 * Default: FALSE

When enabled clients connecting via SSL will be required to provide a
client certificate.

SSL_NOSSLV2
 * Type: boolean
 * Default: TRUE

When enabled support for SSLv2 is disabled.

SSL_NOSSLV3
 * Type: boolean
 * Default: TRUE

When enabled support for SSLv3 is disabled.

SSL_NOTLSV1
 * Type: boolean
 * Default: TRUE

When enabled support for TLSv1 is disabled.

SSL_CIPHERS
 * Type: string
 * Default: NULL

When set configures the list of available ciphers for incoming SSL
connections. See https://www.openssl.org/docs/manmaster/man1/ciphers.html
for an explanation on how to format this string.

DISABLE_ZLINES
 * Type: boolean
 * Default: FALSE

When set to TRUE any zlines added will not affect users.

HIS_ZLINE_REASON
 * Type: boolean
 * Default: FALSE

This will hide the zline reason from quit messages. The affected user(s) will
still see the reason via the YOURBANNEDCREEP numeric.

ZLINEMAXUSERCOUNT
 * Type: integer
 * Default: 20

Maximum amount of users a zline can affect when a zline is set via /ZLINE.
zlines set via services or servers will not be affected by this rule.

CAP_multi_prefix
 * Type: boolean
 * Default: TRUE

Enables announcement of the 'multi-prefix' client capability.

CAP_userhost_in_names
 * Type: boolean
 * Default: TRUE

Enables announcement of the 'userhost-in-names' client capability.

CAP_extended_join
 * Type: boolean
 * Default: TRUE

Enables announcement of the 'extended-join' client capability.

CAP_away_notify
 * Type: boolean
 * Default: TRUE

Enables announcement of the 'away-notify' client capability.

CAP_account_notify
 * Type: boolean
 * Default: TRUE

Enables announcement of the 'account-notify' client capability.

CAP_sasl
 * Type: boolean
 * Default: TRUE

Enables announcement of the 'sasl' client capability.

CAP_tls
 * Type: boolean
 * Default: TRUE

Enables announcement of the 'tls' (STARTTLS) client capability.

UPING_ENABLE
 * Type: boolean
 * Default: TRUE

Enables the server to server UDP ping server port. Change requires
a restart of the IRCd.

UPING_PORT
 * Type: integer
 * Default: 7007

The default UDP ping server port. Change requires a restart of the
IRCd.
