From: Gabriel B. <sh...@us...> - 2007-04-10 20:13:17
|
Update of /cvsroot/solidircd/solidircd-stable/src In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7252/src Modified Files: glines.c klines.c m_rwho.c probability.c res.c s_auth.c userban.c Log Message: Bahamut 1.8.4 latest changes part 4 Index: userban.c =================================================================== RCS file: /cvsroot/solidircd/solidircd-stable/src/userban.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** userban.c 25 Jun 2006 21:03:35 -0000 1.12 --- userban.c 10 Apr 2007 20:13:08 -0000 1.13 *************** *** 471,475 **** { uBanEnt *bln; - aClient *acptr; struct userBan *ban; int i; --- 471,474 ---- *************** *** 1595,1598 **** --- 1594,1694 ---- } + /* Ok this needs to be reviewed by Tux with our mods, bahamuts orig code is + + the way bans are done have the changed. 4/9/2007 -Sheik + + void userban_sweep(struct userBan *ban) + { + int loc = (ban->flags & UBAN_LOCAL) ? 1 : 0; + int clientonly = 1; + aClient *acptr; + char *ntext; + int i; + + if (loc) + ntext = LOCAL_BAN_NAME; + else + ntext = NETWORK_BAN_NAME; + + if (ban->flags & UBAN_WILDUSER) + if (ban->flags & (UBAN_IP|UBAN_CIDR4|UBAN_CIDR4BIG)) + clientonly = 0; + + for (i = 0; i <= highest_fd; i++) + { + if (!(acptr = local[i]) || acptr->status < STAT_UNKNOWN) + continue; + + if (clientonly && !IsPerson(acptr)) + continue; + + if (user_match_ban(acptr, ban)) + { + sendto_ops("%s active for %s", ntext, + get_client_name(acptr, FALSE)); + exit_banned_client(acptr, loc, loc ? 'K' : 'A', ban->reason, 1); + i--; + } + } + } + + + + + our old original code + + + void userban_sweep(struct userBan *ban) + { + char rbuf[512]; + aClient *acptr; + char *reason; + char *btext; + char *ntext; + int clientonly = 1; + int i; + + if (ban->flags & UBAN_NETWORK) { + btext = NETWORK_BANNED_NAME; + ntext = NETWORK_BAN_NAME; + } else if (ban->flags & UBAN_GLINE) { + btext = NETWORK_GLINNED_NAME; + ntext = NETWORK_GLINE_NAME; + } else { + btext = LOCAL_BANNED_NAME; + ntext = LOCAL_BAN_NAME; + } + + if (!(reason = ban->reason)) + reason = "<no reason>"; + + + if (ban->flags & UBAN_WILDUSER) + if (ban->flags & (UBAN_IP|UBAN_CIDR4|UBAN_CIDR4BIG)) + clientonly = 0; + + ircsnprintf(rbuf, sizeof(rbuf), "%s: %s", btext, reason); + + for (i = 0; i <= highest_fd; i++) + { + if (!(acptr = local[i]) || acptr->status < STAT_UNKNOWN) + continue; + + if (clientonly && !IsPerson(acptr)) + continue; + + if (user_match_ban(acptr, ban)) + { + sendto_ops("%s active for %s", btext, + get_client_name(acptr, FALSE)); + exit_client(acptr, acptr, &me, rbuf); + i--; + } + } + } + + + */ + /* *************** *** 1601,1611 **** void userban_sweep(struct userBan *ban) { ! char rbuf[512]; aClient *acptr; - char *reason; char *btext; char *ntext; int clientonly = 1; int i; if (ban->flags & UBAN_NETWORK) { --- 1697,1707 ---- void userban_sweep(struct userBan *ban) { ! int loc = (ban->flags & UBAN_LOCAL) ? 1 : 0; aClient *acptr; char *btext; char *ntext; int clientonly = 1; int i; + if (ban->flags & UBAN_NETWORK) { *************** *** 1615,1625 **** btext = NETWORK_GLINNED_NAME; ntext = NETWORK_GLINE_NAME; ! } else { btext = LOCAL_BANNED_NAME; ntext = LOCAL_BAN_NAME; } ! if (!(reason = ban->reason)) ! reason = "<no reason>"; /* if it's purely IP based, dump unregistered and server connections too */ --- 1711,1720 ---- btext = NETWORK_GLINNED_NAME; ntext = NETWORK_GLINE_NAME; ! } else if(loc) { btext = LOCAL_BANNED_NAME; ntext = LOCAL_BAN_NAME; } ! /* if it's purely IP based, dump unregistered and server connections too */ *************** *** 1628,1632 **** clientonly = 0; - ircsnprintf(rbuf, sizeof(rbuf), "%s: %s", btext, reason); for (i = 0; i <= highest_fd; i++) --- 1723,1726 ---- *************** *** 1640,1646 **** if (user_match_ban(acptr, ban)) { ! sendto_ops("%s active for %s", btext, get_client_name(acptr, FALSE)); ! exit_client(acptr, acptr, &me, rbuf); i--; } --- 1734,1741 ---- if (user_match_ban(acptr, ban)) { ! sendto_ops("%s active for %s", ntext, get_client_name(acptr, FALSE)); ! exit_banned_client(acptr, loc, loc ? 'K' : 'A', ban->reason, 1); ! i--; } |