*** ../ircu2.10.01/config/config-sh.in Tue Feb 3 17:25:41 1998 --- ../ircu2.10.01+/config/config-sh.in Tue Feb 3 17:37:09 1998 *************** *** 300,305 **** --- 300,306 ---- bool 'Allow Opers to join channels using a master key - ESNET' OPER_JOIN_GOD_ESNET y bool 'Allow Opers to became channel service - ESNET' OPER_CHANNEL_SERVICE_ESNET y bool 'Local Channel Services has no Flood Control - ESNET' CS_NO_FLOOD_ESNET y + bool 'Allow Opers to bypass UWorld mode changes - ESNET' OPER_XMODE_ESNET y bool 'Allow local opers to use the REHASH command' LOCOP_REHASH y bool 'Allow local opers to use the RESTART command' LOCOP_RESTART bool 'Allow local opers to use the DIE command' LOCOP_DIE *************** *** 322,327 **** --- 323,329 ---- mainmenu_option next_comment comment 'Mandatory defines (you should leave these untouched)' + bool 'XMODE Networking - ESNET' XMODE_ESNET y bool 'Check for clones (y!)' CHECK_CLONE y if [ "$CHECK_CLONE" = "y" ]; then int 'Check clone limit (2!)' CHECK_CLONE_LIMIT 2 *** ../ircu2.10.01/doc/Configure.help Tue Feb 3 17:37:41 1998 --- ../ircu2.10.01+/doc/Configure.help Tue Feb 3 17:47:39 1998 *************** *** 764,769 **** --- 764,775 ---- If you choose "yes", a local channel service (user with mode +k) won't have flood control. Useful if you are running local bots as ChServ. + Allow Opers to bypass UWorld mode changes - ESNET + OPER_XMODE_ESNET + If you choose "yes", an oper can make channel mode changes + without being OP in that channel. He only need to include + the "extended mode" (flag "x") in his mode command. + Allow local opers to use the REHASH command LOCOP_REHASH Allows a local operator (defined by a lowercase o:line in ircd.conf) *************** *** 836,841 **** --- 842,852 ---- then you should specify a 'y' here. If you specify a 'n' then the idle time will be nullified on all messages except the server PING/PONG. + + XMODE Networking - ESNET + XMODE_ESNET + This mode allows the use of "extended modes" in the network. + Extended modes can change channel modes without UWorld intervention. Check for clones (mandatory on Undernet) CHECK_CLONE *** ../ircu2.10.01/ircd/s_debug.c Tue Feb 3 17:25:21 1998 --- ../ircu2.10.01+/ircd/s_debug.c Tue Feb 3 17:56:21 1998 *************** *** 186,191 **** --- 186,199 ---- #else '-', #endif + #ifdef XMODE_ESNET + 'X','M', + #ifdef OPER_XMODE_ESNET + '+', + #else + '-', + #endif + #endif '\0' }; *** ../ircu2.10.01/ircd/channel.c Tue Feb 3 13:18:44 1998 --- ../ircu2.10.01+/ircd/channel.c Tue Feb 3 18:01:40 1998 *************** *** 1008,1013 **** --- 1008,1019 ---- char *bmbuf = bmodebuf, *bpbuf = bparambuf, *nbpbuf = nbparambuf; time_t newtime = (time_t) 0; aConfItem *aconf; + /* + ** Si somos IRCOPs y hemos puesto el flag X, podemos + ** fijar parametros pase lo que pase. + ** jcea@argo.es - 03/Feb/98 + */ + int jcea_xmode_esnet=0; *mbuf = *pbuf = *npbuf = *bmbuf = *bpbuf = *nbpbuf = '\0'; *badop = 0; *************** *** 1225,1230 **** --- 1231,1254 ---- if (whatt == MODE_DEL) while ((lp = chptr->invites)) del_invite(lp->value.cptr, chptr); + goto def; /* Porque insertamos codigo */ + #ifdef XMODE_ESNET + case 'x': + /* + ** Si somos IRCOPs y hemos puesto el flag X, podemos + ** fijar parametros pase lo que pase. + ** jcea@argo.es - 03/Feb/98 + */ + if(IsOper(sptr) + #ifndef OPER_XMODE_ESNET + && IsServer(cptr) + #endif + ) { + if(!is_chan_op(sptr,chptr)) jcea_xmode_esnet=!0; + break; + } + #endif + def: default: for (ip = flags; *ip; ip += 2) if (*(ip + 1) == *curr) *************** *** 1314,1320 **** } /* end of while loop for MODE processing */ /* Now reject non chan ops */ ! if (!IsServer(cptr) && (!tmp || !(tmp->flags & CHFL_CHANOP))) { *badop = 0; return (opcnt || new != mode->mode || limitset || keychange) ? 0 : -1; --- 1338,1350 ---- } /* end of while loop for MODE processing */ /* Now reject non chan ops */ ! ! /* ! ** Si somos IRCOPs y hemos puesto el flag X, podemos ! ** fijar parametros pase lo que pase. ! ** jcea@argo.es - 03/Feb/98 ! */ ! if (!jcea_xmode_esnet && !IsServer(cptr) && (!tmp || !(tmp->flags & CHFL_CHANOP))) { *badop = 0; return (opcnt || new != mode->mode || limitset || keychange) ? 0 : -1; *************** *** 1328,1333 **** --- 1358,1373 ---- *badop = 4; bounce = (*badop == 1 || *badop == 2 || is_deopped(sptr, chptr)) ? 1 : 0; + + /* + ** Si somos IRCOPs y hemos puesto el flag X, podemos + ** fijar parametros pase lo que pase. + ** jcea@argo.es - 03/Feb/98 + */ + if(jcea_xmode_esnet) { + bounce=0; + *mbuf++='x'; + } whatt = 0; for (ip = flags; *ip; ip += 2)