*/
#include <stdio.h>
+#include <string.h>
#include <stdlib.h>
#include <mysql.h>
}
}
-void add_record_mysql(char *ip, char *hostname, char *fileservername, char *groupname)
+void add_record_mysql(char *ip, char *hostname, char *fileservername, char *groupname,
+ char messenger)
{
char query[256];
+ char hname[256], fsname[256], gname[256];
+
+ mysql_real_escape_string(mysql, hname, hostname, strlen(hostname));
+ mysql_real_escape_string(mysql, fsname, fileservername, strlen(fileservername));
+ mysql_real_escape_string(mysql, gname, groupname, strlen(groupname));
+
snprintf(query, 256,
- "REPLACE INTO nbtscanner.nbtscanner SET ip='%s', hostname='%s', fileservername='%s', groupname='%s';",
- ip, hostname, fileservername, groupname);
+ "REPLACE INTO nbtscanner.nbtscanner SET ip='%s', hostname='%s', fileservername='%s', groupname='%s', active='y', lastactive=now(), messenger='%c';",
+ ip, hname, fsname, gname, messenger);
if (mysql_query(mysql, query) != 0) {
if (verbosity >= 1) {
{
char query[256];
snprintf(query, 256,
- "DELETE FROM nbtscanner.nbtscanner WHERE ip='%s';",
+ "UPDATE nbtscanner.nbtscanner SET ACTIVE='n' WHERE ip='%s';",
ip);
if (mysql_query(mysql, query) != 0) {
unsigned long *lengths;
unsigned int num_fields;
int i;
+ char query[512];
- if (mysql_query(mysql, "SELECT ip,fileservername,groupname,(fileservername <> '-unknown-nbtscanner-') FROM nbtscanner.nbtscanner;") != 0) {
+ snprintf(query, 512, "SELECT ip,(CASE WHEN fileservername='-unknown-nbtscanner-' THEN hostname ELSE fileservername END),groupname,(fileservername <> '-unknown-nbtscanner-') FROM nbtscanner.nbtscanner WHERE active='y' OR lastactive>DATE_SUB(NOW(), INTERVAL %d SECOND);",
+ ghost_lifetime);
+
+ if (mysql_query(mysql, query) != 0) {
if (verbosity >= 1) {
fprintf(stderr, "mysql_query('SELECT ip'...) failed\n");
}
/* strip away CR/LFs */
for (j = 0; j < lengths[i]; j++) {
- if (row[i][j] == 0 || row[i][j] == 10 || row[i][j] == 13) {
+ if (row[i][j] == 0 || row[i][j] == 10 || row[i][j] == 13 || row[i][j] == ',') {
row[i][j] = '?';
}
}
printf("%.*s", (int) lengths[i], row[i] ? row[i] : "NULL");
- if (i != num_fields - 1) putchar(0);
+ if (i != num_fields - 1) printf(",");
}
printf("\r\n");
}