Index: ../ircu2.10.06/CAMBIOS =================================================================== RCS file: /cvsroot/ircd/CAMBIOS,v retrieving revision 1.23 retrieving revision 1.24 diff -c -r1.23 -r1.24 *** ../ircu2.10.06/CAMBIOS 1999/10/26 19:59:58 1.23 --- ../ircu2.10.06/CAMBIOS 1999/11/11 13:21:57 1.24 *************** *** 1,3 **** --- 1,16 ---- + * 1999/11/11 savage@apostols.org (patch.vip4) FIX + ----------------------------------------------------------------------- + Segun lo decidido, se cambia el algoritmo de criptación de direcciones + al siguiente modelo: + + VIRTUAL = TEA( clave, ip<<32 + (clave>>32)&0xffff0000 + n) + + Siendo 'clave' el valor que contiene el registro '.' de la tabla de + direcciones virtuales, que se irá cambiando periodicamente. + Este fix permite que los usuarios baneados por dirección virtual no + puedan abusar, conectando de nuevo o cambiando el nick, pues hay una + relación directa entre la dir virtual y la real. + * 1999/10/26 savage@apostols.org (patch.dbh15) FEATURE ----------------------------------------------------------------------- Para facilitar la migración a autentificación por server, creamos una Index: ../ircu2.10.06/todo.jcea =================================================================== RCS file: /cvsroot/ircd/todo.jcea,v retrieving revision 1.28 retrieving revision 1.34 diff -c -r1.28 -r1.34 *** ../ircu2.10.06/todo.jcea 1999/11/02 20:42:06 1.28 --- ../ircu2.10.06/todo.jcea 1999/11/10 11:07:16 1.34 *************** *** 1,3 **** --- 1,51 ---- + 10/Nov/99 + Parece que de vez en cuando el sistema distribuido + de clones solo permite la entrada de un clon, cuando el + usuario esta entrando a traves del generico. Tal vez + solo permita entrar con un clon menos de los que se + tienen autorizados. + + A mi parece funcionarme bien, pero tictac tiene + problemas, por ejemplo. + + 05/Nov/99 + A medida que la red crezca, sera mas necesario el + adoptar ciertas protecciones ante nodos maliciosos, + ya que al delegar multitud de actividades de gestion + en los nodos, estos deben ser relativamente confiables. + + Es posible, por ejemplo, ampliar el comando "nick" + para que envie una prueba de que el nodo conoce + la clave del usuario; esa prueba puede ser + verificada por cualquier nodo que SI la conozca, + especialmente los nodos de control. + + 05/Nov/99 + Los comandos NICK+MODE suelen ir juntos, especialmente + cuando estamos hablando de nicks registrados. Deberiamos + pensar en un comando nuevo que unificase ambos. + + 05/Nov/99 + Los modos +A y +S de canales, no son + representados por muchos clientes de IRC, + entre ellos el popular mIRC. + + 03/Nov/99 + Las estructuras HASH deberian ocupar una o mas + "cache lines" (32bytes en Intel, 64bytes Athlon). + + 03/Nov/99 + El taman~o de las estructuras HASH para cada + BDD deberia depende de: + + a) El numero de registros + b) El numero de accesos por segundo + + De esa forma no se desperdicia tanta + memoria como ahora, ni se penaliza la + velocidad de acceso de las tablas realmente + criticas. + 02/Nov/99 Cuando se ordena el borrado de una BDD, no podemos estar seguros de que el HUB haya propagado la orden *************** *** 93,98 **** --- 141,155 ---- Esto es especialmente importante en los nuevos nodos que entren, pertenecientes a redes de cable. + + Las direcciones propagadas deberian ser + de la forma "17.1.168.192.gaia.irc-hispano.org", + para permitir una delegacion DNS simple. + + Los nodos no deben propagar la posible + resolucion interna, porque solo es valida + de forma local, y puede propagar + informacion confidencial. 19/Oct/99 El modo +r y -r debe propagarse ANTES Index: ../ircu2.10.06/ircd/s_debug.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_debug.c,v retrieving revision 1.74 retrieving revision 1.75 diff -c -r1.74 -r1.75 *** ../ircu2.10.06/ircd/s_debug.c 1999/11/02 20:52:04 1.74 --- ../ircu2.10.06/ircd/s_debug.c 1999/11/11 13:21:57 1.75 *************** *** 228,234 **** #else '-', #endif ! 'V','I','P','3', #ifdef DBH_VIP '+', #else --- 228,234 ---- #else '-', #endif ! 'V','I','P','4', #ifdef DBH_VIP '+', #else Index: ../ircu2.10.06/ircd/s_user.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_user.c,v retrieving revision 1.29 retrieving revision 1.30 diff -c -r1.29 -r1.30 *** ../ircu2.10.06/ircd/s_user.c 1999/10/27 12:02:38 1.29 --- ../ircu2.10.06/ircd/s_user.c 1999/11/11 13:21:57 1.30 *************** *** 3434,3443 **** struct dbh_reg *reg; unsigned long v[2], k[2], x[2]; int cont = (NICKLEN + 8) / 8, ts = 0; ! char hash[12 + 1]; strcpy(acptr->user->virtualhost, acptr->user->host); if ((reg = dbh_buscar_registro(BDD_VIRTUALDB, acptr->name))) { strncpy(acptr->user->virtualhost, reg->valor, --- 3434,3444 ---- struct dbh_reg *reg; unsigned long v[2], k[2], x[2]; int cont = (NICKLEN + 8) / 8, ts = 0; ! char clave[12 + 1]; strcpy(acptr->user->virtualhost, acptr->user->host); + /* Busco dirección virtual fija para este nick */ if ((reg = dbh_buscar_registro(BDD_VIRTUALDB, acptr->name))) { strncpy(acptr->user->virtualhost, reg->valor, *************** *** 3448,3458 **** return; } ! if (!(reg = dbh_buscar_registro(ESNET_NICKDB, acptr->name)) && ! !(reg = dbh_buscar_registro(BDD_MIGRACION, acptr->name))) return; ! strncpy(hash, reg->valor, 12); while (1) { --- 3449,3459 ---- return; } ! /* Busco clave general de criptacion de direcciones */ ! if (!(reg = dbh_buscar_registro(BDD_VIRTUALDB, "."))) return; ! strncpy(clave, reg->valor, 12); while (1) { *************** *** 3462,3483 **** x[0] = x[1] = 0; /* valor */ ! tmp = hash[6]; ! hash[6] = '\0'; ! v[0] = base64toint(hash); ! hash[6] = tmp; ! v[1] = base64toint(hash + 6); - /* clave */ k[0] = (unsigned long)acptr->ip.s_addr; ! k[1] = (unsigned long)(base64toint(acptr->yxx) + ts); tea(v, k, x); inttobase64(acptr->user->virtualhost, x[0], 6); ! inttobase64(acptr->user->virtualhost + 6, x[1], 6); ! strcpy(acptr->user->virtualhost + 12, ".virtual"); if (strchr(acptr->user->virtualhost, '[') == NULL && strchr(acptr->user->virtualhost, ']') == NULL) break; /* nice host name */ --- 3463,3486 ---- x[0] = x[1] = 0; /* valor */ ! tmp = clave[6]; ! clave[6] = '\0'; ! v[0] = base64toint(clave); ! clave[6] = tmp; ! v[1] = base64toint(clave + 6); k[0] = (unsigned long)acptr->ip.s_addr; ! k[1] = (unsigned long)(v[0] & 0xffff0000 + ts); tea(v, k, x); + /* formato direccion virtual: qWeRty.AsDfGh.virtual */ inttobase64(acptr->user->virtualhost, x[0], 6); ! acptr->user->virtualhost[6] = '.'; ! inttobase64(acptr->user->virtualhost + 7, x[1], 6); ! strcpy(acptr->user->virtualhost + 13, ".virtual"); + /* el nombre de Host es correcto? */ if (strchr(acptr->user->virtualhost, '[') == NULL && strchr(acptr->user->virtualhost, ']') == NULL) break; /* nice host name */