mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-27 10:46:21 +00:00
Added app module
This commit is contained in:
100
jabber.c
100
jabber.c
@@ -1,15 +1,73 @@
|
||||
#include <string.h>
|
||||
#include <strophe/strophe.h>
|
||||
#include <ncurses.h>
|
||||
|
||||
#include "windows.h"
|
||||
#include "jabber.h"
|
||||
#include "log.h"
|
||||
#include "windows.h"
|
||||
|
||||
// log reference
|
||||
extern FILE *logp;
|
||||
|
||||
extern WINDOW *main_win;
|
||||
// private XMPP structs
|
||||
static xmpp_log_t *_log;
|
||||
static xmpp_ctx_t *_ctx;
|
||||
static xmpp_conn_t *_conn;
|
||||
|
||||
int in_message_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
|
||||
// private XMPP handlers
|
||||
static void _jabber_conn_handler(xmpp_conn_t * const conn, const xmpp_conn_event_t status,
|
||||
const int error, xmpp_stream_error_t * const stream_error,
|
||||
void * const userdata);
|
||||
|
||||
static int _jabber_message_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
|
||||
void * const userdata);
|
||||
|
||||
void jabber_connect(char *user, char *passwd)
|
||||
{
|
||||
xmpp_initialize();
|
||||
_log = xmpp_get_file_logger();
|
||||
_ctx = xmpp_ctx_new(NULL, _log);
|
||||
_conn = xmpp_conn_new(_ctx);
|
||||
|
||||
xmpp_conn_set_jid(_conn, user);
|
||||
xmpp_conn_set_pass(_conn, passwd);
|
||||
xmpp_connect_client(_conn, NULL, 0, _jabber_conn_handler, _ctx);
|
||||
|
||||
}
|
||||
|
||||
void jabber_disconnect(void)
|
||||
{
|
||||
xmpp_conn_release(_conn);
|
||||
xmpp_ctx_free(_ctx);
|
||||
xmpp_shutdown();
|
||||
}
|
||||
|
||||
void jabber_process_events(void)
|
||||
{
|
||||
xmpp_run_once(_ctx, 10);
|
||||
}
|
||||
|
||||
|
||||
void jabber_send(char *msg)
|
||||
{
|
||||
xmpp_stanza_t *reply, *body, *text;
|
||||
|
||||
reply = xmpp_stanza_new(_ctx);
|
||||
xmpp_stanza_set_name(reply, "message");
|
||||
xmpp_stanza_set_type(reply, "chat");
|
||||
xmpp_stanza_set_attribute(reply, "to", "boothj5@localhost");
|
||||
|
||||
body = xmpp_stanza_new(_ctx);
|
||||
xmpp_stanza_set_name(body, "body");
|
||||
|
||||
text = xmpp_stanza_new(_ctx);
|
||||
xmpp_stanza_set_text(text, msg);
|
||||
xmpp_stanza_add_child(body, text);
|
||||
xmpp_stanza_add_child(reply, body);
|
||||
|
||||
xmpp_send(_conn, reply);
|
||||
xmpp_stanza_release(reply);
|
||||
}
|
||||
|
||||
static int _jabber_message_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
|
||||
void * const userdata)
|
||||
{
|
||||
char *message;
|
||||
@@ -28,7 +86,7 @@ int in_message_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
|
||||
return 1;
|
||||
}
|
||||
|
||||
void conn_handler(xmpp_conn_t * const conn, const xmpp_conn_event_t status,
|
||||
static void _jabber_conn_handler(xmpp_conn_t * const conn, const xmpp_conn_event_t status,
|
||||
const int error, xmpp_stream_error_t * const stream_error,
|
||||
void * const userdata)
|
||||
{
|
||||
@@ -36,8 +94,8 @@ void conn_handler(xmpp_conn_t * const conn, const xmpp_conn_event_t status,
|
||||
|
||||
if (status == XMPP_CONN_CONNECT) {
|
||||
xmpp_stanza_t* pres;
|
||||
logmsg(CONN, "connected");
|
||||
xmpp_handler_add(conn,in_message_handler, NULL, "message", NULL, ctx);
|
||||
log_msg(CONN, "connected");
|
||||
xmpp_handler_add(conn, _jabber_message_handler, NULL, "message", NULL, ctx);
|
||||
|
||||
pres = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(pres, "presence");
|
||||
@@ -45,31 +103,7 @@ void conn_handler(xmpp_conn_t * const conn, const xmpp_conn_event_t status,
|
||||
xmpp_stanza_release(pres);
|
||||
}
|
||||
else {
|
||||
logmsg(CONN, "disconnected");
|
||||
log_msg(CONN, "disconnected");
|
||||
xmpp_stop(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
void prof_send(char *msg, xmpp_ctx_t *ctx, xmpp_conn_t *conn)
|
||||
{
|
||||
xmpp_stanza_t *reply, *body, *text;
|
||||
|
||||
reply = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(reply, "message");
|
||||
xmpp_stanza_set_type(reply, "chat");
|
||||
xmpp_stanza_set_attribute(reply, "to", "boothj5@localhost");
|
||||
|
||||
body = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(body, "body");
|
||||
|
||||
text = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_text(text, msg);
|
||||
xmpp_stanza_add_child(body, text);
|
||||
xmpp_stanza_add_child(reply, body);
|
||||
|
||||
xmpp_send(conn, reply);
|
||||
xmpp_stanza_release(reply);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user