Added /tls trusted command

This commit is contained in:
James Booth
2015-09-24 00:43:41 +01:00
parent d96e68ea53
commit 6f8ad6b8e8
4 changed files with 67 additions and 0 deletions

View File

@@ -195,6 +195,7 @@ static struct cmd_t command_defs[] =
"/tls allow",
"/tls always",
"/tls deny",
"/tls trusted",
"/tls certpath",
"/tls certpath set <path>",
"/tls certpath clear")
@@ -204,6 +205,7 @@ static struct cmd_t command_defs[] =
{ "allow", "Allow connection to continue with an invalid TLS certificate." },
{ "always", "Always allow connections with this invalid TLS certificate." },
{ "deny", "Terminate TLS connection." },
{ "trusted", "List manually trusted certificates." },
{ "certpath", "Show the trusted certificate path." },
{ "certpath set <path>", "Specify filesystem path containing trusted certificates." },
{ "certpath clear", "Clear the trusted certificate path." })
@@ -2100,6 +2102,7 @@ cmd_init(void)
autocomplete_add(tls_ac, "allow");
autocomplete_add(tls_ac, "always");
autocomplete_add(tls_ac, "deny");
autocomplete_add(tls_ac, "trusted");
autocomplete_add(tls_ac, "certpath");
tls_certpath_ac = autocomplete_new();

View File

@@ -49,6 +49,7 @@
#include "config/account.h"
#include "config/preferences.h"
#include "config/theme.h"
#include "config/tlscerts.h"
#include "contact.h"
#include "roster_list.h"
#include "jid.h"
@@ -190,6 +191,39 @@ cmd_tls(ProfWin *window, const char * const command, gchar **args)
cons_bad_cmd_usage(command);
return TRUE;
}
} else if (g_strcmp0(args[0], "trusted") == 0) {
GList *certs = tlscerts_list();
GList *curr = certs;
if (curr) {
cons_show("Trusted certificates:");
cons_show("");
}
while (curr) {
TLSCertificate *cert = curr->data;
if (cert->domain) {
cons_show("Domain : %s", cert->domain);
}
if (cert->organisation) {
cons_show("Organisation : %s", cert->organisation);
}
if (cert->email) {
cons_show("Email : %s", cert->email);
}
if (cert->notbefore) {
cons_show("Start : %s", cert->notbefore);
}
if (cert->notafter) {
cons_show("End : %s", cert->notafter);
}
if (cert->fingerprint) {
cons_show("Fingerprint : %s", cert->fingerprint);
}
cons_show("");
curr = g_list_next(curr);
}
g_list_free_full(certs, (GDestroyNotify)tlscerts_free);
return TRUE;
} else {
cons_bad_cmd_usage(command);
return TRUE;