Beispiel #1
0
bool Engine::executeDirective(std::string directive,HttpServerRequest &httpRequest,
	std::string &output)
{
	std::string name;

	std::map<std::string,std::string> attributes;

	if ( !parseDirective(directive,name,attributes) ) {
		return false;
	}

	if ( name=="include" )
	{
		std::string fileUri = attributes["file"];

		if ( httpRequest.getSite()!=NULL && Util::UriUtil::isValid(fileUri) )
		{
			if ( !Util::UriUtil::isAbsolute(fileUri) ) {
				fileUri = Util::UriUtil::getParentSegment(httpRequest.getUri()) + "/" + fileUri;
			}

			std::string filePath = httpRequest.getSite()->getRealPath(fileUri);
			FILE *file = fopen(filePath.c_str(),"rb");
			if ( file!=NULL )
			{
				std::string script;
				if ( parseFile(file,httpRequest,script) ) {
					output = script;
				}

				fclose(file);
			}

			return true;
		}
	}

	return false;
}