mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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))
 |