X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mysql_interface.c;h=8baa345aae39265ea76494a0f50c7c690b6a9225;hb=ab5d8a35c1c111f64137f76939c68365cf4d22fb;hp=c51633a455d264f6610d41aeb2340952b9373a5e;hpb=c00b46344cce7b05d6e0db74359de1971d2d09ec;p=nbtscanner diff --git a/mysql_interface.c b/mysql_interface.c index c51633a..8baa345 100644 --- a/mysql_interface.c +++ b/mysql_interface.c @@ -23,6 +23,7 @@ */ #include +#include #include #include @@ -56,9 +57,16 @@ void init_mysql(char *host, char *username, char *password) void add_record_mysql(char *ip, char *hostname, char *fileservername, char *groupname) { char query[256]; + char hname[256], fsname[256], gname[256]; + int i; + + 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); + ip, hname, fsname, gname); if (mysql_query(mysql, query) != 0) { if (verbosity >= 1) { @@ -90,7 +98,7 @@ void print_all_records_mysql() unsigned int num_fields; int i; - if (mysql_query(mysql, "SELECT ip,fileservername,groupname,(fileservername <> '-unknown-nbtscanner-') FROM nbtscanner.nbtscanner;") != 0) { + if (mysql_query(mysql, "SELECT ip,(CASE WHEN fileservername='-unknown-nbtscanner-' THEN hostname ELSE fileservername END),groupname,(fileservername <> '-unknown-nbtscanner-') FROM nbtscanner.nbtscanner;") != 0) { if (verbosity >= 1) { fprintf(stderr, "mysql_query('SELECT ip'...) failed\n"); } @@ -117,12 +125,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"); }