view src/imap/ngx_imap.h @ 485:4ebe09b07e30 release-0.1.17

nginx-0.1.17-RELEASE import *) Change: the ngx_http_rewrite_module was rewritten from the scratch. Now it is possible to redirect, to return the error codes, to check the variables and referrers. The directives can be used inside locations. The redirect directive was canceled. *) Feature: the ngx_http_geo_module. *) Feature: the proxy_set_x_var and fastcgi_set_var directives. *) Bugfix: the location configuration with "=" modifier may be used in another location. *) Bugfix: the correct content type was set only for requests that use small caps letters in extension. *) Bugfix: if the proxy_pass or fastcgi_pass directives were set in the location, and access was denied, and the error was redirected to a static page, then the segmentation fault occurred. *) Bugfix: if in a proxied "Location" header was a relative URL, then a host name and a slash were added to them; the bug had appeared in 0.1.14. *) Bugfix: the system error message was not logged on Linux.
author Igor Sysoev <igor@sysoev.ru>
date Thu, 03 Feb 2005 19:33:37 +0000
parents 42d11f017717
children 6f00349b98e5
line wrap: on
line source


/*
 * Copyright (C) Igor Sysoev
 */


#ifndef _NGX_IMAP_H_INCLUDED_
#define _NGX_IMAP_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_event.h>
#include <ngx_event_connect.h>


typedef struct {
    ngx_peer_connection_t   upstream;

    ngx_buf_t              *buffer;
} ngx_imap_proxy_ctx_t;


typedef enum {
    ngx_pop3_start = 0,
    ngx_pop3_user
} ngx_imap_state_e;


typedef struct {
    uint32_t                signature;         /* "IMAP" */

    ngx_connection_t       *connection;
    ngx_buf_t              *buffer;

    ngx_imap_state_e        imap_state;

    ngx_imap_proxy_ctx_t   *proxy;

    ngx_str_t               login;
    ngx_str_t               passwd;

    ngx_uint_t              command;
    ngx_array_t             args;

    /* used to parse IMAP/POP3 command */

    ngx_uint_t              state;
    u_char                 *arg_start;
    u_char                 *arg_end;
} ngx_imap_session_t;


#define NGX_POP3_USER       1
#define NGX_POP3_PASS       2
#define NGX_POP3_APOP       3
#define NGX_POP3_STAT       4
#define NGX_POP3_LIST       5
#define NGX_POP3_RETR       6
#define NGX_POP3_DELE       7
#define NGX_POP3_NOOP       8
#define NGX_POP3_RSET       9
#define NGX_POP3_TOP        10
#define NGX_POP3_UIDL       11
#define NGX_POP3_QUIT       12


#define NGX_IMAP_PARSE_INVALID_COMMAND  10


#define NGX_IMAP_PROXY_INVALID  10
#define NGX_IMAP_PROXY_ERROR    11


#define NGX_IMAP_MODULE      0x50414D49     /* "IMAP" */

#define NGX_IMAP_SRV_CONF    0x02000000
#define NGX_IMAP_IMAP_CONF   0x04000000
#define NGX_IMAP_POP3_CONF   0x08000000


void ngx_imap_init_connection(ngx_connection_t *c);
void ngx_imap_close_connection(ngx_connection_t *c);

void ngx_imap_proxy_init(ngx_imap_session_t *s);

ngx_int_t ngx_pop3_parse_command(ngx_imap_session_t *s);


#endif /* _NGX_IMAP_H_INCLUDED_ */