? ../ircu2.10.06/patch.dbh13 Index: ../ircu2.10.06/CAMBIOS =================================================================== RCS file: /cvsroot/ircd/CAMBIOS,v retrieving revision 1.17 retrieving revision 1.18 diff -c -r1.17 -r1.18 *** ../ircu2.10.06/CAMBIOS 1999/10/10 01:10:29 1.17 --- ../ircu2.10.06/CAMBIOS 1999/10/13 21:42:15 1.18 *************** *** 1,3 **** --- 1,13 ---- + * 1999/10/13 savage@apostols.org (patch.dbh13) FEATURE + ----------------------------------------------------------------------- + Implemento comando DBQ sustituyendo el DBH de usuario, con el formato: + + [<:origen>] DBQ [] + + Si existe pero no somos nostros, lo rutaremos al server en + cuestión para que sea él quien contesta. Se acepta server '*' para + broacast y los tipicos comodines 'jupiter.*' + * 1999/10/10 savage@apostols.org (patch.vip3) FIX ----------------------------------------------------------------------- Las desconexiones (QUIT) involuntarios (Ping timeout / Read error) ya Index: ../ircu2.10.06/todo.jcea =================================================================== RCS file: /cvsroot/ircd/todo.jcea,v retrieving revision 1.9 retrieving revision 1.11 diff -c -r1.9 -r1.11 *** ../ircu2.10.06/todo.jcea 1999/10/13 19:35:29 1.9 --- ../ircu2.10.06/todo.jcea 1999/10/13 20:36:00 1.11 *************** *** 1,4 **** --- 1,13 ---- 13/Oct/99 + Si usamos el XMODE sobre alguien + que ya tiene op, y nosotros no lo + tenemos, aparece un "mode +x", sin + ningun usuario detras. + + El cambio fue realizado por Savage. + Se lo paso a el :-) + + 13/Oct/99 La compactacion no elimina registros duplicados. Ese es un problema cuando, por ejemplo, un usuario cambia muchas veces la clave de nick entre dos Index: ../ircu2.10.06/include/msg.h =================================================================== RCS file: /cvsroot/ircd/include/msg.h,v retrieving revision 1.6 retrieving revision 1.7 diff -c -r1.6 -r1.7 *** ../ircu2.10.06/include/msg.h 1999/10/08 10:45:45 1.6 --- ../ircu2.10.06/include/msg.h 1999/10/13 21:42:15 1.7 *************** *** 50,55 **** --- 50,59 ---- #define MSG_DBH "DBH" /* Base de Datos IRC-HISPANO */ #define TOK_DBH "DBH" #define CLASS_DBH LEVEL_PROPAGATE + + #define MSG_DBQ "DBQ" /* Consulta Base de Datos IRC-HISPANO */ + #define TOK_DBQ "DBQ" + #define CLASS_DBQ LEVEL_PROPAGATE #endif #if defined(DB_HISPANO) || defined(DB_ESNET) Index: ../ircu2.10.06/include/s_serv.h =================================================================== RCS file: /cvsroot/ircd/include/s_serv.h,v retrieving revision 1.4 retrieving revision 1.5 diff -c -r1.4 -r1.5 *** ../ircu2.10.06/include/s_serv.h 1999/10/08 10:45:45 1.4 --- ../ircu2.10.06/include/s_serv.h 1999/10/13 21:42:15 1.5 *************** *** 86,91 **** --- 86,92 ---- #ifdef DB_HISPANO extern void dbh_recarga(); extern void dbh_inicializa(); + extern int m_dbq(aClient *cptr, aClient *sptr, int parc, char *parv[]); extern int m_dbh(aClient *cptr, aClient *sptr, int parc, char *parv[]); #endif Index: ../ircu2.10.06/ircd/parse.c =================================================================== RCS file: /cvsroot/ircd/ircd/parse.c,v retrieving revision 1.6 retrieving revision 1.7 diff -c -r1.6 -r1.7 *** ../ircu2.10.06/ircd/parse.c 1999/10/08 11:09:09 1.6 --- ../ircu2.10.06/ircd/parse.c 1999/10/13 21:42:15 1.7 *************** *** 124,129 **** --- 124,130 ---- #endif #ifdef DB_HISPANO {CLASS_DBH, MSG_DBH, TOK_DBH, m_dbh, 0, MAXPARA, MFLG_SLOW, 0L}, + {CLASS_DBQ, MSG_DBQ, TOK_DBQ, m_dbq, 0, MAXPARA, MFLG_SLOW, 0L}, #endif #if defined(DB_HISPANO) || defined(DB_ESNET) {CLASS_BMODE, MSG_BMODE, TOK_BMODE, m_botmode, 0, MAXPARA, MFLG_SLOW, 0L}, Index: ../ircu2.10.06/ircd/s_debug.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_debug.c,v retrieving revision 1.49 retrieving revision 1.50 diff -c -r1.49 -r1.50 *** ../ircu2.10.06/ircd/s_debug.c 1999/10/13 19:30:09 1.49 --- ../ircu2.10.06/ircd/s_debug.c 1999/10/13 22:35:41 1.50 *************** *** 206,212 **** #ifdef DB_HISPANO '.','I','R','C','-', 'H','I','S','P','A','N','O','.','O','R','G',':', ! 'D','B','H' ,'1','2','+', 'N','+', --- 206,212 ---- #ifdef DB_HISPANO '.','I','R','C','-', 'H','I','S','P','A','N','O','.','O','R','G',':', ! 'D','B','H' ,'1','3','+', 'N','+', Index: ../ircu2.10.06/ircd/s_serv.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_serv.c,v retrieving revision 1.33 retrieving revision 1.34 diff -c -r1.33 -r1.34 *** ../ircu2.10.06/ircd/s_serv.c 1999/10/13 19:30:09 1.33 --- ../ircu2.10.06/ircd/s_serv.c 1999/10/13 21:42:15 1.34 *************** *** 2463,2468 **** --- 2463,2558 ---- } /* + * m_dbq + * + * parv[0] = prefijo del enviador + * parv[1..] = argumentos de DBQ [] + * + * Maneja los mensajes DBQ recibidos de users y servers. + * 1999/10/13 savage@apostols.org + */ + int m_dbq(aClient *cptr, aClient *sptr, int parc, char *parv[]) + { + char tabla, *clave, *servidor; + aClient *acptr; + struct dbh_reg *reg; + + if(!IsServer(sptr) && !IsOper(sptr) && !IsHelpOp(sptr)) + return 0; /* No autorizado */ + + /* DBQ [] */ + if(parc!=3 && parc!=4 ) { + + if(!IsServer(sptr)) + sendto_one(cptr,":%s NOTICE %s :Parametros incorrectos: Formato: DBQ [] ", + me.name, parv[0] ); + return 0; + } + + if( parc==3 ) { + servidor=NULL; /* no nos indican server */ + tabla=*parv[1]; + clave=parv[2]; + } else { + servidor=parv[1]; + tabla=*parv[2]; + clave=parv[3]; + + if( *servidor == '*' ) { + /* WOOW, BROADCAST */ + sendto_serv_butone(cptr, ":%s DBQ * %c %s", parv[0], tabla, clave); + } else { + /* NOT BROADCAST */ + if(!(acptr=find_match_server(servidor))) + { + /* joer, el server de destino no existe */ + sendto_one(cptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], servidor); + return 0; + } + + if(!IsMe(acptr)) /* no es para mi, a rutar */ + { + sendto_one(acptr,":%s DBQ %s %c %s", + parv[0], servidor, tabla, clave); + return 0; /* ok, rutado, fin del trabajo */ + } + } + } + + if(!tabla_residente[tabla]) { + if (MyUser(sptr) || Protocol(cptr) < 10) + sendto_one(cptr,":%s NOTICE %s :DBQ ERROR TABLA_NO_RESIDENTE", + me.name, parv[0]); + else + sendto_one(cptr,"%s NOTICE %s%s :DBQ ERROR TABLA_NO_RESIDENTE", + NumServ(&me), NumNick(sptr)); + return 0; + } + + reg=dbh_buscar_registro(tabla, clave); + if(!reg) { + if (MyUser(sptr) || Protocol(cptr) < 10) + sendto_one(cptr,":%s NOTICE %s :DBQ ERROR REGISTRO_NO_ENCONTRADO", + me.name, parv[0]); + else + sendto_one(cptr,"%s NOTICE %s%s :DBQ ERROR REGISTRO_NO_ENCONTRADO", + NumServ(&me), NumNick(sptr)); + return 0; + } + + if (MyUser(sptr) || Protocol(cptr) < 10) + sendto_one(cptr,":%s NOTICE %s :DBQ OK Tabla='%c' Destino='%s' Clave='%s' Valor='%s'", + me.name, parv[0], + tabla, reg->destino, reg->clave, reg->valor); + else + sendto_one(cptr,"%s NOTICE %s%s :DBQ OK Tabla='%c' Destino='%s' Clave='%s' Valor='%s'", + NumServ(&me), NumNick(sptr), + tabla, reg->destino, reg->clave, reg->valor); + + return 0; + } + + /* * m_dbh * * parv[0] = prefijo del enviador *************** *** 2481,2520 **** char db_buf[1024], *reg; FILE *db_file; int es_hub=0; - - if(!IsServer(cptr)) { - struct dbh_reg *reg; ! if(!IsOper(sptr) && (!IsNickRegistered(sptr) || !dbh_buscar_registro_local(DBH_OPERDB,sptr->name))) return 0; ! /* Aqui meteremos los comandos DBH en modo usuario, de momento nada */ ! /* DBH */ ! if(parc!=3) { ! sendto_one(cptr,":%s NOTICE %s :Parametros incorrectos: Formato: DBH ", me.name, parv[0] ); - return 0; - } - - if(!tabla_residente[*parv[1]]) { - sendto_one(cptr,":%s NOTICE %s :Tabla '%c' no es residente.", - me.name, parv[0], - *parv[1]); - return 0; - } - - reg=dbh_buscar_registro(*parv[1], parv[2]); - if(!reg) { - sendto_one(cptr,":%s NOTICE %s :No encontrado '%s' en '%c'", - me.name, parv[0], - parv[2], *parv[1]); - return 0; - } - - sendto_one(cptr,":%s NOTICE %s :T='%c' D='%s' C='%s' V='%s'", - me.name, parv[0], - *parv[1], reg->destino, reg->clave, reg->valor); - return 0; } --- 2571,2583 ---- char db_buf[1024], *reg; FILE *db_file; int es_hub=0; ! if(!IsServer(sptr)) { ! if(!IsOper(sptr) && !IsHelpOp(sptr)) return 0; ! sendto_one(cptr,":%s NOTICE %s :Comando obsoleto, utiliza DBQ [] ", me.name, parv[0] ); return 0; }