Commit c1d22a02 authored by jan.koester's avatar jan.koester
Browse files

cookiebanner works

parent 9ddef9da
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -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>
+24 −9
Original line number Diff line number Diff line
@@ -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{
+14 −4
Original line number Diff line number Diff line
@@ -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");

+1 −1
Original line number Diff line number Diff line
@@ -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(){};
+15 −2
Original line number Diff line number Diff line
@@ -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 !";
@@ -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;
        }
@@ -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 !";