diff --git a/src/api/main.cpp b/src/api/main.cpp index 78d02861..32d4b794 100644 --- a/src/api/main.cpp +++ b/src/api/main.cpp @@ -671,8 +671,9 @@ void defaultGet( shared_ptr< HttpServer::Response > response, shared_ptr< HttpSe print_request_info( request ); try { - auto web_root_path = fs::canonical( "web" ); - auto path = fs::canonical( web_root_path / request->path ); + auto web_root_path = fs::current_path() / "web"; + auto path = web_root_path / request->path; + //Check if path is within web_root_path if( distance( web_root_path.begin(), web_root_path.end() ) > distance( path.begin(), path.end() ) || !std::equal( web_root_path.begin(), web_root_path.end(), path.begin() ) ) @@ -718,19 +719,19 @@ int main( int argc, char* argv[] ) Logger::setLogLevel( m_config.global.general.logLevel ); - server.resource[ "^/ZoneName/([0-9]+)$" ][ "GET" ] = &getZoneName; - server.resource[ "^/sapphire-api/lobby/createAccount" ][ "POST" ] = &createAccount; - server.resource[ "^/sapphire-api/lobby/login" ][ "POST" ] = &login; - server.resource[ "^/sapphire-api/lobby/deleteCharacter" ][ "POST" ] = &deleteCharacter; - server.resource[ "^/sapphire-api/lobby/createCharacter" ][ "POST" ] = &createCharacter; - server.resource[ "^/sapphire-api/lobby/insertSession" ][ "POST" ] = &insertSession; - server.resource[ "^/sapphire-api/lobby/checkNameTaken" ][ "POST" ] = &checkNameTaken; - server.resource[ "^/sapphire-api/lobby/checkSession" ][ "POST" ] = &checkSession; - server.resource[ "^/sapphire-api/lobby/getNextCharId" ][ "POST" ] = &getNextCharId; - server.resource[ "^/sapphire-api/lobby/getNextContentId" ][ "POST" ] = &getNextContentId; - server.resource[ "^/sapphire-api/lobby/getCharacterList" ][ "POST" ] = &getCharacterList; - server.resource[ "^(/frontier-api/ffxivsupport/view/get_init)(.*)" ][ "GET" ] = &get_init; - server.resource[ "^(/frontier-api/ffxivsupport/information/get_headline_all)(.*)" ][ "GET" ] = &get_headline_all; + server.resource[ "^ZoneName/([0-9]+)$" ][ "GET" ] = &getZoneName; + server.resource[ "^sapphire-api/lobby/createAccount" ][ "POST" ] = &createAccount; + server.resource[ "^sapphire-api/lobby/login" ][ "POST" ] = &login; + server.resource[ "^sapphire-api/lobby/deleteCharacter" ][ "POST" ] = &deleteCharacter; + server.resource[ "^sapphire-api/lobby/createCharacter" ][ "POST" ] = &createCharacter; + server.resource[ "^sapphire-api/lobby/insertSession" ][ "POST" ] = &insertSession; + server.resource[ "^sapphire-api/lobby/checkNameTaken" ][ "POST" ] = &checkNameTaken; + server.resource[ "^sapphire-api/lobby/checkSession" ][ "POST" ] = &checkSession; + server.resource[ "^sapphire-api/lobby/getNextCharId" ][ "POST" ] = &getNextCharId; + server.resource[ "^sapphire-api/lobby/getNextContentId" ][ "POST" ] = &getNextContentId; + server.resource[ "^sapphire-api/lobby/getCharacterList" ][ "POST" ] = &getCharacterList; + server.resource[ "^(frontier-api/ffxivsupport/view/get_init)(.*)" ][ "GET" ] = &get_init; + server.resource[ "^(frontier-api/ffxivsupport/information/get_headline_all)(.*)" ][ "GET" ] = &get_headline_all; server.default_resource[ "GET" ] = &defaultGet; diff --git a/src/api/server_http.hpp b/src/api/server_http.hpp index 8a6d2226..b9166c57 100644 --- a/src/api/server_http.hpp +++ b/src/api/server_http.hpp @@ -304,7 +304,7 @@ namespace SimpleWeb { size_t path_end; if((path_end=line.find(' ', method_end+1))!=std::string::npos) { request->method=line.substr(0, method_end); - request->path=line.substr(method_end+1, path_end-method_end-1); + request->path=line.substr(method_end+2, path_end-method_end-2); size_t protocol_end; if((protocol_end=line.find('/', path_end+1))!=std::string::npos) {