#include "__jet.h" #include "Exception.h" #include #include namespace jet { __jet::__jet(coreutils::ZString &in, coreutils::MString &parentOut, Global &global, Tag *parent, Tag *local) : Tag(in, parentOut, global, parent, this) { if(keywordDefined("cgi") && (resolveKeyword("cgi") == "true")) { global.cgi = true; // cookies = getenv("HTTP_COOKIE"); if(keywordDefined("sessiondir")) { global.session = true; // if request_has_cookie then // pull sessionfile from sessiondir. // if last activity time is expired then ignore. // follow sessiontimeoutredirecturl. // else // generate new session id. // create session cookie in response. /* char hashit[64]; char hash[32]; sprintf(hashit, "JETSESSION%ld", time(0)); SHA1(hashit, strlen(hashit), hash); sprintf(hashname, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], hash[8], hash[9], hash[10], hash[11], hash[12], hash[13], hash[14], hash[15], hash[16], hash[17], hash[18], hash[19]); coreutils::ZString sessionCookie(hash); global.headers[keywords["Set-Cookie"]] << "session=" << sessionCookie; if(keywordDefined("sessiontimeout")) { time_t timeout = time(0) + keywords["sessiontimeout"].asInteger(); } */ // also save last activity time in session file. } coreutils::ZString requestMethod(getenv("REQUEST_METHOD")); if(requestMethod == "POST") { coreutils::ZString contentLength(getenv("CONTENT_LENGTH")); coreutils::ZString contentType(getenv("CONTENT_TYPE")); std::ofstream outFile("/tmp/output.txt"); coreutils::MString postdata; postdata.read(0); // TODO: Need to limit the read characters to the CONTENT-LENGTH value; if(contentType == "multipart/form-data") global.setupFormData(postdata); else if(contentType == "application/x-www-form-urlencoded") global.setupFormURLEncoded(postdata); } } processContainer(container); } }