# RageIRCd v2.0 (bluemoon): Server Configuration File Reference # ------------------------------------------------------------- # # $Id: reference.conf.txt,v 1.26.2.2 2005/03/18 20:49:36 amcwilliam Exp $ # (C) 2000-2005 the RageIRCd Development Team, all rights reserved. # # This document is up to date as of RageIRCd v2.0 beta-6. # Inspired by reference.conf in bahamut-1.8.2. # # RageIRCd v2.0 server configuration files consist of blocks, each # containing name-value pairs. It is designed to be easily readable by # both human and ircd. # # A block consists of a block-name, an optional beginning block-variable, # an opening '{' brace, statements, a closing '}' brace, and a ';' # semicolon. # # A statement consists of a variable name, followed by the variable # parameter, and ends with a semicolon. Parameters consist of: # o) Boolean values: on/yes/true/1 OR off/no/false/0 # o) Strings: special characters or whitespace can be surrounded by # '"' double quotes; escaping is also supported # o) Numerical values # o) Times: seconds, or *d*h*m*s (day, hr, min, sec) # o) Sizes: bytes, *k, *m, or *g (kb, mb, gb) # o) A comma-separated list of tokens or flags # # All elements of the configuration are separated by whitespace, and can # be packed on one line, or broken up over several lines. Some blocks may # also a require a parameter between the block-name and opening brace. # # A sample block: # block { # name value; # Single-value statement # name "some other value"; # String parameter # name 123; # Numerical parameter # name 1d12h30m; # 1 day, 12 hrs, 30 mins # name 500k; # 500 kb # name token1,token2,token3; # Token list # }; # # The configuration parser also understands the following special # include directive outside of a block context: # # include filename.conf; # # All data within a config file will be parsed, unless commented. Comments # are supported in the following three forms. /* C style multi-line */ # Shell style single-line // C++ style single-line ############################################################################### # ServInfo [MANDATORY] # This block defines the information about your server. # servinfo { # Required variables name irc.local; # Server name description "Located on Earth"; # Short description identity 1; # Unique server identitiy ssl_certificate cert.pem; # SSL certificate to use ssl_private_key key.pem; # SSL private key to use # Optional variables default_bind_ip 127.0.0.1; # Default bind IP when connecting hub no; # Run as a hub server max_clients 1000; # Max sockets allowed on the server kline_address admin@irc.local; # Contact re. server-based bans logs default,error; # What information should be logged }; # # The name variable must include at least one '.' dot, and cannot be # changed through a rehash. The server description can be changed by # rehash, but will not update across the network unless your server is # relinked to the network. # # The identity variable should be a numerical value, ranging from 1 to # 4096 inclusive. This identity is used to uniquely identify your server # across a network on a protocol-level. Standalone servers can ignore this. # # The ssl_certificate and ssl_private_key variables are required if you # have compiled with SSL support, and must specify valid files. # # The logs variable is a comma-separated list of all details that should # be logged by the server. Acceptable flags are: # o) default: log all misc. information # o) error: log all server errors # o) kill: log all KILL information # o) client: log all client (dis)connections # o) server: log all server (dis)connections # o) oper: log all OPER attempts # o) override: log all SAJOIN, SAKICK, SAMODE commands ############################################################################### ############################################################################### # Admin [RECOMMENDED] # This block is used to specify the server administrative information. # admin { # Optional variables name "KingD"; # Administrator name description "The Big Cheese"; # Short administrative description email "joe.bloggs@irc.local"; # How to contact administrator }; # # Any combination of the above variables can be used. ############################################################################### ############################################################################### # Class [RECOMMENDED] # This block specifies the connection classes to be used by Allow, Oper # and Link blocks. Note the class name in the block-start. # class users { # Required variables # Class name specified in block-start. ping_time 2m; # Idle connection PING frequency sendq_length 100k; # Send queue/buffer limit max_clients 1000; # Max. clients allowed in this class }; # # The ping_time variable specifies how long to wait before sending a PING # request to an idle connection. # # The sendq_length variable specifies the size of the internal send # queue/buffer, used when a connection cannot accept large amounts of data # at once. If the send queue length is exceeded, the connection is dropped. # # The max_clients variable sets how many clients can be associated with # this class via allow blocks. If this limit is reached, further # connections will be rejected. # # A "default" class is also setup during server initialisation, and is # setup with default values from include/config.h. Unknown class # references in Allow, Oper and Link blocks will use this default class. ############################################################################### ############################################################################### # Allow [REQUIRED] # This block provides information on who and what has authorisation to # connect to the server, and what class they belong to. # allow { # Required variables hostname *; # Hostname to accept ip *; # IP address to accept class users; # Class to put connection in # Optional variables auth { string "password"; # Password required to connect type plaintext; # Password encryption type }; redir_serv alternate.server; # Alternate server to use redir_port 6667; # Alternate port to use port 7000; # Only allow on port 7000 spoof_mask i.just@love.spoofing; # [user@]host to spoof to no_tilde no; # No tilde '~' on username need_identd no; # Require identd to connect kline_exempt no; # Exempt from k-line checks? throttle_exempt no; # Exempt from connect throttling }; # # The hostname and ip variables specify the hostname and/or ip address to # allow connection. If a user@host or user@ip is specified, the clients' # username will also be checked. # # The class variable specifies the class in which to put the connection. # If no class is specified, the "default" class will be used. # # The auth section allows you to password-protect this allow block. In # order to be authorised by this allow block, a connecting client must # specify the correct password on connect. See doc/auth.txt for password # encryption details. # # The redir_serv and redir_port variables specify the server and port to # redirect a client to, should their connection class be full. Both # variables must be specified for this feature to work. # # The port variable allows you to set a specific port to allow users to # connect on. If this port does not match the users port on connect, the # block is skipped. # # The spoofed_mask variable allows you to spoof either the user@host or # just the host of all clients matched on this allow block. This is # free-form, limited only to USERLEN and HOSTLEN as appropriate. The IP # address of spoofed users will also be hidden if HIDE_SPOOFED_IPS is # defined in include/config.h at compile time. # # The no_tilde variable specifies whether or not the tilde '~' character # should be prefixed to the username for clients without an identd. # # The need_identd variable specifies whether connecting users are required # to have identd installed. This is checked after allow matching, and the # client is rejected during registration. # # The kline_exempt variable sets whether or not clients using this allow # block are exempt from k-lines/autokills/zaps. This does not apply to # wild-user zaps, as they are checked as soon as a connection is established. # # The throttle_exempt variable defines whether or not users connecting to # ircd via this allow block are exempt from connection throttling. This # will completely remove the users' IP address from the throttle cache. ############################################################################### ############################################################################### # Oper [RECOMMENDED] # This block defines your server operators, needed for privileges allowing # you to maintain your server. Note the oper name in the block-start. # # # The auth section specifies the password that must be used in order to # use this oper block. See doc/auth.txt for password encryption details. # # The from variable specifies the client userhost required in order to use # the oper block. Hostnames with an user@ portion will cause usernames to # be matched against too. Up to 15 from variables can be used in any one # oper block. # # The join_on_oper variable, if specified, will force all users who use # the oper block into the specified channels. Multiple channels can be # specified by using a comma-separated list. # # The no_recvq_throttle variable allows all clients using this oper block # to set user mode +F, which will skip the 2 second throttle check on all # data sent to the server. # # The can_perform variable is a comma-separated list of tasks that can be # performed if using this oper block. Acceptable flags are: # o) rehash: can /REHASH # o) die: can /DIE # o) restart: can /RESTART # o) kline: can /KLINE # o) unkline: can /UNKLINE # o) local_routing: can /CONNECT locally # o) global_routing: can /CONNECT remotely # o) local_kills: can /KILL local clients # o) global_kills: can /KILL remote clients # o) local_notices: can /NOTICE all local clients # o) global_notices: can /NOTICE all network clients # # The can_see variable is a comma-separated list of all information that # can be seen as a result of using this oper block. Acceptable flags are: # o) routing: can see server routing notices (and server IPs) # o) floods: can see flood warning notices # o) local_cliconn: can see local client connections (user mode +c) # o) global_cliconn: can see global client connections (user mode +G) ############################################################################### ############################################################################### # Super [OPTIONAL] # This block defines all "super" ("U-lined") servers. # super { # Required variables server "services.irc.local"; server "stats.irc.local"; }; # # The server variable specifies the server name to be setup as a super # server. Any clients connecting from these servers (i.e. ChanServ) will # be considered super clients, and will be allowed to perform network # tasks without direct privilege (i.e. channel ops). ############################################################################### ############################################################################### # Link [OPTIONAL] # This block is used to define server-to-server links. Note the server # name in the block-start. # link irc.server.com { # Required variables # Server nams specified in block-start auth { string "password"; # Password required to link type plaintext; # Password encryption type }; host *; # Hostname or IP allowed to connect port 7000; # Port on which to establish connection on class servers; # Class to put the server connection in # Optional variables bind_ip 192.168.0.1; # IP address to bind to when connecting auto_connect yes; # Should we automatically connect? compressed yes; # Should output to the server be zipped? encrypted no; # Should traffic be encrypted? }; # # The host variable specifies the IP address from which the server will be # connecting. This can be a resolved hostname if the forward and reverse # DNS match. # # The port variable specifies what port we should connect to the server # on. Only taken into account if your server is initiating the server # link. # # The auth section specifies the password that the other server must # specify in order to successfully link. See doc/auth.txt for password # encryption details. # # The bind_ip variable is used to define an alternate IP address to use # when opening a connection to a new server. This variable will override # the default_bind_ip variable in the servinfo block. Only applicable when # your server is initiating the server link. # # If the auto_connect variable is enabled, your server will automatically # attempt to relink to the server in the event of a netsplit. This is done # at a frequency specified in the general block. # # The compressed variable defines whether or not the traffic to the link # from your server should be compressed (zipped). # # The encrypted variable defines whether or not traffic to and from the # link should be encrypted. This uses RC4 streaming encryption with a # 1024-bit DH key exchange. Both your server and the remote server must # have this variable enabled in order to successfully establish an # encrypted link. Only available on servers compiled with SSL support. ############################################################################### ############################################################################### # Listen [REQUIRED] # This block defines what IP and ports your server will accept connections on. # Note the IP address in the block-start. # listen 192.168.0.1 { # Required variables # IP address specified in block-start port 7000 { # Listen on port 7000 # Optional variables server_only yes; # Only accept servers on this port }; port 7001; # Listen on port 7001 range 8000-8010; # Listen on ports 8000-8010 range 6660-6669 { # Listen on ports 6660 to 6669 # Optional variables client_only yes; # Only accept clients on these ports }; port 6697 { # Listen on port 6697 # Optional variables secure yes; # Listen for client SSL connections client_only yes; # Only accept clients on this port }; }; # # A listen block should be specified for each IP address you want to bind # to. The IP address should be specified in the block-start. # # Listen blocks contain two variables. The port variable allows you to # specify a single port to listen on. The range variable allows you to # specify a range of ports to listen on. All ports must range from 1 to # 65535 inclusive. # # These variables can also be expanded as sections to include optional # variables, specific to the port or range in question. # # The secure variable specifies whether or not to accept client SSL # connections. Client SSL ports are for secure clients, and cannot accept # non-SSL clients. Encrypted server connections do not require a secure port. # # The client_only and server_only variables, if enabled, will accept only # client or server connections on this port or range, respectively. ############################################################################### ############################################################################### # Restrict [OPTIONAL] # This block specifies what nickname, gcos, channel and file transfer # restrictions are in place on your server. Note the restriction type in # the block-start. # restrict nick { # Required variables # Restriction type specified in block-start mask "ChanServ"; # Mask to restrict # Optional variables reason "Reserved for services"; # Reason for restriction }; # # The restriction type should be specified in the block-start, and can be # either nick, gcos, chan or file to restrict either nicknames, real # names, channels or file transfers, respectively. # # The mask variable defines the nick, gcos, chan or file to restrict. ############################################################################### ############################################################################### # Kill [OPTIONAL] # This block is used to specify client connections that should be # rejected, based on their username, hostname and IP address. Syntax is # identical to restrict blocks, accept no type should be specified in the # block-start. # kill { # Required variables mask *@192.168.0.0/16; # Mask to disallow # Optional variables reason "Local clients are not permitted."; # Reason for kill }; # # Kill blocks are very flexible as a general client ban mechanism. The # mask variable can take a number of forms. Namely, hostname, wildcard # hostname, IP address, wildcard IP address, CIDR mask. Additionally, the # mask can be prefixed with a user@ portion to disallow only specific # usernames. # # IP address and CIDR bans without usernames are the most powerful form of # ban, as they are checked as soon as a connection is established. The # check is performed before any data can be transmitted, and before any # memory has been allocated to the connection. # # IP address and CIDR bans with specific usernames are less powerful, as # they cannot be checked against until a client connection has begun # registration. This is because the identd response and client username # are required. # # Finally, host-based bans are checked during client registration when a # DNS response is received. ############################################################################### ############################################################################### # Modules [REQUIRED] # This block is used to define what modules should be loaded when the # server is started. This block is only required on servers compiled with # dynamic module support. Not available on Windows builds. # modules { # Optional variables file custom.so; # Load this specific .so file path path/to/modules; # Load all .so files in this path }; # # The file variable allows you to define a specific module to load. # # The path variable allows you to define a directory to load modules from. # # It is important to remember how to order your module loading. Single # files are loaded first, and any specified paths are loaded second. # # It is also worth mentioning that these only define where to look for # modules. On a rehash, the internal lists are updated, but the modules # are not reloaded. You must perform an additional /rehash modules (or # execute ircd with the -m switch) to reload modules. # # Any number of these variables may be specified. ############################################################################### ############################################################################### # Network [RECOMMENDED] # This block allows you to configure network-specific variables. # network { # Required variables name "MyNet"; # Name of your IRC network kline_address "kline@my.net"; # Contact address for network bans max_link_depth 5; # Max. link hops # Optional variables services_server "services.my.net"; # Services server name stats_server "stats.my.net"; # Statistics server name }; # # The max_link_depth variable controls how many hops are permitted across # remote links. For example a max link depth of 2 would only permit for # remote links connected to your servers uplink. If there were servers # connected to a server connected to your servers uplink, your link # would be cancelled. # # The services_server and stats_server variables define your Services' and # Statistical server names for use in the Services' aliases, providing a # reliable method for direct communication with the likes of ChanServ and # NickServ. If undefined, Services' aliases will be disabled. ############################################################################### ############################################################################### # Masking [MANDATORY] # This block configures user host masking. # masking { # Required variables mask_key1 012000; # Masking algorithm key 1 mask_key2 013000; # Masking algorithm key 2 mask_key3 014000; # Masking algorithm key 3 # Optional variables netadmin_mask "netadmin.my.net"; # Network admin masked host admin_mask "admin.my.net"; # Admin masked host oper_mask "oper.my.net"; # Oper masked host user_mask_prefix "my"; # User masked host prefix }; # The mask_key1, mask_key2 and mask_key3 variables are used to keep your # user masked host hashes more secure. Using these three keys, each users # host name is processed and a unique 32-bit hash is created. To help keep # things secure, these keys must be set to unique numerical values, all # above 10000. They must be set for your server to start, and should be # unique across your entire network for user masked hosts to be synchronised. ############################################################################### ############################################################################### # Flood [MANDATORY] # This block allows you to configure flood-specific variables. # flood { # Required variables user_recvq_limit 2k; # How much user data to accept before flood # Optional variables knock_delay 2m; # Frequency of channel /KNOCKs allowed accept_notice_time 5m; # Frequency of "Nick is msging you" notice antispam_quit_msg_time 2m; # Minimum time online for custom quits pace_wait_simple 1s; # Min. time between using simple commands pace_wait_intense 5s; # Min. time between using intense commands max_connect_count 3; # Throttle connection limit min_connect_time 15s; # Throttle connection time throttle_rejected_clients no; # Force-throttle rejected clients anti_nick_flood yes; # Enable anti-nick change flood protection anti_away_flood yes; # Enable anti-away flood protection min_join_part_time 1m; # Min. spambot join/part time max_join_part_count 15; # Max. spambot join/part count spambot_squelch_time 3m; # How long to squelch spambots for increase_oper_recvq no; # Double recvQ limit for opers? }; # # The user_recvq_limit variable determines the amount of unprocessed data # a user may send to the server before their connection is dropped for # flooding. This variable must be above 512 bytes, or the default will be # used. # # The knock_delay variable determines the minimum amount of time between # knock requests on a channel. # # The accept_notice_time variable determines the minimum amount of time # between users in private mode are informed of blocked message attempts # to them. # # The antispam_quit_msg_time variable defines the minimum amount of time a # client must spend connected to the server before they are allowed a # custom quit message. If they quit before the defined time, their message # is replaced with "Client Quit". # # The pace_wait_simple and pace_wait_intense variables define the minimum # amount of time a user must give before performing multiple calls to # functions. The former variable applies to simple functions (admin, # dalinfo, info, rules, stats, version, whois) and the latter variable # applies to more CPU intensive commands (links, lusers, map, motd, stats, # trace, whowas). # # The max_connect_count and min_connect_time variables configure the # connection throttle. The server will limit each IP address to a maximum # of max_connect_count connections within min_connect_time seconds before # a throttle is placed on their connection. These variables are only # recognised on servers compiled with throttle support. # # The throttle_rejected_clients variable, if defined, will force a # throttle on clients that have been previously rejected (i.e. k-lined) # from the server. This variable is only recognised on servers compiled # with throttle support. # # The min_join_part_time and max_join_part_count variables act like as a # throttle for JOIN/PART flooding, a sign of a possible spambot. If a # client joins max_join_part_count channels in a row, but spends less than # min_join_part_time on each, the client is marked as a spambot. # # The spambot_squelch_time variable defines how long to squelch a possible # spambot for. This means all PRIVMSG, NOTICE and JOIN commands are # ignored by the server until spambot_squelch_time has elapsed. Setting to # 0 will disable spambot squelching. # # The increase_oper_recvq variable, if enabled, will double the value of the # user_recvq_limit variable for operators. ############################################################################### ############################################################################### # General [RECOMMENDED] # This block allows you to configure general server-specific variables. # general { # Required variables max_chans_per_user 10; # Max. concurrent channels per user connauth_timeout 15s; # ConnectAuth timeout value compression_level 5; # Server-server compression level ts_delta_warn 30s; # Min. TS delta before sending a warning ts_delta_max 2m; # Max. TS delta before dropping link max_bans 45; # Maximum bans, excepts and invex' (per list) max_watch 128; # Maximum watch entries per user max_kills 20; # Maximum number of targets per /KILL max_targets 10; # Maximum number of targets per PRIVMSG/NOTICE # Optional variables statsfile_save_freq 15s; # How frequently to write ircd.stats modes_on_connect x; # Usermodes to set on connect join_on_connect "#Lobby"; # Channels to force-join on connect auto_connect_freq 10m; # Frequency of server auto-connects max_accept 10; # Max /ACCEPTs per user max_dccallow 5; # Max /DCCALLOWs per user max_who_replies 200; # Max replies allowed per /WHO default_kline_time 15m; # Default /KLINE time short_motd yes; # Show short motd on connect hide_super_servers yes; # Hide super servers from users check_identd yes; # Check identd during connect resolve_hostnames yes; # Resolve DNS during connect show_headers yes; # Show ConnectAuth headers failed_oper_notice yes; # Alert on failed oper attempts custom_channels yes; # Allow users to create new channels enable_knock yes; # Enable knock command custom_quit_msgs yes; # Allow custom quit messages show_cliconn_quit_msgs no; # Show quit messages in client notices show_invisible_lusers no; # Show invisible users in lusers flatten_links no; # Flatten links output enable_map yes; # Enable map command spy_notices yes; # Enable spy notices no_oper_accept no; # Don't block oper msgs when +p enable_netadmins yes; # Enable network admins (+N) restrict_chan_override yes; # Limit oper channel overrides allow_fake_channels no; # Allow fake channel names ignore_remote_motd no; # Ignore remote /MOTD ignore_remote_rules no; # Ignore remote /RULES ignore_remote_stats no; # Ignore remote /STATS no_mixed_versions yes; # No mixed server versions }; # The max_chans_per_user variable is used to limit the number of channels # a single user may be a member of. This does not affect opers. # # The connauth_timeout variable is used to control how long the ircd will # keep a ConnectAuth session active before closing any active identd and # DNS checks, and release the client for connection. # # The compression_level variable is used to control how much server-server # traffic is compressed. This should be a numerical value from 1-9 # inclusive. 1 being lowest and fastest compression, 9 being highest but # slowest compression. # # The ts_delta_warn and ts_delta_max variables are used to specify # acceptable differences between the time on two servers when linking. The # former variable denotes the maximum time delta between two servers # before a TS warning is sent out. The latter variable denotes the maximum # time delta between two servers before the link is terminated. # # The max_bans variable defines how many bans, excepts of invex' may be on # a single channel list. This variable is required, and the default will # be used should it be set to an inproper value (i.e. below 10). # # The max_watch variable defines how many entries may be on a single users # WATCH list. This value must be set to a number greater or equal to 10, # or the default will be used. # # The max_kills variable defines the maximum number of targets that can be # specified in a single /KILL command. Must be greater than or equal to 1, # otherwise the default value will be used. # # The max_targets variable defines the maximum number of targets that can # be specified in a single PRIVMSG or NOTICE command. This excludes # duplicate targets, and is limited to a hard target limit defined # internally. (HARD_TARGET_LIMIT is 64 by default.) Must be at least 1, or # the default will be used. # # The auto_connect_freq variable is used to set the frequency at which # server auto connects are checked for. See the link::auto_connect variable. # # The max_accept variable is used to define how many users a single client # may have on his or her accept list. A max_accept of 0 means unlimited. # # The max_dccallow variable defines how many users a single client may # have on his or her dcc allow list. A max_dccallow of 0 means unlimited. # # The max_who_replies variable defines how many replies should be shown as # a result of a single /WHO command. (Useful for large networks.) This # limit does not apply to operators, and can be set to 0 for unlimited # replies. # # The default_kline_time variable is used to set the expiration time for # temporary k-lines added via the /KLINE command. If set to 0, k-lines # with no specified time will be written to ircd.conf. If non-zero value # is below 1 minute, the default value shall be used. # # The show_cliconn_quit_msgs variable defines whether or not client quit # messages are shown in the client connection notices. If disabled, the # message "Client Quit" will be shown, unless the user had a socket error, # or was banned from the server. # # The flatten_links variable will cause links output to be a flat list of # servers, rather than a structured topology layout. This will hide network # routing information from users. At present time, this variable will # disable the map command too. # # The no_oper_accept variable defines whether or not private messages from # opers are delivered to users in privacy mode. # # The restrict_chan_override variable defines how much restriction opers # have on channels. Under normal circumstances, opers can talk through # bans that may affect them, or any other channel restrictions such as +m, # etc. If defined, this variable will remove that override. # # The allow_fake_channels variable sets whether or not the server is to # accept channel names with bold, mirc colour, reverse, underline and hard # space in. (ASCII 2, 3, 22, 31, 160.) # # The ignore_remote_motd, ignore_remote_rules and ignore_remote_stats variables # define whether to ignore /MOTD, /RULES and /STATS commands from remote # clients, respectively. # # The no_mixed_versions variable, if enabled, will reject direct server # links that are running a different version of ircd. This will not affect # links running different point-releases of the same version (i.e. 2.0.0 # and 2.0.1). ############################################################################### # End of Document.