X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fhcxmpp.git;a=blobdiff_plain;f=tictactoe.c;h=e9296633522e7f709afaab145ab89c15a5ed525b;hp=19b4891530407b52c70fd8e79cf1a8b6bf630b3e;hb=HEAD;hpb=f0208965b5b575e8f3c929663c1f797a1f3cdfbc diff --git a/tictactoe.c b/tictactoe.c index 19b4891..e929663 100644 --- a/tictactoe.c +++ b/tictactoe.c @@ -25,89 +25,34 @@ #include #include "tcp_connect.h" #include "iksemel_extra.h" +#include "xmpp.h" +#include "disco.h" -void -plain (void *data) +static void +loop (hc_xmpp_t *xmpp) { - iks *mplain; - char *str; - mplain = iks_new ("auth"); - iks_insert_attrib (mplain, "xmlns", "urn:ietf:params:xml:ns:xmpp-sasl"); - iks_insert_attrib (mplain, "mechanism", "PLAIN"); - str = iks_string (iks_stack (mplain), mplain); - write ((int) data, str, strlen (str)); - iks_delete (mplain); -} - -void -sasl (void *data, iks *s) -{ - iks *m; - for (m = iks_child (s); m != NULL; m = iks_next (m)) - { - if (!iks_strcmp (iks_name (m), "mechanism") && - !iks_strcmp (iks_cdata (iks_child (m)), "PLAIN")) - plain (data); - } -} - -void -features (void *data, iks *s) -{ - iks *f; - for (f = iks_child (s); f != NULL; f = iks_next (f)) - { - if (!iks_strcmp (iks_name (f), "mechanisms") && - !iks_strcmp (iks_find_attrib (f, "xmlns"), - "urn:ietf:params:xml:ns:xmpp-sasl")) - sasl (data, f); - } + while (1) + hc_xmpp_read_and_parse (xmpp); } int -myhook (void *data, int type, iks *stanza) +main (int argc, char **argv) { - if (!iks_strcmp (iks_name (stanza), "stream:features")) - { - features (data, stanza); - } - else + char *server; + char *user; + char *password; + hc_xmpp_t *xmpp; + if (argc < 4) { - fprintf (stderr, "Other: %s\n", iks_string (iks_stack (stanza), stanza)); + printf ("tictactoe server user password\n"); + return 1; } - return IKS_OK; -} - -void -write_stream (int fd, char *server) -{ - char *buffer = NULL; - asprintf (&buffer, "", server); - write (fd, buffer, strlen (buffer)); - free (buffer); -} - -void -loop (iksparser *parser, int fd) -{ - char buffer[4096]; - int r; - while ((r = read (fd, buffer, sizeof (buffer))) > 0) - iks_parse (parser, buffer, r, 0); -} - -int -main (int argc, char **argv) -{ - char *server = "jabber-br.org"; - int fd; - iksparser *parser; + server = argv[1]; + user = argv[2]; + password = argv[3]; dns_init (NULL, 1); - fd = hc_tcp_connect (server, "xmpp-client"); - parser = iks_extra_stream_new ((void *) fd, myhook); - write_stream (fd, server); - loop (parser, fd); + xmpp = hc_xmpp_new (hc_xmpp_hook, server, user, password); + hc_xmpp_send_stream (xmpp); + loop (xmpp); return 0; }