diff --git a/www/cgi-bin/c_mysql_ip_mac.c b/www/cgi-bin/c_mysql_ip_mac.c new file mode 100644 index 0000000..59f494f --- /dev/null +++ b/www/cgi-bin/c_mysql_ip_mac.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main() { + MYSQL *conn; + MYSQL_RES *res; + MYSQL_ROW row; + + conn = mysql_init(NULL); + if (conn == NULL) { + fprintf(stderr, "mysql_init() failed\n"); + exit(1); + } + + if (mysql_real_connect(conn, "localhost", "root", "root", "router", 3306, + NULL, 0) == NULL) { + fprintf(stderr, "mysql_real_connect() failed\n"); + mysql_close(conn); + exit(1); + } + + if (mysql_query(conn, "SELECT * FROM ip_mac")) { + fprintf(stderr, "SELECT query failed. Error: %s\n", mysql_error(conn)); + mysql_close(conn); + exit(1); + } + + res = mysql_store_result(conn); + if (res == NULL) { + fprintf(stderr, "mysql_store_result() failed\n"); + mysql_close(conn); + exit(1); + } + + cJSON *result_array = cJSON_CreateArray(); + + while ((row = mysql_fetch_row(res))) { + cJSON *item = cJSON_CreateObject(); + cJSON_AddStringToObject(item, "id", row[0]); + cJSON_AddStringToObject(item, "ip", row[1]); + cJSON_AddStringToObject(item, "mac", row[2]); + cJSON_AddItemToArray(result_array, item); + } + + char *result_json_string = cJSON_Print(result_array); + + printf("Content-Type: application/json;charset=utf-8\r\n"); + printf("\r\n"); + printf("%s", result_json_string); + + free(result_json_string); + cJSON_Delete(result_array); + mysql_free_result(res); + mysql_close(conn); + + return 0; +}