# HG changeset patch # User Mikael Berthe # Date 1404645130 -7200 # Node ID 0bfc4bfc127c6ac0b2ef22df38f1b7047c3b0caa # Parent 54548cf8f6460c83c3bafe606ea866e699f12e1c Add support for storing passwords to a MUC (Nico Golde) (Imported from the Debian package.) This patch (by Nico Golde ) adds support for storing MUC passwords. diff -r 54548cf8f646 -r 0bfc4bfc127c mcabber/mcabber/commands.c --- a/mcabber/mcabber/commands.c Sun Jul 06 11:06:31 2014 +0200 +++ b/mcabber/mcabber/commands.c Sun Jul 06 13:12:10 2014 +0200 @@ -2887,7 +2887,7 @@ nick_utf8 = to_utf8(nick); fjid_utf8 = g_strdup_printf("%s/%s", buddy_getjid(bud), nick_utf8); - g_free (nick_utf8); + g_free(nick_utf8); msg = to_utf8(arg); send_message_to(fjid_utf8, msg, NULL, LM_MESSAGE_SUB_TYPE_NOT_SET, FALSE); g_free(fjid_utf8); @@ -3184,7 +3184,7 @@ static void room_bookmark(gpointer bud, char *arg) { const char *roomid; - const char *name = NULL, *nick = NULL, *group = NULL; + const char *name = NULL, *nick = NULL, *passwd = NULL, *group = NULL; char *tmpnick = NULL; enum room_autowhois autowhois = 0; enum room_flagjoins flagjoins = 0; @@ -3198,7 +3198,8 @@ char **paramlst; char **pp; - paramlst = split_arg(arg, 3, 0); // At most 3 parameters + paramlst = split_arg(arg, 4, 0); // At most 4 parameters + for (pp = paramlst; *pp; pp++) { if (!strcasecmp(*pp, "add")) action = bm_add; @@ -3211,11 +3212,13 @@ || !strcasecmp(*pp, "autojoin")) { autojoin = 1; autojoin_set = 1; - } else if (!strcmp(*pp, "-")) + } else if (!strcmp(*pp, "-")) { nick_set = 1; - else { + } else if (nick_set == 0) { nick_set = 1; nick = tmpnick = to_utf8 (*pp); + } else if (nick_set == 1) { + passwd = to_utf8(*pp); } } free_arg_lst(paramlst); @@ -3239,9 +3242,9 @@ group = buddy_getgroupname(bud); } - xmpp_set_storage_bookmark(roomid, name, nick, NULL, autojoin, + xmpp_set_storage_bookmark(roomid, name, nick, passwd, autojoin, printstatus, autowhois, flagjoins, group); - g_free (tmpnick); + g_free(tmpnick); } static void display_all_bookmarks(void) @@ -3266,11 +3269,14 @@ (bm_elt->autojoin ? '*' : ' '), bm_elt->roomjid); if (bm_elt->nick) g_string_append_printf(sbuf, " (%s)", bm_elt->nick); + if (bm_elt->password) /* replace password for security reasons */ + g_string_append_printf(sbuf, " (*****)"); if (bm_elt->name) g_string_append_printf(sbuf, " %s", bm_elt->name); g_free(bm_elt->roomjid); g_free(bm_elt->name); g_free(bm_elt->nick); + g_free(bm_elt->password); g_free(bm_elt); scr_WriteIncomingMessage(NULL, sbuf->str, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); diff -r 54548cf8f646 -r 0bfc4bfc127c mcabber/mcabber/xmpp.c --- a/mcabber/mcabber/xmpp.c Sun Jul 06 11:06:31 2014 +0200 +++ b/mcabber/mcabber/xmpp.c Sun Jul 06 13:12:10 2014 +0200 @@ -2284,7 +2284,7 @@ // If the node is a conference item, let's add the note to our list. if (x->name && !strcmp(x->name, "conference")) { struct bookmark *bm_elt; - const char *autojoin, *name, *nick; + const char *autojoin, *name, *nick, *passwd; const char *fjid = lm_message_node_get_attribute(x, "jid"); if (!fjid) continue; @@ -2293,12 +2293,15 @@ autojoin = lm_message_node_get_attribute(x, "autojoin"); nick = lm_message_node_get_child_value(x, "nick"); name = lm_message_node_get_attribute(x, "name"); + passwd = lm_message_node_get_child_value(x, "password"); if (autojoin && (!strcmp(autojoin, "1") || !strcmp(autojoin, "true"))) bm_elt->autojoin = 1; if (nick) bm_elt->nick = g_strdup(nick); if (name) bm_elt->name = g_strdup(name); + if (passwd) + bm_elt->password = g_strdup(passwd); sl_bookmarks = g_slist_append(sl_bookmarks, bm_elt); } } diff -r 54548cf8f646 -r 0bfc4bfc127c mcabber/mcabber/xmpp.h --- a/mcabber/mcabber/xmpp.h Sun Jul 06 11:06:31 2014 +0200 +++ b/mcabber/mcabber/xmpp.h Sun Jul 06 13:12:10 2014 +0200 @@ -24,6 +24,7 @@ gchar *roomjid; gchar *name; gchar *nick; + gchar *password; guint autojoin; /* enum room_printstatus pstatus; */ /* enum room_autowhois awhois; */