diff --git a/src/core/servers.c b/src/core/servers.c index 30fc684..83733d0 100644 --- a/src/core/servers.c +++ b/src/core/servers.c @@ -783,3 +783,53 @@ void servers_deinit(void) 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; +} + diff --git a/src/perl/common/Server.xs b/src/perl/common/Server.xs index 60878a6..1b6d6d1 100644 --- a/src/perl/common/Server.xs +++ b/src/perl/common/Server.xs @@ -103,6 +103,12 @@ send_message(server, target, msg, target_type) CODE: server->send_message(server, target, msg, target_type); +int +server_connection_set_key(server, key, value) + Irssi::Server server + char *key + char *value + void server_meta_stash(server, meta_key, meta_value) Irssi::Server server