Loading data/template/default/cookie.html +3 −4 Original line number Diff line number Diff line Loading @@ -12,10 +12,9 @@ <body> <img alt="test" src="public/header.webp" > <div id="cookiebanner"> <div id="cookiesettings"> </div> <div id="cookieform"> </div> <form id="cookiesettings"> </form> <button id="cookiesubmit" type="submit" form="cookiesettings" value="Submit" formmethod="post">Accept</button> </div> </body> </html> src/blogi.cpp +24 −9 Original line number Diff line number Diff line Loading @@ -321,15 +321,30 @@ RETRY_REQUEST: throw "session not found !"; } }catch(...){ print(index); libhttppp::HttpForm cookform; cookform.parse(curreq); bool found=false; for (libhttppp::HttpForm::UrlcodedForm::Data* cururlform = cookform.UrlFormData.getFormData(); cururlform; cururlform = cururlform->nextData()) { if(strcmp(cururlform->getKey(),"technical")==0) found=true; } if(!found){ print(curreq->getRequest(),index); }else{ sessid=PlgArgs->session->createSession(); // cookie.setcookie(&curres, "sessionid", sessid,nullptr,nullptr,-1,"/",false,"1","Lax"); // curres.setState(HTTP307); // curres.setVersion(HTTPVERSION(1.1)); // *curres.setData("Location") << curreq->getRequest(); // curres.setContentType("text/html"); // curres.send(curreq, nullptr, 0); // return; cookie.setcookie(&curres, "sessionid", sessid,nullptr,nullptr,-1,"/",false,"1","Lax"); curres.setState(HTTP307); curres.setVersion(HTTPVERSION(1.1)); *curres.setData("Location") << curreq->getRequest(); curres.setContentType("text/html"); curres.send(curreq, nullptr, 0); return; } } try{ Loading src/cookie.cpp +14 −4 Original line number Diff line number Diff line Loading @@ -49,17 +49,27 @@ void blogi::CookieBanner::addRule(const char* pref, const char* cookname, const Rules.push_back(rule); } void blogi::CookieBanner::print(libhtmlpp::HtmlElement& page){ void blogi::CookieBanner::print(const char *curl,libhtmlpp::HtmlElement& page){ libhtmlpp::HtmlTable ctable; libhtmlpp::HtmlElement cookel=CookieEl.getElementbyID("cookiebanner"),cookset; libhtmlpp::HtmlString input; for(auto i : Rules){ ctable << libhtmlpp::HtmlTable::Row() << static_cast<const char *>(i.displayname.data()); input << "<label for=\"" << i.name.data() << "\">"<< i.displayname.data() << "</label>" << "<input id=\"" << i.name.data() << "\" name=\""<< i.name.data() << "\" "; if(i.required){ input << "onclick=\"return false;\""; } input << " checked=\"\" type=\"checkbox\">"; ctable << libhtmlpp::HtmlTable::Row() << input; } ctable.insert(&cookset); if(cookel.getElementbyID("cookiesettings")) if(cookel.getElementbyID("cookiesettings")){ cookel.getElementbyID("cookiesettings")->setAttribute("action",curl); cookel.getElementbyID("cookiesettings")->appendChild(&cookset); } libhtmlpp::HtmlElement *idx=page.getElementbyTag("body"); Loading src/cookie.h +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ namespace blogi { bool getPermission(const char *sessionid,const char *prefix,const char *cookiename); void print(libhtmlpp::HtmlElement &page); void print(const char *curl,libhtmlpp::HtmlElement &page); protected: CookieBanner(){}; ~CookieBanner(){}; Loading src/session.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ const char *blogi::Session::createSession(){ void blogi::Session::addSessionData(const char *sessionid,const char *key,const char *value,size_t size){ uuid_t sin; if(!sessionid){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "addSessionData Sessionid could not be zero!"; throw excep; } if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "addSessionData Session: sessionid empty !"; Loading @@ -70,8 +76,9 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const curses->_firstData=new SessionData::Data; curses->_lastData=curses->_firstData; } curses->_lastData->_Data.resize(size); curses->_lastData->_Data.insert(0,value,size); std::copy(value,value+size,std::back_inserter(curses->_lastData->_Data)); curses->_lastData->_Data.push_back('\0'); snprintf(curses->_lastData->_key,255,"%s",key); return; } Loading @@ -85,6 +92,12 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const void blogi::Session::getSessionData(const char *sessionid,const char *key,std::string &value){ uuid_t sin; if(!sessionid){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "getSessionData Sessionid could not be zero!"; throw excep; } if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "getSessionData Session: sessionid empty !"; Loading Loading
data/template/default/cookie.html +3 −4 Original line number Diff line number Diff line Loading @@ -12,10 +12,9 @@ <body> <img alt="test" src="public/header.webp" > <div id="cookiebanner"> <div id="cookiesettings"> </div> <div id="cookieform"> </div> <form id="cookiesettings"> </form> <button id="cookiesubmit" type="submit" form="cookiesettings" value="Submit" formmethod="post">Accept</button> </div> </body> </html>
src/blogi.cpp +24 −9 Original line number Diff line number Diff line Loading @@ -321,15 +321,30 @@ RETRY_REQUEST: throw "session not found !"; } }catch(...){ print(index); libhttppp::HttpForm cookform; cookform.parse(curreq); bool found=false; for (libhttppp::HttpForm::UrlcodedForm::Data* cururlform = cookform.UrlFormData.getFormData(); cururlform; cururlform = cururlform->nextData()) { if(strcmp(cururlform->getKey(),"technical")==0) found=true; } if(!found){ print(curreq->getRequest(),index); }else{ sessid=PlgArgs->session->createSession(); // cookie.setcookie(&curres, "sessionid", sessid,nullptr,nullptr,-1,"/",false,"1","Lax"); // curres.setState(HTTP307); // curres.setVersion(HTTPVERSION(1.1)); // *curres.setData("Location") << curreq->getRequest(); // curres.setContentType("text/html"); // curres.send(curreq, nullptr, 0); // return; cookie.setcookie(&curres, "sessionid", sessid,nullptr,nullptr,-1,"/",false,"1","Lax"); curres.setState(HTTP307); curres.setVersion(HTTPVERSION(1.1)); *curres.setData("Location") << curreq->getRequest(); curres.setContentType("text/html"); curres.send(curreq, nullptr, 0); return; } } try{ Loading
src/cookie.cpp +14 −4 Original line number Diff line number Diff line Loading @@ -49,17 +49,27 @@ void blogi::CookieBanner::addRule(const char* pref, const char* cookname, const Rules.push_back(rule); } void blogi::CookieBanner::print(libhtmlpp::HtmlElement& page){ void blogi::CookieBanner::print(const char *curl,libhtmlpp::HtmlElement& page){ libhtmlpp::HtmlTable ctable; libhtmlpp::HtmlElement cookel=CookieEl.getElementbyID("cookiebanner"),cookset; libhtmlpp::HtmlString input; for(auto i : Rules){ ctable << libhtmlpp::HtmlTable::Row() << static_cast<const char *>(i.displayname.data()); input << "<label for=\"" << i.name.data() << "\">"<< i.displayname.data() << "</label>" << "<input id=\"" << i.name.data() << "\" name=\""<< i.name.data() << "\" "; if(i.required){ input << "onclick=\"return false;\""; } input << " checked=\"\" type=\"checkbox\">"; ctable << libhtmlpp::HtmlTable::Row() << input; } ctable.insert(&cookset); if(cookel.getElementbyID("cookiesettings")) if(cookel.getElementbyID("cookiesettings")){ cookel.getElementbyID("cookiesettings")->setAttribute("action",curl); cookel.getElementbyID("cookiesettings")->appendChild(&cookset); } libhtmlpp::HtmlElement *idx=page.getElementbyTag("body"); Loading
src/cookie.h +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ namespace blogi { bool getPermission(const char *sessionid,const char *prefix,const char *cookiename); void print(libhtmlpp::HtmlElement &page); void print(const char *curl,libhtmlpp::HtmlElement &page); protected: CookieBanner(){}; ~CookieBanner(){}; Loading
src/session.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ const char *blogi::Session::createSession(){ void blogi::Session::addSessionData(const char *sessionid,const char *key,const char *value,size_t size){ uuid_t sin; if(!sessionid){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "addSessionData Sessionid could not be zero!"; throw excep; } if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "addSessionData Session: sessionid empty !"; Loading @@ -70,8 +76,9 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const curses->_firstData=new SessionData::Data; curses->_lastData=curses->_firstData; } curses->_lastData->_Data.resize(size); curses->_lastData->_Data.insert(0,value,size); std::copy(value,value+size,std::back_inserter(curses->_lastData->_Data)); curses->_lastData->_Data.push_back('\0'); snprintf(curses->_lastData->_key,255,"%s",key); return; } Loading @@ -85,6 +92,12 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const void blogi::Session::getSessionData(const char *sessionid,const char *key,std::string &value){ uuid_t sin; if(!sessionid){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "getSessionData Sessionid could not be zero!"; throw excep; } if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "getSessionData Session: sessionid empty !"; Loading