diff options
author | Igor Sysoev <igor@sysoev.ru> | 2009-03-22 09:39:19 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2009-03-22 09:39:19 +0000 |
commit | 0c2fd4a5deef75bf94a96bd1d05c56efdc368d5d (patch) | |
tree | 03950cb404e2f305e66cdfed17e622c3440e6c38 /src/http/modules/ngx_http_auth_basic_module.c | |
parent | 8508c10bb872694083938afa4b3a832a647601dc (diff) | |
download | nginx-0c2fd4a5deef75bf94a96bd1d05c56efdc368d5d.tar.gz nginx-0c2fd4a5deef75bf94a96bd1d05c56efdc368d5d.zip |
use complex values in add_header, auth_basic_user_file,
sub_filter, and xslt_stylesheet parameters
Diffstat (limited to 'src/http/modules/ngx_http_auth_basic_module.c')
-rw-r--r-- | src/http/modules/ngx_http_auth_basic_module.c | 71 |
1 files changed, 17 insertions, 54 deletions
diff --git a/src/http/modules/ngx_http_auth_basic_module.c b/src/http/modules/ngx_http_auth_basic_module.c index b288d95dc..1d2d75e73 100644 --- a/src/http/modules/ngx_http_auth_basic_module.c +++ b/src/http/modules/ngx_http_auth_basic_module.c @@ -13,15 +13,13 @@ typedef struct { - ngx_str_t passwd; + ngx_str_t passwd; } ngx_http_auth_basic_ctx_t; typedef struct { - ngx_str_t realm; - ngx_str_t user_file; - ngx_array_t *user_file_lengths; - ngx_array_t *user_file_values; + ngx_str_t realm; + ngx_http_complex_value_t user_file; } ngx_http_auth_basic_loc_conf_t; @@ -117,7 +115,7 @@ ngx_http_auth_basic_handler(ngx_http_request_t *r) alcf = ngx_http_get_module_loc_conf(r, ngx_http_auth_basic_module); - if (alcf->realm.len == 0 || alcf->user_file.len == 0) { + if (alcf->realm.len == 0 || alcf->user_file.value.len == 0) { return NGX_DECLINED; } @@ -142,18 +140,8 @@ ngx_http_auth_basic_handler(ngx_http_request_t *r) return NGX_HTTP_INTERNAL_SERVER_ERROR; } - if (alcf->user_file_lengths) { - if (ngx_http_script_run(r, &user_file, alcf->user_file_lengths->elts, 1, - alcf->user_file_values->elts) - == NULL) - { - return NGX_ERROR; - } - - user_file.data[--user_file.len] = '\0'; - - } else { - user_file = alcf->user_file; + if (ngx_http_complex_value(r, &alcf->user_file, &user_file) != NGX_OK) { + return NGX_ERROR; } fd = ngx_open_file(user_file.data, NGX_FILE_RDONLY, NGX_FILE_OPEN, 0); @@ -401,10 +389,8 @@ ngx_http_auth_basic_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) conf->realm = prev->realm; } - if (conf->user_file.data == NULL) { + if (conf->user_file.value.len == 0) { conf->user_file = prev->user_file; - conf->user_file_lengths = prev->user_file_lengths; - conf->user_file_values = prev->user_file_values; } return NGX_CONF_OK; @@ -468,47 +454,24 @@ ngx_http_auth_basic_user_file(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { ngx_http_auth_basic_loc_conf_t *alcf = conf; - ngx_str_t *value; - ngx_uint_t n; - ngx_http_script_compile_t sc; + ngx_str_t *value; + ngx_http_compile_complex_value_t ccv; - if (alcf->user_file.data) { + if (alcf->user_file.value.len) { return "is duplicate"; } value = cf->args->elts; - alcf->user_file = value[1]; - - if (alcf->user_file.len == 0) { - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "invalid parameter \"%V\"", &alcf->user_file); - return NGX_CONF_ERROR; - } - - if (alcf->user_file.data[0] != '$') { - if (ngx_conf_full_name(cf->cycle, &alcf->user_file, 1) != NGX_OK) { - return NGX_CONF_ERROR; - } - } - - n = ngx_http_script_variables_count(&alcf->user_file); - - if (n == 0) { - return NGX_CONF_OK; - } - - ngx_memzero(&sc, sizeof(ngx_http_script_compile_t)); + ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t)); - sc.cf = cf; - sc.source = &alcf->user_file; - sc.lengths = &alcf->user_file_lengths; - sc.values = &alcf->user_file_values; - sc.variables = n; - sc.complete_lengths = 1; - sc.complete_values = 1; + ccv.cf = cf; + ccv.value = &value[1]; + ccv.complex_value = &alcf->user_file; + ccv.zero = 1; + ccv.conf_prefix = 1; - if (ngx_http_script_compile(&sc) != NGX_OK) { + if (ngx_http_compile_complex_value(&ccv) != NGX_OK) { return NGX_CONF_ERROR; } |