diff --git a/doc/ircd.conf.example b/doc/ircd.conf.example index 684c3611..bc5a0a19 100644 --- a/doc/ircd.conf.example +++ b/doc/ircd.conf.example @@ -247,7 +247,7 @@ privset "server_bot" { privset "global_op" { extends = "local_op"; privs = oper:global_kill, oper:routing, oper:kline, oper:unkline, oper:xline, - oper:resv, oper:mass_notice, oper:remoteban; + oper:resv, oper:cmodes, oper:mass_notice, oper:remoteban; }; privset "admin" { diff --git a/doc/reference.conf b/doc/reference.conf index 2cef4865..20c7480d 100644 --- a/doc/reference.conf +++ b/doc/reference.conf @@ -447,7 +447,8 @@ privset "local_op" { * will not have the admin lines in * whois. * oper:xline: allows use of /quote xline/unxline - * oper:resv: allows /quote resv/unresv and cmode +LP + * oper:resv: allows /quote resv/unresv + * oper:cmodes allows cmode +LP * oper:operwall: allows the oper to send/receive operwalls * oper:spy: allows 'operspy' features to see through +s * channels etc. see /quote help operspy @@ -468,7 +469,7 @@ privset "server_bot" { privset "global_op" { extends = "local_op"; privs = oper:global_kill, oper:routing, oper:kline, oper:unkline, oper:xline, - oper:resv, oper:mass_notice, oper:remoteban; + oper:resv, oper:cmodes, oper:mass_notice, oper:remoteban; }; privset "admin" { diff --git a/ircd/chmode.c b/ircd/chmode.c index 8b0b98a0..cab538fb 100644 --- a/ircd/chmode.c +++ b/ircd/chmode.c @@ -714,18 +714,15 @@ chm_staff(struct Client *source_p, struct Channel *chptr, *errors |= SM_ERR_NOPRIVS; return; } - if(MyClient(source_p) && !IsOperResv(source_p)) + if(MyClient(source_p) && !HasPrivilege(source_p, "oper:cmodes")) { if(!(*errors & SM_ERR_NOPRIVS)) sendto_one(source_p, form_str(ERR_NOPRIVS), me.name, - source_p->name, "resv"); + source_p->name, "cmodes"); *errors |= SM_ERR_NOPRIVS; return; } - if(!allow_mode_change(source_p, chptr, CHFL_CHANOP, errors, c)) - return; - if(MyClient(source_p) && (++mode_limit_simple > MAXMODES_SIMPLE)) return;