mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-23 11:06:21 +00:00
Added /tls revoke
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
#include "config/tlscerts.h"
|
||||
#include "log.h"
|
||||
#include "common.h"
|
||||
#include "tools/autocomplete.h"
|
||||
|
||||
static gchar *tlscerts_loc;
|
||||
static GKeyFile *tlscerts;
|
||||
@@ -48,6 +49,8 @@ static GKeyFile *tlscerts;
|
||||
static gchar* _get_tlscerts_file(void);
|
||||
static void _save_tlscerts(void);
|
||||
|
||||
static Autocomplete certs_ac;
|
||||
|
||||
void
|
||||
tlscerts_init(void)
|
||||
{
|
||||
@@ -60,6 +63,16 @@ tlscerts_init(void)
|
||||
|
||||
tlscerts = g_key_file_new();
|
||||
g_key_file_load_from_file(tlscerts, tlscerts_loc, G_KEY_FILE_KEEP_COMMENTS, NULL);
|
||||
|
||||
certs_ac = autocomplete_new();
|
||||
gsize len = 0;
|
||||
gchar **groups = g_key_file_get_groups(tlscerts, &len);
|
||||
|
||||
int i = 0;
|
||||
for (i = 0; i < g_strv_length(groups); i++) {
|
||||
autocomplete_add(certs_ac, groups[i]);
|
||||
}
|
||||
g_strfreev(groups);
|
||||
}
|
||||
|
||||
gboolean
|
||||
@@ -146,6 +159,8 @@ tlscerts_add(TLSCertificate *cert)
|
||||
return;
|
||||
}
|
||||
|
||||
autocomplete_add(certs_ac, cert->fingerprint);
|
||||
|
||||
if (cert->domain) {
|
||||
g_key_file_set_string(tlscerts, cert->fingerprint, "domain", cert->domain);
|
||||
}
|
||||
@@ -165,6 +180,31 @@ tlscerts_add(TLSCertificate *cert)
|
||||
_save_tlscerts();
|
||||
}
|
||||
|
||||
gboolean
|
||||
tlscerts_revoke(const char * const fingerprint)
|
||||
{
|
||||
gboolean result = g_key_file_remove_group(tlscerts, fingerprint, NULL);
|
||||
if (result) {
|
||||
autocomplete_remove(certs_ac, fingerprint);
|
||||
}
|
||||
|
||||
_save_tlscerts();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
char *
|
||||
tlscerts_complete(const char * const prefix)
|
||||
{
|
||||
return autocomplete_complete(certs_ac, prefix, TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
tlscerts_reset_ac(void)
|
||||
{
|
||||
autocomplete_reset(certs_ac);
|
||||
}
|
||||
|
||||
void
|
||||
tlscerts_free(TLSCertificate *cert)
|
||||
{
|
||||
@@ -183,6 +223,7 @@ tlscerts_close(void)
|
||||
{
|
||||
g_key_file_free(tlscerts);
|
||||
tlscerts = NULL;
|
||||
autocomplete_free(certs_ac);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
|
||||
@@ -54,10 +54,16 @@ gboolean tlscerts_exists(const char * const fingerprint);
|
||||
|
||||
void tlscerts_add(TLSCertificate *cert);
|
||||
|
||||
gboolean tlscerts_revoke(const char * const fingerprint);
|
||||
|
||||
void tlscerts_free(TLSCertificate *cert);
|
||||
|
||||
GList* tlscerts_list(void);
|
||||
|
||||
char* tlscerts_complete(const char * const prefix);
|
||||
|
||||
void tlscerts_reset_ac(void);
|
||||
|
||||
void tlscerts_close(void);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user