Definicje | Funkcje | Zmienne

Dokumentacja pliku plugins/jabber/jabber.c

#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 <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>
#include <netdb.h>
#include <ekg/debug.h>
#include <ekg/dynstuff.h>
#include <ekg/net.h>
#include <ekg/protocol.h>
#include <ekg/recode.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-ssl.h"
#include "jabber_dcc.h"

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)
 PLUGIN_DEFINE (jabber, PLUGIN_PROTOCOL, jabber_theme_init)
static int jabber_session_init (void *data, va_list ap)
static int jabber_session_deinit (void *data, va_list ap)
static LIST_FREE_ITEM (list_jabber_stanza_free, jabber_stanza_t *)
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 (jabber_iq_privacy_t *data1, jabber_iq_privacy_t *data2)
static LIST_FREE_ITEM (list_jabber_privacy_free, jabber_iq_privacy_t *)
int jabber_privacy_free (jabber_private_t *j)
int jabber_privacy_freeone (jabber_private_t *j, jabber_iq_privacy_t *item)
static LIST_FREE_ITEM (list_jabber_bookmarks_free, jabber_bookmark_t *)
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 int jabber_ping_timer_handler (int 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 SSL_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)
EXPORT int jabber_plugin_init (int prio)
static int jabber_plugin_destroy ()

Zmienne

char * jabber_default_search_server = NULL
char * jabber_default_pubsub_server = NULL
int config_jabber_beep_mail = 0
int config_jabber_disable_chatstates = 6
const char * jabber_authtypes [] = { "none", "from", "to", "both" }
static int session_postinit
static plugins_params_t jabber_plugin_vars []
static const char * jabber_protocols [] = { "xmpp:", "tlen:", NULL }
static const status_t jabber_statuses []
static struct protocol_plugin_priv jabber_priv

Dokumentacja definicji

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

Dokumentacja funkcji

int jabber_bookmarks_free ( jabber_private_t j  ) 
void jabber_gpg_changed ( session_t s,
const char *  name 
)
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 
)
int jabber_handle_connect_ssl ( int  type,
int  fd,
watch_type_t  watch,
session_t s 
)
static int jabber_handle_connect_tlen_hub ( int  type,
int  fd,
watch_type_t  watch,
void *  data 
) [static]
void jabber_handle_disconnect ( session_t s,
const char *  reason,
int  type 
)
static int jabber_handle_stream ( int  type,
int  fd,
watch_type_t  watch,
session_t s 
) [static]
int jabber_iq_stanza_free ( jabber_private_t j  ) 
XML_Parser jabber_parser_recreate ( XML_Parser  parser,
void *  data 
)
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
static int jabber_ping_timer_handler ( int  type,
session_t s 
) [static]
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]
EXPORT int jabber_plugin_init ( int  prio  ) 
static int jabber_print_version ( void *  data,
va_list  ap 
) [static]

jabber_print_version()

handler for: PLUGIN_PRINT_VERSION
Print expat version

Zwraca:
0
int jabber_privacy_add_compare ( jabber_iq_privacy_t data1,
jabber_iq_privacy_t data2 
)
int jabber_privacy_free ( jabber_private_t j  ) 
int jabber_privacy_freeone ( jabber_private_t j,
jabber_iq_privacy_t item 
)
static int jabber_protocol_ignore ( void *  data,
va_list  ap 
) [static]
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:
ap 1st param: (char *) session - uid of session
data NULL
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.
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:
ap 1st param: (char *) session - uid of session
data NULL
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.
static const char* jabber_ssl_cert_verify ( const SSL_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.
int jabber_stanza_freeone ( jabber_private_t j,
jabber_stanza_t stanza 
)
static int jabber_status_show_handle ( void *  data,
va_list  ap 
) [static]
static void jabber_statusdescr_handler ( session_t s,
const char *  name 
) [static]
static int jabber_theme_init (  )  [static]
static int jabber_typing_out ( void *  data,
va_list  ap 
) [static]
static int jabber_userlist_info ( void *  data,
va_list  ap 
) [static]
static int jabber_userlist_priv_handler ( void *  data,
va_list  ap 
) [static]
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:
ap 1st param: (char *) uid - of user/session/command/whatever
ap 2nd param: (int) valid - place to put 1 if uid is valid for jabber plugin.
data NULL
Zwraca:
-1 if it's valid uid for jabber plugin
0 if not
static int jabber_window_kill ( void *  data,
va_list  ap 
) [static]
int jabber_write_status ( session_t s  ) 
static LIST_FREE_ITEM ( list_jabber_bookmarks_free  ,
jabber_bookmark_t  
) [static]
static LIST_FREE_ITEM ( list_jabber_stanza_free  ,
jabber_stanza_t  
) [static]
static LIST_FREE_ITEM ( list_jabber_privacy_free  ,
jabber_iq_privacy_t  
) [static]
PLUGIN_DEFINE ( jabber  ,
PLUGIN_PROTOCOL  ,
jabber_theme_init   
)
static void xmlnode_handle_start ( void *  data,
const char *  name,
const char **  atts 
) [static]

Dokumentacja zmiennych

const char* jabber_authtypes[] = { "none", "from", "to", "both" }
Wartość początkowa:
 {
        .protocols      = jabber_protocols,
        .statuses       = jabber_statuses
}
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]
const status_t jabber_statuses[] [static]
Wartość początkowa:
 {
        EKG_STATUS_NA, EKG_STATUS_DND, EKG_STATUS_XA, EKG_STATUS_AWAY, EKG_STATUS_AVAIL, EKG_STATUS_FFC,
        EKG_STATUS_INVISIBLE, EKG_STATUS_ERROR, EKG_STATUS_UNKNOWN, EKG_STATUS_NULL
}
int session_postinit [static]
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje