Add option to hide symbolic links from generated listings
This adds a new "fancyindex_hide_symlinks" configuration flag, which will filter out symbolic links from the generated file listings when enabled. Feature suggested by Peter Wemm (https://github.com/DarkHelmet433) Fixes issue #27pull/28/head
parent
f39d834bff
commit
42d10a2a24
|
@ -2,6 +2,10 @@
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
### Added
|
||||||
|
- New feature: Allow filtering out symbolic links using the
|
||||||
|
`fancyindex_hide_symlinks` configuration directive. (Idea and prototype
|
||||||
|
patch by Thomas Wemm.)
|
||||||
### Changed
|
### Changed
|
||||||
- Listings in top-level directories will not generate a "Parent Directory"
|
- Listings in top-level directories will not generate a "Parent Directory"
|
||||||
link as first element of the listing. (Patch by Thomas P.)
|
link as first element of the listing. (Patch by Thomas P.)
|
||||||
|
|
|
@ -180,6 +180,14 @@ fancyindex_ignore
|
||||||
listings. If Nginx was built with PCRE support strings are interpreted as
|
listings. If Nginx was built with PCRE support strings are interpreted as
|
||||||
regular expressions.
|
regular expressions.
|
||||||
|
|
||||||
|
fancyindex_hide_symlinks
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
:Syntax: *fancyindex_hide_symlinks* [*on* | *off*]
|
||||||
|
:Default: fancyindex_hide_symlinks off
|
||||||
|
:Context: http, server, location
|
||||||
|
:Description:
|
||||||
|
When enabled, generated listings will not contain symbolic links.
|
||||||
|
|
||||||
fancyindex_localtime
|
fancyindex_localtime
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
:Syntax: *fancyindex_localtime* [*on* | *off*]
|
:Syntax: *fancyindex_localtime* [*on* | *off*]
|
||||||
|
|
|
@ -44,6 +44,7 @@ typedef struct {
|
||||||
ngx_flag_t localtime; /**< File mtime dates are sent in local time. */
|
ngx_flag_t localtime; /**< File mtime dates are sent in local time. */
|
||||||
ngx_flag_t exact_size; /**< Sizes are sent always in bytes. */
|
ngx_flag_t exact_size; /**< Sizes are sent always in bytes. */
|
||||||
ngx_uint_t name_length; /**< Maximum length of file names in bytes. */
|
ngx_uint_t name_length; /**< Maximum length of file names in bytes. */
|
||||||
|
ngx_flag_t hide_symlinks;/**< Hide symbolic links in listings. */
|
||||||
|
|
||||||
ngx_str_t header; /**< File name for header, or empty if none. */
|
ngx_str_t header; /**< File name for header, or empty if none. */
|
||||||
ngx_str_t footer; /**< File name for footer, or empty if none. */
|
ngx_str_t footer; /**< File name for footer, or empty if none. */
|
||||||
|
@ -223,6 +224,14 @@ static ngx_command_t ngx_http_fancyindex_commands[] = {
|
||||||
0,
|
0,
|
||||||
NULL },
|
NULL },
|
||||||
|
|
||||||
|
{ ngx_string("fancyindex_hide_symlinks"),
|
||||||
|
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
|
||||||
|
ngx_conf_set_flag_slot,
|
||||||
|
offsetof(ngx_http_fancyindex_loc_conf_t, hide_symlinks),
|
||||||
|
NGX_HTTP_LOC_CONF_OFFSET,
|
||||||
|
0,
|
||||||
|
NULL },
|
||||||
|
|
||||||
ngx_null_command
|
ngx_null_command
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -497,6 +506,9 @@ make_content_buf(
|
||||||
if (ngx_de_name(&dir)[0] == '.')
|
if (ngx_de_name(&dir)[0] == '.')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (alcf->hide_symlinks && ngx_de_is_link (&dir))
|
||||||
|
continue;
|
||||||
|
|
||||||
#if NGX_PCRE
|
#if NGX_PCRE
|
||||||
{
|
{
|
||||||
ngx_str_t str = { len, ngx_de_name(&dir) };
|
ngx_str_t str = { len, ngx_de_name(&dir) };
|
||||||
|
@ -1185,12 +1197,13 @@ ngx_http_fancyindex_create_loc_conf(ngx_conf_t *cf)
|
||||||
* conf->footer.len = 0
|
* conf->footer.len = 0
|
||||||
* conf->footer.data = NULL
|
* conf->footer.data = NULL
|
||||||
*/
|
*/
|
||||||
conf->enable = NGX_CONF_UNSET;
|
conf->enable = NGX_CONF_UNSET;
|
||||||
conf->default_sort = NGX_CONF_UNSET_UINT;
|
conf->default_sort = NGX_CONF_UNSET_UINT;
|
||||||
conf->localtime = NGX_CONF_UNSET;
|
conf->localtime = NGX_CONF_UNSET;
|
||||||
conf->name_length = NGX_CONF_UNSET_UINT;
|
conf->name_length = NGX_CONF_UNSET_UINT;
|
||||||
conf->exact_size = NGX_CONF_UNSET;
|
conf->exact_size = NGX_CONF_UNSET;
|
||||||
conf->ignore = NGX_CONF_UNSET_PTR;
|
conf->ignore = NGX_CONF_UNSET_PTR;
|
||||||
|
conf->hide_symlinks = NGX_CONF_UNSET;
|
||||||
|
|
||||||
return conf;
|
return conf;
|
||||||
}
|
}
|
||||||
|
@ -1212,6 +1225,7 @@ ngx_http_fancyindex_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||||
ngx_conf_merge_str_value(conf->footer, prev->footer, "");
|
ngx_conf_merge_str_value(conf->footer, prev->footer, "");
|
||||||
|
|
||||||
ngx_conf_merge_ptr_value(conf->ignore, prev->ignore, NULL);
|
ngx_conf_merge_ptr_value(conf->ignore, prev->ignore, NULL);
|
||||||
|
ngx_conf_merge_value(conf->hide_symlinks, prev->hide_symlinks, 0);
|
||||||
|
|
||||||
return NGX_CONF_OK;
|
return NGX_CONF_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue