wok rev 9552

busybox/httpd: no patch need for directory list
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Apr 10 13:13:17 2011 +0200 (2011-04-10)
parents 04815ab9b79d
children befd46df350e
files busybox/receipt busybox/stuff/busybox-1.18-httpd.u
line diff
     1.1 --- a/busybox/receipt	Sun Apr 10 12:08:35 2011 +0000
     1.2 +++ b/busybox/receipt	Sun Apr 10 13:13:17 2011 +0200
     1.3 @@ -28,7 +28,6 @@
     1.4  printable.u
     1.5  cmdline.u
     1.6  conspy.u
     1.7 -httpd.u
     1.8  EOT
     1.9      cp $stuff/$PACKAGE-${VERSION%.*}.config .config
    1.10  }
     2.1 --- a/busybox/stuff/busybox-1.18-httpd.u	Sun Apr 10 12:08:35 2011 +0000
     2.2 +++ b/busybox/stuff/busybox-1.18-httpd.u	Sun Apr 10 13:13:17 2011 +0200
     2.3 @@ -1,18 +1,15 @@
     2.4 -This patch allows to run a script to list the directory with httpd
     2.5 +Httpd already support directory listing:
     2.6  
     2.7 -Install /etc/httpd.conf, /var/www/cgi-bin/list.sh and try !
     2.8 +Install /etc/httpd.conf, /var/www/cgi-bin/index.cgi and try !
     2.9  
    2.10  ===>8=== /etc/httpd.conf ===>8===
    2.11  H:/var/www
    2.12 -*.sh:/bin/sh
    2.13 -L:/cgi-bin/list.sh
    2.14 -===>8=== /var/www/cgi-bin/list.sh ===>8===
    2.15 +===>8=== /var/www/cgi-bin/index.cgi ===>8===
    2.16  #!/bin/sh
    2.17  
    2.18 -eval ${QUERY_STRING/&/;}
    2.19 -path=$(dirname /$url)
    2.20 +path=$QUERY_STRING
    2.21  
    2.22 -unix2dos <<EOT
    2.23 +cat <<EOT  
    2.24  Content-type: text/html
    2.25  
    2.26  <!DOCTYPE html>
    2.27 @@ -23,84 +20,9 @@
    2.28  <body>
    2.29  	<h1>Index of $path</h1>
    2.30  	<ul>
    2.31 -$(cd $home$path && { [ "$path" != "/" ] && echo "../" ; ls -p; } | \
    2.32 +$(cd ${PWD/?index.cgi/}$path && { [ "$path" != "/" ] && echo "../"; ls -p; } | \
    2.33    sed 's|.*|		<li><a href="&">&</a></li>|')
    2.34  	</ul>
    2.35  </body>
    2.36  </html>
    2.37  EOT
    2.38 -===>8======>8======>8======>8======>8===
    2.39 -
    2.40 ---- busybox-1.18.4/networking/Config.src
    2.41 -+++ busybox-1.18.4/networking/Config.src
    2.42 -@@ -216,6 +216,14 @@
    2.43 - 	  This option allows scripts and executables to be invoked
    2.44 - 	  when specific URLs are requested.
    2.45 - 
    2.46 -+config FEATURE_HTTPD_LISTING
    2.47 -+	bool "Support for directory listing through a CGI script"
    2.48 -+	default y
    2.49 -+	depends on FEATURE_HTTPD_CGI
    2.50 -+	help
    2.51 -+	  This option allows to run a script to list the directory
    2.52 -+	  content.
    2.53 -+
    2.54 - config FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
    2.55 - 	bool "Support for running scripts through an interpreter"
    2.56 - 	default y
    2.57 -
    2.58 ---- busybox-1.18.4/networking/httpd.c
    2.59 -+++ busybox-1.18.4/networking/httpd.c
    2.60 -@@ -42,6 +42,7 @@
    2.61 -  * D:*               # Deny from other IP connections
    2.62 -  * E404:/path/e404.html # /path/e404.html is the 404 (not found) error page
    2.63 -  * I:index.html      # Show index.html when a directory is requested
    2.64 -+ * L:/path/list      # List directory file from $url and $home arguments
    2.65 -  *
    2.66 -  * P:/url:[http://]hostname[:port]/new/path
    2.67 -  *                   # When /urlXXXXXX is requested, reverse proxy
    2.68 -@@ -240,6 +241,7 @@
    2.69 - 	const char *opt_c_configFile;
    2.70 - 	const char *home_httpd;
    2.71 - 	const char *index_page;
    2.72 -+	const char *listing;
    2.73 - 
    2.74 - 	const char *found_mime_type;
    2.75 - 	const char *found_moved_temporarily;
    2.76 -@@ -291,6 +293,7 @@
    2.77 - #define opt_c_configFile  (G.opt_c_configFile )
    2.78 - #define home_httpd        (G.home_httpd       )
    2.79 - #define index_page        (G.index_page       )
    2.80 -+#define listing           (G.listing          )
    2.81 - #define found_mime_type   (G.found_mime_type  )
    2.82 - #define found_moved_temporarily (G.found_moved_temporarily)
    2.83 - #define last_mod          (G.last_mod         )
    2.84 -@@ -579,6 +582,13 @@
    2.85 - 			continue;
    2.86 - 		}
    2.87 - 
    2.88 -+#if ENABLE_FEATURE_HTTPD_LISTING
    2.89 -+		if (flag == FIRST_PARSE && ch == 'L') {
    2.90 -+			listing = xstrdup(after_colon);
    2.91 -+			continue;
    2.92 -+		}
    2.93 -+#endif
    2.94 -+
    2.95 - 		/* do not allow jumping around using H in subdir's configs */
    2.96 - 		if (flag == FIRST_PARSE && ch == 'H') {
    2.97 - 			home_httpd = xstrdup(after_colon);
    2.98 -@@ -1531,6 +1541,13 @@
    2.99 - 		fd = open(url, O_RDONLY);
   2.100 - 	}
   2.101 - 	if (fd < 0) {
   2.102 -+#if ENABLE_FEATURE_HTTPD_LISTING
   2.103 -+		if (listing) {
   2.104 -+			char args[BUF_SIZE];
   2.105 -+			snprintf(g_query = args, sizeof(args), "url=%s&home=%s", url, home_httpd);
   2.106 -+			send_cgi_and_exit(listing, "GET", 0, NULL, NULL);
   2.107 -+		}
   2.108 -+#endif
   2.109 - 		if (DEBUG)
   2.110 - 			bb_perror_msg("can't open '%s'", url);
   2.111 - 		/* Error pages are sent by using send_file_and_exit(SEND_BODY).
   2.112 -