ekg2
Strona główna
Dodatkowe strony
Moduły
Struktury Danych
Pliki
Lista plików
Globalne
All
Struktury Danych
Pliki
Funkcje
Zmienne
Definicje typów
Wyliczenia
Wartości wyliczeń
Definicje
Grupay
Strony
plugins
jabber
jabber.h
Idź do dokumentacji tego pliku.
1
/* $Id$ */
2
3
#ifndef __EKG_JABBER_JABBER_H
4
#define __EKG_JABBER_JABBER_H
5
6
#include <ekg2-config.h>
7
8
#include <
ekg/dynstuff.h
>
9
#include <
ekg/plugins.h
>
10
#include <
ekg/protocol.h
>
/* XXX, protocol_uid() */
11
#include <
ekg/sessions.h
>
12
#include <
ekg/userlist.h
>
13
14
#ifdef HAVE_EXPAT_H
15
#include <expat.h>
16
#endif
17
18
#include "
jabber-ssl.h
"
19
20
#define DEFAULT_CLIENT_NAME "EKG2 -- http://www.ekg2.org"
21
#define JABBER_DEFAULT_RESOURCE "ekg2"
22
23
/* some tlen constants */
24
#define TLEN_HUB "idi.tlen.pl"
/* hub */
25
#define TLEN_FALLBACK_SERVER "s1.tlen.pl"
/* fallback server */
26
#define TLEN_FALLBACK_PORT 443
/* fallback port */
27
28
#define tlenjabber_escape(str) (j->istlen ? tlen_encode(str) : jabber_escape(str))
29
#define tlenjabber_unescape(str) (j->istlen ? tlen_decode(str) : jabber_unescape(str))
30
#define tlenjabber_uid(target) protocol_uid(j->istlen ? "tlen" : "xmpp", target)
31
32
#define tlen_uid(target) protocol_uid("tlen", target)
33
#define xmpp_uid(target) protocol_uid("xmpp", target)
34
35
struct
xmlnode_s
{
36
char
*
name
;
37
char
*
data
;
38
char
**
atts
;
39
char
*
xmlns
;
40
41
struct
xmlnode_s
*
parent
;
42
struct
xmlnode_s
*
children
;
43
44
struct
xmlnode_s
*
next
;
45
/* struct xmlnode_s *prev; */
46
};
47
48
typedef
struct
xmlnode_s
xmlnode_t
;
49
50
enum
jabber_opengpg_type_t
{
51
JABBER_OPENGPG_ENCRYPT
= 0,
52
JABBER_OPENGPG_DECRYPT
,
53
JABBER_OPENGPG_SIGN
,
54
JABBER_OPENGPG_VERIFY
55
};
56
57
enum
jabber_bookmark_type_t
{
/* see JEP-0048 for details */
58
JABBER_BOOKMARK_UNKNOWN
= 0,
59
JABBER_BOOKMARK_URL
,
60
JABBER_BOOKMARK_CONFERENCE
,
61
};
62
63
typedef
enum
{
64
JABBER_IQ_TYPE_NONE
,
65
JABBER_IQ_TYPE_GET
,
66
JABBER_IQ_TYPE_SET
,
67
JABBER_IQ_TYPE_RESULT
,
68
JABBER_IQ_TYPE_ERROR
,
69
}
jabber_iq_type_t
;
70
71
typedef
struct
{
72
char
*
name
;
73
char
*
url
;
74
}
jabber_bookmark_url_t
;
75
76
typedef
struct
{
77
char
*
name
;
78
char
*
jid
;
79
unsigned
int
autojoin : 1;
80
char
*
nick
;
81
char
*
pass
;
82
}
jabber_bookmark_conference_t
;
83
84
typedef
struct
{
85
enum
jabber_bookmark_type_t
type
;
86
union
{
/* priv_data data based on bookmark type */
87
jabber_bookmark_url_t
*
url
;
/* for JABBER_BOOKMARK_URL */
88
jabber_bookmark_conference_t
*
conf
;
/* for JABBER_BOOKMARK_CONFERENCE */
89
void
*
other
;
/* ? ;p */
90
} priv_data;
91
}
jabber_bookmark_t
;
92
93
enum
jabber_compression_method
{
94
JABBER_COMPRESSION_NONE
= 0,
95
JABBER_COMPRESSION_ZLIB_INIT
,
96
JABBER_COMPRESSION_LZW_INIT
,
97
98
JABBER_COMPRESSION_ZLIB
,
99
JABBER_COMPRESSION_LZW
,
100
};
101
102
/* name bit allow/block: */
103
typedef
enum
{
104
PRIVACY_LIST_MESSAGE
= 1,
/* incoming messages */
105
PRIVACY_LIST_IQ
= 2,
/* incoming iq packets */
106
PRIVACY_LIST_PRESENCE_IN
= 4,
/* incoming presence packets */
107
PRIVACY_LIST_PRESENCE_OUT
= 8,
/* outgoint presence packets */
108
PRIVACY_LIST_ALL
= (
PRIVACY_LIST_MESSAGE
|
PRIVACY_LIST_IQ
|
PRIVACY_LIST_PRESENCE_IN
|
PRIVACY_LIST_PRESENCE_OUT
)
109
}
jabber_iq_privacy_flags_t
;
110
111
typedef
struct
{
112
char
*
type
;
/* jid/group/subscription/ */
113
char
*
value
;
/* jid:.../@group/subscription ---- value */
114
unsigned
int
allow : 1;
/* 1 - allow 0 - deny */
115
jabber_iq_privacy_flags_t
items
;
/* lista bitmaski j/w */
116
unsigned
int
order
;
/* order */
117
}
jabber_iq_privacy_t
;
118
119
typedef
struct
{
120
char
*
thread
;
121
char
*
uid
;
122
char
*
subject
;
123
void
*
next
;
124
}
jabber_conversation_t
;
125
126
typedef
struct
{
127
char
*
id
;
128
char
*
to
;
129
char
*
type
;
130
char
*
xmlns
;
131
void (*handler)(
session_t
*
s
,
xmlnode_t
*n,
const
char
*from,
const
char
*
id
);
132
void (*error)(
session_t
*s,
xmlnode_t
*n,
const
char
*from,
const
char
*
id
);
133
}
jabber_stanza_t
;
134
138
typedef
struct
{
139
int
fd
;
140
unsigned
int
istlen : 2;
142
enum
jabber_compression_method
using_compress;
143
#ifdef JABBER_HAVE_SSL
144
unsigned
char
using_ssl : 2;
145
SSL_SESSION
ssl_session
;
146
#ifdef JABBER_HAVE_GNUTLS
147
gnutls_certificate_credentials xcred;
148
#endif
149
#endif
150
int
id
;
151
XML_Parser
parser
;
152
char
*
server
;
153
uint16_t
port
;
154
unsigned
int
sasl_connecting :1;
155
char
*
resource
;
156
char
*
last_gmail_result_time
;
157
char
*
last_gmail_tid
;
158
list_t
privacy
;
159
list_t
bookmarks
;
160
list_t
iq_stanzas
;
161
162
watch_t
*
send_watch
;
163
watch_t
*
connect_watch
;
164
165
xmlnode_t
*
node
;
166
jabber_conversation_t
*
conversations
;
167
}
jabber_private_t
;
168
169
typedef
struct
{
170
int
authtype
;
171
172
/* from muc_userlist_t */
173
char
*
role
;
/* role: */
174
char
*
aff
;
/* affiliation: */
175
}
jabber_userlist_private_t
;
176
177
enum
jabber_auth_t
{
178
EKG_JABBER_AUTH_NONE
= 0,
179
EKG_JABBER_AUTH_FROM
= 1,
180
EKG_JABBER_AUTH_TO
= 2,
181
EKG_JABBER_AUTH_BOTH
= 3,
182
EKG_JABBER_AUTH_REQ
= 4,
183
EKG_JABBER_AUTH_UNREQ
= 8
184
};
185
186
extern
plugin_t
jabber_plugin
;
187
extern
char
*
jabber_default_pubsub_server
;
188
extern
char
*
jabber_default_search_server
;
189
extern
int
config_jabber_beep_mail
;
190
extern
const
char
*
jabber_authtypes
[];
191
192
#define jabber_private(s) ((jabber_private_t*) session_private_get(s))
193
#define jabber_userlist_priv_get(u) ((jabber_userlist_private_t *) userlist_private_get(&jabber_plugin, u))
194
195
void
jabber_register_commands
(
void
);
196
XML_Parser
jabber_parser_recreate
(XML_Parser parser,
void
*data);
197
198
int
JABBER_COMMIT_DATA
(
watch_t
*w);
199
void
jabber_handle
(
void
*data,
xmlnode_t
*n);
200
201
int
jabber_privacy_freeone
(
jabber_private_t
*j,
jabber_iq_privacy_t
*item);
202
int
jabber_stanza_freeone
(
jabber_private_t
*j,
jabber_stanza_t
*stanza);
203
204
const
char
*
jabber_iq_reg
(
session_t
*s,
const
char
*prefix,
const
char
*to,
const
char
*
type
,
const
char
*xmlns);
205
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);
206
207
/* digest.c hashowanie.. */
208
char
*
jabber_digest
(
const
char
*sid,
const
char
*password,
int
istlen);
209
char
*
jabber_sha1_generic
(
char
*buf,
int
len);
210
char
*
jabber_dcc_digest
(
char
*sid,
char
*initiator,
char
*target);
211
char
*
jabber_challange_digest
(
const
char
*sid,
const
char
*password,
const
char
*nonce,
const
char
*cnonce,
const
char
*xmpp_temp,
const
char
*realm);
212
void
jabber_iq_auth_send
(
session_t
*s,
const
char
*username,
const
char
*passwd,
const
char
*stream_id);
213
214
char
*
jabber_attr
(
char
**atts,
const
char
*att);
215
char
*
jabber_escape
(
const
char
*text);
216
char
*
jabber_unescape
(
const
char
*text);
217
char
*
tlen_encode
(
const
char
*what);
218
char
*
tlen_decode
(
const
char
*what);
219
int
jabber_write_status
(
session_t
*s);
220
221
void
jabber_reconnect_handler
(
int
type
,
void
*data);
222
223
LIST_ADD_COMPARE
(
jabber_privacy_add_compare
,
jabber_iq_privacy_t
*);
224
int
jabber_privacy_free
(
jabber_private_t
*j);
225
int
jabber_bookmarks_free
(
jabber_private_t
*j);
226
int
jabber_iq_stanza_free
(
jabber_private_t
*j);
227
228
#define jabber_write(s, args...) watch_write((s && s->priv) ? jabber_private(s)->send_watch : NULL, args);
229
WATCHER_LINE
(
jabber_handle_write
);
230
231
void
xmlnode_handle_end
(
void
*data,
const
char
*
name
);
232
void
xmlnode_handle_cdata
(
void
*data,
const
char
*text,
int
len);
233
234
void
jabber_handle_disconnect
(
session_t
*s,
const
char
*reason,
int
type
);
235
236
char
*
jabber_openpgp
(
session_t
*s,
const
char
*fromto,
enum
jabber_opengpg_type_t
way,
char
*
message
,
char
*key,
char
**error);
237
#ifdef HAVE_ZLIB
238
char
*jabber_zlib_decompress(
const
char
*buf,
int
*len);
239
char
*jabber_zlib_compress(
const
char
*buf,
int
*len);
240
#endif
241
242
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);
243
jabber_conversation_t
*
jabber_conversation_get
(
jabber_private_t
*j,
const
int
n);
244
char
*
jabber_thread_gen
(
jabber_private_t
*j,
const
char
*
uid
);
245
246
uint32_t *
jabber_msg_format
(
const
char
*plaintext,
const
xmlnode_t
*html);
247
#endif
/* __EKG_JABBER_JABBER_H */
248
249
/*
250
* Local Variables:
251
* mode: c
252
* c-file-style: "k&r"
253
* c-basic-offset: 8
254
* indent-tabs-mode: t
255
* End:
256
*/
Wygenerowano Pn, 15 lip 2013 08:05:25 dla ekg2 programem
1.8.4