· 9 years ago · May 07, 2017, 10:44 AM
1Index: server.cpp
2===================================================================
3--- server.cpp (revision 3382)
4+++ server.cpp (working copy)
5@@ -101,11 +101,13 @@
6 char *user = USER;
7 char *password = PASSWORD;
8 char *database = DATABASE;
9+ time_t lastupdate;
10
11 MYSQL *conn;
12 MYSQL_RES *res;
13 MYSQL_ROW row;
14 int mysqlconnected = 0;
15+
16 void MySQL_Conn(void) {
17 if(mysqlconnected != 1) {
18 char *server = HOSTNAME;
19@@ -133,25 +135,53 @@
20 }
21 }
22
23+void MySQL_Stats_Update(void) {
24+
25+ MySQL_Conn();
26+ time_t current_time;
27+ current_time = time (NULL);
28+ char copyquery[500];
29+
30+ if(lastupdate <= (current_time-(60*5))) {
31+ if(mysql_query(conn, "CREATE TEMPORARY TABLE IF NOT EXISTS ms_core_temp (`server_readds` int(11) NOT NULL default '0', `server_unique` bigint(20) NOT NULL default '0', `server_removals` int(11) NOT NULL default '0', `server_auto` int(11) NOT NULL default '0', `server_list` int(11) NOT NULL default '0', `server_connections` int(11) NOT NULL default '0', `server_bad` int(11) NOT NULL default '0')")) {
32+ if(mysql_query(conn, "SELECT * FROM ms_core_temp LIMIT 1")) {
33+ res = mysql_store_result(conn);
34+ sprintf(copyquery, "UPDATE `ms_core` SET `server_readds` = server_readds+%s, `server_unique` = server_unique+%s, `server_removals` = server_removals+%s, `server_auto` = server_auto+%s, `server_list` = server_list+%s, `server_connections` = server_connections+%s, `server_bad` = server_bad+%s LIMIT 1", row[0], row[1], row[2], row[3], row[4], row[5], row[6]);
35+ if(mysql_query(conn, copyquery)) {
36+ logPrintf(logfile, "Copied the data from the temporary table successfully!");
37+ lastupdate = time (NULL);
38+ } else {
39+ logPrintf(logfile, "MYSQL ERROR: %s\n", mysql_error(conn));
40+ }
41+ } else {
42+ logPrintf(logfile, "MYSQL ERROR: %s\n", mysql_error(conn));
43+ }
44+ } else {
45+ logPrintf(logfile, "MYSQL ERROR: %s\n", mysql_error(conn));
46+ }
47+ }
48+}
49+
50 void MySQL_Stats(int type) {
51 char *statsquery = "";
52 char timequery[500];
53 time_t timestamp;
54 timestamp = time (NULL);
55+ MySQL_Stats_Update();
56 if(type == 1)
57- statsquery = "UPDATE `ms_core` SET `server_list` = server_list+1 LIMIT 1";
58+ statsquery = "UPDATE `ms_core_temp` SET `server_list` = server_list+1 LIMIT 1";
59 else if(type == 2)
60- statsquery = "UPDATE `ms_core` SET `server_unique` = server_unique+1 LIMIT 1";
61+ statsquery = "UPDATE `ms_core_temp` SET `server_unique` = server_unique+1 LIMIT 1";
62 else if(type == 3)
63- statsquery = "UPDATE `ms_core` SET `server_bad` = server_bad+1 LIMIT 1";
64+ statsquery = "UPDATE `ms_core_temp` SET `server_bad` = server_bad+1 LIMIT 1";
65 else if(type == 4)
66- statsquery = "UPDATE `ms_core` SET `server_removals` = server_removals+1 LIMIT 1";
67+ statsquery = "UPDATE `ms_core_temp` SET `server_removals` = server_removals+1 LIMIT 1";
68 else if(type == 5)
69- statsquery = "UPDATE `ms_core` SET `server_auto` = server_auto+1 LIMIT 1";
70+ statsquery = "UPDATE `ms_core_temp` SET `server_auto` = server_auto+1 LIMIT 1";
71 else if(type == 6)
72- statsquery = "UPDATE `ms_core` SET `server_connections` = server_connections+1 LIMIT 1";
73+ statsquery = "UPDATE `ms_core_temp` SET `server_connections` = server_connections+1 LIMIT 1";
74 else if(type == 7)
75- statsquery = "UPDATE `ms_core` SET `server_readds` = server_readds+1 LIMIT 1";
76+ statsquery = "UPDATE `ms_core_temp` SET `server_readds` = server_readds+1 LIMIT 1";
77 else if(type == 8)
78 statsquery = "UPDATE `ms_core` SET `upsince` = '%ld' LIMIT 1";
79
80@@ -197,6 +227,9 @@
81
82 void MySQL_AddServer(char *ip, char *port, char *name, char *version) {
83 char escapedName[255];
84+ char escapedIP[32];
85+ char escapedPort[10];
86+ char escapedVersion[10];
87 char insertquery[5000];
88 char checkquery[500];
89 char updatequery[5000];
90@@ -205,8 +238,11 @@
91 char updatequeryp1[5000] = "UPDATE `ms_servers` SET `name` = '%s', `port` = '%s', `version` = '%s', timestamp = '%ld', upnow = '1' WHERE `ip` = '%s'";
92 MySQL_Conn();
93 mysql_real_escape_string(conn, escapedName, name, strlen(name));
94+ mysql_real_escape_string(conn, escapedIP, name, strlen(ip));
95+ mysql_real_escape_string(conn, escapedPort, name, strlen(port));
96+ mysql_real_escape_string(conn, escapedVersion, name, strlen(version));
97 if(MySQL_CheckBan(ip) == 0) {
98- sprintf(checkquery, checkqueryp1, ip);
99+ sprintf(checkquery, checkqueryp1, escapedIP);
100 time_t timestamp;
101 timestamp = time (NULL);
102 logPrintf(logfile, "Checking for existing servers in table with the same IP...\n");
103@@ -219,7 +255,7 @@
104 if(mysql_num_rows(res) < 1) {
105 mysql_free_result(res);
106 logPrintf(logfile, "Adding the temporary server: %s:%s || Name: %s || Version: %s || Time: %ld\n", ip, port, name, version, timestamp);
107- sprintf(insertquery, queryp1, escapedName, ip, port, version, timestamp);
108+ sprintf(insertquery, queryp1, escapedName, escapedIP, escapedPort, escapedVersion, timestamp);
109 logPrintf(logfile, "Executing MySQL Query: %s\n", insertquery);
110 if(mysql_query(conn, insertquery)) {
111 logPrintf(logfile, "MYSQL ERROR: %s\n", mysql_error(conn));
112@@ -231,7 +267,7 @@
113 mysql_free_result(res);
114 logPrintf(logfile, "Server's IP already exists, so let's just update it instead...\n");
115 logPrintf(logfile, "Updating Server Data for %s\n", ip);
116- sprintf(updatequery, updatequeryp1, escapedName, port, version, timestamp, ip);
117+ sprintf(updatequery, updatequeryp1, escapedName, escapedPort, escapedVersion, timestamp, escapedIP);
118 logPrintf(logfile, "Executing MySQL Query: %s\n", updatequery);
119 if(mysql_query(conn, updatequery)) {
120 logPrintf(logfile, "MYSQL ERROR: %s\n", mysql_error(conn));