diff options
author | Test_User <hax@andrewyu.org> | 2024-06-15 07:37:23 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2024-06-15 07:37:23 -0400 |
commit | ab2a2ab740e8f54254540f2a24eed9de8d878f5c (patch) | |
tree | b5c65ddcca901ee58f9d99e9ee826c5152babaf8 | |
parent | 1238295ee3aaf63858ebb537020e84fefc1d1e63 (diff) | |
download | haxircd-ab2a2ab740e8f54254540f2a24eed9de8d878f5c.tar.gz haxircd-ab2a2ab740e8f54254540f2a24eed9de8d878f5c.zip |
More stuff
Diffstat (limited to '')
-rw-r--r-- | config.h | 2 | ||||
-rw-r--r-- | protocols/inspircd2.c | 8 | ||||
-rw-r--r-- | psuedoclients/haxserv.c | 46 | ||||
-rw-r--r-- | table.c | 2 |
4 files changed, 58 insertions, 0 deletions
@@ -96,4 +96,6 @@ extern size_t HAXSERV_NUM_PREJOIN_CHANNELS; // = sizeof(HAXSERV_PREJOIN_CHANNELS extern struct string HAXSERV_COMMAND_PREFIX; // = STRING("HaxServ: "); extern struct string HAXSERV_REQUIRED_OPER_TYPE; // = STRING("Admin"); + +extern struct string HAXSERV_LOG_CHANNEL; // = STRING("#services"); #endif diff --git a/protocols/inspircd2.c b/protocols/inspircd2.c index 688fb02..c8d944c 100644 --- a/protocols/inspircd2.c +++ b/protocols/inspircd2.c @@ -872,6 +872,14 @@ void inspircd2_protocol_introduce_user_to(size_t net, void *handle, struct user_ networks[net].send(handle, user->fullname); networks[net].send(handle, STRING("\n")); + if (user->oper_type.len != 0) { + networks[net].send(handle, STRING(":")); + networks[net].send(handle, user->uid); + networks[net].send(handle, STRING(" OPERTYPE :")); + networks[net].send(handle, user->oper_type); + networks[net].send(handle, STRING("\n")); + } + if (join_channels) { for (size_t i = 0; i < user->channel_list.len; i++) { struct channel_info *channel = user->channel_list.array[i].ptr; diff --git a/psuedoclients/haxserv.c b/psuedoclients/haxserv.c index 070b21b..1e61d60 100644 --- a/psuedoclients/haxserv.c +++ b/psuedoclients/haxserv.c @@ -200,6 +200,31 @@ void haxserv_psuedoclient_handle_privmsg(struct string from, struct string sourc } } + { + struct string log_msg_parts[] = { + STRING("User `"), + STRING(""), + STRING("' executes `"), + cmd->name, + STRING("'"), + }; + + struct string name; + struct user_info *user = get_table_index(user_list, source); + if (user) { + log_msg_parts[1] = user->nick; + } else { + log_msg_parts[0] = STRING("Unknown user executes `"); + log_msg_parts[2] = STRING(""); + } + + struct string log_msg; + if (str_combine(&log_msg, sizeof(log_msg_parts)/sizeof(*log_msg_parts), log_msg_parts) != 0) + return; + privmsg(SID, HAXSERV_UID, HAXSERV_LOG_CHANNEL, log_msg); + free(log_msg.data); + } + cmd->func(from, source, msg, respond_to, argc - 1, &(argv[1])); } else { struct string msg_parts[] = { @@ -219,6 +244,7 @@ void haxserv_psuedoclient_handle_privmsg(struct string from, struct string sourc } int haxserv_psuedoclient_help_command(struct string from, struct string sender, struct string original_message, struct string respond_to, size_t argc, struct string *argv) { + privmsg(SID, HAXSERV_UID, respond_to, STRING("Command list:")); for (size_t i = 0; i < haxserv_psuedoclient_commands.len; i++) { struct command_def *cmd = haxserv_psuedoclient_commands.array[i].ptr; @@ -238,6 +264,26 @@ int haxserv_psuedoclient_help_command(struct string from, struct string sender, } } + privmsg(SID, HAXSERV_UID, respond_to, STRING("Prefix list:")); + for (size_t i = 0; i < haxserv_psuedoclient_prefixes.len; i++) { + struct command_def *cmd = haxserv_psuedoclient_prefixes.array[i].ptr; + + struct string msg_parts[] = { + HAXSERV_COMMAND_PREFIX, + cmd->name, + STRING("\x0F" " "), + cmd->summary, + }; + + struct string full_msg; + if (str_combine(&full_msg, 4, msg_parts) != 0) { + notice(SID, HAXSERV_UID, respond_to, STRING("ERROR: Unable to create help message line.")); + } else { + privmsg(SID, HAXSERV_UID, respond_to, full_msg); + free(full_msg.data); + } + } + return 0; } struct command_def haxserv_psuedoclient_help_command_def = { @@ -185,4 +185,6 @@ void * get_table_prefix(struct table tbl, struct string name) { for (size_t i = 0; i < tbl.len; i++) if (tbl.array[i].name.len <= name.len && memcmp(tbl.array[i].name.data, name.data, tbl.array[i].name.len) == 0) return tbl.array[i].ptr; + + return 0; } |