1 diff --git a/src/core/servers.c b/src/core/servers.c
2 index 30fc684..83733d0 100644
3 --- a/src/core/servers.c
4 +++ b/src/core/servers.c
5 @@ -783,3 +783,53 @@ void servers_deinit(void)
6 module_uniq_destroy("SERVER");
7 module_uniq_destroy("SERVER CONNECT");
10 +int server_connection_set_key(SERVER_REC *server, char *key, char *value)
12 + if (strcmp(key, "password") == 0) {
13 + g_free_not_null(server->connrec->password);
14 + server->connrec->password = g_strdup(value);
16 + if (strcmp(key, "nick") == 0) {
17 + g_free_not_null(server->connrec->nick);
18 + server->connrec->nick = g_strdup(value);
20 + else if (strcmp(key, "username") == 0) {
21 + g_free_not_null(server->connrec->username);
22 + server->connrec->username = g_strdup(value);
24 + else if (strcmp(key, "realname") == 0) {
25 + g_free_not_null(server->connrec->realname);
26 + server->connrec->realname = g_strdup(value);
28 + else if (strcmp(key, "tls_cert") == 0) {
29 + g_free_not_null(server->connrec->tls_cert);
30 + server->connrec->tls_cert = g_strdup(value);
32 + else if (strcmp(key, "tls_pkey") == 0) {
33 + g_free_not_null(server->connrec->tls_pkey);
34 + server->connrec->tls_pkey = g_strdup(value);
36 + else if (strcmp(key, "tls_cafile") == 0) {
37 + g_free_not_null(server->connrec->tls_cafile);
38 + server->connrec->tls_cafile = g_strdup(value);
40 + else if (strcmp(key, "tls_capath") == 0) {
41 + g_free_not_null(server->connrec->tls_capath);
42 + server->connrec->tls_capath = g_strdup(value);
44 + else if (strcmp(key, "use_tls") == 0) {
45 + server->connrec->use_tls = (strcmp(value, "no") != 0);
47 + else if (strcmp(key, "tls_verify") == 0) {
48 + server->connrec->tls_verify = (strcmp(value, "no") != 0);
50 + else if (strcmp(key, "resolve_prefer_ipv6") == 0) {
51 + server->connrec->family = (strcmp(value, "no") != 0);
59 diff --git i/src/core/servers.h w/src/core/servers.h
60 index d52603e..05fb2e5 100644
61 --- i/src/core/servers.h
62 +++ w/src/core/servers.h
63 @@ -66,6 +66,9 @@ void server_connect_failed(SERVER_REC *server, const char *msg);
64 /* Change your nick */
65 void server_change_nick(SERVER_REC *server, const char *nick);
67 +/* Set a key via passwd.pl */
68 +int server_connection_set_key(SERVER_REC *server, char *key, char *value);
70 /* Push meta data onto the server stash */
71 void server_meta_stash(SERVER_REC *server, const char *meta_key, const char *meta_value);
72 /* Get a value from the stash */
73 diff --git a/src/perl/common/Server.xs b/src/perl/common/Server.xs
74 index 60878a6..1b6d6d1 100644
75 --- a/src/perl/common/Server.xs
76 +++ b/src/perl/common/Server.xs
77 @@ -103,6 +103,12 @@ send_message(server, target, msg, target_type)
79 server->send_message(server, target, msg, target_type);
82 +server_connection_set_key(server, key, value)
83 + Irssi::Server server
88 server_meta_stash(server, meta_key, meta_value)