--- a/src/perl/common/Server.xs 2012-09-18 00:45:03.000000000 +0200 +++ b/src/perl/common/Server.xs 2012-09-17 12:43:26.000000000 +0200 @@ -102,3 +102,9 @@ CODE: server->send_message(server, target, msg, target_type); +int +server_connection_set_key(server, key, value) + Irssi::Server server + char *key + char *value + --- a/src/core/servers.c 2012-09-18 00:45:03.000000000 +0200 +++ b/src/core/servers.c 2012-09-17 13:05:28.000000000 +0200 @@ -760,3 +760,53 @@ module_uniq_destroy("SERVER"); module_uniq_destroy("SERVER CONNECT"); } + +int server_connection_set_key(SERVER_REC *server, char *key, char *value) +{ + if (strcmp(key, "password") == 0) { + g_free_not_null(server->connrec->password); + server->connrec->password = g_strdup(value); + } + if (strcmp(key, "nick") == 0) { + g_free_not_null(server->connrec->nick); + server->connrec->nick = g_strdup(value); + } + else if (strcmp(key, "username") == 0) { + g_free_not_null(server->connrec->username); + server->connrec->username = g_strdup(value); + } + else if (strcmp(key, "realname") == 0) { + g_free_not_null(server->connrec->realname); + server->connrec->realname = g_strdup(value); + } + else if (strcmp(key, "tls_cert") == 0) { + g_free_not_null(server->connrec->tls_cert); + server->connrec->tls_cert = g_strdup(value); + } + else if (strcmp(key, "tls_pkey") == 0) { + g_free_not_null(server->connrec->tls_pkey); + server->connrec->tls_pkey = g_strdup(value); + } + else if (strcmp(key, "tls_cafile") == 0) { + g_free_not_null(server->connrec->tls_cafile); + server->connrec->tls_cafile = g_strdup(value); + } + else if (strcmp(key, "tls_capath") == 0) { + g_free_not_null(server->connrec->tls_capath); + server->connrec->tls_capath = g_strdup(value); + } + else if (strcmp(key, "use_tls") == 0) { + server->connrec->use_tls = (strcmp(value, "no") != 0); + } + else if (strcmp(key, "tls_verify") == 0) { + server->connrec->tls_verify = (strcmp(value, "no") != 0); + } + else if (strcmp(key, "resolve_prefer_ipv6") == 0) { + server->connrec->family = (strcmp(value, "no") != 0); + } + else { + return FALSE; + } + return TRUE; +} +