projects
/
cascardo
/
pubsub-bot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use getpass to get user password.
[cascardo/pubsub-bot.git]
/
status.c
diff --git
a/status.c
b/status.c
index
9c80464
..
62572fb
100644
(file)
--- a/
status.c
+++ b/
status.c
@@
-23,12
+23,13
@@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <limits.h>
#include <dbus/dbus.h>
#include <dbus/dbus-glib-lowlevel.h>
static char * server = "vespa.holoscopio.com";
static char * username = "pubsub";
#include <dbus/dbus.h>
#include <dbus/dbus-glib-lowlevel.h>
static char * server = "vespa.holoscopio.com";
static char * username = "pubsub";
-static char * password =
"pubsub"
;
+static char * password =
NULL
;
static char * pbservice = "pubsub@vespa.holoscopio.com";
static char * authed_jid = "vespa";
static char * pbservice = "pubsub@vespa.holoscopio.com";
static char * authed_jid = "vespa";
@@
-287,6
+288,8
@@
xmpp_tls_hook (iksparser *parser, iks *node)
static int
xmpp_sasl_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;
}
iks_start_sasl (parser, IKS_SASL_DIGEST_MD5, username, password);
return 0;
}
@@
-295,6
+298,12
@@
static int
xmpp_bind_hook (iksparser *parser, iks *node)
{
iks *iq;
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");
iq = iks_new ("iq");
iks_insert_attrib (iq, "type", "set");
iks_insert_attrib (iq, "id", "bind1");
@@
-542,7
+551,9
@@
main (int argc, char **argv)
{
iksparser *parser;
int c;
{
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)
{
{
switch (c)
{
@@
-553,7
+564,8
@@
main (int argc, char **argv)
username = optarg;
break;
case 'p':
username = optarg;
break;
case 'p':
- password = optarg;
+ free (passwd);
+ passwd = strdup (optarg);
break;
case 'i':
pbservice = optarg;
break;
case 'i':
pbservice = optarg;
@@
-561,8
+573,21
@@
main (int argc, char **argv)
case 'a':
authed_jid = optarg;
break;
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);
parser = iks_stream_new ("jabber:client", &parser, hook);
iks_connect_tcp (parser, server, 5222);
loop (parser);