ekg2
GIT master
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
#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
;
34
struct
xmlnode_s
*
children
;
35
36
struct
xmlnode_s
*
next
;
37
/* struct xmlnode_s *prev; */
38
};
39
40
typedef
struct
xmlnode_s
xmlnode_t
;
41
42
enum
jabber_opengpg_type_t
{
43
JABBER_OPENGPG_ENCRYPT
= 0,
44
JABBER_OPENGPG_DECRYPT
,
45
JABBER_OPENGPG_SIGN
,
46
JABBER_OPENGPG_VERIFY
47
};
48
49
enum
jabber_bookmark_type_t
{
/* see JEP-0048 for details */
50
JABBER_BOOKMARK_UNKNOWN
= 0,
51
JABBER_BOOKMARK_URL
,
52
JABBER_BOOKMARK_CONFERENCE
,
53
};
54
55
typedef
enum
{
56
JABBER_IQ_TYPE_NONE
,
57
JABBER_IQ_TYPE_GET
,
58
JABBER_IQ_TYPE_SET
,
59
JABBER_IQ_TYPE_RESULT
,
60
JABBER_IQ_TYPE_ERROR
,
61
}
jabber_iq_type_t
;
62
63
typedef
struct
{
64
char
*
name
;
65
char
*
url
;
66
}
jabber_bookmark_url_t
;
67
68
typedef
struct
{
69
char
*
name
;
70
char
*
jid
;
71
unsigned
int
autojoin : 1;
72
char
*
nick
;
73
char
*
pass
;
74
}
jabber_bookmark_conference_t
;
75
76
typedef
struct
{
77
enum
jabber_bookmark_type_t
type;
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;
83
}
jabber_bookmark_t
;
84
85
enum
jabber_compression_method
{
86
JABBER_COMPRESSION_NONE
= 0,
87
JABBER_COMPRESSION_ZLIB_INIT
,
88
JABBER_COMPRESSION_LZW_INIT
,
89
90
JABBER_COMPRESSION_ZLIB
,
91
JABBER_COMPRESSION_LZW
,
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 */
100
PRIVACY_LIST_ALL
= (
PRIVACY_LIST_MESSAGE
|
PRIVACY_LIST_IQ
|
PRIVACY_LIST_PRESENCE_IN
|
PRIVACY_LIST_PRESENCE_OUT
)
101
}
jabber_iq_privacy_flags_t
;
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 */
109
}
jabber_iq_privacy_t
;
110
111
typedef
struct
{
112
char
*
thread
;
113
char
*
uid
;
114
char
*
subject
;
115
void
*
next
;
116
}
jabber_conversation_t
;
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);
125
}
jabber_stanza_t
;
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
;
148
char
*
last_gmail_result_time
;
149
char
*
last_gmail_tid
;
150
list_t
privacy
;
151
list_t
bookmarks
;
152
list_t
iq_stanzas
;
153
154
watch_t
*
send_watch
;
155
watch_t
*
connect_watch
;
156
157
xmlnode_t
*
node
;
158
jabber_conversation_t
*
conversations
;
159
}
jabber_private_t
;
160
161
typedef
struct
{
162
int
authtype
;
163
164
/* from muc_userlist_t */
165
char
*
role
;
/* role: */
166
char
*
aff
;
/* affiliation: */
167
}
jabber_userlist_private_t
;
168
169
enum
jabber_auth_t
{
170
EKG_JABBER_AUTH_NONE
= 0,
171
EKG_JABBER_AUTH_FROM
= 1,
172
EKG_JABBER_AUTH_TO
= 2,
173
EKG_JABBER_AUTH_BOTH
= 3,
174
EKG_JABBER_AUTH_REQ
= 4,
175
EKG_JABBER_AUTH_UNREQ
= 8
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
190
int
JABBER_COMMIT_DATA
(
watch_t
*w);
191
void
jabber_handle
(
void
*data,
xmlnode_t
*n);
192
193
int
jabber_privacy_freeone
(
jabber_private_t
*j,
jabber_iq_privacy_t
*item);
194
int
jabber_stanza_freeone
(
jabber_private_t
*j,
jabber_stanza_t
*stanza);
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);
211
int
jabber_write_status
(
session_t
*s);
212
213
void
jabber_reconnect_handler
(
int
type,
void
*data);
214
215
LIST_ADD_COMPARE
(
jabber_privacy_add_compare
,
jabber_iq_privacy_t
*);
216
int
jabber_privacy_free
(
jabber_private_t
*j);
217
int
jabber_bookmarks_free
(
jabber_private_t
*j);
218
int
jabber_iq_stanza_free
(
jabber_private_t
*j);
219
220
#define jabber_write(s, args...) watch_write((s && s->priv) ? jabber_private(s)->send_watch : NULL, args);
221
WATCHER_LINE
(
jabber_handle_write
);
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);
235
jabber_conversation_t
*
jabber_conversation_get
(
jabber_private_t
*j,
const
int
n);
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
*/
Wygenerowano Wt, 29 paź 2013 20:17:04 dla ekg2 programem
1.8.4