ekg2  GIT master
Definicje | Funkcje | Zmienne
Dokumentacja pliku jabber.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 <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>
#include <netdb.h>
#include "zlib.h"
#include <ekg/net.h>
#include "jabber.h"
#include "jabber-ssl.h"
#include "jabber_dcc.h"
Wykres zależności załączania dla jabber.c:

Definicje

#define JABBER_EKG_CAPS   ""
 
#define P(x)   (x ? x : "")
 
#define BUFFER_LEN   4096
 

Funkcje

static int jabber_theme_init ()
 
int jabber_handle_connect_ssl (int type, int fd, watch_type_t watch, session_t *s)
 
static int jabber_plugin_destroy ()
 
static int jabber_session_init (void *data, va_list ap)
 
static int jabber_session_deinit (void *data, va_list ap)
 
static void list_jabber_stanza_free (jabber_stanza_t *data)
 
int jabber_iq_stanza_free (jabber_private_t *j)
 
int jabber_stanza_freeone (jabber_private_t *j, jabber_stanza_t *stanza)
 
int jabber_privacy_add_compare (const jabber_iq_privacy_t *data1, const jabber_iq_privacy_t *data2)
 
static void list_jabber_privacy_free (jabber_iq_privacy_t *data)
 
int jabber_privacy_free (jabber_private_t *j)
 
int jabber_privacy_freeone (jabber_private_t *j, jabber_iq_privacy_t *item)
 
static void list_jabber_bookmarks_free (jabber_bookmark_t *data)
 
int jabber_bookmarks_free (jabber_private_t *j)
 
static int jabber_print_version (void *data, va_list ap)
 
static int jabber_validate_uid (void *data, va_list ap)
 
static int jabber_window_kill (void *data, va_list ap)
 
int jabber_write_status (session_t *s)
 
void jabber_handle_disconnect (session_t *s, const char *reason, int type)
 
static void xmlnode_handle_start (void *data, const char *name, const char **atts)
 
static int jabber_handle_stream (int type, int fd, watch_type_t watch, session_t *s)
 
static gint jabber_ping_timer_handler (gint type, session_t *s)
 
static int jabber_handle_connect_tlen_hub (int type, int fd, watch_type_t watch, void *data)
 
int jabber_handle_connect (int type, int fd, watch_type_t watch, void *data)
 
int jabber_handle_connect2 (int type, int fd, watch_type_t watch, void *data)
 
XML_Parser jabber_parser_recreate (XML_Parser parser, void *data)
 
static const char * jabber_ssl_cert_verify (const gnutls_session ssl)
 
static int jabber_protocol_ignore (void *data, va_list ap)
 
static int jabber_status_show_handle (void *data, va_list ap)
 
void jabber_gpg_changed (session_t *s, const char *name)
 
static void jabber_statusdescr_handler (session_t *s, const char *name)
 
static int jabber_pgp_postinit (void *data, va_list ap)
 
static int jabber_userlist_info (void *data, va_list ap)
 
static int jabber_userlist_priv_handler (void *data, va_list ap)
 
static int jabber_typing_out (void *data, va_list ap)
 
 __attribute__ ((visibility("default")))
 

Zmienne

char * jabber_default_search_server = NULL
 
char * jabber_default_pubsub_server = NULL
 
int config_jabber_beep_mail = 0
 
int config_jabber_disable_chatstates = EKG_CHATSTATE_ACTIVE | EKG_CHATSTATE_GONE
 
const char * jabber_authtypes [] = { "none", "from", "to", "both" }
 
static int session_postinit
 
plugin_t jabber_plugin = { .name = "jabber", .pclass = PLUGIN_PROTOCOL , .destroy = jabber_plugin_destroy, .theme_init = jabber_theme_init }
 
static plugins_params_t jabber_plugin_vars []
 
static const char * jabber_protocols [] = { "xmpp:", "tlen:", NULL }
 
static const status_t jabber_statuses []
 
static const struct protocol_plugin_priv jabber_priv
 

Dokumentacja definicji

◆ BUFFER_LEN

#define BUFFER_LEN   4096

◆ JABBER_EKG_CAPS

#define JABBER_EKG_CAPS   ""

◆ P

#define P (   x)    (x ? x : "")

Dokumentacja funkcji

◆ __attribute__()

__attribute__ ( (visibility("default"))  )

◆ jabber_bookmarks_free()

int jabber_bookmarks_free ( jabber_private_t j)

◆ jabber_gpg_changed()

void jabber_gpg_changed ( session_t s,
const char *  name 
)

◆ jabber_handle_connect()

int jabber_handle_connect ( int  type,
int  fd,
watch_type_t  watch,
void *  data 
)

◆ jabber_handle_connect2()

int jabber_handle_connect2 ( int  type,
int  fd,
watch_type_t  watch,
void *  data 
)

◆ jabber_handle_connect_ssl()

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

◆ jabber_handle_connect_tlen_hub()

static int jabber_handle_connect_tlen_hub ( int  type,
int  fd,
watch_type_t  watch,
void *  data 
)
static

◆ jabber_handle_disconnect()

void jabber_handle_disconnect ( session_t s,
const char *  reason,
int  type 
)

◆ jabber_handle_stream()

static int jabber_handle_stream ( int  type,
int  fd,
watch_type_t  watch,
session_t s 
)
static

◆ jabber_iq_stanza_free()

int jabber_iq_stanza_free ( jabber_private_t j)

◆ jabber_parser_recreate()

XML_Parser jabber_parser_recreate ( XML_Parser  parser,
void *  data 
)

◆ jabber_pgp_postinit()

static int jabber_pgp_postinit ( void *  data,
va_list  ap 
)
static

jabber_pgp_postinit()

Handler for: CONFIG_POSTINIT
Executed after ekg2 read sessions configuration.
Here we try to init gpg for all jabber sessions by calling jabber_gpg_changed()

Zwraca
0

◆ jabber_ping_timer_handler()

static gint jabber_ping_timer_handler ( gint  type,
session_t s 
)
static

◆ jabber_plugin_destroy()

static int jabber_plugin_destroy ( )
static

jabber_plugin_destroy()

Call SSL_GLOBAL_DEINIT() if jabber is built with ssl support
and unregister jabber plugin.

Zobacz również
jabber_plugin_init()
Zwraca
0 [successfully unloaded plugin]

◆ jabber_print_version()

static int jabber_print_version ( void *  data,
va_list  ap 
)
static

jabber_print_version()

handler for: PLUGIN_PRINT_VERSION
Print expat version

Zwraca
0

◆ jabber_privacy_add_compare()

int jabber_privacy_add_compare ( const jabber_iq_privacy_t data1,
const jabber_iq_privacy_t data2 
)

◆ jabber_privacy_free()

int jabber_privacy_free ( jabber_private_t j)

◆ jabber_privacy_freeone()

int jabber_privacy_freeone ( jabber_private_t j,
jabber_iq_privacy_t item 
)

◆ jabber_protocol_ignore()

static int jabber_protocol_ignore ( void *  data,
va_list  ap 
)
static

◆ jabber_session_deinit()

static int jabber_session_deinit ( void *  data,
va_list  ap 
)
static

jabber_session_deinit()

Handler for: SESSION_REMOVED
Free memory allocated by jabber_private_t if session is jabber one.

Parametry
ap1st param: (char *) session - uid of session
dataNULL
Zwraca
0 if session is jabber one, and memory allocated where xfree()'d.
1 if not such session, or it wasn't jabber session [most probable], or we already free memory.

◆ jabber_session_init()

static int jabber_session_init ( void *  data,
va_list  ap 
)
static

jabber_session_init()

Handler for: SESSION_ADDED
Init priv_data session struct jabber_private_t if session is jabber one.

Parametry
ap1st param: (char *) session - uid of session
dataNULL
Zwraca
0 if session is jabber one, and we init memory
1 if we don't found such session, or it wasn't jabber session [most probable], or we already init memory.

◆ jabber_ssl_cert_verify()

static const char* jabber_ssl_cert_verify ( const gnutls_session  ssl)
static

jabber_ssl_cert_verify()

Initial version of routine to test if certificate used by SSL_SESSION is 100% correct. If not, return error why isn't ok.

Nota
Code to handle SSL_get_verify_result() result copied from qssl.cpp
qssl.cpp - Qt OpenSSL plugin Copyright (C) 2001, 2002 Justin Karneges under LGPL 2.1
Do zrobienia:
It's testing function, so it don't catch all not 100% valid certificates. If you can and you know smth/ a lot about either OpenSSL or GnuTLS. Could you look at it?
Parametry
ssl- SSL_SESSION
Zwraca
NULL if certificate is correct.
else NUL terminated string with error description.

◆ jabber_stanza_freeone()

int jabber_stanza_freeone ( jabber_private_t j,
jabber_stanza_t stanza 
)

◆ jabber_status_show_handle()

static int jabber_status_show_handle ( void *  data,
va_list  ap 
)
static

◆ jabber_statusdescr_handler()

static void jabber_statusdescr_handler ( session_t s,
const char *  name 
)
static

◆ jabber_theme_init()

static int jabber_theme_init ( )
static

◆ jabber_typing_out()

static int jabber_typing_out ( void *  data,
va_list  ap 
)
static

◆ jabber_userlist_info()

static int jabber_userlist_info ( void *  data,
va_list  ap 
)
static

◆ jabber_userlist_priv_handler()

static int jabber_userlist_priv_handler ( void *  data,
va_list  ap 
)
static

◆ jabber_validate_uid()

static int jabber_validate_uid ( void *  data,
va_list  ap 
)
static

jabber_validate_uid()

handler for: PROTOCOL_VALIDATE_UID
checks, if uid is proper for jabber plugin.

Nota
Proper for jabber plugin means either:
  • If uid starts with xmpp: have got '@' (but xmpp:@ is wrong) and after '@' there is at least one char [xmpp protocol]
  • If uid starts with tlen: (and len > 5) [tlen protocol]
Parametry
ap1st param: (char *) uid - of user/session/command/whatever
ap2nd param: (int) valid - place to put 1 if uid is valid for jabber plugin.
dataNULL
Zwraca
-1 if it's valid uid for jabber plugin
0 if not

◆ jabber_window_kill()

static int jabber_window_kill ( void *  data,
va_list  ap 
)
static

◆ jabber_write_status()

int jabber_write_status ( session_t s)

◆ list_jabber_bookmarks_free()

static void list_jabber_bookmarks_free ( jabber_bookmark_t data)
static

◆ list_jabber_privacy_free()

static void list_jabber_privacy_free ( jabber_iq_privacy_t data)
static

◆ list_jabber_stanza_free()

static void list_jabber_stanza_free ( jabber_stanza_t data)
static

◆ xmlnode_handle_start()

static void xmlnode_handle_start ( void *  data,
const char *  name,
const char **  atts 
)
static

Dokumentacja zmiennych

◆ config_jabber_beep_mail

int config_jabber_beep_mail = 0

◆ config_jabber_disable_chatstates

int config_jabber_disable_chatstates = EKG_CHATSTATE_ACTIVE | EKG_CHATSTATE_GONE

◆ jabber_authtypes

const char* jabber_authtypes[] = { "none", "from", "to", "both" }

◆ jabber_default_pubsub_server

char* jabber_default_pubsub_server = NULL

◆ jabber_default_search_server

char* jabber_default_search_server = NULL

◆ jabber_plugin

plugin_t jabber_plugin = { .name = "jabber", .pclass = PLUGIN_PROTOCOL , .destroy = jabber_plugin_destroy, .theme_init = jabber_theme_init }

◆ jabber_plugin_vars

plugins_params_t jabber_plugin_vars[]
static

◆ jabber_priv

const struct protocol_plugin_priv jabber_priv
static
Wartość początkowa:
= {
.protocols = jabber_protocols,
.statuses = jabber_statuses
}
static const status_t jabber_statuses[]
Definition: jabber.c:1602
static const char * jabber_protocols[]
Definition: jabber.c:1601

◆ jabber_protocols

const char* jabber_protocols[] = { "xmpp:", "tlen:", NULL }
static

jabber_plugin_init()

Register jabber plugin, assign plugin params [jabber_plugin_vars], connect to most important events
register global jabber variables, register commands with call to jabber_register_commands()
And call SSL_GLOBAL_INIT() if jabber is built with ssl support

Do zrobienia:
We should set default global jabber variables with set-vars-default
Zobacz również
jabber_plugin_destroy()
Zwraca
0 [successfully loaded plugin]

◆ jabber_statuses

const status_t jabber_statuses[]
static
Wartość początkowa:
= {
}
Definition: sessions.h:52
Definition: sessions.h:43
Definition: sessions.h:40
Definition: sessions.h:47
Definition: sessions.h:55
Definition: sessions.h:54
Definition: sessions.h:51
Definition: sessions.h:59
Definition: sessions.h:58
Definition: sessions.h:48

◆ session_postinit

int session_postinit
static