Merged Irssi SVN (upcoming irssi 0.8.11).
[silc.git] / apps / irssi / src / fe-common / core / fe-server.c
index fdc676af9e3e34e44552550c36408d6b47b72308..5ecacbbc871f49b8d25196a74838fca4ebaac303 100644 (file)
@@ -147,6 +147,32 @@ static void cmd_server_add(const char *data)
        if (g_hash_table_lookup(optlist, "ssl"))
                rec->use_ssl = TRUE;
 
+       value = g_hash_table_lookup(optlist, "ssl_cert");
+       if (value != NULL && *value != '\0')
+               rec->ssl_cert = g_strdup(value);
+
+       value = g_hash_table_lookup(optlist, "ssl_pkey");
+       if (value != NULL && *value != '\0')
+               rec->ssl_pkey = g_strdup(value);
+
+       if (g_hash_table_lookup(optlist, "ssl_verify"))
+               rec->ssl_verify = TRUE;
+
+       value = g_hash_table_lookup(optlist, "ssl_cafile");
+       if (value != NULL && *value != '\0')
+               rec->ssl_cafile = g_strdup(value);
+
+       value = g_hash_table_lookup(optlist, "ssl_capath");
+       if (value != NULL && *value != '\0')
+               rec->ssl_capath = g_strdup(value);
+
+       if ((rec->ssl_cafile != NULL && rec->ssl_cafile[0] != '\0')
+       ||  (rec->ssl_capath != NULL && rec->ssl_capath[0] != '\0'))
+               rec->ssl_verify = TRUE;
+
+       if ((rec->ssl_cert != NULL && rec->ssl_cert[0] != '\0') || rec->ssl_verify == TRUE)
+               rec->use_ssl = TRUE;
+
        if (g_hash_table_lookup(optlist, "auto")) rec->autoconnect = TRUE;
        if (g_hash_table_lookup(optlist, "noauto")) rec->autoconnect = FALSE;
        if (g_hash_table_lookup(optlist, "proxy")) rec->no_proxy = FALSE;
@@ -258,7 +284,9 @@ static void sig_server_connecting(SERVER_REC *server, IPADDR *ip)
        else
                net_ip2host(ip, ipaddr);
 
-       printformat(server, NULL, MSGLEVEL_CLIENTNOTICE, TXT_CONNECTING,
+       printformat(server, NULL, MSGLEVEL_CLIENTNOTICE,
+                   !server->connrec->reconnecting ?
+                   TXT_CONNECTING : TXT_RECONNECTING,
                    server->connrec->address, ipaddr, server->connrec->port);
 }
 
@@ -343,7 +371,7 @@ void fe_server_init(void)
        command_bind("server remove", NULL, (SIGNAL_FUNC) cmd_server_remove);
        command_bind_first("server", NULL, (SIGNAL_FUNC) server_command);
        command_bind_first("disconnect", NULL, (SIGNAL_FUNC) server_command);
-       command_set_options("server add", "4 6 ssl auto noauto proxy noproxy -host -port");
+       command_set_options("server add", "4 6 ssl +ssl_cert +ssl_pkey ssl_verify +ssl_cafile +ssl_capath auto noauto proxy noproxy -host -port");
 
        signal_add("server looking", (SIGNAL_FUNC) sig_server_looking);
        signal_add("server connecting", (SIGNAL_FUNC) sig_server_connecting);