aboutsummaryrefslogtreecommitdiff
path: root/src/imap/ngx_imap_core_module.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2006-10-24 18:38:31 +0000
committerIgor Sysoev <igor@sysoev.ru>2006-10-24 18:38:31 +0000
commit50cca1cb4b045c1b8fa3328e9ed0ae4245ad9db4 (patch)
tree2c6292a34568e7252f3d47460faedf87c1cbc2de /src/imap/ngx_imap_core_module.c
parentdf6f57afebe1c3cc564fa57f233e9a2bc97b225a (diff)
downloadnginx-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.c41
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;
}