summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTest_User <hax@andrewyu.org>2023-08-15 16:27:23 -0400
committerTest_User <hax@andrewyu.org>2023-08-15 16:27:23 -0400
commit2de59f9ea265a37c4ea2f6b3ed75b03ae4b4b5a6 (patch)
tree4049a8022c021a43d698d267f3456fc02127f976
parentd1e4f0773fd7d66d9c7bd449330fb84f7ca6a8ac (diff)
downloadcoupserv-2de59f9ea265a37c4ea2f6b3ed75b03ae4b4b5a6.tar.gz
coupserv-2de59f9ea265a37c4ea2f6b3ed75b03ae4b4b5a6.zip
Only set ssl_cert for the connected user
-rw-r--r--client_network.c15
-rw-r--r--network.h2
-rw-r--r--server_network.c7
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++) {