/* doc/example.conf.quick - ircd-hybrid-7 Example configuration file
 * Copyright (C) 2000-2002 Hybrid Development Team
 *
 * Written by ejb, wcampbel, db, leeh and others
 *
 * $Id: example.conf.quick,v 1.1.2.1 2003/05/31 07:30:25 lusky Exp $
 */

/* IMPORTANT NOTES:
 *
 * class {} blocks MUST be specified before anything that uses them.  That
 * means they must be defined before auth {} and before connect {}.
 *
 * auth {} blocks MUST be specified in order of precedence.  The first one
 * that matches a user will be used.  So place spoofs first, then specials,
 * then general access, then restricted.
 *
 * Both shell style (#) and C style comments are supported.
 *
 * Files may be included by either:
 *        .include "filename"
 *        .include <filename>
 *
 * Times/durations are written as:
 *        12 hours 30 minutes 1 second
 *        
 * Valid units of time:
 *        month, week, day, hour, minute, second
 *
 * Valid units of size:
 *        megabyte/mbyte/mb, kilobyte/kbyte/kb, byte
 *
 * Sizes and times may be singular or plural.  
 */ 

/* EFNET NOTE:
 * 
 * This config file is NOT suitable for EFNet.  EFNet admins should use
 * example.efnet.conf
 */
 
serverinfo {
	name = "hades.arpa";
	description = "hybrid-7 test server";
	network_name = "MyNet";
	network_desc = "This is My Network";
	hub = no;
	#vhost = "192.169.0.1";
	#vhost6 = "3ffe:80e8:546::2";
	max_clients = 512;
	#rsa_private_key_file = "/usr/local/ircd/etc/rsa.key";
};

/* admin {}: contains admin information about the server. (OLD A:) */
admin {
	name = "Smurf target";
	description = "Main Server Administrator";
	email = "<syn@packets.r.us>";
};

/* logging {}: contains information about logfiles. */
logging {
	log_level = L_INFO;
};

/* class {}: contain information about classes for users (OLD Y:) */
class {
	name = "users";
	ping_time = 2 minutes;
	number_per_ip = 2;
	max_number = 100;
	sendq = 100 kbytes;
};

class {
	name = "restricted";
	ping_time = 1 minute 30 seconds;
	number_per_ip = 1;
	max_number = 100;
	sendq = 60kb;
};

class {
	name = "opers";
	ping_time = 5 minutes;
	number_per_ip = 10;
	max_number = 100;
	sendq = 100kbytes;
};

class {
	name = "server";
	ping_time = 5 minutes;
	connectfreq = 5 minutes;
	max_number = 1;
	sendq=2 megabytes;
};

/* listen {}: contain information about the ports ircd listens on (OLD P:) */
listen {
	port = 6665 .. 6669;
	host = "1.2.3.4";
	port = 7000, 7001;
	host = "3ffe:1234:a:b:c::d";
        port = 7002;
};

/* auth {}: allow users to connect to the ircd (OLD I:) */
auth {
	user = "*@172.16.0.0/12";
	user = "*test@123D:B567:*";
	password = "letmein";
    spoof = "I.still.hate.packets";
    spoof_notice = yes;
	exceed_limit = yes;
	kline_exempt = yes;
	gline_exempt = yes;
	no_tilde = yes;
	class = "opers";
};

auth {
	redirserv = "irc.fi";
	redirport = 6667;
	user = "*.fi";
	class = "users";
};

auth {
	user = "*@*";
	class = "users";
	#restricted = yes;
	have_ident = yes;
};

/* operator {}: defines ircd operators. (OLD O:)
 * ircd-hybrid no longer supports local operators, privileges are
 * controlled via flags.
 */
operator {
	name = "god";
	user = "*god@*";
	user = "*@127.0.0.1";
	password = "etcnjl8juSU1E";
	#rsa_public_key_file = "/usr/local/ircd/etc/oper.pub";
	class = "opers";
	global_kill = yes;
	remote = yes;
	kline = yes;
	unkline = yes;
	gline = yes;
	die = yes;
	rehash = yes;
	nick_changes = yes;
	admin = yes;
};

/* connect {}: controls servers we connect to (OLD C:, N:, H:, L:) */
connect {
	name = "irc.uplink.com";
	host = "192.168.0.1";
	send_password = "password";
	accept_password = "anotherpassword";
	encrypted = no;
	port = 6666;
	hub_mask = "*";
	#leaf_mask = "*.uk";
	class = "server";
	autoconn = yes;
	#compressed = yes;
	#lazylink = yes;
	#fakename = "*.arpa";
};

connect {
	name = "encrypted.auth.example";
	host = "some.host.somewhere";
	port = 6667;

	cryptlink = yes;
	rsa_public_key_file = "etc/remote.server.keyfile";
	#cipher_preference = "BF/168";
};

connect {
        name = "ipv6.some.server";
        host = "3ffd:dead:beef::1";
        send_password = "password";
        accept_password = "password";
        port = 6666;

	aftype = ipv6;
        class = "server";
};

/* shared {}: users that are allowed to remote kline (OLD U:) */
shared {
	name = "irc2.some.server";
	user = "oper@my.host.is.spoofed";
};

/* kill {}: users that are not allowed to connect (OLD K:)
 * Oper issued klines will be added to the specified kline config
 */
kill {
	user = "bad@*.hacked.edu";
	reason = "Obviously hacked account";
};

/* deny {}: IPs that are not allowed to connect (before DNS/ident lookup)
 * Oper issued dlines will be added to the specified dline config
 */
deny {
	ip = "10.0.1.0/24";
	reason = "Reconnecting vhosted bots";
};

/* exempt {}: IPs that are exempt from deny {} and Dlines. (OLD d:) */
exempt {
	ip = "192.168.0.0/16";
};

/* resv {}: nicks and channels users may not use/join (OLD Q:) */
resv {
	nick = "nickserv";
	nick = "chanserv";
	channel = "#services";
	reason = "Clone bots";
	nick = "clone*";
};

gecos {
	name = "*sex*";
	reason = "Possible spambot";
	action = warn;
};

gecos {
	name = "sub7server";
	reason = "Trojan drone";
	action = reject;
};

gecos {
	name = "*http*";
	reason = "Spambot";
	action = silent;
};

channel {
	use_invex = yes;
	use_except = yes;
    use_halfops = yes;
	use_anonops = no;
    use_vchans = yes;
	vchans_oper_only = yes;
	use_knock = yes;
	knock_delay = 5 minutes;
	knock_delay_channel = 1 minute;
	max_chans_per_user = 15;
    quiet_on_ban = yes;
    max_bans = 25;
	default_split_user_count = 0;
	default_split_server_count = 0;
	no_create_on_split = no;
	no_join_on_split = no;
	oper_pass_resv = yes;
};

serverhide {
	flatten_links = no;
	links_delay = 5 minutes;
    hidden = no;
	disable_hidden = no;
	hide_servers = no;
	disable_remote_commands = no;
	disable_local_channels = no;
};

general {
    default_floodcount = 10;
	failed_oper_notice = yes;
	dots_in_ident=2;
    dot_in_ip6_addr = yes;
	min_nonwildcard = 4;
    max_accept = 20;
	anti_nick_flood = yes;

	max_nick_time = 20 seconds;
	max_nick_changes = 5;

    anti_spam_exit_message_time = 5 minutes;
	ts_warn_delta = 30 seconds;
	ts_max_delta = 5 minutes;

	client_exit = yes;
	kline_with_reason = yes;
	kline_with_connection_closed = no;
	non_redundant_klines = yes;

	warn_no_nline = yes;
	stats_o_oper_only=yes;
	stats_P_oper_only=no;
	stats_i_oper_only=masked;
	stats_k_oper_only=masked;
	caller_id_wait = 1 minute;
	pace_wait_simple = 1 second;
	pace_wait = 10 seconds;
	short_motd = no;
	ping_cookie = no;
	no_oper_flood = yes;
	true_no_oper_flood = yes;
	glines = yes;
	gline_time = 1 day;
    idletime = 0;
	maximum_links = 1;
	/* REMOVE ME.  The following line checks you've been reading. */
	havent_read_conf = 1;
	fname_userlog = "logs/userlog";
	fname_operlog = "logs/operlog";
	fname_foperlog = "logs/foperlog";

	max_targets = 4;
	client_flood = 20;
    use_help = yes;
	message_locale = "custom";
	oper_only_umodes = bots, cconn, debug, full, skill, nchange, 
                     rej, spy, external, operwall, locops, unauth;

	oper_umodes = locops, servnotice, operwall, wallop;
	#servlink_path = "/usr/local/ircd/bin/servlink";
	#default_cipher_preference = "BF/168";
	#use_egd = yes;
	#egdpool_path = "/var/run/egd-pool";
	#compression_level = 6;
	throttle_time = 10;
};

modules {
	path = "/usr/local/ircd/modules";
	path = "/usr/local/ircd/modules/autoload";
	#module = "some_module.so";
};
