/* * Kangaroo Punch MultiPlayer Game Server Mark II * Copyright (C) 2020-2021 Scott Duensing * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "rest.h" #include "login.h" void clientApiLogin(ClientThreadT *client, PacketDecodeDataT *data) { char *packetData = NULL; char *user = NULL; char *pass = NULL; PacketEncodeDataT encoded = { 0 }; json_object *response = NULL; uint8_t result = 0; char *string = NULL; char *buffer = NULL; uint16_t length = 0; packetContentUnpack(data->data, "ss", &user, &pass); response = restRequest("USER_LOGIN", "ss", "user", user, "pass", pass ); DEL(user); DEL(pass); if (response) { string = (char *)json_object_get_string(json_object_object_get(response, "result")); result = (string[0] == 't' || string[0] == 'T') ? 1 : 0; buffer = (char *)json_object_get_string(json_object_object_get(response, "reason")); } else { // Something bad happened. result = 0; buffer = "Unknown error. Sorry."; } logWrite("Login: %d %s\r\n", result, buffer); packetData = packetContentPack(&length, "is", result, buffer); if (response) restRelease(response); // Build packet. encoded.control = PACKET_CONTROL_DAT; encoded.packetType = PACKET_TYPE_LOGIN_RESULT; encoded.channel = data->channel; encoded.encrypt = 0; packetEncode(client->packetThreadData, &encoded, packetData, length); // Send it. packetSend(client->packetThreadData, &encoded); DEL(packetData); }