SVN-Revision: 3165
This commit is contained in:
parent
facc418be1
commit
8d8c65cc9c
2 changed files with 122 additions and 0 deletions
|
@ -0,0 +1,93 @@
|
|||
--- busybox-1.1.0.orig/networking/httpd.c 2006-02-06 16:02:30.000000000 +0100
|
||||
+++ busybox-1.1.0/networking/httpd.c 2006-02-06 16:25:34.000000000 +0100
|
||||
@@ -109,6 +109,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h> /* for connect and socket*/
|
||||
#include <netinet/in.h> /* for sockaddr_in */
|
||||
+#include <arpa/inet.h> /* for inet_aton */
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
@@ -201,8 +202,8 @@
|
||||
|
||||
void bb_show_usage(void)
|
||||
{
|
||||
- fprintf(stderr, "Usage: %s [-p <port>] [-c configFile] [-d/-e <string>] "
|
||||
- "[-r realm] [-u user] [-h homedir]\n", bb_applet_name);
|
||||
+ fprintf(stderr, "Usage: %s [-p <port>] [-l <IP address>] [-c configFile]"
|
||||
+ "[-d/-e <string>] [-r realm] [-u user] [-h homedir]\n", bb_applet_name);
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
@@ -256,6 +257,7 @@
|
||||
#endif
|
||||
unsigned port; /* server initial port and for
|
||||
set env REMOTE_PORT */
|
||||
+ char *address; /* server initial address */
|
||||
union HTTPD_FOUND {
|
||||
const char *found_mime_type;
|
||||
const char *found_moved_temporarily;
|
||||
@@ -942,7 +944,10 @@
|
||||
/* inet_addr() returns a value that is already in network order */
|
||||
memset(&lsocket, 0, sizeof(lsocket));
|
||||
lsocket.sin_family = AF_INET;
|
||||
- lsocket.sin_addr.s_addr = INADDR_ANY;
|
||||
+ if (inet_aton(config->address, &(lsocket.sin_addr)) == 1) {
|
||||
+ if (config->address != NULL) lsocket.sin_addr.s_addr = ((struct in_addr *) ((gethostbyname(config->address))->h_addr))->s_addr;
|
||||
+ else lsocket.sin_addr.s_addr = htons(INADDR_ANY);
|
||||
+ }
|
||||
lsocket.sin_port = htons(config->port) ;
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd >= 0) {
|
||||
@@ -1985,7 +1990,7 @@
|
||||
#define OPT_INC_3 ENABLE_FEATURE_HTTPD_AUTH_MD5
|
||||
|
||||
#ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
|
||||
- "p:"
|
||||
+ "p:l:"
|
||||
#endif
|
||||
#ifdef CONFIG_FEATURE_HTTPD_SETUID
|
||||
"u:"
|
||||
@@ -1999,7 +2004,8 @@
|
||||
#define OPT_REALM (1<<(2+OPT_INC_1+OPT_INC_2)) /* r */
|
||||
#define OPT_MD5 (1<<(2+OPT_INC_1+OPT_INC_2+OPT_INC_3)) /* m */
|
||||
#define OPT_PORT (1<<(3+OPT_INC_1+OPT_INC_2+OPT_INC_3)) /* p */
|
||||
-#define OPT_SETUID (1<<(4+OPT_INC_1+OPT_INC_2+OPT_INC_3)) /* u */
|
||||
+#define OPT_ADDRESS (1<<(4+OPT_INC_1+OPT_INC_2+OPT_INC_3)) /* l */
|
||||
+#define OPT_SETUID (1<<(5+OPT_INC_1+OPT_INC_2+OPT_INC_3)) /* u */
|
||||
|
||||
|
||||
#ifdef HTTPD_STANDALONE
|
||||
@@ -2016,6 +2022,7 @@
|
||||
#endif
|
||||
#ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
|
||||
const char *s_port;
|
||||
+ const char *s_addr;
|
||||
int server;
|
||||
#endif
|
||||
|
||||
@@ -2035,6 +2042,7 @@
|
||||
|
||||
#ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
|
||||
config->port = 80;
|
||||
+ config->address = "";
|
||||
#endif
|
||||
|
||||
config->ContentLength = -1;
|
||||
@@ -2052,6 +2060,7 @@
|
||||
#endif
|
||||
#ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
|
||||
, &s_port
|
||||
+ , &s_addr
|
||||
#endif
|
||||
#ifdef CONFIG_FEATURE_HTTPD_SETUID
|
||||
, &s_uid
|
||||
@@ -2077,6 +2086,8 @@
|
||||
#ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
|
||||
if(opt & OPT_PORT)
|
||||
config->port = bb_xgetlarg(s_port, 10, 1, 0xffff);
|
||||
+ if (opt & OPT_ADDRESS)
|
||||
+ if (s_addr) config->address = (char *) s_addr;
|
||||
#ifdef CONFIG_FEATURE_HTTPD_SETUID
|
||||
if(opt & OPT_SETUID) {
|
||||
char *e;
|
29
openwrt/package/busybox/patches/330-httpd_user_agent.patch
Normal file
29
openwrt/package/busybox/patches/330-httpd_user_agent.patch
Normal file
|
@ -0,0 +1,29 @@
|
|||
--- busybox-1.1.0.orig/networking/httpd.c 2006-02-06 16:41:57.000000000 +0100
|
||||
+++ busybox-1.1.0/networking/httpd.c 2006-02-06 16:41:26.000000000 +0100
|
||||
@@ -247,6 +247,7 @@
|
||||
|
||||
#ifdef CONFIG_FEATURE_HTTPD_CGI
|
||||
char *referer;
|
||||
+ char *user_agent;
|
||||
#endif
|
||||
|
||||
const char *configFile;
|
||||
@@ -1192,6 +1193,7 @@
|
||||
addEnv("SERVER", "PROTOCOL", "HTTP/1.0");
|
||||
addEnv("GATEWAY_INTERFACE", "", "CGI/1.1");
|
||||
addEnv("REMOTE", "ADDR", config->rmt_ip_str);
|
||||
+ addEnv("HTTP","USER_AGENT", config->user_agent);
|
||||
#ifdef CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
|
||||
addEnvPort("REMOTE");
|
||||
#endif
|
||||
@@ -1737,6 +1739,10 @@
|
||||
for(test = buf + 8; isspace(*test); test++)
|
||||
;
|
||||
config->referer = strdup(test);
|
||||
+ } else if ((strncasecmp(buf, "User-Agent:",11) ==0)) {
|
||||
+ for(test = buf + 11; isspace(*test); test++)
|
||||
+ ;
|
||||
+ config->user_agent = strdup(test);
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in a new issue