<?php
	header('Content-type: text/plain');
	require_once('header.php');
	if(!isset($_GET['user']) || !isset($_GET['key']) || !isset($_GET['server'])){
		$opts = getopt('u:k:s:',Array('user:','key:','server:'));
		$_GET['user'] = isset($opts['user'])?$opts['user']:(isset($opts['u'])?$opts['u']:false);
		$_GET['key'] = isset($opts['key'])?$opts['key']:(isset($opts['k'])?$opts['k']:false);
		$_GET['server'] = isset($opts['server'])?$opts['server']:(isset($opts['s'])?$opts['s']:false);
		if(!$_GET['user'] || !$_GET['key'] || !$_GET['server']){
			header('Location: site/');
			die();
		}
	}
	$user = get_current_user_obj('netadmin') or $user = get_current_user_obj('servermanager') or $user = get_current_user_obj('globaladmin') or die('# Invalid user/key pair.');
	$server = get_current_server_obj() or die('# Invalid server name');;
	$opers = get_opers_for_server_obj($server['id']);
	$pass = mkpasswd(get_conf('server-pass'));
?>
#################################################
##                   Classes                   ##
#################################################
class		clients
{
	pingfreq 120;
	maxclients 500;
	sendq 100000;
	recvq 8000;
};
class		servers
{
	pingfreq 120;
	maxclients 11;
	sendq 1000000;
	connfreq 100;
};
#################################################
##                     Me                      ##
#################################################
me {
	name "<?php echo $server['host'];?>";
	info "<?php echo $server['description'];?>";
	numeric <?php echo $server['id'];?>;
};
#################################################
##                   Admin                     ##
#################################################
admin {
	"<?php echo $user['real_name'];?>";
	"<?php echo $user['nick'];?>";
	"<?php echo $user['email'];?>";
};
#################################################
##                 Listeners                   ##
#################################################
listen         *:6697
{
	options
	{
		ssl;
		clientsonly;
	};
};
listen         *:8067;
listen         *:6667;
listen         *:6666;
listen         *:6665;
listen         *:7150
{
	options
	{
		serversonly;
	};
};
listen         *:7100
{
	options
	{
		ssl;
		serversonly;
	};
};
#################################################
##                   Link                      ##
#################################################
<?php
	$ulines = get_ulines_obj();
	foreach($ulines as $k => $u){?>
link        <?php echo $u['host'];?> {
	username *;
	hostname *;
	bind-ip *;
	hub *;
	port 7150;
	password-receive "<?php echo $pass ?>" { sha1; };
	password-connect "<?php echo get_conf('server-pass'); ?>";
	class servers;
};
<?php
	}
	if(!is_null($server['parent'])){?>
link        <?php echo $server['parent']['host'];?> {
	username *;
	hostname <?php echo $server['parent']['ip'];?>;
	bind-ip *;
	hub *;
	port 7100;
	password-receive "<?php echo $pass ?>" { sha1; };
	password-connect "<?php echo get_conf('server-pass'); ?>";
	class       servers;
	options
	{
		zip;
		ssl;
		autoconnect;
		nodnscache;
		nohostcheck;
	};
};
<?php
	}
	if(isset($server['children'])){
		foreach($server['children'] as $k => $c){?>
link        <?php echo $c['host'];?> {
	username *;
	hostname <?php echo $c['ip'];?>;
	bind-ip *;
	hub *;
	port 7100;
	password-receive "<?php echo $pass ?>" { sha1; };
	password-connect "<?php echo get_conf('server-pass'); ?>";
	class       servers;
	options
	{
		zip;
		ssl;
		autoconnect;
		nodnscache;
		nohostcheck;
	};
};
<?php		}
	}
?>
ulines {
	<?php
		$ulines = get_ulines();
		foreach($ulines as $k => $uline){
			echo $uline.";\n";
			if($k < count($ulines)-1){
				echo "\t";
			}
		}
	?>
};
#################################################
##                   Log                       ##
#################################################
log "ircd.log" {
	flags {
		oper;
		kline;
		connects;
		server-connects;
		kills;
		errors;
		sadmin-commands;
		chg-commands;
		oper-override;
		spamfilter;
	};
};
#################################################
##                   Alias                     ##
#################################################
alias "glinebot" {
	format ".+" {
		command "gline";
		type real;
		parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";
	};
	type command;
};
alias statserv { type stats; };
alias ss { target statserv; type stats; };
#################################################
##                   DRPass                    ##
#################################################
drpass {
	restart "<?php echo $pass ?>" { sha1; };
	die "<?php echo $pass ?>" { sha1; };
};
#################################################
##             Network Settings                ##
#################################################
set {
	network-name 		"omnimaga.org";
	default-server 		"irc.omnimaga.org";
	services-server 	"<?php echo get_conf('services-server','string'); ?>";
	stats-server		"<?php echo get_conf('stats-server','string'); ?>";
	help-channel 		"#omnimaga";
	hiddenhost-prefix	"omni";
	cloak-keys {
		"XFGasdgREWhgreTG43FDSfweqfew";
		"FDSAyh5ghREFadhrGHrewGQEg324";
		"ASGfdah4431fgdsagdsagASgrw32";
	};
	hosts {
		local			"local.users.irc.omnimaga.org";
		global			"global.users.irc.omnimaga.org";
		coadmin			"coadmin.users.irc.omnimaga.org";
		admin			"admin.users.irc.omnimaga.org";
		servicesadmin	"servicesadmin.users.irc.omnimaga.org";
		netadmin 		"netadmin.users.irc.omnimaga.org";
		host-on-oper-up "yes";
	};
	modes-on-join		"+nt";
	kline-address "admin@omnimaga.org";
	modes-on-connect "+G";
	modes-on-oper	 "+wgs";
	oper-auto-join "<?php echo get_conf('ops-channel','string'); ?>";
	options {
		hide-ulines;
		show-connect-info;
	};
	maxchannelsperuser 50;
	anti-spam-quit-message-time 10s;
	oper-only-stats "okfGsMRUEelLCXzdD";
	throttle {
		connections 3;
		period 60s;
	};
	anti-flood {
		nick-flood 3:60;
	};
	spamfilter {
		ban-time 1d;
		ban-reason "Spam/Advertising";
		virus-help-channel "#help";
	};
};
#################################################
##                Enable Mibbit                ##
#################################################
// Datacenter one:
cgiirc {
	type webirc;
	hostname 64.62.228.82;
	password <?php echo get_conf('mibbit-password','string'); ?>;
};
// Datacenter two:
cgiirc {
	type webirc;
	hostname 207.192.75.252;
	password <?php echo get_conf('mibbit-password','string'); ?>;
};
// Datacenter three:
cgiirc {
	type webirc;
	hostname 78.129.202.38;
	password <?php echo get_conf('mibbit-password','string'); ?>;
};
// Datacenter four:
cgiirc {
	type webirc;
	hostname 109.169.29.95;
	password <?php echo get_conf('mibbit-password','string'); ?>;
};
#################################################
##                    Allow                    ##
#################################################
allow {
	ip             *@*;
	hostname       *@*;
	class           clients;
	maxperip	10;
};
#################################################
##                     Deny                    ##
#################################################
deny dcc {
	filename "*sub7*";
	reason "Possible Sub7 Virus";
};
#################################################
##                    Bans                     ##
#################################################
ban nick {
	mask "*C*h*a*n*S*e*r*v*";
	reason "Reserved for Services";
};
#################################################
##                Localization                 ##
#################################################
files {
	motd "motd/en.txt";
	rules "rules/en.txt";
};
tld {
	mask *@*.ca;
	motd "motd/en_CA.txt";
	rules "rules/en_CA.txt";
};
tld {
	mask *@*.com;
	motd "motd/en_US.txt";
	rules "rules/en_US.txt";
};
tld {
	mask *@*.fr;
	motd "motd/fr.txt";
	rules "rules/fr.txt";
};
#################################################
##                    Opers                    ##
#################################################
oper RehashServ {
	class		clients;
	from {
		userhost RehashServ@localhost;
		userhost <?php echo get_conf('services-server'); ?>;
		userhost <?php echo get_conf('stats-server'); ?>;
		userhost <?php echo get_conf('irc-server'); ?>;
		userhost <?php echo get_conf('rehash-host'); ?>;
	};
	password "<?php echo mkpasswd(get_conf('rehash-pass')); ?>" { sha1; };
	flags {
		can_rehash;
		netadmin;
	};
};

<?php foreach($opers as $k => $oper){?>
oper <?php echo $oper['nick'];?> {
	class		clients;
	from {
		<?php foreach($oper['hosts'] as $k => $host){?>
			userhost <?php echo $host;?>;
		<?php } ?>
	};
	password "<?php echo $oper['password'];?>" { <?php echo $oper['password_type'];?>; };
	flags {
		<?php echo $oper['flags'];?>
	};
	swhois "<?php echo $oper['swhois'];?>";
};
<?php }?>