ekg2  GIT master
Struktury danych | Definicje | Funkcje | Zmienne
Dokumentacja pliku jabber_handlers.c
#include "ekg2.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 <expat.h>
#include <time.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"
Wykres zależności załączania dla jabber_handlers.c:

Struktury danych

struct  jabber_generic_handler
 
struct  jabber_iq_generic_handler
 

Definicje

#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)
 

Funkcje

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 const 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)
 
static status_t role_and_affiliation_to_ekg2_status (char *role, char *affiliation)
 
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)
 

Zmienne

static const struct jabber_generic_handler jabber_handlers []
 

Dokumentacja definicji

◆ CHECK_CONNECT

#define CHECK_CONNECT (   connecting_,
  connected_,
  func 
)
Wartość:
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 s

◆ CHECK_XMLNS

#define CHECK_XMLNS (   n,
  _xmlns,
  func 
)
Wartość:
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; }
int xstrcmp(const char *s1, const char *s2)
Definition: ekg_hash_benchmark.c:27

◆ JABBER_HANDLER

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

◆ jabberfix

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

Dokumentacja funkcji

◆ jabber_handle()

void jabber_handle ( void *  data,
xmlnode_t n 
)

◆ jabber_handle_challenge()

static void jabber_handle_challenge ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_compressed()

static void jabber_handle_compressed ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_connect_ssl()

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

◆ jabber_handle_failure()

static void jabber_handle_failure ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_iq()

static void jabber_handle_iq ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_message()

static void jabber_handle_message ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_presence()

static void jabber_handle_presence ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_proceed()

static void jabber_handle_proceed ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_stream_error()

static void jabber_handle_stream_error ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_stream_features()

static void jabber_handle_stream_features ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_success()

static void jabber_handle_success ( session_t s,
xmlnode_t n 
)
static

◆ jabber_handle_xmldata_form()

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

◆ jabber_handle_xmldata_result()

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

◆ jabber_handle_xmldata_submit()

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

◆ jabber_iq_auth_send()

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]

Nota
XEP-0078: Non-SASL Authentication: http://www.xmpp.org/extensions/xep-0078.html
Do zrobienia:
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.
Nota
Tlen Authentication was stolen from libtlen calc_passcode() with magic stuff (C) libtlen's developer and Piotr Pawłow
see: http://libtlen.sourceforge.net/
Parametry
s- session to authenticate CANNOT BE NULL
username- username
passwd- password to hash or to escape
stream_id- id of stream.

◆ jabber_iq_find_handler()

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

◆ jabber_iq_reg()

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

◆ jabber_iq_send()

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 
)

◆ jabber_session_connected()

static void jabber_session_connected ( session_t s)
static

◆ jabber_status_int()

static int jabber_status_int ( int  tlen,
const char *  text 
)
inlinestatic

◆ jabber_try_xdelay()

static time_t jabber_try_xdelay ( const char *  stamp)
static

◆ newmail_common()

static void newmail_common ( session_t s)
static

◆ role_and_affiliation_to_ekg2_status()

static status_t role_and_affiliation_to_ekg2_status ( char *  role,
char *  affiliation 
)
static

◆ xmlnode_find_child()

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

xmlnode_find_child()

Find child of node, with name

Parametry
n- node
name- name
Zwraca
Pointer to node if such child was found, else NULL

◆ xmlnode_find_child_xmlns()

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

Parametry
n- node
name- name
xmlns- xmlns
Zwraca
Pointer to node if such child was found, else NULL

Dokumentacja zmiennych

◆ jabber_handlers

const struct jabber_generic_handler jabber_handlers[]
static
Wartość początkowa:
=
{
{ "message", jabber_handle_message },
{ "presence", jabber_handle_presence },
{ "iq", jabber_handle_iq },
{ "challenge", jabber_handle_challenge },
{ "compressed", jabber_handle_compressed },
{ "proceed", jabber_handle_proceed },
{ "success", jabber_handle_success },
{ "failure", jabber_handle_failure },
{ NULL, NULL }
}
static void jabber_handle_challenge(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:464
static void jabber_handle_failure(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:622
static void jabber_handle_message(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:702
#define NULL
Definition: oralog.c:49
static void jabber_handle_proceed(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:575
static void jabber_handle_stream_features(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:189
static void jabber_handle_presence(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:1397
static void jabber_handle_iq(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:1239
static void jabber_handle_stream_error(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:595
static void jabber_handle_compressed(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:433
static void jabber_handle_success(session_t *s, xmlnode_t *n)
Definition: jabber_handlers.c:610