ekg2  GIT master
jabber.h
Idź do dokumentacji tego pliku.
1 /* $Id$ */
2 
3 #ifndef __EKG_JABBER_JABBER_H
4 #define __EKG_JABBER_JABBER_H
5 
6 #ifdef HAVE_EXPAT_H
7  #include <expat.h>
8 #endif
9 
10 #include "jabber-ssl.h"
11 
12 #define DEFAULT_CLIENT_NAME "EKG2 -- http://www.ekg2.org"
13 #define JABBER_DEFAULT_RESOURCE "ekg2"
14 
15 /* some tlen constants */
16 #define TLEN_HUB "idi.tlen.pl" /* hub */
17 #define TLEN_FALLBACK_SERVER "s1.tlen.pl" /* fallback server */
18 #define TLEN_FALLBACK_PORT 443 /* fallback port */
19 
20 #define tlenjabber_escape(str) (j->istlen ? tlen_encode(str) : jabber_escape(str))
21 #define tlenjabber_unescape(str) (j->istlen ? tlen_decode(str) : jabber_unescape(str))
22 #define tlenjabber_uid(target) protocol_uid(j->istlen ? "tlen" : "xmpp", target)
23 
24 #define tlen_uid(target) protocol_uid("tlen", target)
25 #define xmpp_uid(target) protocol_uid("xmpp", target)
26 
27 struct xmlnode_s {
28  char *name;
29  char *data;
30  char **atts;
31  char *xmlns;
32 
33  struct xmlnode_s *parent;
35 
36  struct xmlnode_s *next;
37 /* struct xmlnode_s *prev; */
38 };
39 
40 typedef struct xmlnode_s xmlnode_t;
41 
47 };
48 
49 enum jabber_bookmark_type_t { /* see JEP-0048 for details */
53 };
54 
55 typedef enum {
62 
63 typedef struct {
64  char *name;
65  char *url;
67 
68 typedef struct {
69  char *name;
70  char *jid;
71  unsigned int autojoin : 1;
72  char *nick;
73  char *pass;
75 
76 typedef struct {
78  union { /* priv_data data based on bookmark type */
79  jabber_bookmark_url_t *url; /* for JABBER_BOOKMARK_URL */
80  jabber_bookmark_conference_t *conf; /* for JABBER_BOOKMARK_CONFERENCE */
81  void *other; /* ? ;p */
82  } priv_data;
84 
89 
92 };
93 
94  /* name bit allow/block: */
95 typedef enum {
96  PRIVACY_LIST_MESSAGE = 1, /* incoming messages */
97  PRIVACY_LIST_IQ = 2, /* incoming iq packets */
98  PRIVACY_LIST_PRESENCE_IN = 4, /* incoming presence packets */
99  PRIVACY_LIST_PRESENCE_OUT = 8, /* outgoint presence packets */
102 
103 typedef struct {
104  char *type; /* jid/group/subscription/ */
105  char *value; /* jid:.../@group/subscription ---- value */
106  unsigned int allow : 1; /* 1 - allow 0 - deny */
107  jabber_iq_privacy_flags_t items; /* lista bitmaski j/w */
108  unsigned int order; /* order */
110 
111 typedef struct {
112  char *thread;
113  char *uid;
114  char *subject;
115  void *next;
117 
118 typedef struct {
119  char *id;
120  char *to;
121  char *type;
122  char *xmlns;
123  void (*handler)(session_t *s, xmlnode_t *n, const char *from, const char *id);
124  void (*error)(session_t *s, xmlnode_t *n, const char *from, const char *id);
126 
130 typedef struct {
131  int fd;
132  unsigned int istlen : 2;
134  enum jabber_compression_method using_compress;
135 #ifdef JABBER_HAVE_SSL
136  unsigned char using_ssl : 2;
137  SSL_SESSION ssl_session;
138 #ifdef HAVE_LIBGNUTLS
139  gnutls_certificate_credentials xcred;
140 #endif
141 #endif
142  int id;
143  XML_Parser parser;
144  char *server;
145  guint16 port;
146  unsigned int sasl_connecting :1;
147  char *resource;
153 
156 
160 
161 typedef struct {
162  int authtype;
163 
164  /* from muc_userlist_t */
165  char *role; /* role: */
166  char *aff; /* affiliation: */
168 
176 };
177 
178 extern plugin_t jabber_plugin;
179 extern char *jabber_default_pubsub_server;
180 extern char *jabber_default_search_server;
181 extern int config_jabber_beep_mail;
182 extern const char *jabber_authtypes[];
183 
184 #define jabber_private(s) ((jabber_private_t*) session_private_get(s))
185 #define jabber_userlist_priv_get(u) ((jabber_userlist_private_t *) userlist_private_get(&jabber_plugin, u))
186 
187 void jabber_register_commands(void);
188 XML_Parser jabber_parser_recreate(XML_Parser parser, void *data);
189 
191 void jabber_handle(void *data, xmlnode_t *n);
192 
195 
196 const char *jabber_iq_reg(session_t *s, const char *prefix, const char *to, const char *type, const char *xmlns);
197 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);
198 
199 /* digest.c hashowanie.. */
200 char *jabber_digest(const char *sid, const char *password, int istlen);
201 char *jabber_sha1_generic(char *buf, int len);
202 char *jabber_dcc_digest(char *sid, char *initiator, char *target);
203 char *jabber_challenge_digest(const char *sid, const char *password, const char *nonce, const char *cnonce, const char *xmpp_temp, const char *realm);
204 void jabber_iq_auth_send(session_t *s, const char *username, const char *passwd, const char *stream_id);
205 
206 char *jabber_attr(char **atts, const char *att);
207 char *jabber_escape(const char *text);
208 char *jabber_unescape(const char *text);
209 char *tlen_encode(const char *what);
210 char *tlen_decode(const char *what);
212 
213 void jabber_reconnect_handler(int type, void *data);
214 
219 
220 #define jabber_write(s, args...) watch_write((s && s->priv) ? jabber_private(s)->send_watch : NULL, args);
222 
223 void xmlnode_handle_end(void *data, const char *name);
224 void xmlnode_handle_cdata(void *data, const char *text, int len);
225 
226 void jabber_handle_disconnect(session_t *s, const char *reason, int type);
227 
228 char *jabber_openpgp(session_t *s, const char *fromto, enum jabber_opengpg_type_t way, char *message, char *key, char **error);
229 #ifdef HAVE_LIBZ
230 char *jabber_zlib_decompress(const char *buf, int *len);
231 char *jabber_zlib_compress(const char *buf, int *len);
232 #endif
233 
234 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);
236 char *jabber_thread_gen(jabber_private_t *j, const char *uid);
237 
238 guint32 *jabber_msg_format(const char *plaintext, const xmlnode_t *html);
239 #endif /* __EKG_JABBER_JABBER_H */
240 
241 /*
242  * Local Variables:
243  * mode: c
244  * c-file-style: "k&r"
245  * c-basic-offset: 8
246  * indent-tabs-mode: t
247  * End:
248  */
char * pass
Definition: jabber.h:73
unsigned char using_ssl
Definition: jabber.h:136
Definition: jabber.h:130
void jabber_handle_disconnect(session_t *s, const char *reason, int type)
Definition: jabber.c:379
jabber_iq_type_t
Definition: jabber.h:55
void * other
Definition: jabber.h:81
int JABBER_COMMIT_DATA(watch_t *w)
Definition: misc.c:160
Definition: jabber.h:63
char * jabber_dcc_digest(char *sid, char *initiator, char *target)
Definition: digest.c:463
Definition: jabber.h:59
Definition: jabber.h:58
char * tlen_encode(const char *what)
Definition: misc.c:252
char * jid
Definition: jabber.h:70
guint16 port
Definition: jabber.h:145
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)
Definition: misc.c:418
Definition: sessions.h:127
Definition: jabber.h:52
Definition: jabber.h:98
gnutls_session ssl_session
Definition: jabber.h:137
unsigned int allow
Definition: jabber.h:106
char * jabber_escape(const char *text)
Definition: misc.c:201
watch_t * connect_watch
Definition: jabber.h:155
char * role
Definition: jabber.h:165
Definition: jabber.h:27
unsigned int order
Definition: jabber.h:108
char * jabber_default_pubsub_server
Definition: jabber.c:64
int id
Definition: jabber.h:142
struct xmlnode_s * parent
Definition: jabber.h:33
unsigned int autojoin
Definition: jabber.h:71
jabber_auth_t
Definition: jabber.h:169
void xmlnode_handle_end(void *data, const char *name)
Definition: xmlnode.c:29
char * jabber_thread_gen(jabber_private_t *j, const char *uid)
Definition: misc.c:479
int jabber_handle_write(int type, int fd, const char *watch, void *data)
Definition: misc.c:326
jabber_iq_privacy_flags_t items
Definition: jabber.h:107
char * jabber_zlib_decompress(const char *buf, int *len)
Definition: misc.c:113
char * jabber_default_search_server
Definition: jabber.c:63
void jabber_handle(void *data, xmlnode_t *n)
Definition: jabber_handlers.c:668
Definition: jabber.h:174
jabber_conversation_t * jabber_conversation_get(jabber_private_t *j, const int n)
Definition: misc.c:460
Definition: jabber.h:43
xmlnode_t * node
Definition: jabber.h:157
int jabber_iq_stanza_free(jabber_private_t *j)
Definition: jabber.c:183
Definition: plugins.h:76
Definition: jabber.h:50
Definition: jabber.h:76
Definition: jabber.h:171
char * data
Definition: jabber.h:29
char * xmlns
Definition: jabber.h:31
char * url
Definition: jabber.h:65
Definition: jabber.h:60
XML_Parser parser
Definition: jabber.h:143
int jabber_bookmarks_free(jabber_private_t *j)
Definition: jabber.c:236
LIST_ADD_COMPARE(jabber_privacy_add_compare, jabber_iq_privacy_t *)
char * name
Definition: jabber.h:69
void xmlnode_handle_cdata(void *data, const char *text, int len)
Definition: xmlnode.c:58
int jabber_privacy_freeone(jabber_private_t *j, jabber_iq_privacy_t *item)
Definition: jabber.c:218
jabber_conversation_t * conversations
Definition: jabber.h:158
Definition: jabber.h:46
Definition: jabber.h:51
char * resource
Definition: jabber.h:147
char * last_gmail_result_time
Definition: jabber.h:148
int authtype
Definition: jabber.h:162
jabber_iq_privacy_flags_t
Definition: jabber.h:95
char * tlen_decode(const char *what)
Definition: misc.c:296
int fd
Definition: jabber.h:131
char * last_gmail_tid
Definition: jabber.h:149
list_t bookmarks
Definition: jabber.h:151
char * jabber_challenge_digest(const char *sid, const char *password, const char *nonce, const char *cnonce, const char *xmpp_temp, const char *realm)
Definition: digest.c:387
const char * jabber_authtypes[]
Definition: jabber.c:67
Definition: jabber.h:175
Definition: jabber.h:87
char * name
Definition: jabber.h:28
void jabber_register_commands(void)
Definition: commands.c:2411
char * aff
Definition: jabber.h:166
Definition: jabber.h:103
char * server
Definition: jabber.h:144
jabber_compression_method
Definition: jabber.h:85
void jabber_reconnect_handler(int type, void *data)
struct xmlnode_s * next
Definition: jabber.h:36
guint32 * jabber_msg_format(const char *plaintext, const xmlnode_t *html)
Definition: misc.c:524
struct xmlnode_s * children
Definition: jabber.h:34
Definition: jabber.h:161
Definition: jabber.h:111
Definition: jabber.h:91
int jabber_privacy_free(jabber_private_t *j)
Definition: jabber.c:210
char * uid
Definition: jabber.h:113
Definition: jabber.h:90
char * thread
Definition: jabber.h:112
plugin_t jabber_plugin
Definition: jabber.c:72
char * jabber_digest(const char *sid, const char *password, int istlen)
Definition: digest.c:492
char * id
Definition: jabber.h:119
Definition: jabber.h:86
void jabber_iq_auth_send(session_t *s, const char *username, const char *passwd, const char *stream_id)
Definition: jabber_handlers.c:136
Definition: jabber.h:44
const char * jabber_iq_reg(session_t *s, const char *prefix, const char *to, const char *type, const char *xmlns)
Definition: jabber_handlers.c:1728
Definition: jabber.h:97
list_t iq_stanzas
Definition: jabber.h:152
int config_jabber_beep_mail
Definition: jabber.c:65
Definition: jabber.h:45
char * subject
Definition: jabber.h:114
Definition: jabber.h:118
int jabber_privacy_add_compare(const jabber_iq_privacy_t *data1, const jabber_iq_privacy_t *data2)
Definition: jabber.c:198
void * next
Definition: jabber.h:115
jabber_bookmark_url_t * url
Definition: jabber.h:79
Definition: jabber.h:96
char * nick
Definition: jabber.h:72
Definition: ekg_hash_benchmark.c:14
Definition: jabber.h:170
Definition: jabber.h:99
char * value
Definition: jabber.h:105
jabber_bookmark_type_t
Definition: jabber.h:49
char * jabber_openpgp(session_t *s, const char *fromto, enum jabber_opengpg_type_t way, char *message, char *key, char **error)
Definition: misc.c:42
Definition: jabber.h:173
WATCHER_LINE(jabber_handle_write)
char * jabber_unescape(const char *text)
Definition: misc.c:229
XML_Parser jabber_parser_recreate(XML_Parser parser, void *data)
Definition: jabber.c:863
char * to
Definition: jabber.h:120
Definition: sources.h:78
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)
Definition: jabber_handlers.c:1776
Definition: jabber.h:57
char ** atts
Definition: jabber.h:30
unsigned int istlen
Definition: jabber.h:132
char * jabber_zlib_compress(const char *buf, int *len)
Definition: misc.c:98
#define s
int jabber_stanza_freeone(jabber_private_t *j, jabber_stanza_t *stanza)
Definition: jabber.c:191
Definition: jabber.h:68
jabber_bookmark_conference_t * conf
Definition: jabber.h:80
char * jabber_attr(char **atts, const char *att)
Definition: misc.c:172
abort_handler handler
Definition: abort.c:24
char * jabber_sha1_generic(char *buf, int len)
Definition: digest.c:517
Definition: jabber.h:56
char * type
Definition: jabber.h:121
list_t privacy
Definition: jabber.h:150
unsigned int sasl_connecting
Definition: jabber.h:146
char * xmlns
Definition: jabber.h:122
char * type
Definition: jabber.h:104
Definition: jabber.h:88
Definition: jabber.h:100
Definition: jabber.h:172
jabber_opengpg_type_t
Definition: jabber.h:42
int jabber_write_status(session_t *s)
Definition: jabber.c:310
char * name
Definition: jabber.h:64
watch_t * send_watch
Definition: jabber.h:154