patch for busybox httpd that adds an option for redirecting all requests to a specific page (e.g. for making a splash screen)
SVN-Revision: 6818
This commit is contained in:
parent
3c9a0598e9
commit
64a525eddb
1 changed files with 91 additions and 0 deletions
91
package/busybox/patches/350-httpd_redir.patch
Normal file
91
package/busybox/patches/350-httpd_redir.patch
Normal file
|
@ -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))
|
Loading…
Reference in a new issue