aboutsummaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorTest_User <hax@andrewyu.org>2024-06-24 11:08:29 -0400
committerTest_User <hax@andrewyu.org>2024-06-24 11:08:50 -0400
commitd095efe06273ec29bdc07c2cc522d6fe5a793550 (patch)
tree0eab2d9999ae71d5cff1ae682b54d17ad8aa98b5 /protocols
parent7b3767d3988c3bb9c96f049ca8e5a829917c8426 (diff)
downloadhaxircd-d095efe06273ec29bdc07c2cc522d6fe5a793550.tar.gz
haxircd-d095efe06273ec29bdc07c2cc522d6fe5a793550.zip
The start of some services, inspircd3 support extra broken for now
Diffstat (limited to 'protocols')
-rw-r--r--protocols/inspircd2.c45
-rw-r--r--protocols/inspircd2.h8
-rw-r--r--protocols/inspircd3.h6
3 files changed, 59 insertions, 0 deletions
diff --git a/protocols/inspircd2.c b/protocols/inspircd2.c
index 5a017af..17dc726 100644
--- a/protocols/inspircd2.c
+++ b/protocols/inspircd2.c
@@ -151,6 +151,8 @@ int init_inspircd2_protocol(void) {
set_table_index(&inspircd2_protocol_commands, STRING("MODE"), &inspircd2_protocol_handle_mode);
set_table_index(&inspircd2_protocol_commands, STRING("FMODE"), &inspircd2_protocol_handle_fmode);
+ set_table_index(&inspircd2_protocol_commands, STRING("METADATA"), &inspircd2_protocol_handle_metadata);
+
set_table_index(&inspircd2_protocol_commands, STRING("DUMP"), &inspircd2_protocol_handle_dump);
return 0;
@@ -684,6 +686,17 @@ void inspircd2_protocol_propagate_oper_user(struct string from, struct user_info
}
}
+// [:source] METADATA <user> accountname <account>
+void inspircd2_protocol_propagate_set_account(struct string from, struct user_info *user, struct string account, struct string source) {
+ inspircd2_protocol_propagate(from, STRING(":"));
+ inspircd2_protocol_propagate(from, source);
+ inspircd2_protocol_propagate(from, STRING(" METADATA "));
+ inspircd2_protocol_propagate(from, user->uid);
+ inspircd2_protocol_propagate(from, STRING(" accountname :"));
+ inspircd2_protocol_propagate(from, account);
+ inspircd2_protocol_propagate(from, STRING("\n"));
+}
+
// [:source] FJOIN <channel> <timestamp> <modes> [<mode args>] <userlist: modes,uid [...]>
void inspircd2_protocol_propagate_set_channel(struct string from, struct channel_info *channel, char is_new_server, size_t user_count, struct user_info **users) {
inspircd2_protocol_propagate(from, STRING(":"));
@@ -848,6 +861,10 @@ int inspircd2_protocol_handle_oper_user(struct string from, struct user_info *in
return 0;
}
+int inspircd2_protocol_handle_set_account(struct string from, struct user_info *info, struct string account, struct string source) {
+ return 0;
+}
+
int inspircd2_protocol_handle_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users) {
return 0;
}
@@ -880,6 +897,10 @@ void inspircd2_protocol_fail_oper_user(struct string from, struct user_info *inf
return;
}
+void inspircd2_protocol_fail_set_account(struct string from, struct user_info *info, struct string account, struct string source) {
+ return;
+}
+
void inspircd2_protocol_fail_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users) {
return;
}
@@ -1788,6 +1809,30 @@ int inspircd2_protocol_handle_fmode(struct string source, size_t argc, struct st
return 0;
}
+// [:source] METADATA <target> <key> <value>
+int inspircd2_protocol_handle_metadata(struct string source, size_t argc, struct string *argv, size_t net, void *handle, struct server_config *config, char is_incoming) {
+ if (argc < 3) {
+ WRITES(2, STRING("[InspIRCd v2] Invalid METADATA received! (Missing parameters)\r\n"));
+ return -1;
+ }
+
+ struct user_info *info;
+ do {
+ info = get_table_index(user_list, argv[0]);
+ if (info)
+ break;
+
+ return 0;
+ } while (0);
+
+ if (STRING_EQ(argv[1], STRING("accountname"))) {
+ if (set_account(config->sid, info, argv[2], source) != 0)
+ return -1;
+ }
+
+ return 0;
+}
+
int inspircd2_protocol_handle_dump(struct string source, size_t argc, struct string *argv, size_t net, void *handle, struct server_config *config, char is_incoming) {
for (size_t arg = 0; arg < argc; arg++) {
if (STRING_EQ(argv[arg], STRING("LATENCIES"))) {
diff --git a/protocols/inspircd2.h b/protocols/inspircd2.h
index dc8ff32..b8e7cda 100644
--- a/protocols/inspircd2.h
+++ b/protocols/inspircd2.h
@@ -54,6 +54,8 @@ void inspircd2_protocol_propagate_remove_user(struct string from, struct user_in
void inspircd2_protocol_propagate_kill_user(struct string from, struct string source, struct user_info *info, struct string reason);
void inspircd2_protocol_propagate_oper_user(struct string from, struct user_info *info, struct string type, struct string source);
+void inspircd2_protocol_propagate_set_account(struct string from, struct user_info *info, struct string account, struct string source);
+
void inspircd2_protocol_propagate_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users);
void inspircd2_protocol_propagate_join_channel(struct string from, struct channel_info *channel, size_t user_count, struct user_info **users);
void inspircd2_protocol_propagate_part_channel(struct string from, struct channel_info *channel, struct user_info *user, struct string reason);
@@ -71,6 +73,8 @@ void inspircd2_protocol_handle_remove_user(struct string from, struct user_info
void inspircd2_protocol_handle_kill_user(struct string from, struct string source, struct user_info *info, struct string reason);
int inspircd2_protocol_handle_oper_user(struct string from, struct user_info *info, struct string type, struct string source);
+int inspircd2_protocol_handle_set_account(struct string from, struct user_info *info, struct string account, struct string source);
+
int inspircd2_protocol_handle_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users);
int inspircd2_protocol_handle_join_channel(struct string from, struct channel_info *channel, size_t user_count, struct user_info **users, char propagate);
void inspircd2_protocol_handle_part_channel(struct string from, struct channel_info *channel, struct user_info *user, struct string reason);
@@ -82,6 +86,8 @@ void inspircd2_protocol_fail_new_user(struct string from, struct user_info *info
void inspircd2_protocol_fail_rename_user(struct string from, struct user_info *info, struct string nick, size_t timestamp, struct string timestamp_str);
void inspircd2_protocol_fail_oper_user(struct string from, struct user_info *info, struct string type, struct string source);
+void inspircd2_protocol_fail_set_account(struct string from, struct user_info *info, struct string account, struct string source);
+
void inspircd2_protocol_fail_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users);
void inspircd2_protocol_fail_join_channel(struct string from, struct channel_info *channel, size_t user_count, struct user_info **users, char propagate);
@@ -117,6 +123,8 @@ int inspircd2_protocol_handle_notice(struct string source, size_t argc, struct s
int inspircd2_protocol_handle_mode(struct string source, size_t argc, struct string *argv, size_t net, void *handle, struct server_config *config, char is_incoming);
int inspircd2_protocol_handle_fmode(struct string source, size_t argc, struct string *argv, size_t net, void *handle, struct server_config *config, char is_incoming);
+int inspircd2_protocol_handle_metadata(struct string source, size_t argc, struct string *argv, size_t net, void *handle, struct server_config *config, char is_incoming);
+
int inspircd2_protocol_handle_dump(struct string source, size_t argc, struct string *argv, size_t net, void *handle, struct server_config *config, char is_incoming);
extern char inspircd2_protocol_user_mode_types[UCHAR_MAX+1];
diff --git a/protocols/inspircd3.h b/protocols/inspircd3.h
index 86339c2..daea5e0 100644
--- a/protocols/inspircd3.h
+++ b/protocols/inspircd3.h
@@ -63,6 +63,8 @@ void inspircd3_protocol_propagate_remove_user(struct string from, struct user_in
void inspircd3_protocol_propagate_kill_user(struct string from, struct string source, struct user_info *info, struct string reason);
void inspircd3_protocol_propagate_oper_user(struct string from, struct user_info *info, struct string type, struct string source);
+void inspircd3_protocol_propagate_set_account(struct string from, struct user_info *info, struct string account);
+
void inspircd3_protocol_propagate_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users);
void inspircd3_protocol_propagate_join_channel(struct string from, struct channel_info *channel, size_t user_count, struct user_info **users);
void inspircd3_protocol_propagate_part_channel(struct string from, struct channel_info *channel, struct user_info *user, struct string reason);
@@ -80,6 +82,8 @@ void inspircd3_protocol_handle_remove_user(struct string from, struct user_info
void inspircd3_protocol_handle_kill_user(struct string from, struct string source, struct user_info *info, struct string reason);
int inspircd3_protocol_handle_oper_user(struct string from, struct user_info *info, struct string type, struct string source);
+int inspircd3_protocol_handle_set_account(struct string from, struct user_info *info, struct string account);
+
int inspircd3_protocol_handle_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users);
int inspircd3_protocol_handle_join_channel(struct string from, struct channel_info *channel, size_t user_count, struct user_info **users, char propagate);
void inspircd3_protocol_handle_part_channel(struct string from, struct channel_info *channel, struct user_info *user, struct string reason);
@@ -91,6 +95,8 @@ void inspircd3_protocol_fail_new_user(struct string from, struct user_info *info
void inspircd3_protocol_fail_rename_user(struct string from, struct user_info *info, struct string nick, size_t timestamp, struct string timestamp_str);
void inspircd3_protocol_fail_oper_user(struct string from, struct user_info *info, struct string type, struct string source);
+void inspircd3_protocol_fail_set_account(struct string from, struct user_info *info, struct string account);
+
void inspircd3_protocol_fail_set_channel(struct string from, struct channel_info *channel, char is_new_channel, size_t user_count, struct user_info **users);
void inspircd3_protocol_fail_join_channel(struct string from, struct channel_info *channel, size_t user_count, struct user_info **users, char propagate);