plugins/jabber/jabber_handlers.c File Reference

#include "ekg2-config.h"
#include <ekg/win32.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <sys/utsname.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>
#include <netdb.h>
#include <time.h>
#include <ekg/debug.h>
#include <ekg/dynstuff.h>
#include <ekg/plugins.h>
#include <ekg/protocol.h>
#include <ekg/sessions.h>
#include <ekg/stuff.h>
#include <ekg/userlist.h>
#include <ekg/themes.h>
#include <ekg/vars.h>
#include <ekg/xmalloc.h>
#include <ekg/log.h>
#include <ekg/queries.h>
#include "jabber.h"
#include "jabber_dcc.h"
#include "jabber_handlers_tlen.inc"
#include "jabber_handlers_iq_error.inc"
#include "jabber_handlers_iq_get.inc"
#include "jabber_handlers_iq_result.inc"

Data Structures

struct  jabber_generic_handler
struct  jabber_iq_generic_handler

Defines

#define _XOPEN_SOURCE   600
#define jabberfix(x, a)   ((x) ? x : a)
#define JABBER_HANDLER(x)   static void x(session_t *s, xmlnode_t *n)
#define CHECK_CONNECT(connecting_, connected_, func)
#define CHECK_XMLNS(n, _xmlns, func)

Functions

int jabber_handle_connect_ssl (int type, int fd, watch_type_t watch, session_t *s)
static void jabber_handle_message (session_t *s, xmlnode_t *n)
static void jabber_handle_iq (session_t *s, xmlnode_t *n)
static void jabber_handle_presence (session_t *s, xmlnode_t *n)
static time_t jabber_try_xdelay (const char *stamp)
static void jabber_session_connected (session_t *s)
static void newmail_common (session_t *s)
static xmlnode_txmlnode_find_child (xmlnode_t *n, const char *name)
static xmlnode_txmlnode_find_child_xmlns (xmlnode_t *n, const char *name, const char *xmlns)
void jabber_iq_auth_send (session_t *s, const char *username, const char *passwd, const char *stream_id)
static void jabber_handle_stream_features (session_t *s, xmlnode_t *n)
static void jabber_handle_compressed (session_t *s, xmlnode_t *n)
static void jabber_handle_challenge (session_t *s, xmlnode_t *n)
static void jabber_handle_proceed (session_t *s, xmlnode_t *n)
static void jabber_handle_stream_error (session_t *s, xmlnode_t *n)
static void jabber_handle_success (session_t *s, xmlnode_t *n)
static void jabber_handle_failure (session_t *s, xmlnode_t *n)
void jabber_handle (void *data, xmlnode_t *n)
static void jabber_handle_xmldata_form (session_t *s, const char *uid, const char *command, xmlnode_t *form, const char *param)
static int jabber_handle_xmldata_submit (session_t *s, xmlnode_t *form, const char *FORM_TYPE, int alloc,...)
static void jabber_handle_xmldata_result (session_t *s, xmlnode_t *form, const char *uid)
static struct jabber_iq_generic_handlerjabber_iq_find_handler (const struct jabber_iq_generic_handler *items, const char *type, const char *xmlns)
static int jabber_status_int (int tlen, const char *text)
const char * jabber_iq_reg (session_t *s, const char *prefix, const char *to, const char *type, const char *xmlns)
const char * jabber_iq_send (session_t *s, const char *prefix, jabber_iq_type_t iqtype, const char *to, const char *type, const char *xmlns)

Variables

static struct jabber_generic_handler jabber_handlers []

Define Documentation

#define _XOPEN_SOURCE   600

#define CHECK_CONNECT ( connecting_,
connected_,
func   ) 

Value:

if ((j->sasl_connecting && s->connecting ? 2 : s->connecting) != connecting_ || s->connected != connected_) { \
                        debug_error("[jabber] %s:%d ASSERT_CONNECT connecting: %d+%d (shouldbe: %d) s->connected: %d (shouldbe: %d)\n", \
                                __FILE__, __LINE__, s->connecting, j->sasl_connecting, connecting_, s->connected, connected_);  func; }

#define CHECK_XMLNS ( n,
_xmlns,
func   ) 

Value:

if (xstrcmp(n->xmlns, _xmlns)) { \
                        debug_error("[jabber] %s:%d ASSERT_XMLNS BAD XMLNS, IS: %s SHOULDBE: %s\n", __FILE__, __LINE__, n->xmlns, _xmlns);      func; }

#define JABBER_HANDLER (  )     static void x(session_t *s, xmlnode_t *n)

#define jabberfix ( x,
 )     ((x) ? x : a)


Function Documentation

void jabber_handle ( void *  data,
xmlnode_t n 
)

static void jabber_handle_challenge ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_compressed ( session_t s,
xmlnode_t n 
) [static]

int jabber_handle_connect_ssl ( int  type,
int  fd,
watch_type_t  watch,
session_t s 
)

static void jabber_handle_failure ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_iq ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_message ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_presence ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_proceed ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_stream_error ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_stream_features ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_success ( session_t s,
xmlnode_t n 
) [static]

static void jabber_handle_xmldata_form ( session_t s,
const char *  uid,
const char *  command,
xmlnode_t form,
const char *  param 
) [static]

static void jabber_handle_xmldata_result ( session_t s,
xmlnode_t form,
const char *  uid 
) [static]

static int jabber_handle_xmldata_submit ( session_t s,
xmlnode_t form,
const char *  FORM_TYPE,
int  alloc,
  ... 
) [static]

void jabber_iq_auth_send ( session_t s,
const char *  username,
const char *  passwd,
const char *  stream_id 
)

jabber_iq_auth_send()

Send jabber:iq:auth with <digest>DIGEST</digest> or <password>PLAINTEXT_PASSWORD</password>
It support both tlen auth, and jabber NON-SASL Authentication [XEP-0078]

Note:
XEP-0078: Non-SASL Authentication: http://www.xmpp.org/extensions/xep-0078.html
Todo:
It's not really XEP-0078 cause ekg2 don't support it. But it this done that way.. I don't know any server with XEP-0078 functonality..
I still rcv 'service-unavailable' or 'bad-request' ;(
But it MUST be implemented for /session disable_sasl 1
So it's just jabber:iq:auth for disable_sasl 2.
Note:
Tlen Authentication was stolen from libtlen calc_passcode() with magic stuff (C) libtlen's developer and Piotr Pawłow
see: http://libtlen.sourceforge.net/
Parameters:
s - session to authenticate CANNOT BE NULL
username - username
passwd - password to hash or to escape
stream_id - id of stream.

static struct jabber_iq_generic_handler* jabber_iq_find_handler ( const struct jabber_iq_generic_handler items,
const char *  type,
const char *  xmlns 
) [static]

const char* jabber_iq_reg ( session_t s,
const char *  prefix,
const char *  to,
const char *  type,
const char *  xmlns 
)

const char* jabber_iq_send ( session_t s,
const char *  prefix,
jabber_iq_type_t  iqtype,
const char *  to,
const char *  type,
const char *  xmlns 
)

static void jabber_session_connected ( session_t s  )  [static]

static int jabber_status_int ( int  tlen,
const char *  text 
) [inline, static]

static time_t jabber_try_xdelay ( const char *  stamp  )  [static]

static void newmail_common ( session_t s  )  [static]

static xmlnode_t* xmlnode_find_child ( xmlnode_t n,
const char *  name 
) [static]

xmlnode_find_child()

Find child of node, with name

Parameters:
n - node
name - name
Returns:
Pointer to node if such child was found, else NULL

static xmlnode_t* xmlnode_find_child_xmlns ( xmlnode_t n,
const char *  name,
const char *  xmlns 
) [static]

xmlnode_find_child_xmlns()

Find child of node, with name, which has 'xmlns' atts equal xmlns

Parameters:
n - node
name - name
xmlns - xmlns
Returns:
Pointer to node if such child was found, else NULL


Variable Documentation

struct jabber_generic_handler jabber_handlers[] [static]

Initial value:

{
        { "message",            jabber_handle_message },
        { "presence",           jabber_handle_presence },
        { "iq",                 jabber_handle_iq },

                
        { "features",           jabber_handle_stream_features },
        { "error",              jabber_handle_stream_error },

        { "challenge",          jabber_handle_challenge },
        { "compressed",         jabber_handle_compressed },

        { "proceed",            jabber_handle_proceed },
        { "success",            jabber_handle_success },
        { "failure",            jabber_handle_failure },

        { NULL,                 NULL }
}


Generated on Tue Jan 6 22:30:50 2009 for ekg2 by  doxygen 1.5.1