/* * Example configuration file for NickServ. */ /* * First, create the service. */ service { /* * The name of the NickServ client. * If you change this value, you probably want to change the client directive in the configuration for the nickserv module too. */ nick = "NickServ" /* * The username of the NickServ client. */ user = "services" /* * The hostname of the NickServ client. */ host = "${services.host}" /* * The realname of the NickServ client. */ real = "Nickname Registration Service" /* * The modes this client should use. * Do not modify this unless you know what you are doing. * * These modes are very IRCd specific. If left commented, sane defaults * are used based on what protocol module you have loaded. * * Note that setting this option incorrectly could potentially BREAK some, if * not all, usefulness of the client. We will not support you if this client is * unable to do certain things if this option is enabled. */ #modes = "+o" /* * An optional comma separated list of channels this service should join. Outside * of log channels this is not very useful, as the service will just idle in the * specified channels, and will not accept any types of commands. * * Prefixes may be given to the channels in the form of mode characters or prefix symbols. */ #channels = "@#services,#mychan" /* * The server alias that can be used to securely message this service. If * your IRC server does not have an alias for this service you can set this * to an empty string to tell users to use /msg instead. * * This setting is ignored when options:servicealias is disabled. * * Defaults to the nick of the service if not set. */ #alias = "NS" } /* * Core NickServ module. * * Provides essential functionality for NickServ. */ module { name = "nickserv" /* * The name of the client that should be NickServ. */ client = "NickServ" /* * Requires users to give an email address when they register a nick. * * This directive defaults to "yes" and is recommended to be enabled. */ forceemail = yes /* * Require users who change their email address to confirm they * own their new email. * * If {ns_register}:registration is set to mail then this defaults * to yes. Otherwise, it defaults to no. */ #confirmemailchanges = yes /* * A message sent to users on connect if they use an unregistered nick. {nick} will be replaced with the user's nickname. * * This directive is optional. */ #unregistered_notice = "Your nickname is not registered. To register it, use: /msg NickServ REGISTER password email" /* * The default options for newly registered nicks. Note that changing these options * will have no effect on nicks which are already registered. The list must be separated * by spaces. * * The options are: * - ns_private: Hide the nick from NickServ's LIST command * - hide_email: Hide the nick's email address from NickServ's INFO command * - hide_mask: Hide the nick's last or current user@host from NickServ's INFO command * - hide_status: Hide the nick's services operator access status from NickServ's INFO command * - hide_quit: Hide the nick's last quit message from NickServ's INFO command * - memo_signon: Notify user if they have a new memo when they sign into the nick * - memo_receive: Notify user if they have a new memo as soon as it's received * - memo_mail: Notify user if they have a new memo by mail * - autoop: User will be automatically opped in channels they enter and have access to * - neverop: User can not be added to access lists * - msg: Messages will be sent as PRIVMSGs instead of NOTICEs * - ns_keep_modes: Enables keepmodes, which retains user modes across sessions * - protect: Protects the registered nickname from use by unidentified users. * * This directive is optional, if left blank, the options will default to memo_signon, and * memo_receive. If you really want no defaults, use "none" by itself as the option. */ defaults = "autoop hide_email hide_mask memo_receive memo_signon ns_private protect" /* * The minimum length of time between consecutive uses of NickServ's REGISTER command. This * directive is optional, but recommended. If not set, this restriction will be disabled. */ regdelay = 5m /* * The length of time before a nick's registration expires. * * This directive is optional, but recommended. If not set, the default is one year. */ expire = 1y /* * Prevents the use of the ACCESS and CERT (excluding their LIST subcommand), DROP, FORBID, SUSPEND * and SET PASSWORD commands by services operators on other services operators. * * This directive is optional, but recommended. */ secureadmins = yes /* * If set, Anope will set the channel modes a user has access to upon identifying, assuming * they are not already set. * * This directive is optional. */ modeonid = yes /* * If set, Anope will set these user modes on any user who identifies. * * This directive is optional. */ #modesonid = "+R" /* * If set, Anope will not show netsplits in the last quit message field * of NickServ's INFO command. */ hidenetsplitquit = yes /* * The default period to force users to stop using a protected nickname after. * * Defaults to 1 minute. */ defaultprotect = 1m /* * The minimum period that a user can have a user forced off their protected nickname after. * * Defaults to 10 seconds. */ minprotect = 10s /* * The maximum period that a user can have a user forced off their protected nickname after. * * Defaults to 10 minutes. */ maxprotect = 10m /* * If set, forbids the registration of nicks that contain an existing * nick with services access. For example, if Tester is a Services Oper, * you can't register NewTester or Tester123 unless you are an IRC * Operator. * * NOTE: If you enable this, you will have to be logged in as an IRC * operator in order to register a Services Root nick when setting up * Anope for the first time. * * This directive is optional. */ #restrictopernicks = yes /* * The username, and possibly hostname, used for fake users created when Anope needs to * hold a nickname. */ enforceruser = "enforcer" enforcerhost = "${services.host}" /* * The length of time Anope should hold nicknames for. * * This directive is optional, but recommended. If not set it defaults to 1 minute. */ releasetimeout = 1m /* * When a user's nick is forcibly changed to enforce nickname protection their new * nick will be based on this value. Any # in the value will be replaced with a random * number. If your IRCd has support for unique identifiers you can also set this to an * empty string to change a user's nick to their unique identifier. * * Make sure this is a valid nick and that it is is not longer than the maximum nick * length on your IRCd. * * This directive is optional. If not set it defaults to "Guest####" */ guestnick = "Guest####" /* * If set, Anope does not allow ownership of nick names, only ownership of accounts. */ nonicknameownership = no /* * The minimum length of passwords * * This directive is optional. If not set it defaults to 10. */ minpasslen = 10 /* * The maximum length of passwords * * This directive is optional. If not set it defaults to 50. */ maxpasslen = 50 /* * Whether all of the secondary nicks of a nick group have to expire or be dropped before the display nick can expire or be dropped. */ preservedisplay = no } /* * Core NickServ commands. * * In Anope modules can provide (multiple) commands, each of which has a unique command name. Once these modules * are loaded you can then configure the commands to be added to any client you like with any name you like. * * Additionally, you may provide a permission name that must be in the opertype of users executing the command. * * Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior. */ /* Command group configuration for NickServ. * * Commands may optionally be placed into groups to make NickServ's HELP output easier to understand. * Remove the following groups to use the old behavior of simply listing all NickServ commands from HELP. */ command_group { name = "nickserv/admin" description = _("Services Operator commands") } /* Give it a help command. */ command { service = "NickServ"; name = "HELP"; command = "generic/help"; } /* * ns_ajoin * * Provides the command nickserv/ajoin. * * Used for configuring channels to join once you identify. */ module { name = "ns_ajoin" /* * The maximum number of channels a user can have on NickServ's AJOIN command. */ ajoinmax = 10 } command { service = "NickServ"; name = "AJOIN"; command = "nickserv/ajoin"; } /* * ns_alist * * Provides the command nickserv/alist. * * Used for viewing what channels you have access to. */ module { name = "ns_alist" } command { service = "NickServ"; name = "ALIST"; command = "nickserv/alist"; } command { service = "NickServ"; name = "ACCESS"; command = "nickserv/alist"; hide = yes; } /* * ns_cert * * Provides the command nickserv/cert. * * Used for configuring your SSL certificate list, which can be used to automatically identify you. */ module { name = "ns_cert" /* * Should users who are connected with a SSL client certificate have its fingerprint be added to * their account when they register. Defaults to yes. */ automatic = yes /* * The maximum number of entries allowed on a nickname's certificate fingerprint list. * The default is 5. This number cannot be set to 0. */ max = 5 } command { service = "NickServ"; name = "CERT"; command = "nickserv/cert"; } /* * ns_drop * * Provides the command nickserv/drop. * * Used for unregistering names. */ module { name = "ns_drop" } command { service = "NickServ"; name = "DROP"; command = "nickserv/drop"; } /* * ns_email * * Provides various functionality relating to email addresses. This includes the * following commands: * * - nickserv/getemail: Used for getting accounts by searching for emails. * - nickserv/set/email, nickserv/saset/email: Used for setting an account's * emailvaddress. */ module { name = "ns_email" /* * The limit to how many registered accounts can use the same email address. * If set to 0 or left commented there will be no limit enforced when * registering new accounts or using /msg NickServ SET EMAIL. */ #maxemails = 1 /* * Whether to attempt to remove aliases when counting email addresses. This * means removing dots (.) and anything after a plus (+) in the user part of * the address, e.g. foo.bar+baz@example.com -> foobar@example.com. */ #remove_aliases = yes } command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"; permission = "nickserv/getemail"; group = "nickserv/admin"; } command { service = "NickServ"; name = "SET EMAIL"; command = "nickserv/set/email"; } command { service = "NickServ"; name = "SASET EMAIL"; command = "nickserv/saset/email"; permission = "nickserv/saset/email"; } /* * ns_group * * Provides the commands nickserv/group, nickserv/glist, and nickserv/ungroup. * * Used for controlling nick groups. */ module { name = "ns_group" /* * The maximum number of nicks allowed in a group. * * This directive is optional, but recommended. If not set or set to 0, no limits will be applied. */ maxaliases = 10 /* * If set, the NickServ GROUP command won't allow any group changes. This is recommended to * prevent users from accidentally dropping their nicks, as it forces users to explicitly * drop their nicks before adding it to another group. * * This directive is optional, but recommended. */ nogroupchange = yes } command { service = "NickServ"; name = "GLIST"; command = "nickserv/glist"; } command { service = "NickServ"; name = "GROUP"; command = "nickserv/group"; } command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup"; } /* * ns_identify * * Provides the command nickserv/identify. * * Used for identifying to accounts. */ module { name = "ns_identify" /* * If set, limits the number of concurrent users that can be logged in as a given account at once. */ maxlogins = 10 } command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide = yes; } command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; } /* * ns_info * * Provides the commands: * nickserv/info. - Used for gathering information about an account. * nickserv/set/hide, nickserv/saset/hide - Used for configuring which options are publicly shown in nickserv/info. * */ module { name = "ns_info" } command { service = "NickServ"; name = "INFO"; command = "nickserv/info"; } command { service = "NickServ"; name = "SET HIDE"; command = "nickserv/set/hide"; } command { service = "NickServ"; name = "SASET HIDE"; command = "nickserv/saset/hide"; permission = "nickserv/saset/hide"; } /* * ns_list * * Provides the commands: * nickserv/list - Used for retrieving and searching the registered account list. * nickserv/set/private, nickserv/saset/private - Used for configuring whether or a users account shows up in nickserv/list. * */ module { name = "ns_list" /* * The maximum number of nicks to be returned for a NickServ LIST command. */ listmax = 50 } command { service = "NickServ"; name = "LIST"; command = "nickserv/list"; } command { service = "NickServ"; name = "SET PRIVATE"; command = "nickserv/set/private"; } command { service = "NickServ"; name = "SASET PRIVATE"; command = "nickserv/saset/private"; permission = "nickserv/saset/private"; } /* * ns_logout * * Provides the command nickserv/logout. * * Used for logging out of your account. */ module { name = "ns_logout" } command { service = "NickServ"; name = "LOGOUT"; command = "nickserv/logout"; } /* * ns_recover * * Provides the command nickserv/recover. * * Used for recovering your nick from services or another user. */ module { name = "ns_recover" /* * If set, Anope will svsnick and svsjoin users who use the recover * command on an identified user to the nick and channels of the recovered user. * * This directive is optional. */ restoreonrecover = yes } command { service = "NickServ"; name = "RECOVER"; command = "nickserv/recover"; } # For compatibility with Anope 1.8 and Atheme. command { service = "NickServ"; name = "GHOST"; command = "nickserv/recover"; hide = yes; } command { service = "NickServ"; name = "RELEASE"; command = "nickserv/recover"; hide = yes; } /* * ns_register * * Provides the commands nickserv/confirm, nickserv/register, and nickserv/resend. * * Used for registering accounts. */ module { name = "ns_register" /* * Registration confirmation setting. Set to "none" for no registration confirmation, * "mail" for email confirmation, and "admin" to have services operators manually confirm * every registration. Set to "disable" to completely disable all registrations. */ registration = "none" /* * The minimum length of time between consecutive uses of NickServ's RESEND command. * * This directive is optional, but recommended. If not set, this restriction will be disabled. */ resenddelay = 90s /* * Prevents users from registering their nick if they are not connected * for at least the given number of seconds. * * This directive is optional. */ nickregdelay = 15s /* * The length of time a user using an unconfirmed account has * before the account will be released for general use again. */ #unconfirmedexpire = 1d } command { service = "NickServ"; name = "CONFIRM"; command = "nickserv/confirm"; } command { service = "NickServ"; name = "REGISTER"; command = "nickserv/register"; } command { service = "NickServ"; name = "RESEND"; command = "nickserv/resend"; } /* * ns_resetpass * * Provides the command nickserv/resetpass. * * Used for resetting passwords by emailing users a temporary one. */ module { name = "ns_resetpass" } command { service = "NickServ"; name = "RESETPASS"; command = "nickserv/resetpass"; } /* * ns_sasl * * Provides support for authentication to services via IRCv3 SASL. This is a standardised * alternative to ns_identify that is supported by several IRCds. * * You will need to configure your IRCd to use SASL. See the following links for details: * * InspIRCd: https://docs.inspircd.org/4/modules/sasl/ * UnrealIRCd: https://www.unrealircd.org/docs/SASL#Enabling_SASL_on_the_server */ module { name = "ns_sasl" /* * The nick of the client which operates as the SASL agent. */ #agent = "NickServ" } /* * ns_set * * Provides the commands: * nickserv/set, nickserv/saset - Dummy help wrappers for the SET and SASET commands. * nickserv/set/autoop, nickserv/saset/autoop - Determines whether or not modes are automatically set users when joining a channel. * nickserv/set/display, nickserv/saset/display - Used for setting a users display name. * nickserv/set/keepmodes, nickserv/saset/keepmodes - Configure whether or not services should retain a user's modes across sessions. * nickserv/set/neverop, nickserv/saset/neverop - Used to configure whether a user can be added to access lists * nickserv/saset/noexpire - Used for configuring noexpire, which prevents nicks from expiring. * nickserv/set/password, nickserv/saset/password - Used for changing a users password. */ module { name = "ns_set" } command { service = "NickServ"; name = "SET"; command = "nickserv/set"; } command { service = "NickServ"; name = "SASET"; command = "nickserv/saset"; permission = "nickserv/saset/"; group = "nickserv/admin"; } command { service = "NickServ"; name = "SET AUTOOP"; command = "nickserv/set/autoop"; } command { service = "NickServ"; name = "SASET AUTOOP"; command = "nickserv/saset/autoop"; permission = "nickserv/saset/autoop"; } command { service = "NickServ"; name = "SET DISPLAY"; command = "nickserv/set/display"; } command { service = "NickServ"; name = "SASET DISPLAY"; command = "nickserv/saset/display"; permission = "nickserv/saset/display"; } command { service = "NickServ"; name = "SET PASSWORD"; command = "nickserv/set/password"; } command { service = "NickServ"; name = "SASET PASSWORD"; command = "nickserv/saset/password"; permission = "nickserv/saset/password"; } command { service = "NickServ"; name = "SET NEVEROP"; command = "nickserv/set/neverop"; } command { service = "NickServ"; name = "SASET NEVEROP"; command = "nickserv/saset/neverop"; permission = "nickserv/saset/neverop"; } command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/saset/noexpire"; permission = "nickserv/saset/noexpire"; } /* * ns_set_keepmodes * * Provides the command nickserv/set/keepmodes and nickserv/saset/keepmodes. * * Allows configuring services to keep user modes across logins. */ module { name = "ns_set_keepmodes" /* * Anope will try to not restore user modes that aren't settable by users. However, if * you have modes that you don't want to be automatically restored you can list them * here. */ #norestore = "ABCabc" } command { service = "NickServ"; name = "SET KEEPMODES"; command = "nickserv/set/keepmodes"; } command { service = "NickServ"; name = "SASET KEEPMODES"; command = "nickserv/saset/keepmodes"; permission = "nickserv/saset/keepmodes"; } /* * ns_set_language * * Provides the command nickserv/set/language and nickserv/saset/language. * * Allows configuring the language that services uses. */ module { name = "ns_set_language" } command { service = "NickServ"; name = "SET LANGUAGE"; command = "nickserv/set/language"; } command { service = "NickServ"; name = "SASET LANGUAGE"; command = "nickserv/saset/language"; permission = "nickserv/saset/language"; } /* * ns_set_message * * Provides the commands nickserv/set/message and nickserv/saset/message. * * Allows users to let services send them PRIVMSGs instead of NOTICEs. * * This might cause problems with badly written clients as the IRC RFC * requires that automatic responses to a PRIVMSG use a NOTICE to avoid * message loops. Only enable this if you are sure this can not happen. */ #module { name = "ns_set_message" } #command { service = "NickServ"; name = "SET MESSAGE"; command = "nickserv/set/message"; } #command { service = "NickServ"; name = "SASET MESSAGE"; command = "nickserv/saset/message"; permission = "nickserv/saset/message"; } /* * ns_set_misc * * Provides the command nickserv/set/misc. * * Allows you to create arbitrary commands to set data, and have that data show up in nickserv/info. * A field named misc_description may be given for use with help output. */ module { name = "ns_set_misc" } command { service = "NickServ"; name = "SET URL"; command = "nickserv/set/misc"; misc_description = _("Associate a URL with your account"); } command { service = "NickServ"; name = "SASET URL"; command = "nickserv/saset/misc"; misc_description = _("Associate a URL with this account"); permission = "nickserv/saset/url"; group = "nickserv/admin"; } #command { service = "NickServ"; name = "SET DISCORD"; command = "nickserv/set/misc"; misc_description = _("Associate a Discord account with your account"); } #command { service = "NickServ"; name = "SASET DISCORD"; command = "nickserv/saset/misc"; misc_description = _("Associate a Discord account with this account"); permission = "nickserv/saset/discord"; group = "nickserv/admin"; } #command { service = "NickServ"; name = "SET MASTODON"; command = "nickserv/set/misc"; misc_description = _("Associate a Mastodon account with your account"); } #command { service = "NickServ"; name = "SASET MASTODON"; command = "nickserv/saset/misc"; misc_description = _("Associate a Mastodon account with this account"); permission = "nickserv/saset/mastodon"; group = "nickserv/admin"; } #command { service = "NickServ"; name = "SET TIMEZONE"; command = "nickserv/set/misc"; misc_description = _("Associate a time zone with your account"); } #command { service = "NickServ"; name = "SASET TIMEZONE"; command = "nickserv/saset/misc"; misc_description = _("Associate a time zone with this account"); permission = "nickserv/saset/timezone"; group = "nickserv/admin"; } /* * ns_set_protect * * Provides the commands nickserv/set/protect and kickserv/saset/protect. * * Used for configuring nickname protection. */ module { name = "ns_set_protect" } command { service = "NickServ"; name = "SET PROTECT"; command = "nickserv/set/protect"; } command { service = "NickServ"; name = "SASET PROTECT"; command = "nickserv/saset/protect"; permission = "nickserv/saset/kill"; } # For compatibility with Anope 2.0. command { service = "NickServ"; name = "SET KILL"; command = "nickserv/set/protect"; hide = yes; } command { service = "NickServ"; name = "SASET KILL"; command = "nickserv/saset/protect"; permission = "nickserv/saset/protect"; hide = yes; } /* * ns_suspend * * Provides the commands nickserv/suspend and nickserv/unsuspend. * * Used to suspend and unsuspend nicknames. Suspended nicknames can not be used but their settings are preserved. */ module { name = "ns_suspend" /* * The length of time before a suspended nick becomes unsuspended. * * This directive is optional. If not set, the default is never. */ #suspendexpire = 90d /* * Settings to show to non-opers in NickServ's INFO output. * Comment to completely disable showing any information about * suspended nicknames to non-opers. */ show = "suspended, by, reason, on, expires" } command { service = "NickServ"; name = "SUSPEND"; command = "nickserv/suspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; } command { service = "NickServ"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; } /* * ns_update * * Provides the command nickserv/update. * * Used to update your status on all channels, turn on your vhost, etc. */ module { name = "ns_update" } command { service = "NickServ"; name = "UPDATE"; command = "nickserv/update"; }