mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Added /tls trusted command
This commit is contained in:
parent
d96e68ea53
commit
6f8ad6b8e8
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -68,6 +68,34 @@ tlscerts_exists(const char * const fingerprint)
|
||||
return g_key_file_has_group(tlscerts, fingerprint);
|
||||
}
|
||||
|
||||
GList*
|
||||
tlscerts_list(void)
|
||||
{
|
||||
GList *res = NULL;
|
||||
gsize len = 0;
|
||||
gchar **groups = g_key_file_get_groups(tlscerts, &len);
|
||||
|
||||
int i = 0;
|
||||
for (i = 0; i < g_strv_length(groups); i++) {
|
||||
char *fingerprint = strdup(groups[i]);
|
||||
char *domain = g_key_file_get_string(tlscerts, fingerprint, "domain", NULL);
|
||||
char *organisation = g_key_file_get_string(tlscerts, fingerprint, "organisation", NULL);
|
||||
char *email = g_key_file_get_string(tlscerts, fingerprint, "email", NULL);
|
||||
char *notbefore = g_key_file_get_string(tlscerts, fingerprint, "start", NULL);
|
||||
char *notafter = g_key_file_get_string(tlscerts, fingerprint, "end", NULL);
|
||||
|
||||
TLSCertificate *cert = tlscerts_new(fingerprint, domain, organisation, email, notbefore, notafter);
|
||||
|
||||
res = g_list_append(res, cert);
|
||||
}
|
||||
|
||||
if (groups) {
|
||||
g_strfreev(groups);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
TLSCertificate*
|
||||
tlscerts_new(const char * const fingerprint, const char * const domain, const char * const organisation,
|
||||
const char * const email, const char * const notbefore, const char * const notafter)
|
||||
|
@ -56,6 +56,8 @@ void tlscerts_add(TLSCertificate *cert);
|
||||
|
||||
void tlscerts_free(TLSCertificate *cert);
|
||||
|
||||
GList* tlscerts_list(void);
|
||||
|
||||
void tlscerts_close(void);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user