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