return;
if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
- port = *portstr == '\0' ? 6667 : atoi(portstr);
+ port = *portstr == '\0' ? DEFAULT_SERVER_ADD_PORT : atoi(portstr);
rec = server_setup_find_port(addr, port);
if (rec == NULL) {
else if (g_hash_table_lookup(optlist, "4"))
rec->family = AF_INET;
+ 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;
cmd_params_free(free_arg);
}
+static void server_command(const char *data, SERVER_REC *server,
+ WI_ITEM_REC *item)
+{
+ if (server == NULL) {
+ /* this command accepts non-connected server too */
+ server = active_win->connect_server;
+ }
+
+ signal_continue(3, data, server, item);
+}
+
static void sig_server_looking(SERVER_REC *server)
{
g_return_if_fail(server != NULL);
char ipaddr[MAX_IP_LEN];
g_return_if_fail(server != NULL);
- g_return_if_fail(ip != NULL);
- net_ip2host(ip, ipaddr);
- printformat(server, NULL, MSGLEVEL_CLIENTNOTICE, TXT_CONNECTING,
+ if (ip == NULL)
+ ipaddr[0] = '\0';
+ else
+ net_ip2host(ip, ipaddr);
+
+ printformat(server, NULL, MSGLEVEL_CLIENTNOTICE,
+ !server->connrec->reconnecting ?
+ TXT_CONNECTING : TXT_RECONNECTING,
server->connrec->address, ipaddr, server->connrec->port);
}
command_bind("server connect", NULL, (SIGNAL_FUNC) cmd_server_connect);
command_bind("server add", NULL, (SIGNAL_FUNC) cmd_server_add);
command_bind("server remove", NULL, (SIGNAL_FUNC) cmd_server_remove);
- command_set_options("server add", "4 6 auto noauto proxy noproxy -host -port");
+ 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 +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);
command_unbind("server connect", (SIGNAL_FUNC) cmd_server_connect);
command_unbind("server add", (SIGNAL_FUNC) cmd_server_add);
command_unbind("server remove", (SIGNAL_FUNC) cmd_server_remove);
+ command_unbind("server", (SIGNAL_FUNC) server_command);
+ command_unbind("disconnect", (SIGNAL_FUNC) server_command);
signal_remove("server looking", (SIGNAL_FUNC) sig_server_looking);
signal_remove("server connecting", (SIGNAL_FUNC) sig_server_connecting);