X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fpubsub-bot.git;a=blobdiff_plain;f=status.c;h=0ff93ef8577f233f39f560be17f94c0b4ee00d24;hp=30e76076a95499cc08094bd7c2bf2eaee56d4534;hb=HEAD;hpb=575ce6c86bdc456ac8472a6ff5b1c52fda9d5cdd diff --git a/status.c b/status.c index 30e7607..0ff93ef 100644 --- a/status.c +++ b/status.c @@ -23,13 +23,14 @@ #include #include #include +#include #include #include static char * server = "vespa.holoscopio.com"; static char * username = "pubsub"; -static char * password = "pubsub"; -static char * pbservice = "pubsub.vespa.holoscopio.com"; +static char * password = NULL; +static char * pbservice = "pubsub@vespa.holoscopio.com"; static char * authed_jid = "vespa"; static iks * @@ -82,6 +83,7 @@ createnode (iksparser *parser, char *node) iq = createiq ("set", pbservice, "pubsub", "http://jabber.org/protocol/pubsub", &query); iks_insert_attrib (iks_insert (query, "create"), "node", node); + iks_insert (query, "configure"); iks_send (parser, iq); iks_delete (iq); } @@ -219,6 +221,7 @@ xmpp_initial_presence_hook (iksparser *parser, iks *node) { iks *pres; pres = iks_make_pres (IKS_SHOW_AVAILABLE, "Microblogging here!"); + iks_insert_cdata (iks_insert (pres, "priority"), "-1", 2); iks_send (parser, pres); iks_delete (pres); return 0; @@ -287,6 +290,8 @@ xmpp_tls_hook (iksparser *parser, iks *node) static int xmpp_sasl_hook (iksparser *parser, iks* node) { + if (password == NULL) + return -1; iks_start_sasl (parser, IKS_SASL_DIGEST_MD5, username, password); return 0; } @@ -295,6 +300,12 @@ static int xmpp_bind_hook (iksparser *parser, iks *node) { iks *iq; + if (password) + { + memset (password, 0, sysconf (_SC_PASS_MAX)); + free (password); + password = NULL; + } iq = iks_new ("iq"); iks_insert_attrib (iq, "type", "set"); iks_insert_attrib (iq, "id", "bind1"); @@ -542,7 +553,9 @@ main (int argc, char **argv) { iksparser *parser; int c; - while ((c = getopt (argc, argv, "s:u:p:i:a:")) != -1) + int askpasswd = 0; + char *passwd = strdup ("pubsub"); + while ((c = getopt (argc, argv, "s:u:p:i:a:w")) != -1) { switch (c) { @@ -553,7 +566,8 @@ main (int argc, char **argv) username = optarg; break; case 'p': - password = optarg; + free (passwd); + passwd = strdup (optarg); break; case 'i': pbservice = optarg; @@ -561,8 +575,21 @@ main (int argc, char **argv) case 'a': authed_jid = optarg; break; + case 'w': + askpasswd = 1; + break; } } + if (askpasswd) + passwd = getpass ("Type password: "); + password = malloc (sysconf (_SC_PASS_MAX)); + strcpy (password, passwd); + memset (passwd, 0, strlen (passwd)); + if (!askpasswd) + { + free (passwd); + passwd = NULL; + } parser = iks_stream_new ("jabber:client", &parser, hook); iks_connect_tcp (parser, server, 5222); loop (parser);