static int hooksregistered = 0;
static void *trojanscan_connect_nick_schedule;
+static void *db_ping_schedule;
+
void _init() {
trojanscan_cmds = newcommandtree();
for (i=0;i<trojanscan_tailpoolsize;i++)
freesstring(trojanscan_tailpool[i]);
+
trojanscan_database_close();
deletecommandfromtree(trojanscan_cmds, "showcommands", &trojanscan_showcommands);
if ((trojanscan_cycletime / trojanscan_maxchans) < 1) {
Error("trojanscan", ERR_FATAL, "Cycletime / maxchans < 1, increase cycletime or decrease maxchans else cycling breaks.");
+ freesstring(dbhost);
+ freesstring(dbuser);
+ freesstring(dbpass);
+ freesstring(db);
+ freesstring(dbport);
return; /* PPA: module failed to load */
}
if (trojanscan_database_connect(dbhost->content, dbuser->content, dbpass->content, db->content, atoi(dbport->content)) < 0) {
Error("trojanscan", ERR_FATAL, "Cannot connect to database host!");
+ freesstring(dbhost);
+ freesstring(dbuser);
+ freesstring(dbpass);
+ freesstring(db);
+ freesstring(dbport);
return; /* PPA: module failed to load */
}
struct trojanscan_worms *trojanscan_find_worm_by_id(int id) {
int i;
for(i=0;i<trojanscan_database.total_worms;i++)
- if ((trojanscan_database.worms[i].id == id))
+ if (trojanscan_database.worms[i].id == id)
return &trojanscan_database.worms[i];
return NULL;
}
va_end(va);
if (cp) {
- sendmessagetochannel(trojanscan_nick, cp, buf);
+ sendmessagetochannel(trojanscan_nick, cp, "%s", buf);
} else {
- sendmessagetouser(trojanscan_nick, np, buf);
+ sendmessagetouser(trojanscan_nick, np, "%s", buf);
}
}
trojanscan_chans[j].watch_clone = NULL;
} else {
for(rp=trojanscan_realchanlist;rp;rp=rp->next)
- if ((rp->clone == &(trojanscan_swarm[i])))
+ if (rp->clone == &(trojanscan_swarm[i]))
rp->donotpart = 1;
}
derefnode(iptree, trojanscan_swarm[i].fakeipnode);
strlcpy(buf, np->realname->name->content, maxsize + 1);
}
+static void db_ping(void *arg) {
+ if (!(trojanscan_database_query("SELECT 1"))) {
+ trojanscan_database_res *res;
+ if ((res = trojanscan_database_store_result(&trojanscan_sql))) {
+ trojanscan_database_free_result(res);
+ }
+ }
+
+ db_ping_schedule = scheduleoneshot(time(NULL) + 60, &db_ping, NULL);
+}
+
void trojanscan_database_close(void) {
+ if(db_ping_schedule)
+ deleteschedule(db_ping_schedule, db_ping, NULL);
+
mysql_close(&trojanscan_sql);
}
mysql_init(&trojanscan_sql);
if (!mysql_real_connect(&trojanscan_sql, dbhost, dbuser, dbpass, db, port, NULL, 0))
return -1;
+
+
+ db_ping_schedule = scheduleoneshot(time(NULL) + 60, &db_ping, NULL);
+
return 0;
}