Update of /cvsroot/solidircd/solidircd-stable/src In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv5364/src Modified Files: glines.c ircd.c klines.c m_rwho.c parse.c probability.c res.c s_auth.c s_err.c s_misc.c Log Message: Bahamut 1.8.4 latest changes part 3 Index: s_err.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/src/s_err.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** s_err.c 1 Oct 2006 21:45:44 -0000 1.4 --- s_err.c 10 Apr 2007 18:46:28 -0000 1.5 *************** *** 431,435 **** /* 389 */ NULL, /* 390 */ NULL, ! /* 391 RPL_TIME */ ":%s 391 %s %s :%s", /* 392 */ NULL, /* 393 */ NULL, --- 431,435 ---- /* 389 */ NULL, /* 390 */ NULL, ! /* 391 RPL_TIME */ ":%s 391 %s %s %d :%s", /* 392 */ NULL, /* 393 */ NULL, *************** *** 451,456 **** /* 407 ERR_TOOMANYTARGETS */ ":%s 407 %s %s :Too many targets. " "Remaining targets skipped.", ! /* 408 ERR_NOCOLORSONCHAN */ ":%s 408 %s %s :You cannot use colors " ! "on this channel. Not sent: %s", /* 409 ERR_NOORIGIN */ ":%s 409 %s :No origin specified", /* 410 */ NULL, --- 451,456 ---- /* 407 ERR_TOOMANYTARGETS */ ":%s 407 %s %s :Too many targets. " "Remaining targets skipped.", ! /* 408 ERR_NOCTRLSONCHAN */ ":%s 408 %s %s :You cannot use control codes " ! "on this channel. Not sent: %s", "on this channel. Not sent: %s", /* 409 ERR_NOORIGIN */ ":%s 409 %s :No origin specified", /* 410 */ NULL, *************** *** 503,507 **** /* 449 */ NULL, /* 450 */ NULL, ! /* 451 ERR_NOTREGISTERED */ ":%s 451 %s :You have not registered", /* 452 */ NULL, /* 453 */ NULL, --- 503,508 ---- /* 449 */ NULL, /* 450 */ NULL, ! /* 451 ERR_NOTREGISTERED */ ":%s 451 %s %s :You must finish connecting " ! "with another nickname first.", /* 452 */ NULL, /* 453 */ NULL, *************** *** 518,522 **** "privileged", /* 464 ERR_PASSWDMISMATCH */ ":%s 464 %s :Password Incorrect", ! /* 465 ERR_YOUREBANNEDCREEP */ ":%s 465 %s :You have been %s.", /* 466 */ NULL, /* 467 ERR_KEYSET */ ":%s 467 %s %s :Channel key already set", --- 519,523 ---- "privileged", /* 464 ERR_PASSWDMISMATCH */ ":%s 464 %s :Password Incorrect", ! /* 465 ERR_YOUREBANNEDCREEP */ ":%s 465 %s :%s", /* 466 */ NULL, /* 467 ERR_KEYSET */ ":%s 467 %s %s :Channel key already set", *************** *** 550,555 **** /* 484 */ NULL, /* In use by Undernet */ /* 485 ERR_CHANBANREASON */ ":%s 485 %s %s :Cannot join channel (%s)", ! /* 486 ERR_NONONREG */ ":%s 486 %s :You must identify to a " ! "registered nickname in order to private message that user.", /* 487 ERR_MSGSERVICES */ ":%s 487 %s :Error! \"/msg %s\" is no longer supported. " "Use \"/msg %s@%s\" or \"/%s\" instead.", --- 551,556 ---- /* 484 */ NULL, /* In use by Undernet */ /* 485 ERR_CHANBANREASON */ ":%s 485 %s %s :Cannot join channel (%s)", ! /* 486 ERR_NONONREG */ ":%s 486 %s %s :You must identify to a registered " ! "nick to private message that person", /* 487 ERR_MSGSERVICES */ ":%s 487 %s :Error! \"/msg %s\" is no longer supported. " "Use \"/msg %s@%s\" or \"/%s\" instead.", *************** *** 561,565 **** /* 492 */ NULL, /* 493 */ NULL, ! /* 494 */ NULL, /* 495 */ NULL, /* 496 */ NULL, --- 562,566 ---- /* 492 */ NULL, /* 493 */ NULL, ! /* 494 ERR_OWNMODE */ ":%s 494 %s %s :You cannot message that person while you are %s, so your message was not sent", /* 495 */ NULL, /* 496 */ NULL, *************** *** 1074,1078 **** /* 997 */ NULL, /* 998 */ NULL, ! /* 999 */ ":%s 999 %s Numeric error! yikes! !woopie!", /* 1000 */ NULL }; --- 1075,1079 ---- /* 997 */ NULL, /* 998 */ NULL, ! /* 999 */ ":%s 999 %s Numeric error! yikes!", /* 1000 */ NULL }; Index: parse.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/src/parse.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** parse.c 5 Jul 2005 21:53:41 -0000 1.4 --- parse.c 10 Apr 2007 18:46:27 -0000 1.5 *************** *** 302,308 **** if (!IsRegistered(cptr) && !(mptr->flags & MF_UNREG)) { ! sendto_one(from, ":%s %d %s %s :Register first.", ! me.name, ERR_NOTREGISTERED, from->name, ch); ! return -1; } --- 302,308 ---- if (!IsRegistered(cptr) && !(mptr->flags & MF_UNREG)) { ! sendto_one(from, err_str(ERR_NOTREGISTERED), me.name, ! *para[0] ? para[0] : "*", ch); ! return -1; } Index: res.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/src/res.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** res.c 7 Jan 2006 22:13:26 -0000 1.3 --- res.c 10 Apr 2007 18:46:27 -0000 1.4 *************** *** 795,799 **** while (hptr->ancount-- > 0 && cp && cp < eob) { ! n = dn_expand(buf, eob, cp, hostbuf, sizeof(hostbuf)); hostbuf[HOSTLEN] = '\0'; --- 795,799 ---- while (hptr->ancount-- > 0 && cp && cp < eob) { ! n = dn_expand(buf, eob, cp, hostbuf, sizeof(hostbuf)-1); hostbuf[HOSTLEN] = '\0'; *************** *** 936,940 **** if ((n = dn_expand(buf, eob, cp, hostbuf, ! sizeof(hostbuf))) < 0) { cp = NULL; --- 936,940 ---- if ((n = dn_expand(buf, eob, cp, hostbuf, ! sizeof(hostbuf)-1)) < 0) { cp = NULL; *************** *** 1062,1066 **** rptr->type = type; ! if ((n = dn_expand(buf, eob, cp, hostbuf, sizeof(hostbuf))) < 0) { cp = NULL; --- 1062,1066 ---- rptr->type = type; ! if ((n = dn_expand(buf, eob, cp, hostbuf, sizeof(hostbuf)-1)) < 0) { cp = NULL; Index: probability.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/src/probability.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** probability.c 7 Jan 2006 22:13:26 -0000 1.4 --- probability.c 10 Apr 2007 18:46:27 -0000 1.5 *************** *** 49,55 **** /* nick/user/gcos count->percent scale factors */ ! static double nscale; ! static double uscale; ! static double gscale; /* nick/user/gcos unscaled averages */ --- 49,56 ---- /* nick/user/gcos count->percent scale factors */ ! static double nscale_lo, nscale_hi; ! static double uscale_lo, uscale_hi; ! static double gscale_lo, gscale_hi; ! /* nick/user/gcos unscaled averages */ *************** *** 316,320 **** { navg = ntotal / ncount; ! nscale = 100.0 / nmax; } --- 317,323 ---- { navg = ntotal / ncount; ! nscale_lo = 50.0 / navg; ! nscale_hi = 50.0 / (nmax - navg); ! } *************** *** 322,326 **** { uavg = utotal / ucount; ! uscale = 100.0 / umax; } --- 325,331 ---- { uavg = utotal / ucount; ! uscale_lo = 50.0 / uavg; ! uscale_hi = 50.0 / (umax - uavg); ! } *************** *** 328,332 **** { gavg = gtotal / gcount; ! gscale = 100.0 / gmax; } } --- 333,339 ---- { gavg = gtotal / gcount; ! gscale_lo = 50.0 / gavg; ! gscale_hi = 50.0 / (gmax - gavg); ! } } *************** *** 363,369 **** uavg = 50; gavg = 50; ! nscale = 1.0; ! uscale = 1.0; ! gscale = 1.0; navgfunc = pavg_skip; uavgfunc = pavg_skip; --- 370,376 ---- uavg = 50; gavg = 50; ! nscale_hi = nscale_lo = 0.5; ! uscale_hi = uscale_lo = 0.5; ! gscale_hi = gscale_lo = 0.5; navgfunc = pavg_skip; uavgfunc = pavg_skip; *************** *** 478,488 **** p = navgfunc((unsigned char *) ac->name, PCS_NICK); ! *np = (p < 0 ? navg : p) * nscale; ! p = uavgfunc((unsigned char *) ac->user->username, PCS_USER); ! *up = (p < 0 ? uavg : p) * uscale; - p = gavgfunc((unsigned char *) ac->info, PCS_GCOS); - *gp = (p < 0 ? gavg : p) * gscale; } --- 485,500 ---- p = navgfunc((unsigned char *) ac->name, PCS_NICK); ! if (p < 0) ! p = navg; ! *np = (p > navg) ? ((p - navg) * nscale_hi + 50) : (p * nscale_lo); p = uavgfunc((unsigned char *) ac->user->username, PCS_USER); ! if (p < 0) ! p = uavg; ! *up = (p > uavg) ? ((p - uavg) * uscale_hi + 50) : (p * uscale_lo); ! p = gavgfunc((unsigned char *) ac->info, PCS_GCOS); ! if (p < 0) ! p = gavg; ! *gp = (p > gavg) ? ((p - gavg) * gscale_hi + 50) : (p * gscale_lo); } Index: s_misc.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/src/s_misc.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** s_misc.c 1 Oct 2006 21:04:57 -0000 1.9 --- s_misc.c 10 Apr 2007 18:46:28 -0000 1.10 *************** *** 44,47 **** --- 44,49 ---- #include "h.h" #include "fdlist.h" + #include "throttle.h" + extern float curSendK, curRecvK; *************** *** 149,191 **** } - /* - * * check_registered_user is used to cancel message, if the * - * originator is a server or not registered yet. In other * words, - * passing this test, *MUST* guarantee that the * sptr->user exists - * (not checked after this--let there * be coredumps to catch bugs... - * this is intentional --msa ;) * - * - * There is this nagging feeling... should this NOT_REGISTERED * error - * really be sent to remote users? This happening means * that remote - * servers have this user registered, although this * one has it not... - * Not really users fault... Perhaps this * error message should be - * restricted to local clients and some * other thing generated for - * remotes... - */ - inline int - check_registered_user(aClient *sptr) - { - if (!IsRegisteredUser(sptr)) - { - sendto_one(sptr, err_str(ERR_NOTREGISTERED), me.name, "*"); - return -1; - } - return 0; - } - - /* - * * check_registered user cancels message, if 'x' is not * registered - * (e.g. we don't know yet whether a server * or user) - */ - inline int - check_registered(aClient *sptr) - { - if (!IsRegistered(sptr)) - { - sendto_one(sptr, err_str(ERR_NOTREGISTERED), me.name, "*"); - return -1; - } - return 0; - } inline char * --- 151,154 ---- *************** *** 873,875 **** --- 836,880 ---- return pbuf; + + } + + /* + * exit_banned_client() + * + * Sends an appropriate ban message and disconnects a client. + */ + int + exit_banned_client(aClient *cptr, int loc, char type, char *banmsg, int fast) + { + char rbuf[512]; + char *target = "*"; + char *reason = "<no reason specified>"; + + if (cptr->name[0]) + target = cptr->name; + + if (!BadPtr(banmsg)) + reason = banmsg; + + ircsnprintf(rbuf, sizeof(rbuf), "%c-banned: %s", type, reason); + + if (!fast) + { + sendto_one(cptr, "NOTICE %s :*** You are banned from %s", target, + loc ? me.name : Network_Name); + sendto_one(cptr, "NOTICE %s :*** Reason: %s", target, reason); + sendto_one(cptr, "NOTICE %s :*** Connection info: %s [%s]", target, + get_client_name(cptr, FALSE), + inetntoa((char *)&cptr->ip.s_addr)); + sendto_one(cptr, "NOTICE %s :*** Ban contact: %s", target, + loc ? Local_Kline_Address : Network_Kline_Address); + sendto_one(cptr, "NOTICE %s :*** When contacting %s, please include " + "all of the information shown above", target, Network_Name); + sendto_one(cptr, err_str(ERR_YOUREBANNEDCREEP), me.name, target, rbuf); + + throttle_force(inetntoa((char *)&cptr->ip.s_addr)); + } + return exit_client(cptr, cptr, &me, rbuf); + + } Index: s_auth.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/src/s_auth.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** s_auth.c 7 Jan 2006 22:13:26 -0000 1.2 --- s_auth.c 10 Apr 2007 18:46:27 -0000 1.3 *************** *** 63,67 **** #ifdef USE_SYSLOG syslog(LOG_ERR, "Unable to create auth socket for %s:%m", ! get_client_name(cptr, TRUE)); #endif ircstp->is_abad++; --- 63,67 ---- #ifdef USE_SYSLOG syslog(LOG_ERR, "Unable to create auth socket for %s:%m", ! get_client_name(cptr, IsServer(cptr) ? HIDEME : TRUE)); #endif ircstp->is_abad++; *************** *** 153,157 **** #ifdef USE_SYSLOG syslog(LOG_DEBUG, "auth get{sock,peer}name error for %s:%m", ! get_client_name(cptr, TRUE)); #endif authsenderr(cptr); --- 153,157 ---- #ifdef USE_SYSLOG syslog(LOG_DEBUG, "auth get{sock,peer}name error for %s:%m", ! get_client_name(cptr, IsServer(cptr) ? HIDEME : TRUE)); #endif authsenderr(cptr); *************** *** 219,223 **** int len, userncnt; char *userid = "", *s, *reply, *os, *tmp; ! len = recv(cptr->authfd, buf, AUTHBUFLEN, 0); --- 219,223 ---- int len, userncnt; char *userid = "", *s, *reply, *os, *tmp; ! int rejected = 0; len = recv(cptr->authfd, buf, AUTHBUFLEN, 0); *************** *** 270,273 **** --- 270,280 ---- s++; + /* hack to reject pidentd encryption */ + if (strlen(s) == 34) + { + rejected = 1; + break; + } + userid = tmp = usern; /* s is the pointer to the beginning of the userid field */ *************** *** 296,305 **** ClearAuth(cptr); ! if (!*userid) { ircstp->is_abad++; strcpy(cptr->username, "unknown"); #ifdef SHOW_HEADERS ! sendto_one(cptr, REPORT_FAIL_ID); #endif return; --- 303,312 ---- ClearAuth(cptr); ! if (rejected || !*userid) { ircstp->is_abad++; strcpy(cptr->username, "unknown"); #ifdef SHOW_HEADERS ! sendto_one(cptr, rejected ? REPORT_REJECT_ID : REPORT_FAIL_ID); #endif return; |