From b2f283fff2ab3a02c1cd272c4e84865dc019c744 Mon Sep 17 00:00:00 2001 From: AfonsoCMSousa Date: Wed, 12 Nov 2025 14:33:18 +0000 Subject: [PATCH] neovim btw --- PlayerTracker | Bin 337664 -> 403056 bytes include/file.cpp | 56 +++ include/file.hpp | 18 + include/net.cpp | 0 include/net.hpp | 33 ++ include/server_structs.h | 12 + source/main.cpp | 801 +-------------------------------------- 7 files changed, 128 insertions(+), 792 deletions(-) create mode 100644 include/file.cpp create mode 100644 include/file.hpp create mode 100644 include/net.cpp create mode 100644 include/net.hpp diff --git a/PlayerTracker b/PlayerTracker index b4bf7806fcac4a4c513b9ceae6f438dc69f7dcdc..c06afbe1751ac248399d620dec59f2bfd61515c5 100755 GIT binary patch literal 403056 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 rM$JbpFVv6vw5{!WOLe`ax*i^V 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

3u8&V=;s7kPrXD@s+rYQs&Ez>!=pkT(Q8qr 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 diff --git a/include/file.cpp b/include/file.cpp new file mode 100644 index 0000000..a40f1ce --- /dev/null +++ b/include/file.cpp @@ -0,0 +1,56 @@ +#include "file.hpp" + +vector read_file(const char *filePath) { + ifstream file(filePath); + if (!file.is_open()) { + return vector(); + } + + vector lines; + string line; + + while (getline(file, line)) { + lines.push_back(line); + } + + file.close(); + return lines; +} + +app_info parce_args(int argc, char *argv[]) { + // example + // ./player_tracker 130 12000 13000 + // -id -serverin -serverout + app_info __processed_info; + + if (argc <= 1) { + throw invalid_argument("No argc provided"); + } + + __processed_info.app_id = (u_int16_t)atoi(argv[1]); + __processed_info.app_port_in = (u_int16_t)atoi(argv[2]); + __processed_info.app_port_out = (u_int16_t)atoi(argv[3]); + + // Parce .env + vector __read_lines = read_file("./.env"); + map __env_args; + + for (size_t i = 0; i < __read_lines.size() - 1; i++) { + string token = __read_lines[i].substr(0, __read_lines[i].find(" = ")); + + __read_lines[i].erase(0, __read_lines[i].find(" = ") + 3); + + __env_args[token] = __read_lines[i]; + } + + // DEBUG + // for (const auto& [key, value] : __env_args) { + // std::cout << '[' << key << "] = " << value << "; "; + // } + + __processed_info.app_api_socket_path = __env_args["API_SOCKET_PATH"].c_str(); + __processed_info.max_players = (u_int16_t)atoi(__env_args["MAX_PLAYERS"].c_str()); + __processed_info.app_server_out_ip = __env_args["SERVER_OUT_IP"].c_str(); + + return __processed_info; +} diff --git a/include/file.hpp b/include/file.hpp new file mode 100644 index 0000000..80b0a25 --- /dev/null +++ b/include/file.hpp @@ -0,0 +1,18 @@ +#ifndef FILE_H +#define FILE_H + +#include +#include +#include +#include +#include +#include + +#include "server_structs.h" + +using namespace std; + +vector read_file(const char *filePath); +app_info parce_args(int argc, char *argv[]); + +#endif diff --git a/include/net.cpp b/include/net.cpp new file mode 100644 index 0000000..e69de29 diff --git a/include/net.hpp b/include/net.hpp new file mode 100644 index 0000000..abe5691 --- /dev/null +++ b/include/net.hpp @@ -0,0 +1,33 @@ +#ifndef NET_HPP +#define NET_HPP + +#include +#include +#include +#include +#include +#include + +#include "server_structs.h" + +using namespace std; + +class Socket { + private: + // Socket file descriptor + int sock; + struct sockaddr_in server_addr; + // Socket Data + api_packet packet_data; + + + public: + Socket(); + ~Socket(); + + void connect(const char *ip, uint16_t port); + void send(); + void send(const api_packet &data); +}; + +#endif // NET_HPP diff --git a/include/server_structs.h b/include/server_structs.h index 2d175af..5e8ac4e 100644 --- a/include/server_structs.h +++ b/include/server_structs.h @@ -4,6 +4,18 @@ #include #include +typedef struct app_info { + // From args + u_int16_t app_id; + u_int16_t app_port_in; + u_int16_t app_port_out; + + // From .env + const char *app_api_socket_path; + u_int16_t max_players; + const char *app_server_out_ip; +} __attribute__((packed)) app_info; + typedef struct handshake { // [not used in the current Remote Telemtry version by AC] // In future versions it will identify the platform type of the client. diff --git a/source/main.cpp b/source/main.cpp index 6aba801..a4523ff 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,801 +1,18 @@ -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include -#include "parcer.h" -#include "server_structs.h" -#include "socket.h" +#include "file.hpp" // for parce_args +#include "net.hpp" // for socket operations -#define DEBUG_CAR_INFO 1 - -const char *API_SOCKET_PATH = "/tmp/ACplayer_socket"; - -const int MAX_PLAYERS = 64; -const char *SERVER_OUT_IP = "127.0.0.1"; - -u_int8_t SERVER_ID; -api_packet current_packet; -u_int8_t apiSent = 0; - -// INFO: This assumes Players pointer to be the same size of MAX_PLAYERS -void update_api_packet(trackAtributes trackInfo, carAtributes *players) { - current_packet.tracker_id = SERVER_ID; - - // Update track info - current_packet.track_info.protocol_version = trackInfo.protocol_version; - current_packet.track_info.session_index = trackInfo.session_index; - current_packet.track_info.current_session_index = trackInfo.current_session_index; - current_packet.track_info.session_count = trackInfo.session_count; - current_packet.track_info.session_type = trackInfo.session_type; - strncpy(current_packet.track_info.server_name, trackInfo.server_name, sizeof(current_packet.track_info.server_name) - 1); - strncpy(current_packet.track_info.track, trackInfo.track, sizeof(current_packet.track_info.track) - 1); - strncpy(current_packet.track_info.track_config, trackInfo.track_config, sizeof(current_packet.track_info.track_config) - 1); - strncpy(current_packet.track_info.session_name, trackInfo.session_name, sizeof(current_packet.track_info.session_name) - 1); - current_packet.track_info.typ = trackInfo.typ; - current_packet.track_info.time = trackInfo.time; - current_packet.track_info.laps = trackInfo.laps; - current_packet.track_info.wait_time = trackInfo.wait_time; - current_packet.track_info.ambient_temp = trackInfo.ambient_temp; - current_packet.track_info.road_temp = trackInfo.road_temp; - strncpy(current_packet.track_info.weather_graphics, trackInfo.weather_graphics, sizeof(current_packet.track_info.weather_graphics) - 1); - current_packet.track_info.elapsed_ms = trackInfo.elapsed_ms; - - // Update car INFO - for (int i = 0; i < MAX_PLAYERS; i++) { - current_packet.cars[i].isConnected = players[i].isConnected; - current_packet.cars[i].isLoading = players[i].isLoading; - - strncpy(current_packet.cars[i].car_model, players[i].car_model, sizeof(current_packet.cars[i].car_model) - 1); - strncpy(current_packet.cars[i].driver_GUID, players[i].driver_GUID, sizeof(current_packet.cars[i].driver_GUID) - 1); - strncpy(current_packet.cars[i].car_skin, players[i].car_skin, sizeof(current_packet.cars[i].car_skin) - 1); - strncpy(current_packet.cars[i].driver_name, players[i].driver_name, sizeof(current_packet.cars[i].driver_name) - 1); - strncpy(current_packet.cars[i].driver_team, players[i].driver_team, sizeof(current_packet.cars[i].driver_team) - 1); - - current_packet.cars[i].carID = players[i].carID; - - current_packet.cars[i].position = players[i].position; - current_packet.cars[i].velocity = players[i].velocity; - - current_packet.cars[i].carGear = players[i].carGear; - current_packet.cars[i].carRPM = players[i].carRPM; - current_packet.cars[i].lap_time = players[i].lap_time; - current_packet.cars[i].cuts = players[i].cuts; - current_packet.cars[i].total_cuts = players[i].total_cuts; - current_packet.cars[i].total_cuts_alltime = players[i].total_cuts_alltime; - - current_packet.cars[i].total_laps_completed = players[i].total_laps_completed; - current_packet.cars[i].contacts = players[i].contacts; - current_packet.cars[i].total_contacts = players[i].total_contacts; - - current_packet.cars[i].normalizedSplinePos = players[i].normalizedSplinePos; - } - - apiSent = 0; -} - -void *send_to_api_socket(void *arg) { - int sock_fd; - struct sockaddr_un addr; - - addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, API_SOCKET_PATH); - - // --- Connect loop --- - while (1) { - sock_fd = socket(AF_UNIX, SOCK_STREAM, 0); - if (sock_fd < 0) { - usleep(500000); - continue; - } - - if (connect(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - close(sock_fd); - usleep(500000); - continue; - } - break; // connected - } - - printf("[+] Connected to API socket at %s\n", API_SOCKET_PATH); - - // Handshake - api_packet handshake; - - handshake.tracker_id = 65; - send(sock_fd, &handshake, sizeof(api_packet), MSG_NOSIGNAL); - - while (1) { - if (current_packet.tracker_id == (u_int8_t)-1) { - usleep(10000); - apiSent = 0; - continue; - } - - if (apiSent) { - usleep(10000); - continue; - } - - ssize_t sent_bytes = send(sock_fd, ¤t_packet, sizeof(api_packet), MSG_NOSIGNAL); - if (sent_bytes < 0) { - fprintf(stderr, "[!] Failed to send data to API socket, reconnecting...\n"); - close(sock_fd); - - // Reconnect loop - while (1) { - sock_fd = socket(AF_UNIX, SOCK_STREAM, 0); - if (sock_fd < 0) { - usleep(500000); - continue; - } - - if (connect(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - close(sock_fd); - usleep(500000); - continue; - } - break; // connected - } - - printf("[+] Reconnected to API socket at %s\n", API_SOCKET_PATH); - } - - apiSent = 1; - - usleep(10000); // 10ms - } - - return NULL; -} - -void init_carupdate(carAtributes *car) { - car->isConnected = 0; - car->isLoading = 0; - - car->car_model = (char *)malloc(64); - car->driver_GUID = (char *)malloc(64); - car->car_skin = (char *)malloc(64); - car->driver_name = (char *)malloc(64); - car->driver_team = (char *)malloc(64); - - strcpy(car->car_model, ""); - strcpy(car->driver_GUID, ""); - strcpy(car->car_skin, ""); - strcpy(car->driver_name, ""); - strcpy(car->driver_team, ""); - - car->carID = 0; - - car->position.x = 0.0f; - car->position.y = 0.0f; - car->position.z = 0.0f; - - car->velocity.x = 0.0f; - car->velocity.y = 0.0f; - car->velocity.z = 0.0f; - - car->carGear = 0; - car->carRPM = 0; - car->lap_time = 0; - car->cuts = 0; - car->total_cuts = 0; - car->total_cuts_alltime = 0; // TODO: SQL querry to get total cuts of all time; TAG:1 - - car->total_laps_completed = 0; - car->contacts = 0; - car->total_contacts = 0; // TODO: SQL querry to get total contacts of all time; TAG:2 - - car->normalizedSplinePos = 0.0f; -} +using namespace std; int main(int argc, char *argv[]) { + app_info app = parce_args(argc, argv); - // Parse command-line arguments - if (argc != 4) { - fprintf(stderr, "Usage: %s \n", argv[0]); - fprintf(stderr, "Example: %s 131 11001 12001\n", argv[0]); - return EXIT_FAILURE; - } - SERVER_ID = (u_int8_t)atoi(argv[1]); - u_int16_t SERVER_IN_PORT = (u_int16_t)atoi(argv[2]); - u_int16_t SERVER_OUT_PORT = (u_int16_t)atoi(argv[3]); - - printf("[+] Starting server...\n"); - printf("[+] Server listening on port %d\n", SERVER_IN_PORT); - printf("[+] Server sending to %s:%d\n\n", SERVER_OUT_IP, SERVER_OUT_PORT); - - current_packet.tracker_id = (u_int8_t)-1; // Mark as uninitialized - - int send_sock_fd = connect_udp_socket(SERVER_OUT_IP, SERVER_IN_PORT); // SEND requests to Server - int recv_sock_fd = create_bound_udp_socket("0.0.0.0", SERVER_OUT_PORT); // LISTEN to server updates - - if (send_sock_fd < 0 || recv_sock_fd < 0) { - fprintf(stderr, "[!] Failed to create sockets (%d)(%d)\n", send_sock_fd, recv_sock_fd); - return EXIT_FAILURE; - } - - unsigned long offset = 0; - int ok = 1; - char buffer[1024]; - - // Start thread to send data to API socket - pthread_t api_thread; - if (pthread_create(&api_thread, NULL, send_to_api_socket, NULL) != 0) { - fprintf(stderr, "[!] Failed to create API socket thread\n"); - return EXIT_FAILURE; - } - - pthread_detach(api_thread); - - trackAtributes trackInfo; - carAtributes players[MAX_PLAYERS]; - - current_packet.connected_players = 0; - carAtributes update; - - // Basically a contrutor for carAtributes (because all strings in carAtributes are pointers) - for (int i = 0; i < MAX_PLAYERS; i++) { - init_carupdate(&players[i]); - } - - init_carupdate(&update); - - trackInfo.server_name = (char *)malloc(128); - trackInfo.track = (char *)malloc(128); - trackInfo.track_config = (char *)malloc(64); - trackInfo.weather_graphics = (char *)malloc(64); - trackInfo.session_name = (char *)malloc(64); - - char message[124] = {0}; // just a place to put info messages from the server itself - - printf("\n"); - while (1) { - offset = 0; - u_int8_t str_len_8 = 0; - memset(buffer, 0, sizeof(buffer)); - - // FIX: Its not garanted to receive a full packet in one recvfrom call, but the error -1 is not handled by a unsigned size_t - size_t recv_bytes = (size_t)recvfrom(recv_sock_fd, buffer, sizeof(buffer), 0, NULL, NULL); - - // Convert buffer to utf-8 string and print it -#if DEBUG_CAR_INFO - printf("[+] Received %zd bytes from client\n", recv_bytes); -#endif - - current_packet.message_type = (u_char)buffer[0]; - // The first byte of the messages is always an ACSP_MessageType - switch ((u_char)buffer[0]) { - // ============================ - // SERVER → CLIENT MESSAGES - // ============================ - case ACSP_SESSION_INFO: - printf("[+] Message Type: ACSP_SESSION_INFO\n"); - goto skip_message; - case ACSP_NEW_SESSION: // DONE: - printf("[+] Message Type: ACSP_NEW_SESSION\n"); - skip_message: - offset = 1; // Reset offset to 1 to read after message types - - trackInfo.protocol_version = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.session_index = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.current_session_index = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.session_count = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - trackInfo.session_type = (SessionType)trackInfo.session_index; // FOR BACKWARD COMPATIBILITY - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, trackInfo.server_name, str_len_8, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, trackInfo.track, str_len_8, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, trackInfo.track_config, str_len_8, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, trackInfo.session_name, str_len_8, &ok); - - trackInfo.typ = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.time = read_uint16((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.laps = read_uint16((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.wait_time = read_uint16((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.ambient_temp = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - trackInfo.road_temp = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, trackInfo.weather_graphics, str_len_8, &ok); - - // FIX: elapsed_ms was/is incorrectly read - // TEST: Verify with actual server - trackInfo.elapsed_ms = read_uint32((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - if (!ok) { - fprintf(stderr, "[-] Error parsing NEW_SESSION packet (offset=%zu)\n", offset); - break; - } - - printf("\tServer Name: \"%s\"\n", trackInfo.server_name); - printf("\tTrack: \"%s\"\n", trackInfo.track); - printf("\tTrack Config: \"%s\"\n", trackInfo.track_config); - printf("\tSession Name: \"%s\"\n", trackInfo.session_name); - - printf("\tProtocol Version: %d\tSession Index: %d/%d\tCurrent Session Index: %d\n", trackInfo.protocol_version, trackInfo.session_index, trackInfo.session_count, - trackInfo.current_session_index); - - printf("\tType: %d\tTime: %d mins\tLaps: %d\tWait Time: %d secs\n", trackInfo.typ, trackInfo.time, trackInfo.laps, trackInfo.wait_time); - printf("\tAmbient Temp: %d C\tRoad Temp: %d C\n", trackInfo.ambient_temp, trackInfo.road_temp); - printf("\tWeather Graphics: %s\n", trackInfo.weather_graphics); - printf("\tElapsed Time: %d ms (%2d:%2d:%2d)\n\n", trackInfo.elapsed_ms, trackInfo.elapsed_ms / 60000, (trackInfo.elapsed_ms % 60000) / 1000, - (trackInfo.elapsed_ms % 60000) % 1000); - - update_api_packet(trackInfo, players); - break; - - case ACSP_NEW_CONNECTION: // DONE: - printf("[+] Message Type: ACSP_NEW_CONNECTION\n"); - offset = 1; // Reset offset to 1 to read after message types - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.driver_name, str_len_8, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.driver_GUID, str_len_8, &ok); - - update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, update.car_model, str_len_8, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, update.car_skin, str_len_8, &ok); - - if (!ok) { - fprintf(stderr, "[-] Error parsing NEW_CONNECTION packet (offset=%zu)\n", offset); - break; - } - - update.isConnected = 1; // Mark as connected - update.isLoading = 1; // Mark as Loading - current_packet.connected_players++; - - printf("\tDriver Name: \"%s\"\n", update.driver_name); - printf("\tDriver GUID: \"%s\"\n", update.driver_GUID); - printf("\tCar ID: %d\n", update.carID); - printf("\tCar Model: \"%s\"\n", update.car_model); - printf("\tCar Skin: \"%s\"\n\n", update.car_skin); - - // Store player player into the respective Index - if (update.carID < MAX_PLAYERS) { - players[update.carID].isConnected = update.isConnected; - players[update.carID].isLoading = update.isLoading; - players[update.carID].carID = update.carID; - - strncpy(players[update.carID].driver_GUID, update.driver_GUID, 63); - strncpy(players[update.carID].driver_name, update.driver_name, 63); - strncpy(players[update.carID].driver_team, update.driver_team, 63); - strncpy(players[update.carID].car_model, update.car_model, 63); - strncpy(players[update.carID].car_skin, update.car_skin, 63); - - players[update.carID].driver_GUID[63] = '\0'; - players[update.carID].driver_name[63] = '\0'; - players[update.carID].driver_team[63] = '\0'; - players[update.carID].car_model[63] = '\0'; - players[update.carID].car_skin[63] = '\0'; - } - update_api_packet(trackInfo, players); - break; - - case ACSP_CONNECTION_CLOSED: // DONE: - printf("[+] Message Type: ACSP_CONNECTION_CLOSED\n"); - offset = 1; // Reset offset to 1 to read after message types - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.driver_name, str_len_8, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.driver_GUID, str_len_8, &ok); - - update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, update.car_model, str_len_8, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_string((const u_int8_t *)buffer, recv_bytes, &offset, update.car_skin, str_len_8, &ok); - - if (!ok) { - fprintf(stderr, "[-] Error parsing NEW_CONNECTION packet (offset=%zu)\n", offset); - break; - } - - update.isConnected = 0; // Mark as disconnected - current_packet.connected_players--; - if (current_packet.connected_players > MAX_PLAYERS) { - current_packet.connected_players = 0; - } - - printf("\tDriver Name: \"%s\"\n", update.driver_name); - printf("\tDriver GUID: \"%s\"\n", update.driver_GUID); - printf("\tCar ID: %d\n", update.carID); - printf("\tCar Model: \"%s\"\n", update.car_model); - printf("\tCar Skin: \"%s\"\n\n", update.car_skin); - - // Store player player into the respective Index - if (update.carID < MAX_PLAYERS) { - players[update.carID].isConnected = 0; // Mark disconnected - players[update.carID].isLoading = 0; - } - update_api_packet(trackInfo, players); - break; - - case ACSP_CAR_UPDATE: // DONE: -#if DEBUG_CAR_INFO - printf("[+] Message Type: ACSP_CAR_UPDATE\n"); -#endif - offset = 1; - - memcpy(&update.carID, buffer + offset, sizeof(uint8_t)); - offset = 1 + sizeof(uint8_t); - memcpy(&update.position, buffer + offset, sizeof(postion)); - offset += sizeof(postion); - memcpy(&update.velocity, buffer + offset, sizeof(postion)); - offset += sizeof(postion); - memcpy(&update.carGear, buffer + offset, sizeof(u_int8_t)); - offset += sizeof(u_int8_t); - memcpy(&update.carRPM, buffer + offset, sizeof(uint16_t)); - offset += sizeof(uint16_t); - memcpy(&update.normalizedSplinePos, buffer + offset, sizeof(float_t)); - offset += sizeof(float_t); - -#if DEBUG_CAR_INFO - printf("\tCar %d Position: X: %.2f Y: %.2f Z: %.2f ", update.carID, update.position.x, update.position.y, update.position.z); - printf("Gear: %d RPM: %d\n", update.carGear, update.carRPM); -#endif - - // Store player player into the respective Index - if (update.carID < MAX_PLAYERS) { - players[update.carID].position = update.position; - players[update.carID].velocity = update.velocity; - players[update.carID].carGear = update.carGear; - players[update.carID].carRPM = update.carRPM; - players[update.carID].normalizedSplinePos = update.normalizedSplinePos; - - players[update.carID].isConnected = update.isConnected; - players[update.carID].isLoading = update.isLoading; - players[update.carID].carID = update.carID; - } - - update_api_packet(trackInfo, players); - break; - - case ACSP_CAR_INFO: // DONE: - printf("[+] Message Type: ACSP_CAR_INFO\n"); - offset = 1; // Reset offset to 1 to read after message types; - - update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - update.isConnected = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.car_model, str_len_8, &ok); - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.car_skin, str_len_8, &ok); - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.driver_name, str_len_8, &ok); - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.driver_team, str_len_8, &ok); - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, update.driver_GUID, str_len_8, &ok); - - if (!ok) { - fprintf(stderr, "[-] Error parsing CAR_INFO packet (offset=%zu)\n", offset); - } - - printf("\tCar ID: %d\n", update.carID); - printf("\tIs Connected: %d\n", update.isConnected); - printf("\tCar Model: \"%s\"\n", update.car_model); - printf("\tCar Skin: \"%s\"\n", update.car_skin); - printf("\tDriver Name: \"%s\"\n", update.driver_name); - printf("\tDriver Team: \"%s\"\n", update.driver_team); - printf("\tDriver GUID: \"%s\"\n\n", update.driver_GUID); - - // Store player player into the respective Index - if (update.carID < MAX_PLAYERS) { - - players[update.carID].isConnected = update.isConnected; - players[update.carID].isLoading = update.isLoading; - players[update.carID].carID = update.carID; - - strncpy(players[update.carID].driver_GUID, update.driver_GUID, 63); - strncpy(players[update.carID].driver_name, update.driver_name, 63); - strncpy(players[update.carID].driver_team, update.driver_team, 63); - strncpy(players[update.carID].car_model, update.car_model, 63); - strncpy(players[update.carID].car_skin, update.car_skin, 63); - - players[update.carID].driver_GUID[63] = '\0'; - players[update.carID].driver_name[63] = '\0'; - players[update.carID].driver_team[63] = '\0'; - players[update.carID].car_model[63] = '\0'; - players[update.carID].car_skin[63] = '\0'; - } - - update_api_packet(trackInfo, players); - break; - - case ACSP_END_SESSION: // DONE: (only session type cycling) - printf("[+] Message Type: ACSP_END_SESSION\n"); - // Advance session_type to the next in the enum; - - trackInfo.session_type = (SessionType)((trackInfo.session_type + 1) % 3); - - if (trackInfo.session_type == 0) { - memcpy(trackInfo.session_name, "Practice", 9); - } else if (trackInfo.session_type == 1) { - memcpy(trackInfo.session_name, "Race", 5); - } else if (trackInfo.session_type == 2) { - memcpy(trackInfo.session_name, "Qualify", 8); - } - - printf("\tNext Session Name: %s\n", trackInfo.session_name); - printf("\tNext Session Type: %d\n\n", trackInfo.session_type); - - update_api_packet(trackInfo, players); - break; - - case ACSP_VERSION: // DONE: - printf("[+] Message Type: ACSP_VERSION\n"); - offset = 1; // Reset offset to 1 to read after message types - trackInfo.protocol_version = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - printf("\tProtocol Version: %d\n\n", trackInfo.protocol_version); - - update_api_packet(trackInfo, players); - break; - - case ACSP_CHAT: // DONE: Receive chat messages - printf("[+] Message Type: ACSP_CHAT\n"); - offset = 1; // Reset offset to 1 to read after message types - - update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, message, str_len_8, &ok); - - printf("\tCar ID: %d (%s)\n", update.carID, players[update.carID].driver_name); - printf("\tMessage: \"%s\"\n\n", message); - - update_api_packet(trackInfo, players); - break; - - case ACSP_CLIENT_LOADED: // DONE: Check for client loaded status - printf("[+] Message Type: ACSP_CLIENT_LOADED\n"); - offset = 1; // Reset offset to 1 to read after message types - - update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - players[update.carID].isLoading = 0; - printf("\tCar ID: %d (%s) Finished Loading into the session\n\n", update.carID, players[update.carID].driver_name); - - update_api_packet(trackInfo, players); - break; - - case ACSP_ERROR: // DONE: Simple error message from server - printf("[+] Message Type: ACSP_ERROR\n"); - offset = 1; // Reset offset to 1 to read after message types - - str_len_8 = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - read_utf32le_string((const u_int8_t *)buffer, recv_bytes, &offset, message, str_len_8, &ok); - - printf("\tServer Message: \"%s\"\n\n", message); - break; - - case ACSP_LAP_COMPLETED: // DONE: Handle lap completed events - printf("[+] Message Type: ACSP_LAP_COMPLETED\n"); - offset = 1; // Reset offset to 1 to read after message types - - update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - // TEST: Possiblity of lap_time not behing correct - // TODO: Verify with actual serve - // SOLUTION: Server sends all times, lap_times and lap counts in big-endian format - update.lap_time = read_uint32((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - update.cuts = read_uint32((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - update.total_cuts = read_uint32((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - printf("\tCar ID: %d (%s)\n", update.carID, players[update.carID].driver_name); - printf("\tLap Time: %5d ms\n", update.lap_time); - printf("\tCuts this lap: %d\n", update.cuts); - printf("\tTotal Cuts (this session): %d\n\n", update.total_cuts); - - update_api_packet(trackInfo, players); - break; - - // ============================ - // EVENTS - // ============================ - case ACSP_CLIENT_EVENT: { - printf("[+] Message Type: ACSP_CLIENT_EVENT\n"); - offset = 1; // Reset offset to 1 to read after message types - - u_int8_t event_type = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - u_int8_t event_car_id = 255; // If event doesnt involve another car, set to 255 - - switch (event_type) { - // ============================ - // EVENT TYPES - // ============================ - case ACSP_CE_COLLISION_WITH_CAR: { - printf("[+] Event Type: ACSP_CE_COLLISION_WITH_CAR\n"); - event_car_id = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - - printf("Car ID: %d (%s) collided with Car ID: %d (%s)\n", update.carID, players[update.carID].driver_name, event_car_id, players[event_car_id].driver_name); - - players[update.carID].contacts++; - players[event_car_id].contacts++; - - // TODO: Update total contacts for both players in the database - // TAG:2 Update total contacts for both players - - update_api_packet(trackInfo, players); - } break; - - case ACSP_CE_COLLISION_WITH_ENV: { - printf("[+] Event Type: ACSP_CE_COLLISION_WITH_ENV\n"); - - printf("Car ID: %d (%s) collided with the environment\n", update.carID, players[update.carID].driver_name); - - players[update.carID].contacts++; - - // TODO: Update total contacts for the player in the database - // TAG:2 Update total contacts for the player - - update_api_packet(trackInfo, players); - } break; - } - - // TODO: possible iRacing style impact severity system - // With X velues and (e.g >5 m/s = 0x, >10 m/s = 2x, >15 m/s = 4x) && Blackflag limits (e.g x17 = DQ) - - // FIX: read_float doesnt work, but memcpy does... weird... - float impact_speed = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - postion world_pos = {0, 0, 0}; - /* world_pos.x = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - world_pos.y = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - world_pos.z = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - */ - - memcpy(&world_pos.x, buffer + offset, sizeof(float)); - offset += sizeof(float); - memcpy(&world_pos.y, buffer + offset, sizeof(float)); - offset += sizeof(float); - memcpy(&world_pos.z, buffer + offset, sizeof(float)); - offset += sizeof(float); - - postion rel_pos = {0, 0, 0}; - /* - rel_pos.x = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - rel_pos.y = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - rel_pos.z = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok); - */ - - memcpy(&rel_pos.x, buffer + offset, sizeof(float)); - offset += sizeof(float); - memcpy(&rel_pos.y, buffer + offset, sizeof(float)); - offset += sizeof(float); - memcpy(&rel_pos.z, buffer + offset, sizeof(float)); - offset += sizeof(float); - - printf("\tImpact Speed: %.2f m/s\n", impact_speed); - printf("\tWorld Position: X: %.2f Y: %.2f Z: %.2f\n", world_pos.x, world_pos.y, world_pos.z); - printf("\tRelative Position: X: %.2f Y: %.2f Z: %.2f\n\n", rel_pos.x, rel_pos.y, rel_pos.z); - - } break; - - // TODO: Add for ranking system - // OPTIMIZE: Make sure DB queries are optimized for speed has there can be more that 30 players querying at the same time - // - // ============================ - // CLIENT → SERVER COMMANDS - // NOTE: These are not meant to be here, these are comands to SEND to the server - // ============================ - case ACSP_REALTIMEPOS_INTERVAL: - printf("[+] Command: ACSP_REALTIMEPOS_INTERVAL\n"); - break; - - case ACSP_GET_CAR_INFO: - printf("[+] Command: ACSP_GET_CAR_INFO\n"); - break; - - case ACSP_SEND_CHAT: - printf("[+] Command: ACSP_SEND_CHAT\n"); - break; - - case ACSP_BROADCAST_CHAT: - printf("[+] Command: ACSP_BROADCAST_CHAT\n"); - break; - - case ACSP_GET_SESSION_INFO: - printf("[+] Command: ACSP_GET_SESSION_INFO\n"); - break; - - case ACSP_SET_SESSION_INFO: - printf("[+] Command: ACSP_SET_SESSION_INFO\n"); - break; - - case ACSP_KICK_USER: - printf("[+] Command: ACSP_KICK_USER\n"); - break; - - case ACSP_NEXT_SESSION: - printf("[+] Command: ACSP_NEXT_SESSION\n"); - break; - - case ACSP_RESTART_SESSION: - printf("[+] Command: ACSP_RESTART_SESSION\n"); - break; - - case ACSP_ADMIN_COMMAND: { // DONE: - printf("[+] Command: ACSP_ADMIN_COMMAND\n"); - char *__buffer = (char *)malloc(256); - char command[256] = "/settime 19:00"; // TEST: - - __buffer[0] = (char)ACSP_ADMIN_COMMAND; - for (int i = 1; i <= strlen(command); i++) { - buffer[i] = command[i - 1]; - } - - sendto(send_sock_fd, buffer, strlen(command) + 1, 0, NULL, 0); - printf("\tSent Admin Command: %s\n\n", command); - free(__buffer); - } break; - - // ============================ - // DEFAULT HANDLER - // ============================ - default: - printf("[!] Unknown Message Type: %d\n\n", buffer[0]); - break; - } - - // OPTIMIZE: This should be done inside each case where data is updated otherwise we lose performance - usleep(10000); // Sleep for 10ms - } - close(send_sock_fd); - close(recv_sock_fd); - - // Free allocated memory - free(update.car_model); - free(update.driver_GUID); - free(update.car_skin); - free(update.driver_name); - free(update.driver_team); - - for (int i = 0; i < MAX_PLAYERS; i++) { - free(players[i].car_model); - free(players[i].driver_GUID); - free(players[i].car_skin); - free(players[i].driver_name); - free(players[i].driver_team); - } - - free(trackInfo.server_name); - free(trackInfo.track); - free(trackInfo.track_config); - free(trackInfo.weather_graphics); - free(trackInfo.session_name); return 0; } +