You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Loic Pefferkorn <lo...@frozenbox.com> on 2007/04/28 23:16:54 UTC
[PATCH] ShowForbidden option for mod_autoindex 2.0.x
Hello,
I wrote this small patch to backport ShowForbidden option of
mod_autoindex from apache 2.2.x to 2.0.x
The patch is very simple, mainly stolen from 2.2.x source code.
I originally wrote it for a friend who can't upgrade right now to 2.2.x
I hope this may be of interest to someone :)
Cheers,
Loic
--- modules/generators/mod_autoindex.c (révision 533057)
+++ modules/generators/mod_autoindex.c (copie de travail)
@@ -70,6 +70,7 @@
#define IGNORE_CLIENT (1 << 15)
#define IGNORE_CASE (1 << 16)
#define EMIT_XHTML (1 << 17)
+#define SHOW_FORBIDDEN (1 << 18)
#define K_NOADJUST 0
#define K_ADJUST 1
@@ -373,6 +374,9 @@
else if (!strcasecmp(w, "XHTML")) {
option = EMIT_XHTML;
}
+ else if (!strcasecmp(w, "ShowForbidden")) {
+ option = SHOW_FORBIDDEN;
+ }
else if (!strcasecmp(w, "None")) {
if (action != '\0') {
return "Cannot combine '+' or '-' with 'None' keyword";
@@ -1252,6 +1256,7 @@
{
request_rec *rr;
struct ent *p;
+ int show_forbidden = 0;
/* Dot is ignored, Parent is handled by make_parent_entry() */
if ((dirent->name[0] == '.') && (!dirent->name[1]
@@ -1283,10 +1288,16 @@
if (!(rr = ap_sub_req_lookup_dirent(dirent, r, AP_SUBREQ_NO_ARGS,
NULL))) {
return (NULL);
}
-
+
+ if((autoindex_opts & SHOW_FORBIDDEN)
+ && (rr->status == HTTP_UNAUTHORIZED || rr->status ==
HTTP_FORBIDDEN)) {
+ show_forbidden = 1;
+ }
+
if ((rr->finfo.filetype != APR_DIR && rr->finfo.filetype != APR_REG)
|| !(rr->status == OK || ap_is_HTTP_SUCCESS(rr->status)
- || ap_is_HTTP_REDIRECT(rr->status))) {
+ || ap_is_HTTP_REDIRECT(rr->status)
+ || show_forbidden == 1)) {
ap_destroy_sub_req(rr);
return (NULL);
}