From e4b5445b3ca844e568a84abbf931a026a6ca6226 Mon Sep 17 00:00:00 2001 From: Test_User Date: Wed, 3 May 2023 22:57:53 -0400 Subject: C HaxServ --- commands.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 commands.c (limited to 'commands.c') diff --git a/commands.c b/commands.c new file mode 100644 index 0000000..ad0607d --- /dev/null +++ b/commands.c @@ -0,0 +1,65 @@ +#include +#include + +#include "types.h" +#include "table.h" +#include "commands.h" +#include "network.h" +#include "tls.h" + +struct table user_commands = {0}; + +int raw_command(struct string sender, struct string original_message, struct string to, uint64_t argc, struct string *argv) { + if (argv[0].len < original_message.len) { + original_message.data += argv[0].len + 1; + original_message.len -= argv[0].len + 1; + SEND(original_message); + } + SEND(STRING("\n")); + + return 0; +} +static struct command_def raw_command_def = { + .func = raw_command, + .privs = STRING("Admin"), + .local_only = 0, +}; + +static struct pref_type_suff { + struct string pref; + uint8_t type; + struct string suff; +} sus_strings[] = { + {STRING(":1HC000000 PRIVMSG "), 0, STRING(" :Andrew is very sus.\n")}, + {STRING(":1HC000000 PRIVMSG "), 0, STRING(" :I was the impostor, but you only know because I killed you.\n")}, + {STRING(":1HC000000 PRIVMSG "), 0, STRING(" :\x1b(0\n")}, + {STRING(":1HC000000 KILL "), 1, STRING(" :Ejected (1 Impostor remains)\n")}, + {STRING(":1HC000000 KILL "), 1, STRING(" :Ejected, and the crewmates have won.\n")}, +}; + +int sus_command(struct string sender, struct string original_message, struct string to, uint64_t argc, struct string *argv) { + uint64_t index = random() % (sizeof(sus_strings)/sizeof(sus_strings[0])); + + SEND(sus_strings[index].pref); + if (sus_strings[index].type == 0) + SEND(to); + else + SEND(sender); + SEND(sus_strings[index].suff); + + return 0; +} +static struct command_def sus_command_def = { + .func = sus_command, + .privs = {0}, + .local_only = 0, +}; + +int init_user_commands(void) { + user_commands.array = malloc(0); + + set_table_index(&user_commands, STRING(":"), &raw_command_def); + set_table_index(&user_commands, STRING("sus"), &sus_command_def); + + return 0; +} -- cgit v1.2.3