# Example module configuration file for Services.  After making the
# appropriate changes to this file, place it in the Services data directory
# (as specified in the "configure" script, default /usr/local/lib/services)
# under the name "modules.conf".

###########################################################################
#
# Protocol module settings
#
###########################################################################

# Enter the protocol name here, then uncomment the appropriate directives.

Module protocol/(insert protocol name here)

    # NetworkDomain domain  [RECOMMENDED]
    #     Protocols: bahamut, dalnet, dreamforge, monkey, ptlink, rfc1459,
    #                trircd, ts8, undernet-p9
    #
    #     Specifies the common domain, if any, shared by all servers on
    #     your IRC network; this is required for global notices to function
    #     properly.  Make sure you do not include a "." before the domain
    #     name.  If you do not specify this, some or all users may not
    #     receive global notices.

    #NetworkDomain	"example.net"

    # CSSetChannelTime  [OPTIONAL]
    #     Protocols: bahamut, monkey, trircd, unreal
    #
    #     When enabled, causes Services to set the "creation time" (the
    #     time at which the first user joined the channel) of a registered
    #     channel to the time at which the channel was registered.  This
    #     can help prevent spurious mode changes and "op hacking" when a
    #     split server reconnects to the network.  When using Unreal,
    #     however, the first user to join the channel when it is empty gets
    #     set -o and +o in quick succession due to limitations of the IRC
    #     server; if this bothers you, do not enable this option.  Also, some
    #     servers (such as Bahamut) generate server notices each time a
    #     channel's timestamp is changed, which can be safely ignored.

    #CSSetChannelTime

    # ServerNumeric <numeric>  [RECOMMENDED]
    #     Protocols: unreal
    #
    #     Makes Services send a numeric to the remote server on connect.
    #     This must be a value between 1 and 254, and must not be in use by
    #     any other IRC server on the network.  If you do not want to use a
    #     numeric for Services, comment the directive out.

    #ServerNumeric	1

    # SetServerTimes [<time>]  [RECOMMENDED]
    #     Protocols: unreal
    #
    #     Causes Services to synchronize all servers' internal clocks with
    #     its own; this can help avoid potential problems with users
    #     improperly gaining chanops, particularly during netsplits.  If a
    #     time parameter is given, Services will repeatedly synchronize the
    #     servers clocks at that interval, otherwise synchronization will
    #     only be performed at startup.

    #SetServerTimes
    #SetServerTimes 12h

EndModule

###########################################################################
#
# Encryption module configuration
#
###########################################################################

Module encryption/md5

    # EnableAnopeWorkaround  [OPTIONAL]
    #     Enables a workaround for encrypted passwords imported from the
    #     Anope or Epona programs, which have a bug (inherited from an old
    #     version of Services) causing passwords to be incorrectly
    #     encrypted.
    #
    #     WARNING: Enabling this option may reduce the security of
    #     encrypted passwords!  If you need this option for importing an
    #     Anope or Epona database, it is recommended that you enable this
    #     only long enough to ensure that all users have used SET PASSWORD
    #     to reset their passwords (possibly to the same password).

    #EnableAnopeWorkaround

EndModule

###########################################################################
#
# Mail module configuration
#
###########################################################################

Module mail/main

    # FromAddress <email>  [REQUIRED]
    #     Specifies the E-mail address to be used on outgoing mail.  Make
    #     sure you enter the correct address here before uncommenting the
    #     directive.

    #FromAddress services@example.net

    # FromName <name>  [OPTIONAL]
    #     Specifies the "real name" to be used on outgoing mail.  Make sure
    #     to include quotes if this is a multi-word string.

    #FromName "ExampleNet Services"

EndModule

################################ Sendmail-based low-level module

Module mail/sendmail

    # SendmailPath <path>  [REQUIRED]
    #     Specifies the full path to the "sendmail" program to be used to
    #     send mail.  This program must accept a command-line option "-t"
    #     to extract recipient addresses from a mail message given on
    #     standard input (the standard "sendmail" program does this).
    #     The program will be executed with the same environment as
    #     Services itself is run with.

    SendmailPath /usr/lib/sendmail

EndModule

################################ SMTP-based low-level module

Module mail/smtp

    # RelayHost <hostname>  [REQUIRED]
    #     Specifies the host to which all mail will be sent, e.g. your
    #     local mail server.  This directive may be given multiple times to
    #     specify backup servers; the servers will be tried in the order
    #     listed.

    #RelayHost	mail.example.net

    # SMTPName <hostname>  [REQUIRED]
    #     Specifies the hostname Services will use in the HELO command to
    #     the remote server.  Normally, this should be set to the same as
    #     the hostname of the machine Services runs on.

    #SMTPName	services.example.net

    # MaxSockets <count>  [REQUIRED]
    #     Specifies the maximum number of sockets to the mail server which
    #     can be open at once.

    MaxSockets	100

EndModule

###########################################################################
#
# OperServ configuration
#
###########################################################################

Module operserv/main

    # OperServName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the OperServ pseudoclient.

    OperServName	"OperServ"	"Operator Server"

    # GlobalName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the global-noticer pseudoclient.  This client
    #     is used to send messages from the OperServ GLOBAL command and
    #     news messages.

    GlobalName		"Global"	"Global Noticer"

    # OperServDB <name>  [REQUIRED]
    #     Specifies the name of the OperServ database.  When using the
    #     standard database module, this is the name of the file in which
    #     the data is stored.

    OperServDB		"oper.db"

    # ServicesRoot <nick>  [REQUIRED]
    #     Specifies the Services "super-user".  The super-user, or "root" as
    #     in Unix terminology, is the only user who can add or delete
    #     Services admins.
    #
    #     This is commented out by default; make sure you insert the correct
    #     nick before uncommenting it.

    #ServicesRoot	SuperUser

    # KillClonesAutokill <expiry-time>  [RECOMMENDED]
    #     Causes Services to add an autokill for hosts killed using the
    #     KILLCLONES command, to prevent the clients from immediately
    #     reconnecting.  The expiry-time parameter sets the expiry time for
    #     the autokill.
    #
    #     If the autokill module (operserv/akill) is not loaded, this
    #     directive has no effect.

    KillClonesAutokill	30m

    # AllowRaw  [DISCOURAGED]
    #     Enables use of the OperServ RAW command.  This command can be
    #     used for testing IRC server features and other limited uses, but
    #     can also wreak havoc on a network if used improperly; use with
    #     extreme caution.

    #AllowRaw

    # WallOper  [OPTIONAL]
    #     Causes Services to send a WALLOPS/GLOBOPS when a user becomes an
    #     IRC operator.  Note that this can cause WALLOPS floods when
    #     Services first connects to the network.

    #WallOper

    # WallBadOS  [OPTIONAL]
    #     Causes Services to send a WALLOPS/GLOBOPS if a non-IRC-operator
    #     tries to use OperServ.

    #WallBadOS

    # WallOSChannel  [OPTIONAL]
    #     Cause Services to send a WALLOPS/GLOBOPS on use of any of the
    #     MODE, KICK, CLEARMODES, and CLEARCHAN commands.

    #WallOSChannel

    # WallSU  [OPTIONAL]
    #     Causes Services to send a WALLOPS/GLOBOPS whenever a Services
    #     admin successfully obtains Services super-user privileges with
    #     the SU command.  Note that Services will always send a
    #     WALLOPS/GLOBOPS when an incorrect password is given to the SU
    #     command or a user without Services admin privileges attempts to
    #     use the SU command.

    WallSU

EndModule

################################ Autokill module settings

Module operserv/akill

    # AutokillDB <name>  [REQUIRED]
    #     Specifies the name of the autokill database.  When using the
    #     standard database module, this is the name of the file in which
    #     the data is stored.

    AutokillDB		"akill.db"

    # AutokillReason <reason>  [REQUIRED]
    #     The reason to use when sending out KILLs for autokills and with
    #     the actual AKILL/GLINE commands.  Some servers show this reason
    #     to users if their connection is rejected because they match an
    #     autokill.  If you include a "%s" in the reason, it will be
    #     replaced by the reason given with the autokill itself.

    AutokillReason "You are banned from this network"
    #AutokillReason "Autokilled: %s"

    # AutokillExpiry <time>  [RECOMMENDED]
    #     Sets the default expiry time for autokills.  If not defined,
    #     autokills will not expire by default.

    AutokillExpiry	30d

    # AkillChanExpiry <time>  [REQUIRED]
    #     Sets the default expiry time for autokills added by an AKILLCHAN
    #     command.

    AkillChanExpiry	7d

    # OperMaxExpiry <time>  [OPTIONAL]
    #     Sets the maximum expiry time usable by Services operators.  If
    #     not defined, Services operators can set any expiry time, just as
    #     Services administrators can.  If this is set to a value lower
    #     than AutokillExpiry or AkillChanExpiry, autokills entered without
    #     an expiry time will use this setting instead of the relevant
    #     default.

    #OperMaxExpiry	7d

    # EnableExclude  [OPTIONAL]
    #     Causes autokill exclusions to be usable.  If not given, the
    #     EXCLUDE command will be unavailable, and any autokill
    #     exclusions previously added will be ignored.
    #
    #     NOTICE: On IRC servers without autokill exclusion functionality
    #     (such as that in trircd version 5), this will cause autokills to
    #     not be sent to the server; instead, Services will issue a KILL
    #     for each user that matches an autokill and does not match any
    #     autokill exclusions.  This is necessary to allow Services to
    #     apply exclusions to users before they are disconnected.

    #EnableExclude

    # ExcludeReason <reason>  [REQUIRED if EnableExclude set]
    #     The reason to use when sending out EXCLUDE commands on servers
    #     which support them.  If you include a "%s" in the reason, it will
    #     be replaced by the reason given with the exclusion itself.

    ExcludeReason "IRC operator host"
    #ExcludeReason "Excluded from autokills: %s"

    # ExcludeExpiry <time>  [OPTIONAL]
    #     Sets the default expiry time for autokill exclusions.  If not
    #     defined, autokill exclusions will not expire by default.

    ExcludeExpiry	30d

    # ImmediatelySendAutokill  [OPTIONAL]
    #     Causes OperServ to inform all servers of a new autokill the
    #     moment it is added, rather than waiting for someone to match it
    #     first.  (Note that autokill exclusions are always sent to the
    #     server immediately; this is to avoid an autokill being triggered
    #     by a non-excluded match before the exclusion has been sent,
    #     resulting in the excluded users being autokilled as well.)

    #ImmediatelySendAutokill

    # WallOSAkill  [OPTIONAL]
    #     Cause Services to send a WALLOPS/GLOBOPS on use of the AKILL or
    #     EXCLUDE command to add or delete autokills or exclusions.

    #WallOSAkill

    # WallAutokillExpire  [OPTIONAL]
    #     Causes Services to send a WALLOPS/GLOBOPS whenever an autokill
    #     or autokill exclusion expires.

    #WallAutokillExpire

EndModule

################################ News module settings

Module operserv/news

    # NewsDB <name>  [REQUIRED]
    #     Specifies the name of the news database.  When using the standard
    #     database module, this is the name of the file in which the data
    #     is stored.

    NewsDB		"news.db"

EndModule

################################ Sessions module settings

Module operserv/sessions

    # ExceptionDB <name>  [REQUIRED]
    #     Specifies the name of the exception database.  When using the
    #     standard database module, this is the name of the file in which
    #     the data is stored.

    ExceptionDB		"exception.db"

    # DefSessionLimit <limit>  [RECOMMENDED]
    #     Default session limit per host.  Once a host reaches its session
    #     limit, all clients attempting to connect from that host will be
    #     killed. A value of zero (or omitting the option entirely) means
    #     an unlimited session limit.

    DefSessionLimit	3

    # MaxSessionLimit <limit>  [OPTIONAL]
    #     The maximum session limit that may be set for a host in an
    #     exception.

    MaxSessionLimit	100

    # ExceptionExpiry <time>  [RECOMMENDED]
    #     Sets the default expiry time for exceptions.  If not set,
    #     exceptions will not expire by default.

    ExceptionExpiry	1d

    # SessionLimitExceeded <message>  [OPTIONAL]
    #     The message that will be NOTICE'd to a user just before they are
    #     removed from the network because their host's session limit has
    #     been exceeded.  It may be used to give a slightly more
    #     descriptive reason for the impending kill as opposed to simply
    #     "Session limit exceeded".  If this is commented out, nothing will
    #     be sent.

    SessionLimitExceeded "The session limit for your host %s has been exceeded."

    # SessionLimitDetailsLoc <message>  [OPTIONAL]
    #     Same as above, but should be used to provide a website address
    #     where users can find out more about session limits and how to go
    #     about applying for an exception.  If this is commented out,
    #     nothing will be sent.
    #
    #     This option has been intentionally commented out in an effort to
    #     remind you to change the URL it contains.  It is recommended that
    #     you supply an address/URL where people can get help regarding
    #     session limits.

    #SessionLimitDetailsLoc "Please visit http://your.website.url/ for more information about session limits."

    # SessionLimitAutokill <max-kill-interval> <num-kills> <expiry> <reason>  [OPTIONAL]
    #     With this option, Services will add an automatic autokill when
    #     the same host's session limit is exceeded repeatedly in a short
    #     period of time.  If not given, autokills will not be
    #     automatically added (Services will just keep killing users from
    #     the host as they come on).  Note that the autokill module
    #     (operserv/akill) must be loaded for this to work.
    #
    #     <max-kill-interval> sets the maximum interval which can elapse
    #     between kills before the kill counter is reset.
    #
    #     <num-kills> sets the number of kills before an autokill is added.
    #
    #     <expiry> sets the expiration time for the autokill.
    #
    #     <reason> sets the reason for the autokill.

    #SessionLimitAutokill 10s 5 30m "Exceeding session limit"

    # WallOSException  [OPTIONAL]
    #     Cause Services to send a WALLOPS/GLOBOPS on use of the EXCEPTION
    #     command to add or delete a session exception.

    #WallOSException

    # WallExceptionExpire  [OPTIONAL]
    #     Causes Services to send a WALLOPS/GLOBOPS whenever a session
    #     limit exception expires.

    #WallExceptionExpire

EndModule

################################ S-line module settings

Module operserv/sline

    # SlineDB <name>  [REQUIRED]
    #     Specifies the name of the S-line database.  When using the
    #     standard database module, this is the name of the file in which
    #     the data is stored.

    SlineDB		"sline.db"

    # SGlineReason <reason>  [REQUIRED]
    #     The reason to use when sending out KILLs and SGLINE commands.
    #     Some servers show this reason to users if their connection is
    #     rejected because they match an SGline.  If you include a "%s"
    #     in the reason, it will be replaced by the reason given with the
    #     SGline entry itself.

    SGlineReason "Invalid real name"
    #SGlineReason "Invalid real name: %s"

    # SQlineReason <reason>  [REQUIRED]
    #     The reason to use when sending out KILLs and SQLINE commands.
    #     Some servers show this reason to users if their connection is
    #     rejected because they match an SQline.  If you include a "%s"
    #     in the reason, it will be replaced by the reason given with the
    #     SQline entry itself.

    SQlineReason "Reserved nickname"
    #SQlineReason "Reserved nickname: %s"

    # SZlineReason <reason>  [REQUIRED]
    #     The reason to use when sending out KILLs and SZLINE commands.
    #     Some servers show this reason to users if their connection is
    #     rejected because they match an SZline.  If you include a "%s"
    #     in the reason, it will be replaced by the reason given with the
    #     SZline entry itself.

    SZlineReason "You are banned from this network"
    #SZlineReason "Z-lined: %s"

    # ImmediatelySendSline  [OPTIONAL]
    #     Causes OperServ to inform all servers of a new S-line the moment
    #     it is added, rather than waiting for someone to match it first.

    #ImmediatelySendSline

    # SGlineExpiry <time>  [OPTIONAL]
    #     Sets the default expiry time for SGlines.  If not defined,
    #     SGlines of that type will not expire by default.

    #SGlineExpiry	30d

    # SQlineExpiry <time>  [OPTIONAL]
    #     Sets the default expiry time for SQlines.  If not defined,
    #     SQlines of that type will not expire by default.

    #SQlineExpiry	30d

    # SZlineExpiry <time>  [OPTIONAL]
    #     Sets the default expiry time for SZlines.  If not defined,
    #     SZlines of that type will not expire by default.

    SZlineExpiry	30d

    # WallOSSline  [OPTIONAL]
    #     Cause Services to send a WALLOPS/GLOBOPS on use of the SGLINE,
    #     SQLINE, or SZLINE commands to add or delete S-lines.

    #WallOSSline

    # WallSlineExpire  [OPTIONAL]
    #     Causes Services to send a WALLOPS/GLOBOPS whenever an autokill
    #     expires.

    #WallSlineExpire

    # SQlineIgnoreOpers  [OPTIONAL]
    #     Allows IRC operators to use nicknames that match an SQline.
    #     (Note that this may not function properly if the IRC server does
    #     not allow IRC operators to use such nicknames.)

    SQlineIgnoreOpers

    # SQlineKill  [OPTIONAL]
    #     Normally, users whose nickname matches an SQline will have their
    #     nickname changed (on servers which support forced nickname
    #     changing) instead of being killed.  Setting this option causes
    #     such users to be killed even on such servers, which may be
    #     helpful for dealing with clone attacks.
    #
    #     Note that if this option is set, Services will not send SQlines
    #     to the IRC network; if it did, the IRC servers would step in and
    #     send the user an "invalid nickname" message before Services had a
    #     chance to kill the user.

    #SQlineKill

EndModule

###########################################################################
#
# NickServ configuration
#
###########################################################################

Module nickserv/main

    # NickServName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the NickServ pseudoclient.

    NickServName	"NickServ"	"Nickname Server"

    # NickServDB <name>  [REQUIRED]
    #     Specifies the name of the nickname database.  When using the
    #     standard database module, this is the name of the file in which
    #     the data is stored.

    NickServDB		"nick.db"

    # NSEnableRegister  [OPTIONAL]
    #     Allows the REGISTER command to be used.  This is usually a good
    #     thing, but if you don't want your users to be able to register
    #     nicknames, remove (or comment out) this directive.  Note that you
    #     will need to at least enable this to register the Services
    #     super-user nick (defined in the operserv/main ServicesRoot
    #     directive), or you will not be able to use any privileged
    #     OperServ functions!

    NSEnableRegister

    # NSRegEmailMax <count>  [OPTIONAL]
    #     Sets the maximum number of nicknames that can be registered to a
    #     single E-mail address; this affects both ordinary registration as
    #     well as changing the address using SET EMAIL, and also nickname
    #     linking (if the appropriate module module is loaded).  If not
    #     given, there is no limit.
    #
    #     This option is most useful in combination with NSRequireEmail,
    #     below.

    #NSRegEmailMax	20

    # NSRequireEmail  [OPTIONAL]
    #     Makes an E-mail address required at registration time.  Users
    #     also will not be able to clear the address once registered,
    #     though they can change it.  If not set, an E-mail address is not
    #     required (but may still be given), and the address may be cleared
    #     later on.

    #NSRequireEmail

    # NSRegDelay <time>  [RECOMMENDED]
    #     Sets the minimum length of time between consecutive uses of the
    #     REGISTER command.  If not given, this restriction is disabled.
    #
    #     WARNING: Not setting NSRegDelay, or setting it too low, will not
    #              only allow "registration flooding", but, if the
    #              mail-auth module is also loaded, will also allow users
    #              to abuse this command to send large quantities of mail
    #              (mailbombs) to arbitrary users!

    NSRegDelay		5m

    # NSInitialRegDelay <time>  [OPTIONAL]
    #     Sets the minimum length of time the user must be connected before
    #     using the REGISTER command for the first time.  If not given,
    #     this restriction is disabled.  This option can be helpful in
    #     preventing malicious bots from flooding your network with
    #     registrations.

    #NSInitialRegDelay	30s

    # NSDef...  [OPTIONAL]
    #     Sets the default options for newly registered nicks.  Note that
    #     changing these options will have no effect on nicks which are
    #     already registered.  Options not listed here will be unset on new
    #     nicks.
    #
    #     If both NSDefKill and NSDefKillQuick are given, NSDefKillQuick
    #     takes precedence.  KILL IMMED cannot be specified as a default.

    #NSDefKill
    #NSDefKillQuick
    NSDefSecure
    #NSDefPrivate
    NSDefHideEmail
    NSDefHideUsermask
    #NSDefHideQuit
    NSDefMemoSignon
    NSDefMemoReceive

    # NSExpire <time>  [RECOMMENDED]
    #     Sets the length of time before a nick registration expires.  If
    #     not set, nicknames will not expire.

    NSExpire		30d

    # NSExpireWarning <time>  [OPTIONAL]
    #     Sets the length of time before nick expiration during which
    #     warnings are sent to the user when the user is online (and not
    #     identified).  If not set, no warnings will be sent; however, a
    #     message will still be sent when the nickname actually expires.

    NSExpireWarning	3d

    # NSSuspendExpire <time> <grace-period>  [RECOMMENDED]
    #     Sets the default expiry time and recovery grace period for
    #     nickname suspensions.  (The expiry time can be set individually
    #     for each suspension; the grace period cannot.)
    #
    #     The recovery grace period is the length of time a nick must exist
    #     for, after being unsuspended, before it is allowed to expire.
    #     This gives the owner a chance to reclaim the nick.  It is
    #     enforced, if necessary, by adjusting the "last seen time" value,
    #     as well as the AUTH timeout when the mail-auth module is in use,
    #     when the nick is unsuspended.  If set to zero, nicknames that are
    #     suspended for longer than "NSExpire" will be expired (dropped)
    #     during the next check for nickname expiration, giving the owners
    #     very little time to identify for their nicknames and prevent
    #     their expiry.
    #
    #     If not specified, nickname suspensions will not expire by
    #     default, and there will be no grace period for recovering the nick.

    NSSuspendExpire	25d 5d

    # NSShowPassword  [OPTIONAL]
    #     Causes the user's password to be sent back to them in a NOTICE at
    #     registration time, as a reminder.

    NSShowPassword

    # NSEnforcerUser <user>[@<host>]  [REQUIRED]
    #     Sets the username (and possibly hostname) used for the fake user
    #     created when NickServ collides a user.  Should be in user@host
    #     format.  If the host is not given, the one from ServicesUser is
    #     used.

    NSEnforcerUser	enforcer
    #NSEnforcerUser	enforcer@localhost.net

    # NSForceNickChange  [OPTIONAL]
    #     When enabled, makes NickServ change a user's nick to a
    #     "Guest######" nick instead of killing them when enforcing a
    #     "nick kill".  (The actual nickname used is determined by the
    #     GuestNickPrefix setting in ircservices.conf.)
    #
    #     This setting has no effect with IRC servers that do not support
    #     forcibly changing a client's nickname, and a warning will be
    #     written to the log file if this option is used in such a case.

    #NSForceNickChange

    # NSReleaseTimeout <time>  [REQUIRED]
    #     Sets the delay before a NickServ-collided nick is released.

    NSReleaseTimeout	1m

    # NSAllowKillImmed  [OPTIONAL]
    #     When given, allows the use of the IMMED option with the NickServ
    #     SET KILL command.

    #NSAllowKillImmed

    # NSListOpersOnly  [OPTIONAL]
    #     When enabled, limits use of the NickServ LIST and LISTEMAIL
    #     commands to IRC operators.

    #NSListOpersOnly

    # NSListMax <count>  [REQUIRED]
    #     Specifies the maximum number of nicks to be returned for a
    #     NickServ LIST or LISTEMAIL command.

    NSListMax		50

    # NSSecureAdmins  [RECOMMENDED]
    #     When enabled, prevents the use of the DROP, GETPASS, and SET
    #     PASSWORD commands by Services admins on other Services admins or
    #     the Services root.

    NSSecureAdmins

    # NSEnableDropEmail  [OPTIONAL]
    #     Allows the DROPEMAIL command to be used.  This command can help
    #     recover from mass-registration attacks, but can also destroy your
    #     database if used improperly.

    #NSEnableDropEmail

    # NSDropEmailExpire  [REQUIRED]
    #     Sets the maximum length of time allowed between a DROPEMAIL
    #     command and the corresponding DROPEMAIL-CONFIRM command.

    NSDropEmailExpire 10m

    # NSHelpWarning <time>  [OPTIONAL]
    #     When enabled, displays a "do not abuse NickServ" warning at the
    #     end of the NickServ HELP output similar to previous versions of
    #     Services.  Otherwise, the warning is not displayed.

    #NSHelpWarning

EndModule

################################ Access list module

Module nickserv/access

    # NSAccessMax <count>  [REQUIRED]
    #     Sets the maximum number of entries allowed on a nickname access
    #     list.

    NSAccessMax		32

    # NSFirstAccessEnable  [OPTIONAL]
    #     When enabled, causes an access entry based on the registering
    #     user's username and hostname to be automatically added to the
    #     access list of a newly-registered nickname.  When disabled,
    #     newly-registered nicknames will have an empty access list.

    NSFirstAccessEnable

    # NSFirstAccessWild  [OPTIONAL]
    #     When enabled, causes the first access list entry added to a newly
    #     registered nickname to use a wildcard in the hostname when
    #     appropriate.  When disabled, the first access list entry consists
    #     of the registering user's username and hostname as-is, without
    #     wildcards.  This directive has no effect if NSFirstAccessEnable
    #     is disabled.

    NSFirstAccessWild

EndModule

################################ Autojoin module

Module nickserv/autojoin

    # NSAutojoinMax <count>  [REQUIRED]
    #     Sets the maximum number of entries allowed on an autojoin list.
    #     There is little point in setting this higher than the maximum
    #     number of channels a client is allowed to join by the server
    #     (usually 10).

    NSAutojoinMax		10

EndModule

################################ Link module

Module nickserv/link

    # NSLinkMax <count>  [REQUIRED]
    #     Sets the maximum number of links allowed for a single nickname
    #     group.

    NSLinkMax		20

EndModule

################################ Authentication module

Module nickserv/mail-auth

    # NSNoAuthExpire <time>  [OPTIONAL]
    #     Sets the period of time after which a newly registered nickname
    #     will expire if it is not authenticated.  If not specified, the
    #     standard nickname expiration time (NSExpire) is used.

    #NSNoAuthExpire	12h

    # NSSendauthDelay <time>  [RECOMMENDED]
    #     Sets the minimum length of time between consecutive uses of the
    #     SENDAUTH command for the same nick group.  If not specified, this
    #     restriction is disabled.
    #
    #     WARNING: Not setting NSSendauthDelay, or setting it too low, will
    #              allow users to abuse this command to send large
    #              quantities of mail (mailbombs) to arbitrary users!

    NSSendauthDelay	1d

EndModule

################################ SENDPASS module

Module nickserv/sendpass

    # NSSendpassDelay <time>  [RECOMMENDED]
    #     Sets the minimum length of time between consecutive uses of the
    #     SENDPASS command for the same nick group.  If not specified, this
    #     restriction is disabled.
    #
    #     WARNING: Not setting NSSendpassDelay, or setting it too low, will
    #              allow users to abuse this command to send large
    #              quantities of mail (mailbombs) to arbitrary users!

    NSSendpassDelay	1d

EndModule

###########################################################################
#
# ChanServ configuration
#
###########################################################################

Module chanserv/main

    # ChanServName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the ChanServ pseudoclient.

    ChanServName	"ChanServ"	"Channel Server"

    # ChanServDB <name>  [REQUIRED]
    #     Specifies the name of the channel database.  When using the
    #     standard database module, this is the name of the file in which
    #     the data is stored.

    ChanServDB		"chan.db"

    # CSEnableRegister  [OPTIONAL]
    #     Allows the REGISTER command to be used.  This is usually a good
    #     thing, but if you don't want your users to be able to register
    #     channels, remove (or comment out) this directive.  Note, however,
    #     that Services administrators and the Services super-user will
    #     still be able to use the REGISTER command even if this directive
    #     is not given.

    CSEnableRegister

    # CSRegisteredOnly  [OPTIONAL]
    #     Treats unregistered channels as if they were forbidden,
    #     disallowing access by ordinary users to any channels not
    #     explicitly registered with ChanServ.  IRC operators will be
    #     allowed to enter such channels, as they are for ordinary
    #     forbidden channels.  Note that this directive operates
    #     independently from the CSEnableRegister directive; if
    #     CSEnableRegister is commented out, non-Services-admin IRC
    #     operators will be able to join unregistered channels but will
    #     not be permitted to register them.

    #CSRegisteredOnly

    # CSMaxReg <count>  [RECOMMENDED]
    #     Limits the number of channels which may be registered to a single
    #     nickname.  In the case of linked nicks, this limit applies to the
    #     entire set of linked nicks.

    CSMaxReg	20

    # CSDef...  [OPTIONAL]
    #     Sets the default options for newly registered channels.  Note
    #     that changing these options will have no effect on channels which
    #     are already registered.  Options not listed here will be unset on
    #     new channels.

    CSDefKeepTopic
    #CSDefSecureOps
    #CSDefPrivate
    #CSDefTopicLock
    #CSDefLeaveOps
    CSDefSecure
    #CSDefOpNotice
    #CSDefEnforce
    #CSDefHideEmail
    #CSDefHideTopic
    #CSDefHideMlock

    # CSExpire <time>  [RECOMMENDED]
    #     Sets the length of time before a channel expires.  If not set,
    #     channels will not expire.

    CSExpire	14d

    # CSSuspendExpire <time>  [RECOMMENDED]
    #     Sets the default expiry time and recovery grace period for channel
    #     suspensions.  If not set, channel suspensions will not expire by
    #     default and there will be no recovery grace period.

    CSSuspendExpire 12d 2d

    # CSShowPassword  [OPTIONAL]
    #     If specified, causes the user's password to be sent back to them
    #     in a NOTICE at registration time, as a reminder.

    CSShowPassword

    # CSAccessMax <count>  [REQUIRED]
    #     Sets the maximum number of entries on a channel's access list.
    #     Channel access lists may contain only registered nicknames;
    #     therefore, checking each entry on the list requires only a single
    #     scalar comparison instead of a wildcard match, and this limit may be
    #     safely set much higher than (for example) the nickname access list
    #     size limit without impacting performance significantly.

    CSAccessMax	1024

    # CSAutokickMax <count>  [REQUIRED]
    #     Sets the maximum number of entries on a channel's autokick list.

    CSAutokickMax	32

    # CSAutokickReason <text>  [REQUIRED]
    #     Sets the default reason for an autokick if none is given.

    CSAutokickReason "User has been banned from the channel"

    # CSInhabit <time>  [REQUIRED]
    #     Sets the length of time ChanServ stays in a channel after kicking
    #     a user from a channel s/he is not permitted to be in.  This only
    #     occurs when the user is the only one in the channel.

    CSInhabit	15s

    # CSRestrictDelay <time>  [OPTIONAL]
    #     When enabled, causes ChanServ to permit users to join channels
    #     with the RESTRICTED option set if they would be permitted to join
    #     after identifying for their nick, and to not remove mode +o (ops)
    #     from users who would be auto-opped if identified for their nick,
    #     for the given period of time after Services starts up.  This gives
    #     such users time to identify to NickServ before being kicked out of
    #     restricted channels or getting deopped.

    CSRestrictDelay	15s

    # CSListOpersOnly  [OPTIONAL]
    #     When enabled, limits use of the ChanServ LIST command to IRC
    #     operators.

    #CSListOpersOnly

    # CSListMax <count>  [REQUIRED]
    #     Specifies the maximum number of channels to be returned for a
    #     ChanServ LIST command.

    CSListMax	50

    # CSForbidShortChannel  [OPTIONAL]
    #     When enabled, treats the channel "#" as a forbidden channel, not
    #     allowing any users to join it.  When not enabled, the channel "#"
    #     can be used normally, although ChanServ functions cannot be used
    #     with it.  If CSRegisteredOnly is enabled, this directive has no
    #     effect (the "#" channel will be treated as forbidden along with
    #     all other unregistered channel).

    #CSForbidShortChannel

EndModule

################################ SENDPASS module

Module chanserv/sendpass

    # CSSendpassDelay <time>  [RECOMMENDED]
    #     Sets the period of time which must elapse between SENDPASS
    #     commands for the same channel.  If not specified, the SENDPASS
    #     command may be used at any time.
    #
    #     NOTE: Since users can only send passwords to nicks they have
    #           identified for, the potential for E-mail attacks via this
    #           command is minimal; however, setting this limit too low (or
    #           not setting it at all) can allow users to slow down
    #           Services through frequent SENDPASS requests.

    CSSendpassDelay	1h

EndModule

###########################################################################
#
# MemoServ configuration
#
###########################################################################

Module memoserv/main

    # MemoServName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the MemoServ pseudoclient.

    MemoServName	"MemoServ"	"Memo Server"

    # MSMaxMemos <count>  [RECOMMENDED]
    #     Sets the maximum number of memos a user is allowed to keep by
    #     default.  Normal users may set the limit anywhere between zero
    #     and this value; Services admins can change it to any value or
    #     disable it.  If not given, the limit is disabled by default, and
    #     normal users can set any limit they want.

    MSMaxMemos	20

    # MSExpire <time>  [OPTIONAL]
    #     Sets the length of time after a memo is sent until it expires and
    #     is automatically deleted.  If not set, memos will not expire.
    #     Note that memos sent while MSExpire is disabled will not expire
    #     even if MSExpire is later enabled.

    #MSExpire	3d

    # MSExpireUnread  [OPTIONAL]
    #     If specified, unread memos will be expired after the delay given
    #     in the MSExpire directive just like other memos; normally, unread
    #     memos do not expire.  If MSExpire is not set, this directive is
    #     ignored.

    #MSExpireUnread

    # MSSendDelay <time>  [RECOMMENDED]
    #     Sets the delay between consecutive uses of the MemoServ SEND
    #     command.  This can help prevent spam as well as denial-of-service
    #     attacks from sending large numbers of memos and filling up disk
    #     space (and memory).  A 3-second wait means a maximum average of
    #     150 bytes of memo per second per user under the current IRC
    #     protocol.

    MSSendDelay	3s

    # MSNotifyAll  [OPTIONAL]
    #     Should we notify all appropriate users of a new memo?  This
    #     applies in cases where a memo is sent to a nick which has other
    #     nicks linked to it and multiple users are using two or more of
    #     the linked nicks.  Enabling this option will cause MemoServ to
    #     check all users who are currently online to see whether any have
    #     nicks which are linked to the target of the memo, and if so,
    #     notify all of them.  This can take a good deal of CPU time on
    #     larger networks, so you may want to disable it.

    MSNotifyAll

EndModule

################################ FORWARD module

Module memoserv/forward

    # MSAllowForward  [OPTIONAL]
    #     If given, allows the FORWARD command to be used (the SET FORWARD
    #     command is always available).  While the FORWARD command can be
    #     useful particularly for users first setting the FORWARD option
    #     on, a large number of users using the FORWARD ALL command can
    #     place a significant load on Services.

    MSAllowForward

    # MSForwardDelay <time>  [RECOMMENDED if MSAllowForward is set]
    #     Sets the minimum length of time between consecutive uses of the
    #     FORWARD command.  If not given, this restriction is disabled.
    #     (Note that this can allow users to place a significant load on
    #     Services and/or your mail server!)
    #
    #     If MSAllowForward is not set, this directive is ignored.

    MSForwardDelay	10s

EndModule

################################ IGNORE module

Module memoserv/ignore

    # MSIgnoreMax  [REQUIRED]
    #     Sets the maximum number of entries a user can have for their
    #     nickname group's memo ignore list.

    MSIgnoreMax	32

EndModule

###########################################################################
#
# StatServ configuration
#
###########################################################################

Module statserv/main

    # StatServName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the StatServ pseudoclient.

    StatServName	"StatServ"	"Statistics Server"

    # StatServDB <name>  [REQUIRED]
    #     Specifies the name of the StatServ database.  When using the
    #     standard database module, this is the name of the file in which
    #     the data is stored.

    StatServDB		"stats.db"

    # SSOpersOnly  [OPTIONAL]
    #     Limits the use of StatServ to IRC operators only.

    #SSOpersOnly

EndModule

###########################################################################
#
# HTTP server modules
#
###########################################################################

Module httpd/main

    # ListenTo <address>:<port>  [REQUIRED]
    #     Specifies the address and port number on which the HTTP server
    #     will listen for incoming requests.  <address> may be specified as
    #     an IP address (first example below), a hostname (second example),
    #     or the special string "*", which means "any IP address" (third
    #     example).
    #
    #     When a hostname is given, as in the second example below,
    #     Services will look up the address(es) associated with the
    #     hostname at startup time, and bind to every IP address found.
    #     This can be useful, for example, with dynamic DNS, in which
    #     the server's IP address changes periodically; however, the
    #     hostname lookup can take time--especially if there is no DNS
    #     server on the local network--and is susceptible to network or
    #     DNS server outages, so IP addresses or "*" should be used
    #     whenever possible.
    #
    #     Note that many systems restrict low port numbers to the system
    #     administrator; in particular, Unix-like systems allow only the
    #     root user (UID 0) to use ports less than 1024.

    #ListenTo 127.0.0.1:12701
    #ListenTo services.example.net:8080
    #ListenTo *:80

    # ListenBacklog  [REQUIRED]
    #     Specifies the maximum number of connections that can be received
    #     by the operating system without being accepted by Services (the
    #     second parameter, `backlog', to the listen() system call).  If
    #     you start seeing refused or delayed connections on a busy server,
    #     try increasing this value.
    #
    #     If you don't understand the above, leave this setting alone.

    ListenBacklog	5

    # RequestBufferSize <bytes>  [REQUIRED]
    #     Specifies the size of the buffer allocated for each HTTP request.
    #     Note that this buffer is allocated for every connection, and an
    #     additional amount of memory will be allocated for header pointers
    #     (in the pathological case this extra amount could reach 4/3 of
    #     the value given for this directive).  If a client sends a request
    #     (including POST data) exceeding this value, an error will be
    #     returned and the connection terminated.
    #
    #     If you don't understand the above, leave this setting alone.

    RequestBufferSize	4096

    # MaxConnections <count>  [RECOMMENDED]
    #     Specifies the maximum number of simultaneous connections allowed.
    #     If not given, no limit is placed on the number of connections;
    #     however, the operating system may impose its own limits, which
    #     are not under the control of Services.

    MaxConnections	10

    # MaxRequests <count>  [RECOMMENDED]
    #     Specifies the maximum number of requests that can be made over a
    #     single connection before the server disconnects it.  If not
    #     given, no limit is placed on the number of requests per
    #     connection; note that this may allow malicious users to interfere
    #     with Services' normal operations by sending large numbers of
    #     requests over a single connection.

    MaxRequests		20

    # IdleTimeout <time>  [RECOMMENDED]
    #     Specifies the length of time a connection can be idle (not
    #     sending data) before it will be automatically closed.  If not
    #     given, connections will never be closed automatically.

    IdleTimeout		30s

    # LogConnections  [OPTIONAL]
    #     If given, a log message will be written for each connection to
    #     the server.

    LogConnections

EndModule

################################ IP address authorization module

Module httpd/auth-ip

    # AllowHost <path> <address>  [OPTIONAL]
    # DenyHost <path> <address>  [OPTIONAL]
    #     Specifies which hosts will be allowed (or not allowed) to access
    #     resources provided by the HTTP server.  The <path> parameter is a
    #     URL path (not including the "http://host.name"), and matches any
    #     URL which begins with the same string; for example, "/dir"
    #     matches both "/dir/file" and "/dirty".  The <address> can be an
    #     IP address, a hostname (as with ListenTo in the main server
    #     module, all addresses associated with the hostname will be
    #     allowed or denied), the string "*" (which means all addresses),
    #     or the special format "<IP-address>/<mask>", where <mask> is an
    #     integer from 1 to 31 giving the number of bits in the subnet
    #     address, which indicates that the entire subnet of addressess
    #     specified should be allowed or denied; for example,
    #     "192.168.1.64/26" represents the range of addresses from
    #     192.168.1.64 to 192.168.1.127.
    #
    #     Examples:
    #        AllowHost /debug 127.0.0.1   # Allow all requests from localhost
    #                                     #   to the debug page
    #        AllowHost / 192.168.0.0/24   # Allow any host in the 192.168.0.*
    #                                     #   network access to the entire server
    #        DenyHost / shell.example.org # Deny connections from any address
    #                                     #   associated with shell.example.org
    #
    #     Multiple AllowHost or DenyHost directives for the same path may
    #     be used to specify multiple addresses to allow or deny.  Each
    #     condition will be checked in the order they are listed here, and
    #     the first matching one will be used.  For example, these lines:
    #        AllowHost / 192.168.0.1
    #        DenyHost  / 192.168.0.0/24
    #     deny access to all hosts in the 192.168.0.* network _except_
    #     192.168.0.1.  However, the reverse:
    #        DenyHost  / 192.168.0.0/24
    #        AllowHost / 192.168.0.1
    #     simply blocks all hosts in the 192.168.0.* network, since the
    #     first rule matches 192.168.0.1 and the second is never checked.
    #
    #     Access to the entire server can be allowed or denied by using the
    #     path "/", which matches every URL (since all URLs begin with a
    #     slash).  It is good practice to include such a rule after all
    #     others to explicitly indicate what should be done with requests
    #     that do not match any other rule.  (If a request does not match
    #     any rules at all, it is implicitly allowed, but this behavior may
    #     change in the future and should not be relied on.)  For example:
    #        AllowHost / *
    #     or:
    #        DenyHost / *
    #
    #     WARNING: Hostnames are resolved only once at startup; any changes
    #              in a host's IP address will not be seen by Services.
    #
    #     Note: These directives are listed as "optional" only because the
    #           module will still load even if no directives are listed;
    #           however, unless AllowHost/DenyHost directives are given,
    #           the module will not have any effect.

    AllowHost / *

EndModule

################################ Password authorization module

Module httpd/auth-password

    # AuthName <name>  [REQUIRED]
    #     Specifies the name to be used by the user's browser when asking
    #     for a password (as in "Enter username and password for <name>:").

    AuthName		"IRC Services"

    # Protect <path> <user>:<pass>  [OPTIONAL]
    #     Sets the URLs (paths) which will be protected by password
    #     authorization, and the username and password for each path.  The
    #     username and password can be different for each path.  The path
    #     given will match any URL beginning with that string, as with the
    #     auth-ip module.
    #
    #     Examples:
    #         Protect	/debug	"debug:debug"
    #         Protect	/~	"nickuser:nickpass"
    #
    #     Note: This directive is listed as "optional" only because the
    #           module will still load even if no directives are listed;
    #           however, unless Protect directives are given, the module
    #           will not have any effect.  Use a path of "/" to apply
    #           password protection to the entire server.

EndModule

################################ Database access module

Module httpd/dbaccess

# NOTICE: This module allows complete access to all Services data;
#         be certain to protect it from unauthorized access using
#         authorization modules or other means.

    # Prefix <path>  [REQUIRED]
    #     Sets the URL (path) at which database access will be accessible.
    #     If this does not end with a slash, one will be appended
    #     automatically.  Access is provided using the following directory
    #     tree:
    #
    #         <path>/                   Main menu
    #         <path>/operserv/          OperServ data and menu
    #         <path>/operserv/akill/    Autokill list
    #         <path>/operserv/news/     News item list
    #         <path>/operserv/sessions/ Session and exception lists
    #         <path>/operserv/sline/    S-line lists
    #         <path>/nickserv/          Nickname list and information
    #         <path>/chanserv/          Channel list and information
    #         <path>/statserv/          Network statistics
    #         <path>/xml-export/        XML-format database download
    #
    #     Categories for which the relevant module is not loaded will not
    #     be accessible.
    #
    #     WARNING: These functions, particularly the XML export function,
    #              can cause Services to stop for a significant period of
    #              time while they are processed!
    #
    #     This is commented out by default; make sure you implement proper
    #     access protection (see above) before uncommenting it.

    #Prefix		"/dbaccess"

EndModule

################################ Debug page module

Module httpd/debug

    # DebugURL <path>  [REQUIRED]
    #     Sets the URL (path) at which the debug page will be accessible.
    #     This must begin with a slash.

    DebugURL		"/debug"

EndModule

################################ Nick/channel redirect module

Module httpd/redirect

    # NicknamePrefix <path>  [OPTIONAL]
    #     Sets the URL (path) at which nickname redirects will be
    #     accessible; all characters after this prefix, up to the next
    #     slash, will be taken as the nickname.  This must begin with a
    #     slash.  The default value, "/~", emulates the traditional home
    #     page URL of "http://www.example.net/~username/".  If you use a
    #     directory name instead, it must end with a slash, for example:
    #     "/nickname/".  See also ChannelPrefix, below.
    #
    #     If not set, nickname redirects will not be done.

    NicknamePrefix		"/~"

    # ChannelPrefix <path>  [OPTIONAL]
    #     Sets the URL (path) at which channel redirects will be
    #     accessible; all characters after this prefix, up to the next
    #     slash, will be taken as the channel name (without the leading
    #     "#", which cannot be used in URLs).  The path must begin with
    #     a slash.  The default value, "/channel/", gives URLs like
    #     "http://services.example.net/channels/channelname/" for channel
    #     "#channelname".
    #
    #     If not set, channel redirects will not be done.
    #
    #     Note: If a URL could be interpreted as both a nickname URL and a
    #           channel URL, the nickname will take precedence, even if it
    #           is not registered or does not have a URL associated with it.

    ChannelPrefix	"/channel/"

EndModule

################################ Top page module

Module httpd/top-page

    # Filename <path> [<content-type>]  [OPTIONAL]
    #     Sets the name of a file to be delivered as the server's top page.
    #     If this does not begin with a slash, then it is taken as relative
    #     to the Services data directory.  The second parameter specifies
    #     the MIME content type of the file; if not given, it defaults to
    #     text/html.

    #Filename	"Top Page.txt" text/plain
    #Filename	/var/www/html/ircservices/top-page.html

    # Redirect <URL>  [OPTIONAL]
    #     Sets a URL to be provided as a redirect to a client accessing the
    #     top page.  This must be a full URL, beginning with "http://" (or
    #     some other protocol specifier).  If both Filename and Redirect
    #     are given, Redirect takes precedence.

    #Redirect	http://www.example.net/ircservices/

EndModule

###########################################################################
#
# Miscellaneous modules
#
###########################################################################

################################ DevNull settings

Module misc/devnull

    # DevNullName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the DevNull pseudoclient.

    DevNullName		"DevNull"	"/dev/null -- message sink"

EndModule

################################ HelpServ settings

Module misc/helpserv

    # HelpServName <nick> <string>  [REQUIRED]
    #     Specifies the nickname (first parameter) and "real" name (second
    #     parameter) used by the HelpServ pseudoclient.

    HelpServName	"HelpServ"	"Help Server"

    # HelpDir <dirname>  [REQUIRED]
    #     Specifies the name of the subdirectory containing help files for
    #     HelpServ.

    HelpDir		helpfiles

EndModule

################################ XML export settings

Module misc/xml-export

# This module has no configurable settings.

EndModule

################################ XML import settings

Module misc/xml-import

    # OnNicknameCollision <action>  [OPTIONAL]
    #     Specifies the action to be taken when a nickname in the data to
    #     import is already registered.  The string must be one of either
    #     "skipgroup" (skip over the nickname group containing the nickname
    #     in the imported data), "skipnick" (skip only the colliding
    #     nickname), "overwrite" (drop the existing nickname), or "abort"
    #     (do not import any data).  Note that when "abort" is selected,
    #     the entire XML input is still checked for errors, but Services
    #     will abort before actually merging any data.
    #
    #     When using "overwrite", if a nickname group has only one nickname
    #     and that nickname is overwritten, the nickname group will be
    #     dropped as well.  As a consequence, any channels owned by such a
    #     nickname will be dropped (or shifted to their successors) as
    #     well.  All nicknames and channels overwritten or droppde in this
    #     manner will be displayed on standard error.
    #
    #     If not specified, defaults to "skipgroup".

    #OnNicknameCollision	skipgroup

    # OnChannelCollision <action>  [OPTIONAL]
    #     Specifies the action to be taken when a channel in the data to
    #     import is already registered.  The string must be one of either
    #     "skip" (skip over the channel in the imported data), "overwrite"
    #     (drop the existing channel), or "abort" (do not import any data).
    #     Note that when "abort" is selected, the entire XML input is still
    #     checked for errors, but Services will abort before actually
    #     merging any data.  If not specified, defaults to "skip".

    #OnChannelCollision	skip

    # VerboseImport  [OPTIONAL]
    #     Causes a detailed list of imported nicknames, channels, and other
    #     data to be printed to standard output.

    VerboseImport

EndModule
