You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by co...@apache.org on 2021/10/21 18:54:46 UTC
svn commit: r1894456 - in /httpd/httpd/trunk:
changes-entries/DirectorySlashNotFound.txt docs/manual/mod/mod_dir.xml
modules/mappers/mod_dir.c
Author: covener
Date: Thu Oct 21 18:54:46 2021
New Revision: 1894456
URL: http://svn.apache.org/viewvc?rev=1894456&view=rev
Log:
add DirectorySlashNotFound to silence scanners
Almost as awkwardly named as IndexForbiddenReturn404
Added:
httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt
Modified:
httpd/httpd/trunk/docs/manual/mod/mod_dir.xml
httpd/httpd/trunk/modules/mappers/mod_dir.c
Added: httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt?rev=1894456&view=auto
==============================================================================
--- httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt (added)
+++ httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt Thu Oct 21 18:54:46 2021
@@ -0,0 +1,2 @@
+ *) mod_dir: Add "DirectorySlashNotFound" to return 404 instead of a
+ DirectorySlash redirect. [Eric Covener]
Modified: httpd/httpd/trunk/docs/manual/mod/mod_dir.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_dir.xml?rev=1894456&r1=1894455&r2=1894456&view=diff
==============================================================================
--- httpd/httpd/trunk/docs/manual/mod/mod_dir.xml (original)
+++ httpd/httpd/trunk/docs/manual/mod/mod_dir.xml Thu Oct 21 18:54:46 2021
@@ -230,6 +230,22 @@ a directory</description>
</usage>
</directivesynopsis>
<directivesynopsis>
+<name>DirectorySlashNotFound</name>
+<description>Toggle sending a HTTP 404 error in place of a trailing slash</description>
+<syntax>DirectorySlashNotFound On|Off</syntax>
+<default>DirectorySlashNotFound Off</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context><context>.htaccess</context></contextlist>
+<override>Indexes</override>
+<compatibility>Added in 2.5.1</compatibility>
+
+<usage>
+ <p>The <directive>DirectorySlashNotFound</directive> directive determines whether
+ <module>mod_dir</module> should return an HTTP 404 status code where it would
+ otherwise have redirected the request to include a trailing slash. </p>
+</usage>
+</directivesynopsis>
+<directivesynopsis>
<name>FallbackResource</name>
<description>Define a default URL for requests that don't map to a file</description>
<syntax>FallbackResource disabled | <var>local-url</var></syntax>
Modified: httpd/httpd/trunk/modules/mappers/mod_dir.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/mappers/mod_dir.c?rev=1894456&r1=1894455&r2=1894456&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/mappers/mod_dir.c (original)
+++ httpd/httpd/trunk/modules/mappers/mod_dir.c Thu Oct 21 18:54:46 2021
@@ -48,6 +48,7 @@ typedef struct dir_config_struct {
moddir_cfg checkhandler;
int redirect_index;
const char *dflt;
+ moddir_cfg do_slash_notfound;
} dir_config_rec;
#define DIR_CMD_PERMS OR_INDEXES
@@ -88,6 +89,13 @@ static const char *configure_slash(cmd_p
d->do_slash = arg ? MODDIR_ON : MODDIR_OFF;
return NULL;
}
+static const char *configure_slash_notfound(cmd_parms *cmd, void *d_, int arg)
+{
+ dir_config_rec *d = d_;
+
+ d->do_slash_notfound = arg ? MODDIR_ON : MODDIR_OFF;
+ return NULL;
+}
static const char *configure_checkhandler(cmd_parms *cmd, void *d_, int arg)
{
dir_config_rec *d = d_;
@@ -132,6 +140,8 @@ static const command_rec dir_cmds[] =
"a list of file names"),
AP_INIT_FLAG("DirectorySlash", configure_slash, NULL, DIR_CMD_PERMS,
"On or Off"),
+ AP_INIT_FLAG("DirectorySlashNotFound", configure_slash_notfound, NULL, DIR_CMD_PERMS,
+ "On or Off"),
AP_INIT_FLAG("DirectoryCheckHandler", configure_checkhandler, NULL, DIR_CMD_PERMS,
"On or Off"),
AP_INIT_TAKE1("DirectoryIndexRedirect", configure_redirect,
@@ -146,6 +156,7 @@ static void *create_dir_config(apr_pool_
new->index_names = NULL;
new->do_slash = MODDIR_UNSET;
+ new->do_slash_notfound = MODDIR_UNSET;
new->checkhandler = MODDIR_UNSET;
new->redirect_index = REDIRECT_UNSET;
return (void *) new;
@@ -160,6 +171,8 @@ static void *merge_dir_configs(apr_pool_
new->index_names = add->index_names ? add->index_names : base->index_names;
new->do_slash =
(add->do_slash == MODDIR_UNSET) ? base->do_slash : add->do_slash;
+ new->do_slash_notfound =
+ (add->do_slash_notfound == MODDIR_UNSET) ? base->do_slash_notfound : add->do_slash_notfound;
new->checkhandler =
(add->checkhandler == MODDIR_UNSET) ? base->checkhandler : add->checkhandler;
new->redirect_index=
@@ -251,6 +264,10 @@ static int fixup_dir(request_rec *r)
return DECLINED;
}
+ if (d->do_slash_notfound == MODDIR_ON) {
+ return HTTP_NOT_FOUND;
+ }
+
/* Only redirect non-get requests if we have no note to warn
* that this browser cannot handle redirs on non-GET requests
* (such as Microsoft's WebFolders).
Re: svn commit: r1894456 - in /httpd/httpd/trunk: changes-entries/DirectorySlashNotFound.txt
docs/manual/mod/mod_dir.xml modules/mappers/mod_dir.c
Posted by Eric Covener <co...@gmail.com>.
On Thu, Oct 21, 2021 at 7:50 PM Yann Ylavic <yl...@gmail.com> wrote:
>
> On Thu, Oct 21, 2021 at 8:55 PM Eric Covener <co...@gmail.com> wrote:
> >
> > welcome to feedback on these, especially the names
>
> DirectorySlash On/Off/NotFound (reusing the existing directive) maybe?
That does "sound" better. Thanks!
Re: svn commit: r1894456 - in /httpd/httpd/trunk: changes-entries/DirectorySlashNotFound.txt
docs/manual/mod/mod_dir.xml modules/mappers/mod_dir.c
Posted by Yann Ylavic <yl...@gmail.com>.
On Thu, Oct 21, 2021 at 8:55 PM Eric Covener <co...@gmail.com> wrote:
>
> welcome to feedback on these, especially the names
DirectorySlash On/Off/NotFound (reusing the existing directive) maybe?
Re: svn commit: r1894456 - in /httpd/httpd/trunk: changes-entries/DirectorySlashNotFound.txt
docs/manual/mod/mod_dir.xml modules/mappers/mod_dir.c
Posted by Eric Covener <co...@gmail.com>.
welcome to feedback on these, especially the names
On Thu, Oct 21, 2021 at 2:54 PM <co...@apache.org> wrote:
>
> Author: covener
> Date: Thu Oct 21 18:54:46 2021
> New Revision: 1894456
>
> URL: http://svn.apache.org/viewvc?rev=1894456&view=rev
> Log:
> add DirectorySlashNotFound to silence scanners
>
> Almost as awkwardly named as IndexForbiddenReturn404
>
>
> Added:
> httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt
> Modified:
> httpd/httpd/trunk/docs/manual/mod/mod_dir.xml
> httpd/httpd/trunk/modules/mappers/mod_dir.c
>
> Added: httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt?rev=1894456&view=auto
> ==============================================================================
> --- httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt (added)
> +++ httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt Thu Oct 21 18:54:46 2021
> @@ -0,0 +1,2 @@
> + *) mod_dir: Add "DirectorySlashNotFound" to return 404 instead of a
> + DirectorySlash redirect. [Eric Covener]
>
> Modified: httpd/httpd/trunk/docs/manual/mod/mod_dir.xml
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_dir.xml?rev=1894456&r1=1894455&r2=1894456&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/docs/manual/mod/mod_dir.xml (original)
> +++ httpd/httpd/trunk/docs/manual/mod/mod_dir.xml Thu Oct 21 18:54:46 2021
> @@ -230,6 +230,22 @@ a directory</description>
> </usage>
> </directivesynopsis>
> <directivesynopsis>
> +<name>DirectorySlashNotFound</name>
> +<description>Toggle sending a HTTP 404 error in place of a trailing slash</description>
> +<syntax>DirectorySlashNotFound On|Off</syntax>
> +<default>DirectorySlashNotFound Off</default>
> +<contextlist><context>server config</context><context>virtual host</context>
> +<context>directory</context><context>.htaccess</context></contextlist>
> +<override>Indexes</override>
> +<compatibility>Added in 2.5.1</compatibility>
> +
> +<usage>
> + <p>The <directive>DirectorySlashNotFound</directive> directive determines whether
> + <module>mod_dir</module> should return an HTTP 404 status code where it would
> + otherwise have redirected the request to include a trailing slash. </p>
> +</usage>
> +</directivesynopsis>
> +<directivesynopsis>
> <name>FallbackResource</name>
> <description>Define a default URL for requests that don't map to a file</description>
> <syntax>FallbackResource disabled | <var>local-url</var></syntax>
>
> Modified: httpd/httpd/trunk/modules/mappers/mod_dir.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/mappers/mod_dir.c?rev=1894456&r1=1894455&r2=1894456&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/mappers/mod_dir.c (original)
> +++ httpd/httpd/trunk/modules/mappers/mod_dir.c Thu Oct 21 18:54:46 2021
> @@ -48,6 +48,7 @@ typedef struct dir_config_struct {
> moddir_cfg checkhandler;
> int redirect_index;
> const char *dflt;
> + moddir_cfg do_slash_notfound;
> } dir_config_rec;
>
> #define DIR_CMD_PERMS OR_INDEXES
> @@ -88,6 +89,13 @@ static const char *configure_slash(cmd_p
> d->do_slash = arg ? MODDIR_ON : MODDIR_OFF;
> return NULL;
> }
> +static const char *configure_slash_notfound(cmd_parms *cmd, void *d_, int arg)
> +{
> + dir_config_rec *d = d_;
> +
> + d->do_slash_notfound = arg ? MODDIR_ON : MODDIR_OFF;
> + return NULL;
> +}
> static const char *configure_checkhandler(cmd_parms *cmd, void *d_, int arg)
> {
> dir_config_rec *d = d_;
> @@ -132,6 +140,8 @@ static const command_rec dir_cmds[] =
> "a list of file names"),
> AP_INIT_FLAG("DirectorySlash", configure_slash, NULL, DIR_CMD_PERMS,
> "On or Off"),
> + AP_INIT_FLAG("DirectorySlashNotFound", configure_slash_notfound, NULL, DIR_CMD_PERMS,
> + "On or Off"),
> AP_INIT_FLAG("DirectoryCheckHandler", configure_checkhandler, NULL, DIR_CMD_PERMS,
> "On or Off"),
> AP_INIT_TAKE1("DirectoryIndexRedirect", configure_redirect,
> @@ -146,6 +156,7 @@ static void *create_dir_config(apr_pool_
>
> new->index_names = NULL;
> new->do_slash = MODDIR_UNSET;
> + new->do_slash_notfound = MODDIR_UNSET;
> new->checkhandler = MODDIR_UNSET;
> new->redirect_index = REDIRECT_UNSET;
> return (void *) new;
> @@ -160,6 +171,8 @@ static void *merge_dir_configs(apr_pool_
> new->index_names = add->index_names ? add->index_names : base->index_names;
> new->do_slash =
> (add->do_slash == MODDIR_UNSET) ? base->do_slash : add->do_slash;
> + new->do_slash_notfound =
> + (add->do_slash_notfound == MODDIR_UNSET) ? base->do_slash_notfound : add->do_slash_notfound;
> new->checkhandler =
> (add->checkhandler == MODDIR_UNSET) ? base->checkhandler : add->checkhandler;
> new->redirect_index=
> @@ -251,6 +264,10 @@ static int fixup_dir(request_rec *r)
> return DECLINED;
> }
>
> + if (d->do_slash_notfound == MODDIR_ON) {
> + return HTTP_NOT_FOUND;
> + }
> +
> /* Only redirect non-get requests if we have no note to warn
> * that this browser cannot handle redirs on non-GET requests
> * (such as Microsoft's WebFolders).
>
>
--
Eric Covener
covener@gmail.com