/* This file defines a number of default operclass blocks which you can
 * use in your oper blocks (via oper::operclass).
 *
 * This file is normally included from your unrealircd.conf through:
 * include "operclass.default.conf";
 *
 * The operclass block is extensively documented at:
 * https://www.unrealircd.org/docs/Operclass_block
 * And the permissions itself (operclass::permissions) at:
 * https://www.unrealircd.org/docs/Operclass_permissions
 *
 * DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
 * Instead, if you want to change the permissions in an operclass block,
 * you should copy the definition, or this entire file, to either your
 * unrealircd.conf or some other file (eg: operclass.conf) that you
 * you will include from your unrealircd.conf.
 * Then edit it, and while doing so don't forget to change the name
 * of your custom operclass block(s), so operclass <name>.
 */

/* Local IRC Operator */
operclass locop {
	permissions {
		chat;
		channel { operonly; override { flood; } }
		client { see; }
		immune;
		self { getbaddcc; opermodes; set; }
		server { opermotd; info; close; module; dns; rehash; }
		route { local; }
		kill { local; }
		server-ban {
			kline;
			zline { local; }
		}
	}
}

/* Global IRC Operator */
operclass globop {
	permissions {
		chat;
		channel { operonly; see; override { flood; } }
		client;
		immune;
		self { getbaddcc; opermodes; set; }
		server { opermotd; info; close; module; dns; rehash;
		         remote; tsctl { view; } }
		route;
		kill;
		server-ban { dccdeny; shun; zline; kline; gline; }
	}
}

/* Server administrator */
operclass admin {
	permissions {
		chat;
		channel { operonly; see; override { flood; } }
		client;
		immune;
		self { getbaddcc; opermodes; set; }
		server { opermotd; info; close; module; dns; rehash;
		         remote; description; addmotd;
		         addomotd; tsctl { view; } }
		route;
		kill;
		server-ban;
	}
}

/* Services Admin */
operclass services-admin {
	permissions {
		chat;
		channel { operonly; see; override { flood; } }
		client;
		immune;
		self { getbaddcc; opermodes; set; }
		server { opermotd; info; close; module; dns; rehash;
		         remote; description; addmotd;
		         addomotd; tsctl { view; } }
		route;
		kill;
		server-ban;
		sacmd;
		services;
	}
}

/* Network Administrator */
operclass netadmin {
	permissions {
		chat;
		channel { operonly; see; override { flood; } }
		client;
		immune;
		self { getbaddcc; opermodes; set; }
		server { opermotd; info; close; module; dns; rehash;
		         remote; description; addmotd;
		         addomotd; tsctl; }
		route;
		kill;
		server-ban;
		sacmd;
		services;
	}
}

/* Same as 'globop' operclass, but with OperOverride capabilities added */
operclass globop-with-override {
	parent globop;
	permissions {
		channel { operonly; see; override; }
		self { getbaddcc; opermodes; set; unkickablemode; }
	}
}

/* Same as 'admin' operclass, but with OperOverride capabilities added */
operclass admin-with-override {
	parent admin;
	permissions {
		channel { operonly; see; override; }
		self { getbaddcc; opermodes; set; unkickablemode; }
	}
}

/* Same as 'services-admin' operclass, but with OperOverride capabilities added */
operclass services-admin-with-override {
	parent services-admin;
	permissions {
		channel { operonly; see; override; }
		self { getbaddcc; opermodes; set; unkickablemode; }
	}
}

/* Same as 'netadmin' operclass, but with OperOverride capabilities added */
operclass netadmin-with-override {
	parent netadmin;
	permissions {
		channel { operonly; see; override; }
		self { getbaddcc; opermodes; set; unkickablemode; }
	}
}
