]> git.pld-linux.org Git - packages/lighttpd.git/commitdiff
- dir-listing.hide patch
authorElan Ruusamäe <glen@pld-linux.org>
Wed, 13 Apr 2005 07:55:06 +0000 (07:55 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    dirlist-hide.patch -> 1.1

dirlist-hide.patch [new file with mode: 0644]

diff --git a/dirlist-hide.patch b/dirlist-hide.patch
new file mode 100644 (file)
index 0000000..caf16db
--- /dev/null
@@ -0,0 +1,150 @@
+Index: src/config.c
+===================================================================
+--- src/config.c       (revision 107)
++++ src/config.c       (working copy)
+@@ -74,6 +74,7 @@
+               
+               { "dir-listing.hide-dotfiles",   NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 39 */
+               { "dir-listing.external-css",    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 40 */
++              { "dir-listing.hide",            NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },   /* 41 */
+               
+               { "server.host",                 "use server.bind instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
+               { "server.docroot",              "use server.document-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
+@@ -120,6 +121,7 @@
+               s->hide_dotfiles = 1;
+               s->indexfiles    = array_init();
+               s->mimetypes     = array_init();
++              s->dirlist_hide  = array_init();
+               s->server_name   = buffer_init();
+               s->ssl_pemfile   = buffer_init();
+               s->ssl_ca_file   = buffer_init();
+@@ -173,6 +175,7 @@
+               cv[38].destination = s->ssl_ca_file;
+               cv[39].destination = &(s->hide_dotfiles);
+               cv[40].destination = s->dirlist_css;
++              cv[41].destination = s->dirlist_hide;
+               
+               srv->config_storage[i] = s;
+       
+@@ -196,6 +199,7 @@
+       PATCH(dir_listing);
+       PATCH(dirlist_css);
+       PATCH(hide_dotfiles);
++      PATCH(dirlist_hide);
+       PATCH(indexfiles);
+       PATCH(max_keep_alive_requests);
+       PATCH(max_keep_alive_idle);
+@@ -245,6 +249,8 @@
+                               PATCH(hide_dotfiles);
+                       } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("dir-listing.external-css"))) {
+                               PATCH(dirlist_css);
++                      } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("dir-listing.hide"))) {
++                              PATCH(dirlist_hide);
+                       } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("server.error-handler-404"))) {
+                               PATCH(error_handler);
+                       } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("server.indexfiles"))) {
+Index: src/base.h
+===================================================================
+--- src/base.h (revision 107)
++++ src/base.h (working copy)
+@@ -216,6 +216,7 @@
+ typedef struct {
+       array *indexfiles;
+       array *mimetypes;
++      array *dirlist_hide;
+       
+       /* virtual-servers */
+       buffer *document_root;
+Index: src/response.c
+===================================================================
+--- src/response.c     (revision 107)
++++ src/response.c     (working copy)
+@@ -643,6 +643,29 @@
+       );
+ }
++static int http_list_directory_ishidden(array *hidden, const char *filename, size_t len) {
++      size_t i;
++      size_t ct_len;
++      data_string *ds;
++
++      for (i = 0; i < hidden->used; i++) {
++              ds = (data_string*) hidden->data[i];
++
++              if (ds->value->used == 0)
++                      continue;
++
++              ct_len = ds->value->used - 1;
++              if (len < ct_len)
++                      continue;
++
++              if (strncmp(filename + len - ct_len, ds->value->ptr, ct_len) == 0) {
++                      return 1;
++              }
++      }
++
++      return 0;
++}
++
+ static int http_list_directory(server *srv, connection *con, buffer *dir) {
+       DIR *dp;
+       buffer *out;
+@@ -656,6 +679,8 @@
+       char sizebuf[sizeof("999.9K")];
+       char datebuf[sizeof("2005-Jan-01 22:23:24")];
+       size_t k;
++      size_t ct_len;
++      data_string *ds;
+       const char *content_type;
+ #ifdef HAVE_XATTR
+       char attrval[128];
+@@ -706,6 +731,10 @@
+               i = strlen(dent->d_name);
+               if (i > NAME_MAX)
+                       continue;
++
++              if (http_list_directory_ishidden(con->conf.dirlist_hide, dent->d_name, i))
++                      continue;
++
+               memcpy(path_file, dent->d_name, i + 1);
+               if (stat(path, &st) != 0)
+                       continue;
+@@ -780,8 +809,7 @@
+ #endif
+                       content_type = "application/octet-stream";
+                       for (k = 0; k < con->conf.mimetypes->used; k++) {
+-                              data_string *ds = (data_string *)con->conf.mimetypes->data[k];
+-                              size_t ct_len;
++                              ds = (data_string *)con->conf.mimetypes->data[k];
+                               if (ds->key->used == 0)
+                                       continue;
+Index: src/server.c
+===================================================================
+--- src/server.c       (revision 107)
++++ src/server.c       (working copy)
+@@ -244,6 +244,7 @@
+                       buffer_free(s->dirlist_css);
+                       array_free(s->indexfiles);
+                       array_free(s->mimetypes);
++                      array_free(s->dirlist_hide);
+                       
+                       free(s);
+               }
+Index: doc/configuration.txt
+===================================================================
+--- doc/configuration.txt      (revision 107)
++++ doc/configuration.txt      (working copy)
+@@ -191,6 +191,12 @@
+ dir-listing.external-css
+   path to an external css stylesheet for the directory listing
++dir-listing.hide
++  list of extensions to hide in directory listing.
++  e.g.: ::
++
++  dir-listing.hide = ( "CVS", ".xyz" ) 
++
+ server.follow-symlink
+   allow to follow-symlinks
+   
This page took 0.045787 seconds and 4 git commands to generate.