Needs more love in the resolution of URI -> path
parent
9a22652366
commit
3bfd1094a5
25
inliner.c
25
inliner.c
|
@ -13,21 +13,25 @@
|
||||||
ngx_buf_t* nfi_inline_getbuf(ngx_http_request_t *r,
|
ngx_buf_t* nfi_inline_getbuf(ngx_http_request_t *r,
|
||||||
const ngx_str_t const * path, ngx_int_t mode)
|
const ngx_str_t const * path, ngx_int_t mode)
|
||||||
{
|
{
|
||||||
size_t root;
|
|
||||||
u_char *last;
|
|
||||||
ngx_str_t resolved;
|
ngx_str_t resolved;
|
||||||
ngx_buf_t *buf;
|
ngx_buf_t *buf;
|
||||||
ngx_file_t *bfile;
|
ngx_file_t *bfile;
|
||||||
ngx_file_info_t bfileinfo;
|
ngx_file_info_t bfileinfo;
|
||||||
|
|
||||||
resolved.len = path->len;
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
||||||
|
"http nfi_inline_getbuf path: \"%V\"", path);
|
||||||
|
|
||||||
|
resolved.len = r->uri.len + path->len;
|
||||||
resolved.data = ngx_palloc(r->pool, resolved.len + 1);
|
resolved.data = ngx_palloc(r->pool, resolved.len + 1);
|
||||||
if (resolved.data == NULL)
|
if (resolved.data == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
last = ngx_http_map_uri_to_path(r, &resolved, &root, 0);
|
ngx_memcpy(
|
||||||
if (last == NULL)
|
ngx_cpymem(resolved.data, r->uri.data, r->uri.len),
|
||||||
return NULL;
|
path->data, path->len);
|
||||||
|
|
||||||
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
||||||
|
"http nfi_inline_getbuf resolved: \"%V\"", &resolved);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Append final '\0' so we can use it to call ngx_file_info() below.
|
* Append final '\0' so we can use it to call ngx_file_info() below.
|
||||||
|
@ -39,8 +43,12 @@ ngx_buf_t* nfi_inline_getbuf(ngx_http_request_t *r,
|
||||||
* first.
|
* first.
|
||||||
*/
|
*/
|
||||||
resolved.data[resolved.len] = '\0';
|
resolved.data[resolved.len] = '\0';
|
||||||
if (ngx_file_info(resolved.data, &bfileinfo) != 0)
|
|
||||||
|
if (ngx_file_info(resolved.data, &bfileinfo) != 0) {
|
||||||
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, ngx_errno,
|
||||||
|
"http nfi_inline_getbuf no file stats");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!ngx_is_file(&bfileinfo) || /* we read regular files... */
|
if (!ngx_is_file(&bfileinfo) || /* we read regular files... */
|
||||||
!(ngx_file_access(&bfileinfo) & 0444) /* ...which can be read... */
|
!(ngx_file_access(&bfileinfo) & 0444) /* ...which can be read... */
|
||||||
|
@ -81,6 +89,9 @@ ngx_buf_t* nfi_inline_getbuf(ngx_http_request_t *r,
|
||||||
*/
|
*/
|
||||||
buf->file_last = ngx_file_size(&bfileinfo) - 1;
|
buf->file_last = ngx_file_size(&bfileinfo) - 1;
|
||||||
|
|
||||||
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
||||||
|
"nfi_inline_getbuf returned buf %p", buf);
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,11 +19,13 @@
|
||||||
* Distributed under terms of the BSD license.
|
* Distributed under terms of the BSD license.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ngx_http_fancyindex_module.h"
|
||||||
|
#include "template.h"
|
||||||
|
|
||||||
#include <ngx_config.h>
|
#include <ngx_config.h>
|
||||||
#include <ngx_core.h>
|
#include <ngx_core.h>
|
||||||
#include <ngx_http.h>
|
#include <ngx_http.h>
|
||||||
#include "ngx_http_fancyindex_module.h"
|
#include <ngx_log.h>
|
||||||
#include "template.h"
|
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -189,6 +191,8 @@ ngx_http_fancyindex_handler(ngx_http_request_t *r)
|
||||||
ngx_tm_t tm;
|
ngx_tm_t tm;
|
||||||
ngx_err_t err;
|
ngx_err_t err;
|
||||||
ngx_buf_t *b;
|
ngx_buf_t *b;
|
||||||
|
ngx_buf_t *bheader = NULL;
|
||||||
|
ngx_buf_t *bfooter = NULL;
|
||||||
ngx_int_t rc, size;
|
ngx_int_t rc, size;
|
||||||
ngx_str_t path;
|
ngx_str_t path;
|
||||||
ngx_str_t readme_path;
|
ngx_str_t readme_path;
|
||||||
|
@ -384,6 +388,16 @@ ngx_http_fancyindex_handler(ngx_http_request_t *r)
|
||||||
ngx_close_dir_n " \"%s\" failed", &path);
|
ngx_close_dir_n " \"%s\" failed", &path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Try to get header and footer, if enabled.
|
||||||
|
*/
|
||||||
|
if (alcf->header.len > 0) {
|
||||||
|
bheader = nfi_inline_getbuf(r, &alcf->header, alcf->include_mode);
|
||||||
|
}
|
||||||
|
if (alcf->footer.len > 0) {
|
||||||
|
bfooter = nfi_inline_getbuf(r, &alcf->footer, alcf->include_mode);
|
||||||
|
}
|
||||||
|
|
||||||
len = NFI_TEMPLATE_SIZE
|
len = NFI_TEMPLATE_SIZE
|
||||||
+ r->uri.len /* URI is included two times: as <title> in the */
|
+ r->uri.len /* URI is included two times: as <title> in the */
|
||||||
+ r->uri.len /* HTML head and as an <h1> in the HTML body */
|
+ r->uri.len /* HTML head and as an <h1> in the HTML body */
|
||||||
|
|
Loading…
Reference in New Issue