From 2de59f9ea265a37c4ea2f6b3ed75b03ae4b4b5a6 Mon Sep 17 00:00:00 2001 From: Test_User Date: Tue, 15 Aug 2023 16:27:23 -0400 Subject: Only set ssl_cert for the connected user --- client_network.c | 15 +++++++++------ network.h | 2 +- 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(":")); diff --git a/network.h b/network.h index a20deb3..88383bd 100644 --- a/network.h +++ b/network.h @@ -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++) { -- cgit v1.2.3