Mercurial > hg
changeset 1320:cb400799db8f
Configurable OTR directory
author | franky@veqlargh.fs |
---|---|
date | Wed, 03 Oct 2007 21:27:46 +0200 |
parents | dc83548be698 |
children | f3bea3c98d4f |
files | mcabber/mcabberrc.example mcabber/src/otr.c |
diffstat | 2 files changed, 25 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/mcabberrc.example Tue Oct 02 23:06:33 2007 +0200 +++ b/mcabber/mcabberrc.example Wed Oct 03 21:27:46 2007 +0200 @@ -362,6 +362,11 @@ #pgp disable foo@bar.org #pgp setkey bar@foo.net C9940A9BB0B92210 +# OTR directory +# If mcabber is built with OTR (Off-The-Record) support, you can specify +# the OTR directory with the otr_dir option (default = ~/.mcabber/otr/). +#set otr_dir = "~/.mcabber/otr/" + # Aliases alias me = say /me alias online = status online
--- a/mcabber/src/otr.c Tue Oct 02 23:06:33 2007 +0200 +++ b/mcabber/src/otr.c Wed Oct 03 21:27:46 2007 +0200 @@ -109,10 +109,11 @@ static void otr_startstop(const char * buddy, int start); static void otr_handle_smp_tlvs(OtrlTLV * tlvs, ConnContext * ctx); +static char * otr_get_dir(void); void otr_init(const char *jid) { - char * root = expand_filename("~/.mcabber/otr/"); + char * root = otr_get_dir(); account = jidtodisp(jid); keyfile = g_strdup_printf("%s%s.key", root, account); fprfile = g_strdup_printf("%s%s.fpr", root, account); @@ -135,7 +136,7 @@ { ConnContext * ctx; - for(ctx = userstate->context_root; ctx; ctx = ctx->next) + for (ctx = userstate->context_root; ctx; ctx = ctx->next) if (ctx->msgstate == OTRL_MSGSTATE_ENCRYPTED) otr_message_disconnect(ctx); @@ -158,6 +159,16 @@ keyfile = NULL; } +static char * otr_get_dir(void) +{ + char * configured_dir = (char *)settings_opt_get("otr_dir"); + + if (configured_dir) + return expand_filename(configured_dir); + else + return expand_filename("~/.mcabber/otr/"); +} + static ConnContext * otr_get_context(const char *buddy) { int null = 0; @@ -548,6 +559,7 @@ const char *protocol) { gcry_error_t e; + char * root; scr_LogPrint(LPRINT_LOGNORM, "Generating new OTR key for %s. This may take a while...", @@ -556,9 +568,12 @@ e = otrl_privkey_generate(userstate, keyfile, accountname, protocol); - if (e) - scr_LogPrint(LPRINT_LOGNORM, "OTR key generation failed!" - " Please mkdir ~/.mcabber/otr/ and restart mcabber."); + if (e) { + root = otr_get_dir(); + scr_LogPrint(LPRINT_LOGNORM, "OTR key generation failed! Please mkdir " + "%s if you want to use otr encryption.", root); + g_free(root); + } else scr_LogPrint(LPRINT_LOGNORM, "OTR key generated."); }