prepared client's receive for codes

This commit is contained in:
Václav Šmejkal 2025-01-31 13:37:30 +01:00
parent db032d3066
commit 4ca411f32b
Signed by: ENGO150
GPG Key ID: 4A57E86482968843

View File

@ -942,6 +942,7 @@ void *why2_listen_server(void *socket)
//CONTENT //CONTENT
char *username = NULL; char *username = NULL;
char *message = NULL; char *message = NULL;
char *code = NULL;
//SERVER SETTINGS //SERVER SETTINGS
int max_uname = -1; int max_uname = -1;
@ -962,6 +963,7 @@ void *why2_listen_server(void *socket)
//GET CONTENT //GET CONTENT
username = get_string_from_json_string(read, "username"); username = get_string_from_json_string(read, "username");
message = get_string_from_json_string(read, "message"); message = get_string_from_json_string(read, "message");
code = get_string_from_json_string(read, "code");
if (server_uname == NULL) //GET SERVER USERNAME if (server_uname == NULL) //GET SERVER USERNAME
{ {
@ -979,18 +981,18 @@ void *why2_listen_server(void *socket)
continuing = 1; continuing = 1;
} }
if ((strcmp(username, server_uname) == 0 && strncmp(message, "code", 4) == 0) && !continuing) //CODE WAS SENT if ((strcmp(username, server_uname) == 0 && code != NULL) && !continuing) //CODE WAS SENT
{ {
if (strcmp(message, WHY2_CHAT_CODE_SSQC) == 0) //SERVER BROKE UP WITH YOU if (strcmp(code, WHY2_CHAT_CODE_SSQC) == 0) //SERVER BROKE UP WITH YOU
{ {
printf("%s%s%s\nServer closed the connection.\n", asking_username > max_tries ? WHY2_CLEAR_AND_GO_UP : "", WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP, (asking_username == 0 ? "\n": "")); printf("%s%s%s\nServer closed the connection.\n", asking_username > max_tries ? WHY2_CLEAR_AND_GO_UP : "", WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP, (asking_username == 0 ? "\n": ""));
fflush(stdout); fflush(stdout);
pthread_cancel(getline_thread); //CANCEL CLIENT getline pthread_cancel(getline_thread); //CANCEL CLIENT getline
exiting = 1; //EXIT THIS THREAD exiting = 1; //EXIT THIS THREAD
} else if (strcmp(message, WHY2_CHAT_CODE_PICK_USERNAME) == 0 || strcmp(message, WHY2_CHAT_CODE_INVALID_USERNAME) == 0) //PICK USERNAME (COULD BE CAUSE BY INVALID USERNAME) } else if (strcmp(code, WHY2_CHAT_CODE_PICK_USERNAME) == 0 || strcmp(code, WHY2_CHAT_CODE_INVALID_USERNAME) == 0) //PICK USERNAME (COULD BE CAUSE BY INVALID USERNAME)
{ {
if (strcmp(message, WHY2_CHAT_CODE_INVALID_USERNAME) == 0) //INVALID USERNAME if (strcmp(code, WHY2_CHAT_CODE_INVALID_USERNAME) == 0) //INVALID USERNAME
{ {
printf(WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP "%s\nInvalid username!\n\n\n", asking_username > 1 ? WHY2_CLEAR_AND_GO_UP : ""); printf(WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP "%s\nInvalid username!\n\n\n", asking_username > 1 ? WHY2_CLEAR_AND_GO_UP : "");
fflush(stdout); fflush(stdout);
@ -998,14 +1000,14 @@ void *why2_listen_server(void *socket)
printf("%s%sEnter username (a-Z, 0-9; %d-%d characters):\n", asking_username++ > 0 ? WHY2_CLEAR_AND_GO_UP : "", WHY2_CLEAR_AND_GO_UP, min_uname, max_uname); printf("%s%sEnter username (a-Z, 0-9; %d-%d characters):\n", asking_username++ > 0 ? WHY2_CLEAR_AND_GO_UP : "", WHY2_CLEAR_AND_GO_UP, min_uname, max_uname);
fflush(stdout); fflush(stdout);
} else if (strncmp(message, WHY2_CHAT_CODE_LIST_SERVER, strlen(WHY2_CHAT_CODE_LIST_SERVER)) == 0) //LIST USERS } else if (strcmp(code, WHY2_CHAT_CODE_LIST_SERVER) == 0) //LIST USERS
{ {
why2_bool printing_id = 0; why2_bool printing_id = 0;
printf("\nList:\n-----\n"); printf("\nList:\n-----\n");
//ITER TROUGH LIST OF USERS FROM SERVER //ITER TROUGH LIST OF USERS FROM SERVER
for (unsigned long i = strlen(WHY2_CHAT_CODE_LIST_SERVER) + 1; i < strlen(message); i++) for (unsigned long i = 0; i < strlen(message); i++)
{ {
if (message[i] == ';') if (message[i] == ';')
{ {
@ -1018,24 +1020,20 @@ void *why2_listen_server(void *socket)
printf("\n"); printf("\n");
fflush(stdout); fflush(stdout);
} else if (strncmp(message, WHY2_CHAT_CODE_VERSION_SERVER, strlen(WHY2_CHAT_CODE_VERSION_SERVER)) == 0) } else if (strcmp(code, WHY2_CHAT_CODE_VERSION_SERVER) == 0)
{ {
char *server_version = message + strlen(WHY2_CHAT_CODE_VERSION_SERVER) + 1;
//INFO //INFO
printf("\nServer Version: %s\nClient Version: %s\n\n", server_version, WHY2_VERSION); printf("\nServer Version: %s\nClient Version: %s\n\n", message, WHY2_VERSION);
//SERVER IS OUTDATED //SERVER IS OUTDATED
if (atoi(server_version + 1) < atoi(WHY2_VERSION + 1)) if (atoi(message + 1) < atoi(WHY2_VERSION + 1))
{ {
printf("Server is outdated. Some new features may not work correctly.\n\n"); printf("Server is outdated. Some new features may not work correctly.\n\n");
} }
} else if (strncmp(message, WHY2_CHAT_CODE_PM_SERVER, strlen(WHY2_CHAT_CODE_PM_SERVER)) == 0) } else if (strcmp(code, WHY2_CHAT_CODE_PM_SERVER) == 0)
{ {
printf(WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP); //do not fucking ask me how the fucking formatting fucking works, i dont fucking know printf(WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP); //do not fucking ask me how the fucking formatting fucking works, i dont fucking know
char *received_pm = message + strlen(WHY2_CHAT_CODE_PM_SERVER) + 1;
//DECODED MESSAGE, AUTHOR AND RECIPIENT; 0 = AUTHOR, 1 = RECIPIENT, 2 = MESSAGE //DECODED MESSAGE, AUTHOR AND RECIPIENT; 0 = AUTHOR, 1 = RECIPIENT, 2 = MESSAGE
char **pm_info = why2_calloc(3, sizeof(char*)); char **pm_info = why2_calloc(3, sizeof(char*));
@ -1043,9 +1041,9 @@ void *why2_listen_server(void *socket)
unsigned long n_buffer = 0; unsigned long n_buffer = 0;
//DECODE //DECODE
for (unsigned long i = 0; i < strlen(received_pm); i++) for (unsigned long i = 0; i < strlen(message); i++)
{ {
if (received_pm[i] == ';') //FUTURE ME, THIS IS PRETTY MUCH split FUNCTION IMPLEMENTATION if (message[i] == ';') //FUTURE ME, THIS IS PRETTY MUCH split FUNCTION IMPLEMENTATION
{ {
//ALLOCATE INFO //ALLOCATE INFO
pm_info[n_buffer] = why2_malloc((i - i_buffer) + 1); pm_info[n_buffer] = why2_malloc((i - i_buffer) + 1);
@ -1053,7 +1051,7 @@ void *why2_listen_server(void *socket)
//COPY INFO //COPY INFO
for (unsigned long j = i_buffer; j < i; j++) for (unsigned long j = i_buffer; j < i; j++)
{ {
pm_info[n_buffer][j - i_buffer] = received_pm[j]; pm_info[n_buffer][j - i_buffer] = message[j];
} }
pm_info[n_buffer][i - i_buffer] = '\0'; pm_info[n_buffer][i - i_buffer] = '\0';
@ -1077,11 +1075,11 @@ void *why2_listen_server(void *socket)
why2_deallocate(pm_info[i]); why2_deallocate(pm_info[i]);
} }
why2_deallocate(pm_info); why2_deallocate(pm_info);
} else if (strcmp(message, WHY2_CHAT_CODE_ENTER_PASSWORD) == 0 || strcmp(message, WHY2_CHAT_CODE_INVALID_PASSWORD) == 0) //PICK USERNAME (COULD BE CAUSE BY INVALID USERNAME) } else if (strcmp(code, WHY2_CHAT_CODE_ENTER_PASSWORD) == 0 || strcmp(code, WHY2_CHAT_CODE_INVALID_PASSWORD) == 0) //PICK USERNAME (COULD BE CAUSE BY INVALID USERNAME)
{ {
__why2_set_asking_password(1); __why2_set_asking_password(1);
if (strcmp(message, WHY2_CHAT_CODE_INVALID_PASSWORD) == 0) //INVALID USERNAME if (strcmp(code, WHY2_CHAT_CODE_INVALID_PASSWORD) == 0) //INVALID USERNAME
{ {
printf(WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP "%s\nInvalid password!\n\n\n", asking_password > 1 ? WHY2_CLEAR_AND_GO_UP : ""); printf(WHY2_CLEAR_AND_GO_UP WHY2_CLEAR_AND_GO_UP "%s\nInvalid password!\n\n\n", asking_password > 1 ? WHY2_CLEAR_AND_GO_UP : "");
fflush(stdout); fflush(stdout);
@ -1115,6 +1113,7 @@ void *why2_listen_server(void *socket)
why2_deallocate(read); why2_deallocate(read);
why2_deallocate(username); why2_deallocate(username);
why2_deallocate(message); why2_deallocate(message);
why2_deallocate(code);
} }
why2_deallocate(server_uname); why2_deallocate(server_uname);