diff --git a/src/core/chat-commands.c b/src/core/chat-commands.c index 8c70bfc6..92bb9db8 100644 --- a/src/core/chat-commands.c +++ b/src/core/chat-commands.c @@ -99,6 +99,8 @@ static SERVER_CONNECT_REC *get_server_connect(const char *data, int *plus_addr, else if (g_hash_table_lookup(optlist, "4") != NULL) conn->family = AF_INET; + if (g_hash_table_lookup(optlist, "notls") != NULL) + conn->use_tls = FALSE; if (g_hash_table_lookup(optlist, "tls") != NULL || g_hash_table_lookup(optlist, "ssl") != NULL) conn->use_tls = TRUE; if ((tmp = g_hash_table_lookup(optlist, "tls_cert")) != NULL || (tmp = g_hash_table_lookup(optlist, "ssl_cert")) != NULL) @@ -107,6 +109,8 @@ static SERVER_CONNECT_REC *get_server_connect(const char *data, int *plus_addr, conn->tls_pkey = g_strdup(tmp); if ((tmp = g_hash_table_lookup(optlist, "tls_pass")) != NULL || (tmp = g_hash_table_lookup(optlist, "ssl_pass")) != NULL) conn->tls_pass = g_strdup(tmp); + if (g_hash_table_lookup(optlist, "notls_verify") != NULL) + conn->tls_verify = FALSE; if (g_hash_table_lookup(optlist, "tls_verify") != NULL || g_hash_table_lookup(optlist, "ssl_verify") != NULL) conn->tls_verify = TRUE; if ((tmp = g_hash_table_lookup(optlist, "tls_cafile")) != NULL || (tmp = g_hash_table_lookup(optlist, "ssl_cafile")) != NULL) @@ -149,13 +153,13 @@ static SERVER_CONNECT_REC *get_server_connect(const char *data, int *plus_addr, return conn; } -/* SYNTAX: CONNECT [-4 | -6] [-tls] [-tls_cert ] [-tls_pkey ] [-tls_pass ] +/* SYNTAX: CONNECT [-4 | -6] [-tls_cert ] [-tls_pkey ] [-tls_pass ] [-tls_verify] [-tls_cafile ] [-tls_capath ] - [-tls_ciphers ] [-tls_pinned_cert ] [-tls_pinned_pubkey ] - [-!] [-noautosendcmd] - [-noproxy] [-network ] [-host ] - [-rawlog ] -
| [ [ []]] */ + [-tls_ciphers ] [-tls_pinned_cert ] + [-tls_pinned_pubkey ] [-!] [-noautosendcmd] [-tls | -notls] + [-starttls | -disallow_starttls] [-noproxy] [-network ] + [-host ] [-rawlog ] +
| [ [ []]] */ /* NOTE: -network replaces the old -ircnet flag. */ static void cmd_connect(const char *data) { @@ -520,9 +524,9 @@ void chat_commands_init(void) command_set_options( "connect", "4 6 !! -network ~ssl ~+ssl_cert ~+ssl_pkey ~+ssl_pass ~ssl_verify ~+ssl_cafile " - "~+ssl_capath ~+ssl_ciphers ~+ssl_pinned_cert ~+ssl_pinned_pubkey tls +tls_cert " - "+tls_pkey +tls_pass tls_verify +tls_cafile +tls_capath +tls_ciphers +tls_pinned_cert " - "+tls_pinned_pubkey +host noproxy -rawlog noautosendcmd"); + "~+ssl_capath ~+ssl_ciphers ~+ssl_pinned_cert ~+ssl_pinned_pubkey tls notls +tls_cert " + "+tls_pkey +tls_pass tls_verify notls_verify +tls_cafile +tls_capath +tls_ciphers " + "+tls_pinned_cert +tls_pinned_pubkey +host noproxy -rawlog noautosendcmd"); command_set_options("msg", "channel nick"); } diff --git a/src/fe-common/irc/fe-irc-server.c b/src/fe-common/irc/fe-irc-server.c index b5697c96..d30aa45d 100644 --- a/src/fe-common/irc/fe-irc-server.c +++ b/src/fe-common/irc/fe-irc-server.c @@ -51,9 +51,10 @@ const char *get_visible_target(IRC_SERVER_REC *server, const char *target) return target; } -/* SYNTAX: SERVER ADD|MODIFY [-4 | -6] [-tls] [-tls_cert ] [-tls_pkey ] +/* SYNTAX: SERVER ADD|MODIFY [-4 | -6] [-tls_cert ] [-tls_pkey ] [-tls_pass ] [-tls_verify] [-tls_cafile ] - [-tls_capath ] [-tls_ciphers ] [-starttls | -nostarttls] + [-tls_capath ] [-tls_ciphers ] [-tls | -notls] + [-starttls | -nostarttls | -disallow_starttls | -nodisallow_starttls] [-auto | -noauto] [-network ] [-host ] [-cmdspeed ] [-cmdmax ] [-port ]
[ []] */ @@ -85,9 +86,10 @@ static void sig_server_add_fill(IRC_SERVER_SETUP_REC *rec, if (value != NULL && *value != '\0') rec->max_cmds_at_once = atoi(value); value = g_hash_table_lookup(optlist, "querychans"); if (value != NULL && *value != '\0') rec->max_query_chans = atoi(value); - if (g_hash_table_lookup(optlist, "nonostarttls")) + if (g_hash_table_lookup(optlist, "nodisallow_starttls") || + g_hash_table_lookup(optlist, "nostarttls")) rec->starttls = -1; - if (g_hash_table_lookup(optlist, "nostarttls")) + if (g_hash_table_lookup(optlist, "disallow_starttls")) rec->starttls = 0; if (g_hash_table_lookup(optlist, "starttls")) rec->starttls = 1; @@ -114,8 +116,10 @@ static void cmd_server_list(const char *data) g_string_append(str, "autoconnect, "); if (rec->no_proxy) g_string_append(str, "noproxy, "); - if (rec->starttls >= 0) - g_string_append_printf(str, "%sstarttls, ", rec->starttls ? "" : "no"); + if (rec->starttls == 0) + g_string_append(str, "disallow_starttls, "); + if (rec->starttls == 1) + g_string_append(str, "starttls, "); if (rec->use_tls) g_string_append(str, "tls, "); if (rec->tls_cert) { @@ -163,12 +167,11 @@ void fe_irc_server_init(void) signal_add("server add fill", (SIGNAL_FUNC) sig_server_add_fill); command_bind("server list", NULL, (SIGNAL_FUNC) cmd_server_list); - command_set_options( - "server add", - "-ircnet -network -cmdspeed -cmdmax -querychans starttls nostarttls nonostarttls"); - command_set_options( - "server modify", - "-ircnet -network -cmdspeed -cmdmax -querychans starttls nostarttls nonostarttls"); + command_set_options("server add", "-ircnet -network -cmdspeed -cmdmax -querychans starttls " + "nostarttls disallow_starttls nodisallow_starttls"); + command_set_options("server modify", + "-ircnet -network -cmdspeed -cmdmax -querychans starttls nostarttls " + "disallow_starttls nodisallow_starttls"); } void fe_irc_server_deinit(void) diff --git a/src/irc/core/irc-commands.c b/src/irc/core/irc-commands.c index 8c8179e0..9cc8afe8 100644 --- a/src/irc/core/irc-commands.c +++ b/src/irc/core/irc-commands.c @@ -1053,7 +1053,7 @@ void irc_commands_init(void) signal_add("whois end", (SIGNAL_FUNC) event_end_of_whois); signal_add("whowas event", (SIGNAL_FUNC) event_whowas); - command_set_options("connect", "+ircnet starttls nostarttls"); + command_set_options("connect", "+ircnet starttls disallow_starttls"); command_set_options("topic", "delete"); command_set_options("list", "yes"); command_set_options("away", "one all"); diff --git a/src/irc/core/irc-servers-reconnect.c b/src/irc/core/irc-servers-reconnect.c index 4a8d2908..f0e6f345 100644 --- a/src/irc/core/irc-servers-reconnect.c +++ b/src/irc/core/irc-servers-reconnect.c @@ -51,7 +51,7 @@ static void sig_server_connect_copy(SERVER_CONNECT_REC **dest, rec->sasl_mechanism = src->sasl_mechanism; rec->sasl_username = g_strdup(src->sasl_username); rec->sasl_password = g_strdup(src->sasl_password); - rec->no_starttls = src->no_starttls; + rec->disallow_starttls = src->disallow_starttls; rec->starttls = src->starttls; *dest = (SERVER_CONNECT_REC *) rec; } diff --git a/src/irc/core/irc-servers-setup.c b/src/irc/core/irc-servers-setup.c index 74edb47b..6ba22862 100644 --- a/src/irc/core/irc-servers-setup.c +++ b/src/irc/core/irc-servers-setup.c @@ -45,7 +45,7 @@ static void sig_server_setup_fill_reconn(IRC_SERVER_CONNECT_REC *conn, if (sserver->max_query_chans > 0) conn->max_query_chans = sserver->max_query_chans; if (sserver->starttls == 0) - conn->no_starttls = 1; + conn->disallow_starttls = 1; else if (sserver->starttls == 1) conn->starttls = 1; } @@ -67,8 +67,8 @@ static void sig_server_setup_fill_connect(IRC_SERVER_CONNECT_REC *conn, GHashTab if (g_hash_table_lookup(optlist, "starttls") != NULL) conn->starttls = 1; - else if (g_hash_table_lookup(optlist, "nostarttls") != NULL) - conn->no_starttls = 1; + else if (g_hash_table_lookup(optlist, "disallow_starttls") != NULL) + conn->disallow_starttls = 1; } static void sig_server_setup_fill_chatnet(IRC_SERVER_CONNECT_REC *conn, diff --git a/src/irc/core/irc-servers.c b/src/irc/core/irc-servers.c index 29b389f4..bcad3f9e 100644 --- a/src/irc/core/irc-servers.c +++ b/src/irc/core/irc-servers.c @@ -244,7 +244,7 @@ static void server_init_1(IRC_SERVER_REC *server) irc_cap_toggle(server, CAP_ACCOUNT_NOTIFY, TRUE); irc_cap_toggle(server, CAP_SELF_MESSAGE, TRUE); irc_cap_toggle(server, CAP_SERVER_TIME, TRUE); - if (!conn->use_tls && (conn->starttls || !conn->no_starttls)) { + if (!conn->use_tls && (conn->starttls || !conn->disallow_starttls)) { irc_cap_toggle(server, CAP_STARTTLS, TRUE); } @@ -314,7 +314,7 @@ void irc_server_send_starttls(IRC_SERVER_REC *server) { g_return_if_fail(server != NULL); - g_warning("Now attempting STARTTLS"); + g_warning("[%s] Now attempting STARTTLS", server->tag); irc_send_cmd_now(server, "STARTTLS"); } diff --git a/src/irc/core/irc-servers.h b/src/irc/core/irc-servers.h index 753666ff..16e2061e 100644 --- a/src/irc/core/irc-servers.h +++ b/src/irc/core/irc-servers.h @@ -61,7 +61,7 @@ struct _IRC_SERVER_CONNECT_REC { int max_query_chans; int max_kicks, max_msgs, max_modes, max_whois; - int no_starttls:1; + int disallow_starttls:1; int starttls:1; }; /* clang-format on */