/* PPA: unlikely to be infinite */
do {
- if ((loops++ < 10) && trojanscan_hostmode) {
+ c_nick[0] = '\0';
+ if (!loops && trojanscan_hostmode) /* only have one go at this */
trojanscan_generatenick(c_nick, NICKLEN);
- } else {
+ if(!c_nick[0])
trojanscan_gennick(c_nick, trojanscan_minmaxrand(7, TROJANSCAN_MMIN(13, NICKLEN)));
- }
- } while (c_nick && (getnickbynick(c_nick) != NULL));
+ loops++;
+ } while ((getnickbynick(c_nick) != NULL));
trojanscan_generateident(c_ident, USERLEN);
- if(!c_ident)
+ if(!c_ident[0])
trojanscan_genident(c_ident, trojanscan_minmaxrand(4, TROJANSCAN_MMIN(8, USERLEN)));
if(trojanscan_hostmode) {
trojanscan_generatehost(c_host, HOSTLEN);
- if(!c_host) {
- trojanscan_genhost(c_host, HOSTLEN);
- }
+ if(!c_host[0])
+ trojanscan_genhost(c_host, HOSTLEN);
} else {
trojanscan_genhost(c_host, HOSTLEN);
}
trojanscan_generaterealname(c_real, REALLEN);
- if(!c_real)
+ if(!c_real[0])
trojanscan_genreal(c_real, trojanscan_minmaxrand(15, TROJANSCAN_MMIN(50, REALLEN)));
trojanscan_swarm[i].clone = registerlocaluser(c_nick, c_ident, c_host, c_real, NULL, modes, &trojanscan_clonehandlemessages);
trojanscan_database.glines++;
irc_send("%s GL * +%s %d %d :You (%s!%s@%s) are infected with a worm (%s), see %s%d for details - banned for %d hours\r\n", mynumeric->content, glinemask, glinetime * 3600, getnettime(), sender->nick, sender->ident, sender->host->name->content, worm->name->content, TROJANSCAN_URL_PREFIX, worm->id, glinetime);
- //trojanscan_mainchanmsg("%s GL * +%s %d :You are infected with a worm (%s), see %s%d for details - banned for %d hours\r\n", mynumeric->content, glinemask, 3600 * TROJANSCAN_FIRST_OFFENSE * frequency, worm->name->content, TROJANSCAN_URL_PREFIX, worm->id, TROJANSCAN_FIRST_OFFENSE * frequency);
trojanscan_mainchanmsg("g: *!%s t: %c u: %s!%s@%s%s%s c: %d w: %s%s f: %d", glinemask, mt, sender->nick, sender->ident, sender->host->name->content, mt=='N'||mt=='M'?" #: ":"", mt=='N'||mt=='M'?chp->index->name->content:"", usercount, worm->name->content, worm->epidemic?"(E)":"", frequency);
}
}
nick *trojanscan_selectuser(void) {
- int target = trojanscan_minmaxrand(0, 500), loops = 50, j;
+ int target = trojanscan_minmaxrand(0, 500), loops = 150, j;
nick *np;
do {
for (j=trojanscan_minmaxrand(0, NICKHASHSIZE-1);j<NICKHASHSIZE;j++)
}
void trojanscan_generatenick(char *buf, int maxsize) {
- int bits = trojanscan_minmaxrand(2, 3), loops = 0, wanttocopy, len = 0, i, d = 0;
+ int bits = trojanscan_minmaxrand(2, 3), loops = 0, wanttocopy, len = 0, i, d = 0, newmaxsize = maxsize - trojanscan_minmaxrand(0, 7);
nick *np;
+
+ if(newmaxsize > 2)
+ maxsize = newmaxsize;
+
do {
np = trojanscan_selectuser();
if(np) {
- wanttocopy = trojanscan_minmaxrand(1, (strlen(np->nick) / 2) + 2);
+ wanttocopy = trojanscan_minmaxrand(1, (strlen(np->nick) / 2) + 3);
for(i=0;((i<wanttocopy) && (len<maxsize));i++)
buf[len++] = np->nick[i];
if(++d > bits) {
#include <ctype.h>
#include <strings.h>
-#define TROJANSCAN_VERSION "2.51"
+#define TROJANSCAN_VERSION "2.52"
#define TROJANSCAN_CLONE_MAX 300 /* 80 */
#define TROJANSCAN_WATCHCLONE_MAX 75
#define TROJANSCAN_CLONE_TOTAL TROJANSCAN_CLONE_MAX + TROJANSCAN_WATCHCLONE_MAX
#define TROJANSCAN_POOLSIZE 1000
-#define TROJANSCAN_MINPOOLSIZE 100
+#define TROJANSCAN_MINPOOLSIZE 1 /* 100 */
-#define TROJANSCAN_MINIMUM_HOSTS_BEFORE_POOL 500
+#define TROJANSCAN_MINIMUM_HOSTS_BEFORE_POOL 1 /* 500 */
#define TROJANSCAN_DEFAULT_MAXCHANS 500
#define TROJANSCAN_DEFAULT_CYCLETIME 600
-#define TROJANSCAN_DEFAULT_MINIMUM_CHANNEL_SIZE 100
+#define TROJANSCAN_DEFAULT_MINIMUM_CHANNEL_SIZE 1 /* 100 */
#define TROJANSCAN_NICKCHANGE_ODDS 8
#define TROJANSCAN_INVISIBLE_ODDS 8