# doc/example.conf - ratbox-services example configuration file
# Copyright (C) 2003-2004 Lee Hardy
# Copyright (C) 2003-2004 ircd-ratbox development team
#
# $Id: example.conf,v 1.47 2005/06/06 11:46:10 leeh Exp $

/* serverinfo: contains services information */
serverinfo {
        /* name: the name of our services */
        name = "ratbox.services";

        /* description: the description of our services */
        description = "ratbox services";

        /* vhost: default vhost to use for connections */
        # vhost = "127.0.0.1";

	/* dcc vhost: default vhost to use for dcc connections.
	 * this must be set for /ctcp <service> chat to work.
	 */
	dcc_vhost = "192.168.4.2";

	/* dcc ports: specifies the portrange to use for inbound
	 * chat requests.
	 */
	dcc_low_port = 3000;
	dcc_high_port = 5000;

	/* reconnect time: time duration between reconnections to
	 * our uplinks.
	 */
	reconnect_time = 5 minutes;

	/* ping time: time duration to send PINGs after no data */
	ping_time = 5 minutes;

	/* ratbox: pure ircd-ratbox/hyb7 network */
	ratbox = yes;

	/* client flood settings: control how many commands an individual
	 * user may issue in the given time.  The limits work on a penalty
	 * points system, with between 1-3 points per command.  HELP has 
	 * a penalty of 2.
	 */
	/* client flood max: the maximum score a client may have before we
	 * stop parsing commands from them.
	 */
	client_flood_max = 20;

	/* client flood max ignore: the score at which we start ignoring a
	 * client.
	 */
	client_flood_max_ignore = 30;

	/* client flood ignore time: the duration for which we ignore a 
	 * client.
	 */
	client_flood_ignore_time = 5 minutes;

	/* client flood time: the length of time to keep the clients current
	 * flooding score for.
	 */
	client_flood_time = 1 minute;
};

/* admin: contains general admin information */
admin {
        name = "admin";
        description = "ratbox services";
        email = "<admin@services>";
};

/* connect: specifies a server to connect to, name of uplink
 *          is specified in quotation marks
 */
connect "irc.uplink.com" {
        /* host: the host to connect to */
        host = "10.0.0.1";

        /* vhost: optional vhost to use for this connection */
        # vhost = "10.0.0.2";

        /* password: the password to use */
        password = "fooble";

        /* port: the port to connect on */
        port = 5555;

	/* autoconn: auto connect to this server.  default yes */
	# autoconn = no;
};

/* operator: specifies an oper who has extended access to services.
 *           The username is specified in quotation marks.
 */
operator "leeh" {
        /* user: specifies a user@host who may connect.
	 * multiple may be specified, wildcards are accepted.
         */
        user = "flame@127.0.0.1";

	/* you may also restrict the oper to a specific server, they will
	 * then only be able to connect when using that server.
	 */
	#user = "flame@127.0.0.1", "irc.ircd-ratbox.org";

        /* password: the password to login */
        password = "meep";

        /* encrypted: specifies whether the above password has been
         * encrypted or not.  default: yes
         */
        #encrypted = no;

	/* flags: specifies what general privs an oper has
	 *   admin       - services admin, .die etc
	 *   dcc         - ability to dcc
	 *   route       - ability to route services to uplinks
	 */
	flags = admin, dcc, route;

	/* userserv flags:
	 *   admin	- all of the below
	 *   register	- access to register any username
	 *   suspend	- access to (un)suspend users
	 *   drop	- access to drop usernames
	 *   setpass	- access to reset passwords on accounts
	 *   oper	- all of the below
	 *   list	- access to list registered users
	 *   info	- access to extended username info
	 */
	userserv = admin;

	/* chanserv flags:
	 *   admin	- all of the below
	 *   register	- access to register any channel to any user
	 *   suspend	- access to (un)suspend channels
	 *   drop	- access to drop channel registrations
	 *   oper	- all of the below
	 *   list	- access to list registered chans
	 *   info	- access to extended channel info
	 */
	chanserv = admin;

	/* nickserv flags:
	 *  drop	- access to drop nickname registrations
	 */
	nickserv = drop;

	/* operserv flags:
	 *  admin	- all of the below
	 *  channel	- access to control the channels operserv is in
	 *  takeover	- access to OPERSERV::TAKEOVER
	 *  omode	- access to OPERSERV::OMODE
	 */
	operserv = admin;

	/* operbot flags:
	 *   channel	- access to control the channels operbot is in
	 */
	operbot = channel;

	/* global flags:
	 *   netmsg	- access to GLOBAL::NETMSG
	 */
	global = netmsg;

	/* jupeserv flags:
	 *   jupe	- access to (un)jupe
	 */
	jupeserv = jupe;

	/* banserv flags:
	 *   kline	- access to set klines
	 *   xline	- access to set xlines
	 *   resv	- access to set resvs
	 *   perm	- access to set permanent bans
	 *   remove	- access to remove other opers bans
	 *   sync       - access to sync bans to a given server  Opers 
	 *		  can always sync bans to their own server.
	 */
	banserv = kline, xline, resv, perm, remove, sync;
};

/* userserv - provides facilities to users for the registration of
 * usernames.  Required for channel registration.
 */
service "userserv" {
	/* nick: specify the nick of the service */
	nick = "USERSERV";

	/* username: specify the username of the service */
	username = "user";

	/* host: specify the host of the service */
	host = "services.int";

	/* realname: the real name field of the service */
	realname = "user registration service";

	/* flags: specifies options for this service
	 *   opered     - this service is opered
	 *   msg_self   - messages from this service come from its nickname,
	 *                rather than our servername
	 *   disabled   - this service is disabled
	 *   short_help - send an simple list of commands, rather than an
	 *                index containing brief documentation of each command
	 *   stealth    - service ignores any messages from normal users
	 *   		  who havent issued OLOGIN.  OLOGIN itself will 
	 *                always be accepted.  ircops are exempt.
	 *   login_help - requires normal users are logged in before HELP
	 *                can be used
	 *   wallop_adm - send server wallops when admin commands are used
	 *                jupeserv sends wallops even without this
	 */
	flags = opered, msg_self;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 *   2 - REGISTER
	 *   3 - SET
	 *   4 - 
	 *   5 - LOGIN
	 */
	loglevel = 5;

	/* disable register: disables USERSERV::REGISTER for users */
	#disable_register = yes;

	/* register url: optional url to point users towards when
	 * disable_register is set above.
	 */
	#register_url = "http://whatever/";

	/* register limits: amount of user registrations to allow overall
	 * from all clients, in the given time
	 */
	register_time = 1 minute;
	register_amount = 5;

	/* host register limits: amount of user registrations to allow from
	 * a specific host, in the given time
	 */
	host_register_time = 1 day;
	host_register_amount = 2;

	/* register email: require an email address to register a username */
	register_email = no;

	/* expire time: the duration a username may be unused before expiry */
	expire_time = 4 weeks;

	/* allow set password: allow users to change their password */
	allow_set_password = yes;

	/* allow set email: allow users to change their email addy */
	allow_set_email = yes;

	/* max logins: maximum amount of clients who may be logged into a
	 * single username
	 */
	max_logins = 5;
};

/* chanserv - provides facilities for the registration of channels. */
service "chanserv" {
	nick = "CHANSERV";
	username = "chan";
	host = "services.int";
	realname = "channel registration service";
	flags = opered, login_help;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 *   2 - REGISTER
	 *   3 - LISTUSERS, LISTBANS
	 *   4 - CLEARMODES, CLEAROPS, CLEARALLOPS, CLEARBANS
	 *   5 - ADDUSER, DELUSER, MODUSER
	 *   6 - Everything.
	 */
	loglevel = 3;

	/* disable register: disables CHANSERV::REGISTER for users */
	#disable_register = yes;

	/* register limits: amount of user registrations to allow overall
	 * from all clients, in the given time
	 */
	register_time = 1 minute;
	register_amount = 5;

	/* host register limits: amount of user registrations to allow from
	 * a specific host, in the given time
	 */
	host_register_time = 1 day;
	host_register_amount = 4;

	/* expire time: the duration a channel may be unused before expiry */
	expire_time = 4 weeks;

	/* max bans: maximum amount of bans a channel may have */
	max_bans = 50;

	/* expireban frequency: how often to run the expiry of channel
	 * bans.  It is advised this is not set lower than 5 minutes, as the
	 * expiry code is quite cpu intensive.  This value is also only
	 * used on startup and is not changed on rehash.
	 */
	expireban_frequency = 15 minutes;

	/* enforcetopic frequency: how often to reset topics on channels to
	 * that stored within chanserv.
	 */
	enforcetopic_frequency = 1 hour;
};

/* nickserv - provides nickname registration.  These require a username
 * registration.
 */
service "nickserv" {
	nick = "NICKSERV";
	username = "nick";
	host = "services.int";
	realname = "nickname services";

	/* disabled by default */
	flags = opered, msg_self, disabled;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 *   2 - REGISTER
	 *   3 - DROP
	 *   4 -
	 *   5 - INFO
	 */
	loglevel = 3;

	/* max nicks: maximum nicknames a user may register */
	max_nicks = 2;

	/* allow set warn: enable NICKSERV::SET::WARN, which allows users to
	 * set nickname warnings on their nicknames, simple notices which
	 * tell users the nickname is registered.
	 */
	allow_set_warn = yes;

	/* warn string: string give to clients when they use a registered
	 * nickname.
	 */
	warn_string = "This nickname is registered, you may be disconnected if a user regains this nickname.";
};

/* operserv - provides facilities for issuing modes and takeovers */
service "operserv" {
	nick = "OPERSERV";
	username = "oper";
	host = "services.int";
	realname = "oper services";
	flags = opered, msg_self, stealth, wallop_adm;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 */
	loglevel = 1;
};

/* jupeserv - provides opers and admins the ability to jupe servers
 * preventing them from connecting to the network.
 */
service "jupeserv" {
	nick = "JUPESERV";
	username = "jupe";
	host = "services.int";
	realname = "server jupe service";
	flags = opered, msg_self, stealth;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 *   2 - CALLJUPE/CALLUNJUPE
	 *   3 - PENDING
	 */
	loglevel = 2;

	/* oper jupe options.  The following options control jupes/unjupes
	 * which can be initiated by any oper, without needing special
	 * services access.
	 */
	/* oper score: the score an oper contributes towards a jupe/unjupe.
	 * Set to 0 to disallow regular opers calling jupes/unjupes.
	 */
	oper_score = 3;

	/* jupe score: the score needed to trigger a jupe.
	 * Set to 0 to disallow regular opers calling jupes.
	 */
	jupe_score = 15;

	/* unjupe score: the score needed to trigger an unjupe.
	 * Set to 0 to disallow regular opers calling unjupes.
	 */
	unjupe_score = 15;

	/* pending time: how long pending jupes/unjupes last whilst
	 * untriggered.
	 */
	pending_time = 30 minutes;
};

/* operbot - a bot which will invite/op ircops in the set channels.   Useful
 * for oper only channels etc.
 */
service "operbot" {
	nick = "operbot";
	username = "operbot";
	host = "services.int";
	realname = "oper op/invite services";
	flags = opered, msg_self, stealth;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 */
	loglevel = 1;
};

/* alis - a list service that lets users list channels according to more
 * specific criteria than an ircd allows.
 */
service "alis" {
	nick = "alis";
	username = "alis";
	host = "services.int";
	realname = "Advanced List Service - /msg alis help";
	flags = msg_self;

	/* loglevel:
	 *   1 - LIST
	 */
	loglevel = 1;

	/* max matches: maximum number of channels to output from LIST */
	max_matches = 60;
};

/* global - the global messaging service.  Allows messages to be sent
 * to all users on the network.
 */
service "global" {
	nick = "GLOBAL";
	username = "global";
	host = "services.int";
	realname = "Network Message Service";

	/* this service *MUST* be opered. */
	flags = opered, msg_self, stealth;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 */
	loglevel = 1;
};

/* banserv - the ban service.  Allows bans (klines/xlines/resvs) to be
 * sent to all servers.  These bans can only be set on ircd-ratbox servers
 * running version 1.5 and above.
 */
service "banserv" {
	nick = "BANSERV";
	username = "banserv";
	host = "services.int";
	realname = "Ban Service";
	flags = opered, msg_self, stealth;

	/* loglevel: level to log at, 0 to disable logging
	 *   1 - Admin commands
	 */
	loglevel = 1;

	/* unban time: duration unklines etc are kept around in the
	 * database to be synced with servers.
	 */
	unban_time = 2 weeks;

	/* temp workaround: work around short time limits for temporary
	 * bans, by issuing an unban for it first then reissuing the ban.
	 * ratbox-2.0.8 and below, and ratbox-2.1.2 and below have a maximum
	 * temp time of 4 weeks, which can cause some bans to expire even
	 * when banserv expects them to still be set.
	 *
	 * The only way for banserv to extend the expiry on these servers is
	 * to issue an unban first.  The temp workaround does this for all
	 * temporary bans.
	 */
	temp_workaround = no;

	/* autosync frequency: how often to automatically sync bans to
	 * all servers.  Set to 0 to disable.
	 */
	autosync_frequency = 2 weeks;
};

