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 */
}
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);
}
}
np->clone->ipnode = np->fakeipnode;
- ret = nickbanned(np->clone, cp);
+ ret = nickbanned(np->clone, cp, 0);
np->clone->ipnode = realipnode;
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;
}