diff options
author | James Booth <boothj5@gmail.com> | 2015-10-18 03:06:23 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-10-18 03:06:23 +0100 |
commit | 6640a0891fb51b74c8377745ee1e5585f741a0be (patch) | |
tree | 208f6b12c8abd0f43b7900e6d3c288043a13d45c /src/command/commands.c | |
parent | 9d2745e462eabafcab51e04ec9ad225a13cf9a6f (diff) | |
download | profani-tty-6640a0891fb51b74c8377745ee1e5585f741a0be.tar.gz |
Force tls on all connections, add tls policy account property
Diffstat (limited to 'src/command/commands.c')
-rw-r--r-- | src/command/commands.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/command/commands.c b/src/command/commands.c index 370c466c..c37af0c7 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -255,7 +255,7 @@ cmd_connect(ProfWin *window, const char * const command, gchar **args) return TRUE; } - gchar *opt_keys[] = { "server", "port", NULL }; + gchar *opt_keys[] = { "server", "port", "tls", NULL }; gboolean parsed; GHashTable *options = parse_options(&args[args[0] ? 1 : 0], opt_keys, &parsed); @@ -267,6 +267,16 @@ cmd_connect(ProfWin *window, const char * const command, gchar **args) char *altdomain = g_hash_table_lookup(options, "server"); + char *tls_policy = g_hash_table_lookup(options, "tls"); + if (tls_policy && + (g_strcmp0(tls_policy, "force") != 0) && + (g_strcmp0(tls_policy, "allow") != 0) && + (g_strcmp0(tls_policy, "disable") != 0)) { + cons_bad_cmd_usage(command); + cons_show(""); + return TRUE; + } + int port = 0; if (g_hash_table_contains(options, "port")) { char *port_str = g_hash_table_lookup(options, "port"); @@ -334,7 +344,7 @@ cmd_connect(ProfWin *window, const char * const command, gchar **args) } else { jid = strdup(lower); char *passwd = ui_ask_password(); - conn_status = cl_ev_connect_jid(jid, passwd, altdomain, port); + conn_status = cl_ev_connect_jid(jid, passwd, altdomain, port, tls_policy); free(passwd); } @@ -386,7 +396,7 @@ cmd_account(ProfWin *window, const char * const command, gchar **args) if (account_name == NULL) { cons_bad_cmd_usage(command); } else { - accounts_add(account_name, NULL, 0); + accounts_add(account_name, NULL, 0, NULL); cons_show("Account created."); cons_show(""); } @@ -590,6 +600,16 @@ cmd_account(ProfWin *window, const char * const command, gchar **args) } else if (strcmp(property, "startscript") == 0) { accounts_set_script_start(account_name, value); cons_show("Updated start script for account %s: %s", account_name, value); + } else if (strcmp(property, "tls") == 0) { + if ((g_strcmp0(value, "force") != 0) + && (g_strcmp0(value, "allow") != 0) + && (g_strcmp0(value, "disable") != 0)) { + cons_show("TLS policy must be one of: force, allow or disable."); + } else { + accounts_set_tls_policy(account_name, value); + cons_show("Updated TLS policy for account %s: %s", account_name, value); + cons_show(""); + } } else if (valid_resource_presence_string(property)) { int intval; char *err_msg = NULL; |