diff --git a/README b/README.rst similarity index 54% rename from README rename to README.rst index 6923be8..03854a3 100644 --- a/README +++ b/README.rst @@ -41,13 +41,13 @@ Building Directives ========== -:Syntax: fancyindex [on | off] +:Syntax: *fancyindex* [*on* | *off*] :Default: fancyindex off :Context: http, server, location :Description: Enables or disables fancy directory indexes. -:Syntax: fancyindex_localtime [on | off] +:Syntax: *fancyindex_localtime* [*on* | *off*] :Default: fancyindex_localtime off :Context: http, server, location :Description: @@ -55,12 +55,43 @@ Directives accurately, or rounding off to the kilobyte, the megabyte and the gigabyte. -:Syntax: fancyindex_exact_size [on | off] +:Syntax: *fancyindex_exact_size* [*on* | *off*] :Default: fancyindex_exact_size on :Context: http, server, location :Description: Enables showing file times as local time. Default is “off” (GMT time). +:Syntax: *fancyindex_header path* +:Default: fancyindex_header "" +:Context: http, server, location +:Description: + Specifies which file should be inserted at the head of directory listings. + If set to an empty string, the default header supplied by the module will + be sent. + +:Syntax: *fancyindex_header_pre* [*on* | *off*] +:Default: fancyindex_header_pre on +:Context: http, server, location +:Description: + Wrap contents of the file being sent as header in a ``
`` element,
+  after the module's own header. This is suitable for including
+  preformatting text.
+
+:Syntax: *fancyindex_footer path*
+:Default: fancyindex_footer ""
+:Context: http, server, location
+:Description:
+  Specifies which file should be inserted at the foot of directory listings.
+  If set to an empty string, the default footer supplied by the module will
+  be sent.
+
+:Syntax: *fancyindex_footer_pre* [*on* | *off*]
+:Default: fancyindex_footer_pre on
+:Context: http, server, location
+:Description:
+  Wrap contents of the file being sent as footer in a ``
`` element,
+  after the module's own header. This is suitable for including
+  preformatting text.
 
 .. _nginx: http://nginx.net
 
diff --git a/ngx_http_fancyindex_module.c b/ngx_http_fancyindex_module.c
index 854058a..06a0854 100644
--- a/ngx_http_fancyindex_module.c
+++ b/ngx_http_fancyindex_module.c
@@ -50,11 +50,16 @@ typedef struct {
     ngx_flag_t     enable;
     ngx_flag_t     localtime;
     ngx_flag_t     exact_size;
+
+    ngx_str_t      header;
+    ngx_flag_t     header_pre;
+
+    ngx_str_t      footer;
+    ngx_flag_t     footer_pre;
 } ngx_http_fancyindex_loc_conf_t;
 
 
 #define NGX_HTTP_FANCYINDEX_PREALLOCATE  50
-
 #define NGX_HTTP_FANCYINDEX_NAME_LEN     50
 
 
@@ -91,6 +96,34 @@ static ngx_command_t  ngx_http_fancyindex_commands[] = {
       offsetof(ngx_http_fancyindex_loc_conf_t, exact_size),
       NULL },
 
+    { ngx_string("fancyindex_header"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_str_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_fancyindex_loc_conf_t, header),
+      NULL },
+
+    { ngx_string("fancyindex_header_pre"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_flag_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_fancyindex_loc_conf_t, header_pre),
+      NULL },
+
+    { ngx_string("fancyindex_footer"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_str_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_fancyindex_loc_conf_t, footer),
+      NULL },
+
+    { ngx_string("fancyindex_footer_pre"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_flag_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_fancyindex_loc_conf_t, footer_pre),
+      NULL },
+
       ngx_null_command
 };
 
@@ -634,6 +667,12 @@ ngx_http_fancyindex_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
     ngx_conf_merge_value(conf->localtime, prev->localtime, 0);
     ngx_conf_merge_value(conf->exact_size, prev->exact_size, 1);
 
+    ngx_conf_merge_value(conf->footer_pre, prev->footer_pre, 1);
+    ngx_conf_merge_value(conf->header_pre, prev->header_pre, 1);
+
+    ngx_conf_merge_str_value(conf->header, prev->header, "");
+    ngx_conf_merge_str_value(conf->footer, prev->footer, "");
+
     return NGX_CONF_OK;
 }
 
@@ -655,3 +694,6 @@ ngx_http_fancyindex_init(ngx_conf_t *cf)
 
     return NGX_OK;
 }
+
+/* vim:et:sw=4:ts=4:
+ */