Groonga 3.0.9 Source Code Document
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
groonga
vendor
nginx-1.4.2
src
mail
ngx_mail.h
Go to the documentation of this file.
1
2
/*
3
* Copyright (C) Igor Sysoev
4
* Copyright (C) Nginx, Inc.
5
*/
6
7
8
#ifndef _NGX_MAIL_H_INCLUDED_
9
#define _NGX_MAIL_H_INCLUDED_
10
11
12
#include <
ngx_config.h
>
13
#include <
ngx_core.h
>
14
#include <
ngx_event.h
>
15
#include <
ngx_event_connect.h
>
16
17
#if (NGX_MAIL_SSL)
18
#include <
ngx_mail_ssl_module.h
>
19
#endif
20
21
22
23
typedef
struct
{
24
void
**
main_conf
;
25
void
**
srv_conf
;
26
}
ngx_mail_conf_ctx_t
;
27
28
29
typedef
struct
{
30
u_char sockaddr[
NGX_SOCKADDRLEN
];
31
socklen_t
socklen
;
32
33
/* server ctx */
34
ngx_mail_conf_ctx_t
*
ctx
;
35
36
unsigned
bind:1;
37
unsigned
wildcard:1;
38
#if (NGX_MAIL_SSL)
39
unsigned
ssl:1;
40
#endif
41
#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
42
unsigned
ipv6only:1;
43
#endif
44
unsigned
so_keepalive:2;
45
#if (NGX_HAVE_KEEPALIVE_TUNABLE)
46
int
tcp_keepidle;
47
int
tcp_keepintvl;
48
int
tcp_keepcnt;
49
#endif
50
}
ngx_mail_listen_t
;
51
52
53
typedef
struct
{
54
ngx_mail_conf_ctx_t
*
ctx
;
55
ngx_str_t
addr_text
;
56
#if (NGX_MAIL_SSL)
57
ngx_uint_t
ssl;
/* unsigned ssl:1; */
58
#endif
59
}
ngx_mail_addr_conf_t
;
60
61
typedef
struct
{
62
in_addr_t
addr
;
63
ngx_mail_addr_conf_t
conf
;
64
}
ngx_mail_in_addr_t
;
65
66
67
#if (NGX_HAVE_INET6)
68
69
typedef
struct
{
70
struct
in6_addr addr6;
71
ngx_mail_addr_conf_t
conf;
72
} ngx_mail_in6_addr_t;
73
74
#endif
75
76
77
typedef
struct
{
78
/* ngx_mail_in_addr_t or ngx_mail_in6_addr_t */
79
void
*
addrs
;
80
ngx_uint_t
naddrs
;
81
}
ngx_mail_port_t
;
82
83
84
typedef
struct
{
85
int
family
;
86
in_port_t
port
;
87
ngx_array_t
addrs
;
/* array of ngx_mail_conf_addr_t */
88
}
ngx_mail_conf_port_t
;
89
90
91
typedef
struct
{
92
struct
sockaddr *
sockaddr
;
93
socklen_t
socklen
;
94
95
ngx_mail_conf_ctx_t
*
ctx
;
96
97
unsigned
bind:1;
98
unsigned
wildcard:1;
99
#if (NGX_MAIL_SSL)
100
unsigned
ssl:1;
101
#endif
102
#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
103
unsigned
ipv6only:1;
104
#endif
105
unsigned
so_keepalive:2;
106
#if (NGX_HAVE_KEEPALIVE_TUNABLE)
107
int
tcp_keepidle;
108
int
tcp_keepintvl;
109
int
tcp_keepcnt;
110
#endif
111
}
ngx_mail_conf_addr_t
;
112
113
114
typedef
struct
{
115
ngx_array_t
servers
;
/* ngx_mail_core_srv_conf_t */
116
ngx_array_t
listen
;
/* ngx_mail_listen_t */
117
}
ngx_mail_core_main_conf_t
;
118
119
120
#define NGX_MAIL_POP3_PROTOCOL 0
121
#define NGX_MAIL_IMAP_PROTOCOL 1
122
#define NGX_MAIL_SMTP_PROTOCOL 2
123
124
125
typedef
struct
ngx_mail_protocol_s
ngx_mail_protocol_t
;
126
127
128
typedef
struct
{
129
ngx_mail_protocol_t
*
protocol
;
130
131
ngx_msec_t
timeout
;
132
ngx_msec_t
resolver_timeout
;
133
134
ngx_flag_t
so_keepalive
;
135
136
ngx_str_t
server_name
;
137
138
u_char *
file_name
;
139
ngx_int_t
line
;
140
141
ngx_resolver_t
*
resolver
;
142
143
/* server ctx */
144
ngx_mail_conf_ctx_t
*
ctx
;
145
}
ngx_mail_core_srv_conf_t
;
146
147
148
typedef
enum
{
149
ngx_pop3_start
= 0,
150
ngx_pop3_user
,
151
ngx_pop3_passwd
,
152
ngx_pop3_auth_login_username
,
153
ngx_pop3_auth_login_password
,
154
ngx_pop3_auth_plain
,
155
ngx_pop3_auth_cram_md5
156
}
ngx_pop3_state_e
;
157
158
159
typedef
enum
{
160
ngx_imap_start
= 0,
161
ngx_imap_auth_login_username
,
162
ngx_imap_auth_login_password
,
163
ngx_imap_auth_plain
,
164
ngx_imap_auth_cram_md5
,
165
ngx_imap_login
,
166
ngx_imap_user
,
167
ngx_imap_passwd
168
}
ngx_imap_state_e
;
169
170
171
typedef
enum
{
172
ngx_smtp_start
= 0,
173
ngx_smtp_auth_login_username
,
174
ngx_smtp_auth_login_password
,
175
ngx_smtp_auth_plain
,
176
ngx_smtp_auth_cram_md5
,
177
ngx_smtp_helo
,
178
ngx_smtp_helo_xclient
,
179
ngx_smtp_helo_from
,
180
ngx_smtp_xclient
,
181
ngx_smtp_xclient_from
,
182
ngx_smtp_xclient_helo
,
183
ngx_smtp_from
,
184
ngx_smtp_to
185
}
ngx_smtp_state_e
;
186
187
188
typedef
struct
{
189
ngx_peer_connection_t
upstream
;
190
ngx_buf_t
*
buffer
;
191
}
ngx_mail_proxy_ctx_t
;
192
193
194
typedef
struct
{
195
uint32_t
signature
;
/* "MAIL" */
196
197
ngx_connection_t
*
connection
;
198
199
ngx_str_t
out
;
200
ngx_buf_t
*
buffer
;
201
202
void
**
ctx
;
203
void
**
main_conf
;
204
void
**
srv_conf
;
205
206
ngx_resolver_ctx_t
*
resolver_ctx
;
207
208
ngx_mail_proxy_ctx_t
*
proxy
;
209
210
ngx_uint_t
mail_state
;
211
212
unsigned
protocol:3;
213
unsigned
blocked:1;
214
unsigned
quit:1;
215
unsigned
quoted:1;
216
unsigned
backslash:1;
217
unsigned
no_sync_literal:1;
218
unsigned
starttls:1;
219
unsigned
esmtp:1;
220
unsigned
auth_method:3;
221
unsigned
auth_wait:1;
222
223
ngx_str_t
login
;
224
ngx_str_t
passwd
;
225
226
ngx_str_t
salt
;
227
ngx_str_t
tag
;
228
ngx_str_t
tagged_line
;
229
ngx_str_t
text
;
230
231
ngx_str_t
*
addr_text
;
232
ngx_str_t
host
;
233
ngx_str_t
smtp_helo
;
234
ngx_str_t
smtp_from
;
235
ngx_str_t
smtp_to
;
236
237
ngx_uint_t
command
;
238
ngx_array_t
args
;
239
240
ngx_uint_t
login_attempt
;
241
242
/* used to parse POP3/IMAP/SMTP command */
243
244
ngx_uint_t
state
;
245
u_char *
cmd_start
;
246
u_char *
arg_start
;
247
u_char *
arg_end
;
248
ngx_uint_t
literal_len
;
249
}
ngx_mail_session_t
;
250
251
252
typedef
struct
{
253
ngx_str_t
*
client
;
254
ngx_mail_session_t
*
session
;
255
}
ngx_mail_log_ctx_t
;
256
257
258
#define NGX_POP3_USER 1
259
#define NGX_POP3_PASS 2
260
#define NGX_POP3_CAPA 3
261
#define NGX_POP3_QUIT 4
262
#define NGX_POP3_NOOP 5
263
#define NGX_POP3_STLS 6
264
#define NGX_POP3_APOP 7
265
#define NGX_POP3_AUTH 8
266
#define NGX_POP3_STAT 9
267
#define NGX_POP3_LIST 10
268
#define NGX_POP3_RETR 11
269
#define NGX_POP3_DELE 12
270
#define NGX_POP3_RSET 13
271
#define NGX_POP3_TOP 14
272
#define NGX_POP3_UIDL 15
273
274
275
#define NGX_IMAP_LOGIN 1
276
#define NGX_IMAP_LOGOUT 2
277
#define NGX_IMAP_CAPABILITY 3
278
#define NGX_IMAP_NOOP 4
279
#define NGX_IMAP_STARTTLS 5
280
281
#define NGX_IMAP_NEXT 6
282
283
#define NGX_IMAP_AUTHENTICATE 7
284
285
286
#define NGX_SMTP_HELO 1
287
#define NGX_SMTP_EHLO 2
288
#define NGX_SMTP_AUTH 3
289
#define NGX_SMTP_QUIT 4
290
#define NGX_SMTP_NOOP 5
291
#define NGX_SMTP_MAIL 6
292
#define NGX_SMTP_RSET 7
293
#define NGX_SMTP_RCPT 8
294
#define NGX_SMTP_DATA 9
295
#define NGX_SMTP_VRFY 10
296
#define NGX_SMTP_EXPN 11
297
#define NGX_SMTP_HELP 12
298
#define NGX_SMTP_STARTTLS 13
299
300
301
#define NGX_MAIL_AUTH_PLAIN 0
302
#define NGX_MAIL_AUTH_LOGIN 1
303
#define NGX_MAIL_AUTH_LOGIN_USERNAME 2
304
#define NGX_MAIL_AUTH_APOP 3
305
#define NGX_MAIL_AUTH_CRAM_MD5 4
306
#define NGX_MAIL_AUTH_NONE 5
307
308
309
#define NGX_MAIL_AUTH_PLAIN_ENABLED 0x0002
310
#define NGX_MAIL_AUTH_LOGIN_ENABLED 0x0004
311
#define NGX_MAIL_AUTH_APOP_ENABLED 0x0008
312
#define NGX_MAIL_AUTH_CRAM_MD5_ENABLED 0x0010
313
#define NGX_MAIL_AUTH_NONE_ENABLED 0x0020
314
315
316
#define NGX_MAIL_PARSE_INVALID_COMMAND 20
317
318
319
typedef
void (*
ngx_mail_init_session_pt
)(
ngx_mail_session_t
*s,
320
ngx_connection_t
*c);
321
typedef
void (*
ngx_mail_init_protocol_pt
)(
ngx_event_t
*rev);
322
typedef
void (*
ngx_mail_auth_state_pt
)(
ngx_event_t
*rev);
323
typedef
ngx_int_t
(*
ngx_mail_parse_command_pt
)(
ngx_mail_session_t
*s);
324
325
326
struct
ngx_mail_protocol_s
{
327
ngx_str_t
name
;
328
in_port_t
port
[4];
329
ngx_uint_t
type
;
330
331
ngx_mail_init_session_pt
init_session
;
332
ngx_mail_init_protocol_pt
init_protocol
;
333
ngx_mail_parse_command_pt
parse_command
;
334
ngx_mail_auth_state_pt
auth_state
;
335
336
ngx_str_t
internal_server_error
;
337
};
338
339
340
typedef
struct
{
341
ngx_mail_protocol_t
*
protocol
;
342
343
void
*(*create_main_conf)(
ngx_conf_t
*cf);
344
char
*(*init_main_conf)(
ngx_conf_t
*cf,
void
*conf);
345
346
void
*(*create_srv_conf)(
ngx_conf_t
*cf);
347
char
*(*merge_srv_conf)(
ngx_conf_t
*cf,
void
*prev,
348
void
*conf);
349
}
ngx_mail_module_t
;
350
351
352
#define NGX_MAIL_MODULE 0x4C49414D
/* "MAIL" */
353
354
#define NGX_MAIL_MAIN_CONF 0x02000000
355
#define NGX_MAIL_SRV_CONF 0x04000000
356
357
358
#define NGX_MAIL_MAIN_CONF_OFFSET offsetof(ngx_mail_conf_ctx_t, main_conf)
359
#define NGX_MAIL_SRV_CONF_OFFSET offsetof(ngx_mail_conf_ctx_t, srv_conf)
360
361
362
#define ngx_mail_get_module_ctx(s, module) (s)->ctx[module.ctx_index]
363
#define ngx_mail_set_ctx(s, c, module) s->ctx[module.ctx_index] = c;
364
#define ngx_mail_delete_ctx(s, module) s->ctx[module.ctx_index] = NULL;
365
366
367
#define ngx_mail_get_module_main_conf(s, module) \
368
(s)->main_conf[module.ctx_index]
369
#define ngx_mail_get_module_srv_conf(s, module) (s)->srv_conf[module.ctx_index]
370
371
#define ngx_mail_conf_get_module_main_conf(cf, module) \
372
((ngx_mail_conf_ctx_t *) cf->ctx)->main_conf[module.ctx_index]
373
#define ngx_mail_conf_get_module_srv_conf(cf, module) \
374
((ngx_mail_conf_ctx_t *) cf->ctx)->srv_conf[module.ctx_index]
375
376
377
#if (NGX_MAIL_SSL)
378
void
ngx_mail_starttls_handler(
ngx_event_t
*rev);
379
ngx_int_t
ngx_mail_starttls_only(
ngx_mail_session_t
*s,
ngx_connection_t
*c);
380
#endif
381
382
383
void
ngx_mail_init_connection
(
ngx_connection_t
*c);
384
385
ngx_int_t
ngx_mail_salt
(
ngx_mail_session_t
*s,
ngx_connection_t
*c,
386
ngx_mail_core_srv_conf_t
*cscf);
387
ngx_int_t
ngx_mail_auth_plain
(
ngx_mail_session_t
*s,
ngx_connection_t
*c,
388
ngx_uint_t
n);
389
ngx_int_t
ngx_mail_auth_login_username
(
ngx_mail_session_t
*s,
390
ngx_connection_t
*c,
ngx_uint_t
n);
391
ngx_int_t
ngx_mail_auth_login_password
(
ngx_mail_session_t
*s,
392
ngx_connection_t
*c);
393
ngx_int_t
ngx_mail_auth_cram_md5_salt
(
ngx_mail_session_t
*s,
394
ngx_connection_t
*c,
char
*prefix,
size_t
len);
395
ngx_int_t
ngx_mail_auth_cram_md5
(
ngx_mail_session_t
*s,
ngx_connection_t
*c);
396
ngx_int_t
ngx_mail_auth_parse
(
ngx_mail_session_t
*s,
ngx_connection_t
*c);
397
398
void
ngx_mail_send
(
ngx_event_t
*wev);
399
ngx_int_t
ngx_mail_read_command
(
ngx_mail_session_t
*s,
ngx_connection_t
*c);
400
void
ngx_mail_auth
(
ngx_mail_session_t
*s,
ngx_connection_t
*c);
401
void
ngx_mail_close_connection
(
ngx_connection_t
*c);
402
void
ngx_mail_session_internal_server_error
(
ngx_mail_session_t
*s);
403
u_char *
ngx_mail_log_error
(
ngx_log_t
*log, u_char *buf,
size_t
len);
404
405
406
char
*
ngx_mail_capabilities
(
ngx_conf_t
*cf,
ngx_command_t
*cmd,
void
*conf);
407
408
409
/* STUB */
410
void
ngx_mail_proxy_init
(
ngx_mail_session_t
*s,
ngx_addr_t
*peer);
411
void
ngx_mail_auth_http_init
(
ngx_mail_session_t
*s);
412
413
414
415
extern
ngx_uint_t
ngx_mail_max_module
;
416
extern
ngx_module_t
ngx_mail_core_module
;
417
418
419
#endif
/* _NGX_MAIL_H_INCLUDED_ */
Generated on Sun Nov 10 2013 09:49:09 for Groonga 3.0.9 Source Code Document by
1.8.1.2