aboutsummaryrefslogtreecommitdiff
path: root/networking
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2008-09-01 15:30:49 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2008-09-01 15:30:49 +0000
commitb424930e4ea971ff8675c30d5dc4445c173b2b1a (patch)
tree244487bdb81314807c70d699b90d6116060cb14e /networking
parent2bdc99f600e0f6ee4b83dac3c80287f4e2d1bf96 (diff)
downloadbusybox-w32-b424930e4ea971ff8675c30d5dc4445c173b2b1a.tar.gz
busybox-w32-b424930e4ea971ff8675c30d5dc4445c173b2b1a.tar.bz2
busybox-w32-b424930e4ea971ff8675c30d5dc4445c173b2b1a.zip
- pass "Accept:" and "Accept-Language:" header to CGI scripts (Alina Friedrichsen)
Alina writes: With this patch the BusyBox httpd pass the "Accept:" and "Accept-Language:" header by the environment variables to the CGI-Script, so this can make Content Negotiation to deliver the page in the language, which was selected by the user in the browser settings, and/or serve the XHTML page with the right MIME-Type application/xhtml+xml to user agents which support it und text/html which don't. (Needed e.g. for OpenWrt LuCI.) Signed-off-by: Alina Friedrichsen <x-alina at gmx dot net>
Diffstat (limited to 'networking')
-rw-r--r--networking/httpd.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/networking/httpd.c b/networking/httpd.c
index 82891f121..db8eb1e9c 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -254,6 +254,8 @@ struct globals {
254 USE_FEATURE_HTTPD_BASIC_AUTH(char *remoteuser;) 254 USE_FEATURE_HTTPD_BASIC_AUTH(char *remoteuser;)
255 USE_FEATURE_HTTPD_CGI(char *referer;) 255 USE_FEATURE_HTTPD_CGI(char *referer;)
256 USE_FEATURE_HTTPD_CGI(char *user_agent;) 256 USE_FEATURE_HTTPD_CGI(char *user_agent;)
257 USE_FEATURE_HTTPD_CGI(char *http_accept;)
258 USE_FEATURE_HTTPD_CGI(char *http_accept_language;)
257 259
258 off_t file_size; /* -1 - unknown */ 260 off_t file_size; /* -1 - unknown */
259#if ENABLE_FEATURE_HTTPD_RANGES 261#if ENABLE_FEATURE_HTTPD_RANGES
@@ -299,6 +301,8 @@ struct globals {
299#define remoteuser (G.remoteuser ) 301#define remoteuser (G.remoteuser )
300#define referer (G.referer ) 302#define referer (G.referer )
301#define user_agent (G.user_agent ) 303#define user_agent (G.user_agent )
304#define http_accept (G.http_accept )
305#define http_accept_language (G.http_accept_language)
302#define file_size (G.file_size ) 306#define file_size (G.file_size )
303#if ENABLE_FEATURE_HTTPD_RANGES 307#if ENABLE_FEATURE_HTTPD_RANGES
304#define range_start (G.range_start ) 308#define range_start (G.range_start )
@@ -1384,6 +1388,10 @@ static void send_cgi_and_exit(
1384 } 1388 }
1385 } 1389 }
1386 setenv1("HTTP_USER_AGENT", user_agent); 1390 setenv1("HTTP_USER_AGENT", user_agent);
1391 if (http_accept)
1392 setenv1("HTTP_ACCEPT", http_accept);
1393 if (http_accept_language)
1394 setenv1("HTTP_ACCEPT_LANGUAGE", http_accept_language);
1387 if (post_len) 1395 if (post_len)
1388 putenv(xasprintf("CONTENT_LENGTH=%d", post_len)); 1396 putenv(xasprintf("CONTENT_LENGTH=%d", post_len));
1389 if (cookie) 1397 if (cookie)
@@ -2005,6 +2013,10 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
2005 referer = xstrdup(skip_whitespace(iobuf + sizeof("Referer:")-1)); 2013 referer = xstrdup(skip_whitespace(iobuf + sizeof("Referer:")-1));
2006 } else if (STRNCASECMP(iobuf, "User-Agent:") == 0) { 2014 } else if (STRNCASECMP(iobuf, "User-Agent:") == 0) {
2007 user_agent = xstrdup(skip_whitespace(iobuf + sizeof("User-Agent:")-1)); 2015 user_agent = xstrdup(skip_whitespace(iobuf + sizeof("User-Agent:")-1));
2016 } else if (STRNCASECMP(iobuf, "Accept:") == 0) {
2017 http_accept = xstrdup(skip_whitespace(iobuf + sizeof("Accept:")-1));
2018 } else if (STRNCASECMP(iobuf, "Accept-Language:") == 0) {
2019 http_accept_language = xstrdup(skip_whitespace(iobuf + sizeof("Accept-Language:")-1));
2008 } 2020 }
2009#endif 2021#endif
2010#if ENABLE_FEATURE_HTTPD_BASIC_AUTH 2022#if ENABLE_FEATURE_HTTPD_BASIC_AUTH