diff options
author | Igor Sysoev <igor@sysoev.ru> | 2006-10-24 18:38:31 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2006-10-24 18:38:31 +0000 |
commit | 50cca1cb4b045c1b8fa3328e9ed0ae4245ad9db4 (patch) | |
tree | 2c6292a34568e7252f3d47460faedf87c1cbc2de /src/imap/ngx_imap_core_module.c | |
parent | df6f57afebe1c3cc564fa57f233e9a2bc97b225a (diff) | |
download | nginx-50cca1cb4b045c1b8fa3328e9ed0ae4245ad9db4.tar.gz nginx-50cca1cb4b045c1b8fa3328e9ed0ae4245ad9db4.zip |
AUTH PLAIN LOGIN CRAM-MD5
Diffstat (limited to 'src/imap/ngx_imap_core_module.c')
-rw-r--r-- | src/imap/ngx_imap_core_module.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/imap/ngx_imap_core_module.c b/src/imap/ngx_imap_core_module.c index f6c4cc16b..3cd3991ba 100644 --- a/src/imap/ngx_imap_core_module.c +++ b/src/imap/ngx_imap_core_module.c @@ -48,10 +48,27 @@ static ngx_str_t ngx_imap_default_capabilities[] = { static ngx_conf_bitmask_t ngx_imap_auth_methods[] = { { ngx_string("plain"), NGX_IMAP_AUTH_PLAIN_ENABLED }, { ngx_string("apop"), NGX_IMAP_AUTH_APOP_ENABLED }, + { ngx_string("cram-md5"), NGX_IMAP_AUTH_CRAM_MD5_ENABLED }, { ngx_null_string, 0 } }; +static ngx_str_t ngx_pop3_auth_plain_capability = + ngx_string("+OK methods supported:" CRLF + "LOGIN" CRLF + "PLAIN" CRLF + "." CRLF); + + +static ngx_str_t ngx_pop3_auth_cram_md5_capability = + ngx_string("+OK methods supported:" CRLF + "LOGIN" CRLF + "PLAIN" CRLF + "CRAM-MD5" CRLF + "." CRLF); + + + static ngx_command_t ngx_imap_core_commands[] = { { ngx_string("server"), @@ -279,6 +296,13 @@ ngx_imap_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) size += c[i].len + sizeof(CRLF) - 1; } + if (conf->auth_methods & NGX_IMAP_AUTH_CRAM_MD5_ENABLED) { + size += sizeof("SASL LOGIN PLAIN CRAM-MD5" CRLF) - 1; + + } else { + size += sizeof("SASL LOGIN PLAIN" CRLF) - 1; + } + p = ngx_palloc(cf->pool, size); if (p == NULL) { return NGX_CONF_ERROR; @@ -295,6 +319,15 @@ ngx_imap_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) *p++ = CR; *p++ = LF; } + if (conf->auth_methods & NGX_IMAP_AUTH_CRAM_MD5_ENABLED) { + p = ngx_cpymem(p, "SASL LOGIN PLAIN CRAM-MD5" CRLF, + sizeof("SASL LOGIN PLAIN CRAM-MD5" CRLF) - 1); + + } else { + p = ngx_cpymem(p, "SASL LOGIN PLAIN" CRLF, + sizeof("SASL LOGIN PLAIN" CRLF) - 1); + } + *p++ = '.'; *p++ = CR; *p = LF; @@ -315,6 +348,14 @@ ngx_imap_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) *p++ = '.'; *p++ = CR; *p = LF; + if (conf->auth_methods & NGX_IMAP_AUTH_CRAM_MD5_ENABLED) { + conf->pop3_auth_capability = ngx_pop3_auth_cram_md5_capability; + + } else { + conf->pop3_auth_capability = ngx_pop3_auth_plain_capability; + } + + if (conf->imap_capabilities.nelts == 0) { conf->imap_capabilities = prev->imap_capabilities; } |