-pero que...

This commit is contained in:
2022-11-15 17:23:54 +01:00
parent c93c0cfb52
commit 06c6fea9f2

View File

@@ -16,23 +16,32 @@
namespace jscore { namespace jscore {
using namespace std;
struct user { struct user {
std::string name; string name;
int points; int points;
}; };
std::vector<user> score; vector<user> score;
#define bzero(b,len) (memset((b), '\0', (len)), (void) 0) #define bzero(b,len) (memset((b), '\0', (len)), (void) 0)
using namespace std;
int sock; int sock;
struct sockaddr_in client; struct sockaddr_in client;
int PORT = 9911; int PORT = 9911;
const char *HOST = "jaildoctor.duckdns.org"; const char *HOST = "jaildoctor.duckdns.org";
#ifdef WIN32 #ifdef WIN32
WSADATA WsaData; WSADATA WsaData;
#endif #endif
std::string sendRequest(const std::string request) { bool jscore_error = false;
string error_message;
void setErrorMessage(string message) {
jscore_error = true;
error_message = message;
}
string sendRequest(const string request) {
#ifdef WIN32 #ifdef WIN32
int ret = WSAStartup(0x101,&WsaData); int ret = WSAStartup(0x101,&WsaData);
if (ret != 0) return 0; if (ret != 0) return 0;
@@ -40,7 +49,7 @@ namespace jscore {
struct hostent * host = gethostbyname(HOST); struct hostent * host = gethostbyname(HOST);
if ( (host == NULL) || (host->h_addr == NULL) ) { if ( (host == NULL) || (host->h_addr == NULL) ) {
printf("Error retrieving DNS information.\n"); setErrorMessage("Error retrieving DNS information.\n");
return ""; return "";
} }
@@ -52,19 +61,19 @@ namespace jscore {
sock = socket(AF_INET, SOCK_STREAM, 0); sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) { if (sock < 0) {
printf("Error creating socket.\n"); setErrorMessage("Error creating socket.\n");
return ""; return "";
} }
if ( connect(sock, (struct sockaddr *)&client, sizeof(client)) < 0 ) { if ( connect(sock, (struct sockaddr *)&client, sizeof(client)) < 0 ) {
close(sock); close(sock);
printf("Could not connect\n"); setErrorMessage("Could not connect\n");
return ""; return "";
} }
std::string r = request + " HTTP/1.1\r\nHost: "+HOST+"\r\nConnection: close\r\n\r\n\r\n"; string r = request + " HTTP/1.1\r\nHost: "+HOST+"\r\nConnection: close\r\n\r\n\r\n";
if (send(sock, r.c_str(), r.length(), 0) != (int)r.length()) { if (send(sock, r.c_str(), r.length(), 0) != (int)r.length()) {
printf("Error sending request.\n"); setErrorMessage("Error sending request.\n");
return ""; return "";
} }
@@ -87,9 +96,10 @@ namespace jscore {
return buffer; return buffer;
} }
const bool initOnlineScore(std::string game) { const bool initOnlineScore(string game) {
std::string strbuff = sendRequest("GET /score-list.php?game=" + game); string strbuff = sendRequest("GET /score-list.php?game=" + game);
if (jscore_error) return jscore_error;
user u; user u;
char buffer[1024]; char buffer[1024];
strcpy(buffer, strbuff.c_str()); strcpy(buffer, strbuff.c_str());
@@ -103,28 +113,30 @@ namespace jscore {
*p=0; u.points = atoi(str); p++; str=p; *p=0; u.points = atoi(str); p++; str=p;
score.push_back(u); score.push_back(u);
} }
return jscore_error;
} }
const int getNumUsers() { const int getNumUsers() {
return score.size(); return score.size();
} }
std::string getUserName(const int index) { string getUserName(const int index) {
return score[index].name; return score[index].name;
} }
const int getPoints(const int index) { const int getPoints(const int index) {
return score[index].points; return score[index].points;
} }
const bool updateUserPoints(std::string game, std::string user, const int points) { const bool updateUserPoints(string game, string user, const int points) {
std::string strbuff = sendRequest("GET /score-update.php?game=" + game + "&user=" + user + "&points=" + to_string(points)); string strbuff = sendRequest("GET /score-update.php?game=" + game + "&user=" + user + "&points=" + to_string(points));
initOnlineScore(game); initOnlineScore(game);
return jscore_error;
} }
std::string getUserData(std::string game, std::string user) { string getUserData(string game, string user) {
return sendRequest("GET /getuserdata.php?game=" + game + "&user=" + user); return sendRequest("GET /getuserdata.php?game=" + game + "&user=" + user);
} }
void setUserData(std::string game, std::string user, std::string data) { void setUserData(string game, string user, string data) {
sendRequest("GET /setuserdata.php?game=" + game + "&user=" + user + "&data=" + data); sendRequest("GET /setuserdata.php?game=" + game + "&user=" + user + "&data=" + data);
} }