From 9e935e7d230b4cf8a068344e08db4bbf3c96b59e Mon Sep 17 00:00:00 2001 From: Adrian Perez Date: Mon, 20 Aug 2007 21:27:49 +0200 Subject: [PATCH] - Added configuration commands for header and footer files, and for their inclusion inside
 tags. - Code which handles the merging
 of the header/footer settings. - Updated documentation in README.rst

---
 README => README.rst         | 37 +++++++++++++++++++++++++++---
 ngx_http_fancyindex_module.c | 44 +++++++++++++++++++++++++++++++++++-
 2 files changed, 77 insertions(+), 4 deletions(-)
 rename README => README.rst (54%)

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:
+ */