added: config: base_url_redirect
when true the server checks whether HTTP_HOST environment variable is the same as base_url from the config (of course without the 'http://' part and the last slash) - if it's not the same then the server redirects you into a new location base_url+REQUEST_URI changed: variables env_* from Request are never null (after Request::Read()) if the server didn't set such a variable it will be pointing into an empty string "\0" git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@465 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
|
||||
|
||||
|
||||
Request::Request()
|
||||
Request::Request() : char_empty(0)
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
@@ -31,9 +31,12 @@ void Request::Clear()
|
||||
page.str("");
|
||||
debug.str("");
|
||||
|
||||
env_request_method = 0;
|
||||
env_request_uri = 0;
|
||||
env_http_cookie = 0;
|
||||
env_request_method = &char_empty;
|
||||
env_request_uri = &char_empty;
|
||||
env_http_cookie = &char_empty;
|
||||
env_remote_addr = &char_empty;
|
||||
env_http_host = &char_empty;
|
||||
|
||||
|
||||
session = 0;
|
||||
|
||||
@@ -176,15 +179,29 @@ int len;
|
||||
|
||||
|
||||
|
||||
const char * Request::SetEnvVar(const char * var)
|
||||
{
|
||||
const char * v = FCGX_GetParam(var, env);
|
||||
|
||||
if( v )
|
||||
return v;
|
||||
|
||||
// char_empty contains '\0'
|
||||
return &char_empty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Request::ReadEnvVariables()
|
||||
{
|
||||
// we store that values because FCGX_GetParam has O(n) complexity
|
||||
// with this variables (env_*) we have O(1)
|
||||
|
||||
env_request_method = FCGX_GetParam("REQUEST_METHOD", env);
|
||||
env_request_uri = FCGX_GetParam("REQUEST_URI", env);
|
||||
env_http_cookie = FCGX_GetParam("HTTP_COOKIE", env);
|
||||
env_remote_addr = FCGX_GetParam("REMOTE_ADDR", env);
|
||||
env_request_method = SetEnvVar("REQUEST_METHOD");
|
||||
env_request_uri = SetEnvVar("REQUEST_URI");
|
||||
env_http_cookie = SetEnvVar("HTTP_COOKIE");
|
||||
env_remote_addr = SetEnvVar("REMOTE_ADDR");
|
||||
env_http_host = SetEnvVar("HTTP_HOST");
|
||||
|
||||
log << log1 << "IP: " << env_remote_addr << logend;
|
||||
}
|
||||
@@ -194,9 +211,6 @@ void Request::ReadEnvVariables()
|
||||
void Request::CheckMethod()
|
||||
{
|
||||
method = none;
|
||||
|
||||
if( !env_request_method )
|
||||
return;
|
||||
|
||||
if( env_request_method[0] == 'G' )
|
||||
method = get;
|
||||
|
Reference in New Issue
Block a user