ekg2  GIT master
Struktury danych | Definicje | Definicje typów | Wyliczenia | Funkcje | Zmienne
Dokumentacja pliku jabber.h
#include <expat.h>
#include "jabber-ssl.h"
Wykres zależności załączania dla jabber.h:
Ten wykres pokazuje, które pliki bezpośrednio lub pośrednio załączają ten plik:

Idź do kodu źródłowego tego pliku.

Struktury danych

struct  xmlnode_s
 
struct  jabber_bookmark_url_t
 
struct  jabber_bookmark_conference_t
 
struct  jabber_bookmark_t
 
struct  jabber_iq_privacy_t
 
struct  jabber_conversation_t
 
struct  jabber_stanza_t
 
struct  jabber_private_t
 
struct  jabber_userlist_private_t
 

Definicje

#define DEFAULT_CLIENT_NAME   "EKG2 -- http://www.ekg2.org"
 
#define JABBER_DEFAULT_RESOURCE   "ekg2"
 
#define TLEN_HUB   "idi.tlen.pl" /* hub */
 
#define TLEN_FALLBACK_SERVER   "s1.tlen.pl" /* fallback server */
 
#define TLEN_FALLBACK_PORT   443 /* fallback port */
 
#define tlenjabber_escape(str)   (j->istlen ? tlen_encode(str) : jabber_escape(str))
 
#define tlenjabber_unescape(str)   (j->istlen ? tlen_decode(str) : jabber_unescape(str))
 
#define tlenjabber_uid(target)   protocol_uid(j->istlen ? "tlen" : "xmpp", target)
 
#define tlen_uid(target)   protocol_uid("tlen", target)
 
#define xmpp_uid(target)   protocol_uid("xmpp", target)
 
#define jabber_private(s)   ((jabber_private_t*) session_private_get(s))
 
#define jabber_userlist_priv_get(u)   ((jabber_userlist_private_t *) userlist_private_get(&jabber_plugin, u))
 
#define jabber_write(s, args...)   watch_write((s && s->priv) ? jabber_private(s)->send_watch : NULL, args);
 

Definicje typów

typedef struct xmlnode_s xmlnode_t
 

Wyliczenia

enum  jabber_opengpg_type_t { JABBER_OPENGPG_ENCRYPT = 0, JABBER_OPENGPG_DECRYPT, JABBER_OPENGPG_SIGN, JABBER_OPENGPG_VERIFY }
 
enum  jabber_bookmark_type_t { JABBER_BOOKMARK_UNKNOWN = 0, JABBER_BOOKMARK_URL, JABBER_BOOKMARK_CONFERENCE }
 
enum  jabber_iq_type_t {
  JABBER_IQ_TYPE_NONE, JABBER_IQ_TYPE_GET, JABBER_IQ_TYPE_SET, JABBER_IQ_TYPE_RESULT,
  JABBER_IQ_TYPE_ERROR
}
 
enum  jabber_compression_method {
  JABBER_COMPRESSION_NONE = 0, JABBER_COMPRESSION_ZLIB_INIT, JABBER_COMPRESSION_LZW_INIT, JABBER_COMPRESSION_ZLIB,
  JABBER_COMPRESSION_LZW
}
 
enum  jabber_iq_privacy_flags_t {
  PRIVACY_LIST_MESSAGE = 1, PRIVACY_LIST_IQ = 2, PRIVACY_LIST_PRESENCE_IN = 4, PRIVACY_LIST_PRESENCE_OUT = 8,
  PRIVACY_LIST_ALL = (PRIVACY_LIST_MESSAGE | PRIVACY_LIST_IQ | PRIVACY_LIST_PRESENCE_IN | PRIVACY_LIST_PRESENCE_OUT)
}
 
enum  jabber_auth_t {
  EKG_JABBER_AUTH_NONE = 0, EKG_JABBER_AUTH_FROM = 1, EKG_JABBER_AUTH_TO = 2, EKG_JABBER_AUTH_BOTH = 3,
  EKG_JABBER_AUTH_REQ = 4, EKG_JABBER_AUTH_UNREQ = 8
}
 

Funkcje

void jabber_register_commands (void)
 
XML_Parser jabber_parser_recreate (XML_Parser parser, void *data)
 
int JABBER_COMMIT_DATA (watch_t *w)
 
void jabber_handle (void *data, xmlnode_t *n)
 
int jabber_privacy_freeone (jabber_private_t *j, jabber_iq_privacy_t *item)
 
int jabber_stanza_freeone (jabber_private_t *j, jabber_stanza_t *stanza)
 
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)
 
char * jabber_digest (const char *sid, const char *password, int istlen)
 
char * jabber_sha1_generic (char *buf, int len)
 
char * jabber_dcc_digest (char *sid, char *initiator, char *target)
 
char * jabber_challenge_digest (const char *sid, const char *password, const char *nonce, const char *cnonce, const char *xmpp_temp, const char *realm)
 
void jabber_iq_auth_send (session_t *s, const char *username, const char *passwd, const char *stream_id)
 
char * jabber_attr (char **atts, const char *att)
 
char * jabber_escape (const char *text)
 
char * jabber_unescape (const char *text)
 
char * tlen_encode (const char *what)
 
char * tlen_decode (const char *what)
 
int jabber_write_status (session_t *s)
 
void jabber_reconnect_handler (int type, void *data)
 
 LIST_ADD_COMPARE (jabber_privacy_add_compare, jabber_iq_privacy_t *)
 
int jabber_privacy_free (jabber_private_t *j)
 
int jabber_bookmarks_free (jabber_private_t *j)
 
int jabber_iq_stanza_free (jabber_private_t *j)
 
 WATCHER_LINE (jabber_handle_write)
 
void xmlnode_handle_end (void *data, const char *name)
 
void xmlnode_handle_cdata (void *data, const char *text, int len)
 
void jabber_handle_disconnect (session_t *s, const char *reason, int type)
 
char * jabber_openpgp (session_t *s, const char *fromto, enum jabber_opengpg_type_t way, char *message, char *key, char **error)
 
int jabber_conversation_find (jabber_private_t *j, const char *uid, const char *subject, const char *thread, jabber_conversation_t **result, const int can_add)
 
jabber_conversation_tjabber_conversation_get (jabber_private_t *j, const int n)
 
char * jabber_thread_gen (jabber_private_t *j, const char *uid)
 
guint32 * jabber_msg_format (const char *plaintext, const xmlnode_t *html)
 

Zmienne

plugin_t jabber_plugin
 
char * jabber_default_pubsub_server
 
char * jabber_default_search_server
 
int config_jabber_beep_mail
 
const char * jabber_authtypes []
 

Dokumentacja definicji

◆ DEFAULT_CLIENT_NAME

#define DEFAULT_CLIENT_NAME   "EKG2 -- http://www.ekg2.org"

◆ JABBER_DEFAULT_RESOURCE

#define JABBER_DEFAULT_RESOURCE   "ekg2"

◆ jabber_private

#define jabber_private (   s)    ((jabber_private_t*) session_private_get(s))

◆ jabber_userlist_priv_get

#define jabber_userlist_priv_get (   u)    ((jabber_userlist_private_t *) userlist_private_get(&jabber_plugin, u))

◆ jabber_write

#define jabber_write (   s,
  args... 
)    watch_write((s && s->priv) ? jabber_private(s)->send_watch : NULL, args);

◆ TLEN_FALLBACK_PORT

#define TLEN_FALLBACK_PORT   443 /* fallback port */

◆ TLEN_FALLBACK_SERVER

#define TLEN_FALLBACK_SERVER   "s1.tlen.pl" /* fallback server */

◆ TLEN_HUB

#define TLEN_HUB   "idi.tlen.pl" /* hub */

◆ tlen_uid

#define tlen_uid (   target)    protocol_uid("tlen", target)

◆ tlenjabber_escape

#define tlenjabber_escape (   str)    (j->istlen ? tlen_encode(str) : jabber_escape(str))

◆ tlenjabber_uid

#define tlenjabber_uid (   target)    protocol_uid(j->istlen ? "tlen" : "xmpp", target)

◆ tlenjabber_unescape

#define tlenjabber_unescape (   str)    (j->istlen ? tlen_decode(str) : jabber_unescape(str))

◆ xmpp_uid

#define xmpp_uid (   target)    protocol_uid("xmpp", target)

Dokumentacja definicji typów

◆ xmlnode_t

typedef struct xmlnode_s xmlnode_t

Dokumentacja typów wyliczanych

◆ jabber_auth_t

Wartości wyliczeń
EKG_JABBER_AUTH_NONE 
EKG_JABBER_AUTH_FROM 
EKG_JABBER_AUTH_TO 
EKG_JABBER_AUTH_BOTH 
EKG_JABBER_AUTH_REQ 
EKG_JABBER_AUTH_UNREQ 

◆ jabber_bookmark_type_t

Wartości wyliczeń
JABBER_BOOKMARK_UNKNOWN 
JABBER_BOOKMARK_URL 
JABBER_BOOKMARK_CONFERENCE 

◆ jabber_compression_method

Wartości wyliczeń
JABBER_COMPRESSION_NONE 
JABBER_COMPRESSION_ZLIB_INIT 
JABBER_COMPRESSION_LZW_INIT 
JABBER_COMPRESSION_ZLIB 
JABBER_COMPRESSION_LZW 

◆ jabber_iq_privacy_flags_t

Wartości wyliczeń
PRIVACY_LIST_MESSAGE 
PRIVACY_LIST_IQ 
PRIVACY_LIST_PRESENCE_IN 
PRIVACY_LIST_PRESENCE_OUT 
PRIVACY_LIST_ALL 

◆ jabber_iq_type_t

Wartości wyliczeń
JABBER_IQ_TYPE_NONE 
JABBER_IQ_TYPE_GET 
JABBER_IQ_TYPE_SET 
JABBER_IQ_TYPE_RESULT 
JABBER_IQ_TYPE_ERROR 

◆ jabber_opengpg_type_t

Wartości wyliczeń
JABBER_OPENGPG_ENCRYPT 
JABBER_OPENGPG_DECRYPT 
JABBER_OPENGPG_SIGN 
JABBER_OPENGPG_VERIFY 

Dokumentacja funkcji

◆ jabber_attr()

char* jabber_attr ( char **  atts,
const char *  att 
)

◆ jabber_bookmarks_free()

int jabber_bookmarks_free ( jabber_private_t j)

◆ jabber_challenge_digest()

char* jabber_challenge_digest ( const char *  sid,
const char *  password,
const char *  nonce,
const char *  cnonce,
const char *  xmpp_temp,
const char *  realm 
)

jabber_challenge_digest()

Return base16 encoded hash for SASL MD5 CHALLENGE

Do zrobienia:
MD5Update() on NULL params will fail. XXX, no idea what to do.
Zwraca
static buffer with 32 digit BASE16 HASH + NUL char

◆ JABBER_COMMIT_DATA()

int JABBER_COMMIT_DATA ( watch_t w)

◆ jabber_conversation_find()

int jabber_conversation_find ( jabber_private_t j,
const char *  uid,
const char *  subject,
const char *  thread,
jabber_conversation_t **  result,
const int  can_add 
)

jabber_conversation_find() searches session's conversation list for matching one.

Parametry
j- private data of session.
uid- UID of recipient.
subject- message subject (for non-threaded conversations).
thread- jabber thread ID, if threaded.
result- place to write address of jabber_conversation_t or NULL, if not needed.
can_add- if nonzero, we can create new conversation, if none match.
Zwraca
Reply-ID of conversation.

◆ jabber_conversation_get()

jabber_conversation_t* jabber_conversation_get ( jabber_private_t j,
const int  n 
)

jabber_conversation_get() is used to get conversation by its Reply-ID.

Parametry
j- private data of session.
n- Reply-ID.
Zwraca
Pointer to jabber_conversation_t or NULL, when no conversation found.

◆ jabber_dcc_digest()

char* jabber_dcc_digest ( char *  sid,
char *  initiator,
char *  target 
)

[XXX] SOME TIME AGO, I had idea to connect jabber_dcc_digest() and jabber_digest() with one function, and use va_list for it... i don't know. jabber_dcc_digest()

Return SHA1 hash for SOCKS5 Bytestreams connections [DCC]
Make SHA1Update()'s on (uid, initiator and target)

Do zrobienia:
SHA1Update() on NULL params will fail. XXX, no idea what to do.
Do zrobienia:
We don't reencode params here to utf-8.
Zwraca
static buffer, with 40 digit SHA1 hash + NUL char

◆ jabber_digest()

char* jabber_digest ( const char *  sid,
const char *  password,
int  istlen 
)

jabber_digest()

Return SHA1 hash for jabber:iq:auth
Make SHA1Update()'s on recoded to utf-8 (sid and password)

Do zrobienia:
SHA1Update() on NULL params will fail. XXX, no idea what to do.
Zwraca
static buffer, with 40 digit SHA1 hash + NUL char

◆ jabber_escape()

char* jabber_escape ( const char *  text)

jabber_escape()

Convert charset from config_console_charset to "utf-8"
Escape xml chars using xml_escape()

Nota
If config_use_unicode is set, this function return only xml_escape(text)
Parametry
text- text to reencode+escape
Zobacz również
jabber_unescape() - For function reconverting charset back to config_console_charset
Zwraca
Dynamic allocated string, which should be xfree()'d

◆ jabber_handle()

void jabber_handle ( void *  data,
xmlnode_t n 
)

◆ jabber_handle_disconnect()

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

◆ 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_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_iq_stanza_free()

int jabber_iq_stanza_free ( jabber_private_t j)

◆ jabber_msg_format()

guint32* jabber_msg_format ( const char *  plaintext,
const xmlnode_t html 
)

◆ jabber_openpgp()

char* jabber_openpgp ( session_t s,
const char *  fromto,
enum jabber_opengpg_type_t  way,
char *  message,
char *  key,
char **  error 
)

◆ jabber_parser_recreate()

XML_Parser jabber_parser_recreate ( XML_Parser  parser,
void *  data 
)

◆ 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_reconnect_handler()

void jabber_reconnect_handler ( int  type,
void *  data 
)

◆ jabber_register_commands()

void jabber_register_commands ( void  )

◆ jabber_sha1_generic()

char* jabber_sha1_generic ( char *  buf,
int  len 
)

◆ jabber_stanza_freeone()

int jabber_stanza_freeone ( jabber_private_t j,
jabber_stanza_t stanza 
)

◆ jabber_thread_gen()

char* jabber_thread_gen ( jabber_private_t j,
const char *  uid 
)

jabber_thread_gen() generates new thread-ID for outgoing messages.

Parametry
j- private data of session.
uid- recipient UID.
Zwraca
New, session-unique thread-ID.

◆ jabber_unescape()

char* jabber_unescape ( const char *  text)

jabber_unescape()

Convert charset from "utf-8" to config_console_charset.
xml escaped chars are already changed by expat. so we don't care about them.

Nota
If config_use_unicode is set, this function only xstrdup(text)
Parametry
text- text to reencode.
Zobacz również
jabber_escape() - for function escaping xml chars + reencoding string to utf-8
Zwraca
Dynamic allocated string, which should be xfree()'d

◆ jabber_write_status()

int jabber_write_status ( session_t s)

◆ LIST_ADD_COMPARE()

LIST_ADD_COMPARE ( jabber_privacy_add_compare  ,
jabber_iq_privacy_t  
)

◆ tlen_decode()

char* tlen_decode ( const char *  what)

tlen_decode()

Decode string ,,encoded'' with urldecode [in ISO-8859-2] and convert charset to config_console_charset

Nota
It was ripped from libtlen. (c) Libtlen developers see: http://libtlen.sourceforge.net/
Do zrobienia:
Try to rewrite
Parametry
what- string to decode.
Zobacz również
tlen_encode() - for urlencode.
Zwraca
Dynamic allocated string, which should be xfree()'d

◆ tlen_encode()

char* tlen_encode ( const char *  what)

tlen_encode()

Convert charset from config_console_charset to ISO-8859-2
,,encode'' string with urlencode

Nota
It was ripped from libtlen. (c) Libtlen developers see: http://libtlen.sourceforge.net/
Do zrobienia:
Try to rewrite.
Parametry
what- string to encode.
Zobacz również
tlen_decode() - for urldecode.
Zwraca
Dynamic allocated string, which should be xfree()'d

◆ WATCHER_LINE()

WATCHER_LINE ( jabber_handle_write  )

◆ xmlnode_handle_cdata()

void xmlnode_handle_cdata ( void *  data,
const char *  text,
int  len 
)

◆ xmlnode_handle_end()

void xmlnode_handle_end ( void *  data,
const char *  name 
)

Dokumentacja zmiennych

◆ config_jabber_beep_mail

int config_jabber_beep_mail

◆ jabber_authtypes

const char* jabber_authtypes[]

◆ jabber_default_pubsub_server

char* jabber_default_pubsub_server

◆ jabber_default_search_server

char* jabber_default_search_server

◆ jabber_plugin

plugin_t jabber_plugin