#include <ctype.h>
#include <strings.h>
-#define TROJANSCAN_VERSION "2.53"
+#define TROJANSCAN_VERSION "2.71"
-#define TROJANSCAN_CLONE_MAX 150
-#define TROJANSCAN_WATCHCLONE_MAX 100
+#define TROJANSCAN_MAX_HOST_GLINE 5
+
+#define TROJANSCAN_CLONE_MAX 75
+#define TROJANSCAN_WATCHCLONE_MAX 75
#define TROJANSCAN_CLONE_TOTAL TROJANSCAN_CLONE_MAX + TROJANSCAN_WATCHCLONE_MAX
#define TROJANSCAN_POOLSIZE 1000
#define TROJANSCAN_MINPOOLSIZE 500 /* 500 */
-#define TROJANSCAN_MINIMUM_HOSTS_BEFORE_POOL 5000 /* 500 */
+#define TROJANSCAN_MINIMUM_HOSTS_BEFORE_POOL 5000 /* 5000 */
#define TROJANSCAN_DEFAULT_MAXCHANS 750
-#define TROJANSCAN_DEFAULT_CYCLETIME 800
+#define TROJANSCAN_DEFAULT_CYCLETIME 1600
#define TROJANSCAN_DEFAULT_MINIMUM_CHANNEL_SIZE 100 /* 100 */
#define TROJANSCAN_NICKCHANGE_ODDS 8
#define TROJANSCAN_INVISIBLE_ODDS 8
-#define TROJANSCAN_DEFAULT_PARTTIME 100
+#define TROJANSCAN_DEFAULT_PARTTIME 150
#define TROJANSCAN_DEFAULT_MAXUSERS 20
#define TROJANSCAN_POOL_REGENERATION 3600
#define TROJANSCAN_HOST_MODE TROJANSCAN_STEAL_HOST
+#define TROJANSCAN_MAX_CLONE_COUNT 5
+
#define TROJANSCAN_CAT "./trojanscan/cat.txt"
-#define TROJANSCAN_CHANNEL "#qnet.sec.trj"
+#define TROJANSCAN_CHANNEL "#qnet.trj"
#define TROJANSCAN_OPERCHANNEL "#twilightzone"
#define TROJANSCAN_URL_PREFIX "http://trojanscan.quakenet.org/?"
#define TROJANSCAN_IPLEN 20
#define TROJANSCAN_VERSION_DETECT "\001VERSION"
-#define TROJANSCAN_CLONE_VERSION_REPLY "mIRC v6.16 Khaled Mardam-Bey"
+#define TROJANSCAN_DEFAULT_VERSION_REPLY "mIRC v6.31 Khaled Mardam-Bey"
typedef struct trojanscan_clones {
int remaining, sitting, index;
nick *clone;
+ patricia_node_t *fakeipnode;
} trojanscan_clones;
typedef struct trojanscan_channels {
typedef struct trojanscan_rejoinlist {
sstring *channel;
- nick *clone;
+ trojanscan_clones *clone;
void *schedule;
struct trojanscan_realchannels *rp;
struct trojanscan_rejoinlist *next;
void trojanscan_handlemessages(nick *target, int messagetype, void **args);
void trojanscan_clonehandlemessages(nick *target, int messagetype, void **args);
void trojanscan_mainchanmsg(char *message, ...);
+void trojanscan_peonchanmsg(char *message, ...);
void trojanscan_reply(nick *target, char *message, ... );
void trojanscan_privmsg_chan_or_nick(channel *cp, nick *np, char *text, ...);
char trojanscan_genchar(int ty);
void trojanscan_gennick(char *ptc, char size);
void trojanscan_genident(char *ptc, char size);
-void trojanscan_genhost(char *ptc, char size);
+void trojanscan_genhost(char *ptc, char size, patricia_node_t **fakeipnode);
int trojanscan_generatepool(void);
void trojanscan_watch_clone_update(struct trojanscan_prechannels *hp, int count);
void trojanscan_repool(void *arg);
-void trojanscan_generatehost(char *buf, int maxsize);
+void trojanscan_generatehost(char *buf, int maxsize, patricia_node_t **fakeipnode);
void trojanscan_generatenick(char *buf, int maxsize);
void trojanscan_generateident(char *buf, int maxsize);
void trojanscan_generaterealname(char *buf, int maxsize);
void *trojanscan_schedule, *trojanscan_connect_schedule;
void *trojanscan_initialschedule, *trojanscan_rehashschedule, *trojanscan_poolschedule, *trojanscan_cloneschedule;
-int trojanscan_minchansize;
+int trojanscan_minchansize, trojanscan_min_hosts;
int trojanscan_swarm_created = 0;
nick *trojanscan_nick;