*** ../ircu2.10.03/config/config-sh.in Thu May 14 21:21:53 1998 --- ../ircu2.10.03+/config/config-sh.in Thu May 14 21:22:15 1998 *************** *** 309,314 **** --- 309,318 ---- bool 'Allow Opers to use the DIE command' OPER_DIE y bool 'Allow Opers to add local G-lines' OPER_LGLINE y bool 'Allow Opers to connect from a remote site' OPER_REMOTE y + 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 *************** *** 331,336 **** --- 335,341 ---- 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.03/doc/Configure.help Thu May 14 21:21:54 1998 --- ../ircu2.10.03+/doc/Configure.help Thu May 14 21:22:15 1998 *************** *** 780,785 **** --- 780,807 ---- the server in order to gain oper privledges. If you're not sure, just select 'y'. + Allow Opers to join channels using a master key - ESNET + OPER_JOIN_GOD_ESNET + If you choose "yes", an OPER can join any channel writing + a master key "GOD". She can join through keys, invite, bans, and so on. + Useful to run local Channel Services. + + Allow Opers to join channels using a master key - ESNET + OPER_CHANNEL_SERVICE_ESNET + If you choose "yes", an OPER can set mode "+k" on himself. That is, + nobody will can kick or deop him. Useful to run local Channel Services. + + Local Channel Services has no Flood Control - ESNET + CS_NO_FLOOD_ESNET + 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) *************** *** 852,857 **** --- 874,884 ---- 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.03/ircd/channel.c Thu May 14 21:21:55 1998 --- ../ircu2.10.03+/ircd/channel.c Thu May 14 21:22:15 1998 *************** *** 1020,1025 **** --- 1020,1031 ---- 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; *************** *** 1238,1243 **** --- 1244,1267 ---- 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) *************** *** 1327,1333 **** } /* 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; --- 1351,1363 ---- } /* 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; *************** *** 1342,1347 **** --- 1372,1387 ---- 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) if ((*ip & new) && !(*ip & oldm.mode)) *************** *** 1933,1938 **** --- 1973,1993 ---- static int can_join(aClient *sptr, aChannel *chptr, char *key) { Reg1 Link *lp; + + + /* + ** Si somos IRCOPs y hemos puesto la clave GOD, podemos + ** entrar en el canal pase lo que pase. + ** jcea@argo.es - 26/03/97 + */ + + #ifdef OPER_JOIN_GOD_ESNET + if((IsOper(sptr)) && (!BadPtr(key)) && (!compall("GOD", key))) + return 0; + #endif + /* + */ + /* Now a banned user CAN join if invited -- Nemesi */ /* Now a user CAN escape channel limit if invited -- bfriendly */ *** ../ircu2.10.03/ircd/s_bsd.c Thu May 14 21:21:56 1998 --- ../ircu2.10.03+/ircd/s_bsd.c Thu May 14 21:22:14 1998 *************** *** 1523,1529 **** if (dbuf_put(&cptr->recvQ, readbuf, length) < 0) return exit_client(cptr, cptr, &me, "dbuf_put fail"); ! if (IsPerson(cptr) && DBufLength(&cptr->recvQ) > CLIENT_FLOOD) return exit_client(cptr, cptr, &me, "Excess Flood"); while (DBufLength(&cptr->recvQ) && !NoNewLine(cptr) && --- 1523,1533 ---- if (dbuf_put(&cptr->recvQ, readbuf, length) < 0) return exit_client(cptr, cptr, &me, "dbuf_put fail"); ! if (IsPerson(cptr) && DBufLength(&cptr->recvQ) > CLIENT_FLOOD ! #ifdef CS_NO_FLOOD_ESNET ! && !IsChannelService(cptr) ! #endif ! ) return exit_client(cptr, cptr, &me, "Excess Flood"); while (DBufLength(&cptr->recvQ) && !NoNewLine(cptr) && *** ../ircu2.10.03/ircd/s_debug.c Thu May 14 21:21:56 1998 --- ../ircu2.10.03+/ircd/s_debug.c Thu May 14 21:22:15 1998 *************** *** 169,174 **** --- 169,201 ---- #ifdef USE_SYSLOG 'Y', #endif + '.','E','S','N','E','T','.', + 'J','G', + #ifdef OPER_JOIN_GOD_ESNET + '+', + #else + '-', + #endif + 'C','S', + #ifdef OPER_CHANNEL_SERVICE_ESNET + '+', + #else + '-', + #endif + 'C','S','F', + #ifdef CS_NO_FLOOD_ESNET + '+', + #else + '-', + #endif + #ifdef XMODE_ESNET + 'X','M', + #ifdef OPER_XMODE_ESNET + '+', + #else + '-', + #endif + #endif '\0' }; *** ../ircu2.10.03/ircd/s_user.c Thu May 14 21:21:56 1998 --- ../ircu2.10.03/ircd/s_user.c Thu May 14 21:22:14 1998 *************** *** 3418,3424 **** det_confs_butmask(sptr, CONF_CLIENT & ~CONF_OPS); /* new umode; servers can set it, local users cannot; * prevents users from /kick'ing or /mode -o'ing */ ! if (!(setflags & FLAGS_CHSERV) && !IsServer(cptr)) sptr->flags &= ~FLAGS_CHSERV; /* * Compare new flags with old flags and send string which --- 3418,3433 ---- det_confs_butmask(sptr, CONF_CLIENT & ~CONF_OPS); /* new umode; servers can set it, local users cannot; * prevents users from /kick'ing or /mode -o'ing */ ! ! /* ! ** Si somos IRCOPs y hemos puesto el flag K, lo acepta. ! ** jcea@argo.es - 16/Dic/97 ! */ ! if (!(setflags & FLAGS_CHSERV) && !IsServer(cptr) ! #ifdef OPER_CHANNEL_SERVICE_ESNET ! && !IsOper(sptr) ! #endif ! ) sptr->flags &= ~FLAGS_CHSERV; /* * Compare new flags with old flags and send string which