aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.h2
-rw-r--r--protocols/inspircd2.c8
-rw-r--r--psuedoclients/haxserv.c46
-rw-r--r--table.c2
4 files changed, 58 insertions, 0 deletions
diff --git a/config.h b/config.h
index 18fd798..08a10fe 100644
--- a/config.h
+++ b/config.h
@@ -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 = {
diff --git a/table.c b/table.c
index 74c454b..8dddf95 100644
--- a/table.c
+++ b/table.c
@@ -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;
}