diff options
Diffstat (limited to 'package')
| -rw-r--r-- | package/busybox/patches/350-httpd_redir.patch | 91 | 
1 files changed, 91 insertions, 0 deletions
| diff --git a/package/busybox/patches/350-httpd_redir.patch b/package/busybox/patches/350-httpd_redir.patch new file mode 100644 index 000000000..86338aaed --- /dev/null +++ b/package/busybox/patches/350-httpd_redir.patch @@ -0,0 +1,91 @@ +diff -ur bb.old/include/usage.h bb.dev/include/usage.h +--- bb.old/include/usage.h	2007-03-29 13:25:55.080325000 +0200 ++++ bb.dev/include/usage.h	2007-03-29 13:31:04.241326192 +0200 +@@ -1333,7 +1333,8 @@ + 	USE_FEATURE_HTTPD_BASIC_AUTH(" [-r <realm>]") \ + 	USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \ +        " [-h home]" \ +-       " [-d/-e <string>]" ++       " [-d/-e <string>]" \ ++       " [-R <path> [-H <host>]]" + #define httpd_full_usage \ +        "Listen for incoming http server requests" \ +        "\n\nOptions:\n" \ +@@ -1349,7 +1350,9 @@ +        "	-m PASS		Crypt PASS with md5 algorithm\n") \ +        "	-h HOME		Specifies http HOME directory (default ./)\n" \ +        "	-e STRING	HTML encode STRING\n" \ +-       "	-d STRING	URL decode STRING" ++       "	-d STRING	URL decode STRING\n" \ ++       "	-R PATH 	Redirect target path\n" \ ++       "	-H HOST 	Redirect target host" +  + #define hwclock_trivial_usage \ +        "[-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc]" +diff -ur bb.old/networking/httpd.c bb.dev/networking/httpd.c +--- bb.old/networking/httpd.c	2007-03-29 13:25:55.016335000 +0200 ++++ bb.dev/networking/httpd.c	2007-03-29 13:40:05.353064704 +0200 +@@ -141,6 +141,8 @@ + 	USE_FEATURE_HTTPD_CGI(char *user_agent;) +  + 	const char *configFile; ++	const char *redirectPath; ++	const char *redirectHost; +  + 	unsigned int rmt_ip; + #if ENABLE_FEATURE_HTTPD_CGI || DEBUG +@@ -881,8 +883,11 @@ + 	} + #endif + 	if (responseNum == HTTP_MOVED_TEMPORARILY) { +-		len += sprintf(buf+len, "Location: %s/%s%s\r\n", ++		len += sprintf(buf+len, "Location: %s%s%s%s%s%s\r\n", ++				(config->redirectHost ? "http://" : ""), ++				(config->redirectHost ? config->redirectHost : ""), + 				config->found_moved_temporarily, ++				(config->redirectHost ? "" : "/"), + 				(config->query ? "?" : ""), + 				(config->query ? config->query : "")); + 	} +@@ -1598,8 +1603,12 @@ + 		*++purl = '\0';       /* so keep last character */ + 		test = purl;          /* end ptr */ +  ++		/* redirect active */ ++		if (config->redirectPath && (strncmp(url, config->redirectPath, strlen(config->redirectPath)) != 0)) ++			config->found_moved_temporarily = config->redirectPath; ++ + 		/* If URL is directory, adding '/' */ +-		if (test[-1] != '/') { ++		if(!config->redirectPath && (test[-1] != '/')) { + 			if (is_directory(url + 1, 1, &sb)) { + 				config->found_moved_temporarily = url; + 			} +@@ -1901,7 +1910,9 @@ + #endif +  + enum { +-	c_opt_config_file = 0, ++	R_opt_redirect_path = 0, ++	H_opt_redirect_host, ++	c_opt_config_file, + 	d_opt_decode_url, + 	h_opt_home_httpd, + 	USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,) +@@ -1923,7 +1934,7 @@ + 	OPT_FOREGROUND  = 1 << p_opt_foreground, + }; +  +-static const char httpd_opts[] = "c:d:h:" ++static const char httpd_opts[] = "R:H:c:d:h:" + 	USE_FEATURE_HTTPD_ENCODE_URL_STR("e:") + 	USE_FEATURE_HTTPD_BASIC_AUTH("r:") + 	USE_FEATURE_HTTPD_AUTH_MD5("m:") +@@ -1954,6 +1965,7 @@ + 	config->ContentLength = -1; +  + 	opt = getopt32(argc, argv, httpd_opts, ++			&(config->redirectPath), &(config->redirectHost), + 			&(config->configFile), &url_for_decode, &home_httpd + 			USE_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode) + 			USE_FEATURE_HTTPD_BASIC_AUTH(, &(config->realm)) | 
