X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mysql_interface.c;h=fccd58c9edf22714055c09c329e53c6a162aa720;hb=HEAD;hp=c51633a455d264f6610d41aeb2340952b9373a5e;hpb=c00b46344cce7b05d6e0db74359de1971d2d09ec;p=nbtscanner diff --git a/mysql_interface.c b/mysql_interface.c index c51633a..fccd58c 100644 --- a/mysql_interface.c +++ b/mysql_interface.c @@ -23,6 +23,7 @@ */ #include +#include #include #include @@ -53,12 +54,19 @@ void init_mysql(char *host, char *username, char *password) } } -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) { @@ -72,7 +80,7 @@ void delete_record_mysql(char *ip) { 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) { @@ -89,8 +97,12 @@ void print_all_records_mysql() 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"); } @@ -117,12 +129,12 @@ void print_all_records_mysql() /* 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"); }