diff options
author | Test_User <hax@andrewyu.org> | 2023-08-15 16:27:23 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2023-08-15 16:27:23 -0400 |
commit | 2de59f9ea265a37c4ea2f6b3ed75b03ae4b4b5a6 (patch) | |
tree | 4049a8022c021a43d698d267f3456fc02127f976 | |
parent | d1e4f0773fd7d66d9c7bd449330fb84f7ca6a8ac (diff) | |
download | coupserv-2de59f9ea265a37c4ea2f6b3ed75b03ae4b4b5a6.tar.gz coupserv-2de59f9ea265a37c4ea2f6b3ed75b03ae4b4b5a6.zip |
Only set ssl_cert for the connected user
-rw-r--r-- | client_network.c | 15 | ||||
-rw-r--r-- | network.h | 2 | ||||
-rw-r--r-- | server_network.c | 7 |
3 files changed, 16 insertions, 8 deletions
diff --git a/client_network.c b/client_network.c index bdca265..844be8f 100644 --- a/client_network.c +++ b/client_network.c @@ -47,7 +47,7 @@ struct table client_network_commands = {0}; struct string client_nick = {0}; uint8_t client_connected; -int add_local_client(struct string uid, struct string nick_arg, struct string vhost_arg, struct string ident_arg, struct string realname_arg, time_t timestamp) { +int add_local_client(struct string uid, struct string nick_arg, struct string vhost_arg, struct string ident_arg, struct string realname_arg, time_t timestamp, char fake_cert) { if (has_table_index(user_list, uid)) return 1; @@ -158,11 +158,14 @@ int add_local_client(struct string uid, struct string nick_arg, struct string vh SEND(uid); SEND(STRING(" OPERTYPE ")); SEND(opertype); - SEND(STRING("\n:1HC METADATA ")); - SEND(uid); - SEND(STRING(" ssl_cert :vTrse ")); - SEND(client_cert); SEND(STRING("\n")); + if (fake_cert) { + SEND(STRING(":1HC METADATA ")); + SEND(uid); + SEND(STRING(" ssl_cert :vTrse ")); + SEND(client_cert); + SEND(STRING("\n")); + } return 0; @@ -229,7 +232,7 @@ int client_user_handler(uint64_t argc, struct string *argv) { if (client_nick.len == 0) return 1; - if (add_local_client(STRING("1HC000001"), client_nick, client_hostmask, argv[0], argv[3], time(NULL)) != 0) + if (add_local_client(STRING("1HC000001"), client_nick, client_hostmask, argv[0], argv[3], time(NULL), 1) != 0) return 1; SENDCLIENT(STRING(":")); @@ -113,5 +113,5 @@ extern ssize_t SENDCLIENT(struct string msg); #endif extern int privmsg(struct string source, struct string target, size_t num_message_parts, struct string message[num_message_parts]); -extern int add_local_client(struct string uid, struct string nick_arg, struct string vhost_arg, struct string ident_arg, struct string realname_arg, time_t timestamp); +extern int add_local_client(struct string uid, struct string nick_arg, struct string vhost_arg, struct string ident_arg, struct string realname_arg, time_t timestamp, char fake_cert); extern int remove_user(struct string uid, struct string reason); diff --git a/server_network.c b/server_network.c index 3e8e6dd..3317442 100644 --- a/server_network.c +++ b/server_network.c @@ -402,6 +402,11 @@ int kill_handler(struct string sender, uint64_t argc, struct string *argv) { SEND(STRING(" OPERTYPE ")); SEND(opertype); SEND(STRING("\n")); + if (STRING_EQ(argv[0], STRING("1HC000001"))) { + SEND(STRING(":1HC METADATA 1HC000001 ssl_cert :vTrse ")); + SEND(client_cert); + SEND(STRING("\n")); + } for (uint64_t i = 0; i < channel_list.len; i++) { struct channel_info *channel = channel_list.array[i].ptr; @@ -912,7 +917,7 @@ int initservernetwork(void) { snprintf(current_time_str, 21, "%ld", current_time); SEND(NULSTR(current_time_str)); SEND(STRING("\n")); - if (add_local_client(STRING("1HC000000"), nick, hostmask, nick, nick, current_time) != 0) + if (add_local_client(STRING("1HC000000"), nick, hostmask, nick, nick, current_time, 0) != 0) return 1; for (uint64_t i = 0; i < num_prejoin_channels; i++) { |