Loading src/auth.cpp +10 −7 Original line number Diff line number Diff line Loading @@ -61,13 +61,14 @@ blogi::Auth::~Auth(){ } bool blogi::Auth::login(const int tid,const char* username, const char* password, std::string& ssid){ #ifdef LDAPSUPPORT if(!ldapLogin(tid,username,password,ssid)) return locallogin(tid,username,password,ssid); #else #ifndef LDAPSUPPORT return locallogin(username,password,ssid); #else bool ret=ldapLogin(tid,username,password,ssid); if(!ret) return locallogin(tid,username,password,ssid); return ret; #endif return false; } bool blogi::Auth::locallogin(const int tid,const char* username, const char* password, std::string& ssid){ Loading Loading @@ -118,11 +119,12 @@ bool blogi::Auth::ldapLogin(const int tid,const char *username,const char *passw throw excep; } char* attrs[] = { (char*)"objectSid",(char*)"userPrincipalName",(char*)"mail",(char*)"gecos",NULL }; char* attrs[] = { (char*)"objectSid",(char*)"userPrincipalName",(char*)"mail",(char*)"gecos",nullptr }; LDAPMessage* answer, * entry; struct timeval timeout; timeout.tv_sec = 1; timeout.tv_usec =0; ulerr = ldap_search_ext_s(userldap, _config->getlpbasedn(), LDAP_SCOPE_SUBTREE, _config->getlpfilter(), attrs, 0, &userserverctls, &userclientctls, &timeout, 0, &answer); Loading Loading @@ -197,7 +199,6 @@ LDAPLOGINUSERFOUND: printSID(mysid,sid,512); destroySID(mysid); std::cout << "User : " << sid << " are logged in" << std::endl; ssid=sid; blogi::SQL sql; blogi::DBResult res; Loading @@ -210,6 +211,8 @@ LDAPLOGINUSERFOUND: _session->createSession(sid); std::cout << "User : " << sid << " are logged in" << std::endl; ldap_memfree(dn); ldap_msgfree(answer); ldap_unbind_ext_s(userldap, &userserverctls, &userclientctls); Loading src/blogi.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -130,7 +130,6 @@ void blogi::Blogi::loginPage(libhttppp::HttpRequest *curreq,const int tid){ for (libhttppp::HttpForm::UrlcodedForm::Data* cururlform = curform.UrlFormData.getFormData(); cururlform; cururlform = cururlform->nextData()) { std::cout << cururlform->getKey() <<std::endl; if (strcmp(cururlform->getKey(), "username") == 0) { username = cururlform->getValue(); }else if (strcmp(cururlform->getKey(), "password") == 0) { Loading Loading @@ -183,8 +182,7 @@ void blogi::Blogi::loginPage(libhttppp::HttpRequest *curreq,const int tid){ PlgArgs->session->addSessionData(sessid,"username",username.c_str(), username.length()); libhttppp::HttpResponse curres; libhttppp::HttpCookie cookie; cookie.setcookie(&curres, "sessionid", sessid,nullptr,PlgArgs->config->getDomain(),-1, PlgArgs->config->buildurl("",url,512),false,"1","Lax"); cookie.setcookie(&curres, "sessionid", sessid,nullptr,PlgArgs->config->getDomain(),-1, nullptr,false,"1","None"); curres.setState(HTTP307); curres.setVersion(HTTPVERSION(1.1)); *curres.setData("Location") << PlgArgs->config->getstartpage(); Loading src/session.cpp +16 −5 Original line number Diff line number Diff line Loading @@ -54,9 +54,15 @@ const char *blogi::Session::createSession(const char *uid){ }; void blogi::Session::addSessionData(const char *sessionid,const char *key,const char *value,size_t size){ for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ uuid_t sin; uuid_parse(sessionid,sin); if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "addSessionData Session: sessionid empty !"; throw excep; } for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ if(uuid_compare(curses->_sessionid,sin)==0){ if(curses->_firstData){ curses->_lastData->_nextData=new SessionData::Data; Loading @@ -70,7 +76,6 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const snprintf(curses->_lastData->_key,255,"%s",key); return; } } libhttppp::HTTPException excep; Loading @@ -79,9 +84,15 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const }; void blogi::Session::getSessionData(const char *sessionid,const char *key,std::string &value){ for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ uuid_t sin; uuid_parse(sessionid,sin); if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "getSessionData Session: sessionid empty !"; throw excep; } for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ if(uuid_compare(curses->_sessionid,sin)==0){ for(SessionData::Data *curdat=curses->_firstData; curdat; curdat=curdat->_nextData){ if(strcmp(key,curdat->_key)==0){ Loading Loading
src/auth.cpp +10 −7 Original line number Diff line number Diff line Loading @@ -61,13 +61,14 @@ blogi::Auth::~Auth(){ } bool blogi::Auth::login(const int tid,const char* username, const char* password, std::string& ssid){ #ifdef LDAPSUPPORT if(!ldapLogin(tid,username,password,ssid)) return locallogin(tid,username,password,ssid); #else #ifndef LDAPSUPPORT return locallogin(username,password,ssid); #else bool ret=ldapLogin(tid,username,password,ssid); if(!ret) return locallogin(tid,username,password,ssid); return ret; #endif return false; } bool blogi::Auth::locallogin(const int tid,const char* username, const char* password, std::string& ssid){ Loading Loading @@ -118,11 +119,12 @@ bool blogi::Auth::ldapLogin(const int tid,const char *username,const char *passw throw excep; } char* attrs[] = { (char*)"objectSid",(char*)"userPrincipalName",(char*)"mail",(char*)"gecos",NULL }; char* attrs[] = { (char*)"objectSid",(char*)"userPrincipalName",(char*)"mail",(char*)"gecos",nullptr }; LDAPMessage* answer, * entry; struct timeval timeout; timeout.tv_sec = 1; timeout.tv_usec =0; ulerr = ldap_search_ext_s(userldap, _config->getlpbasedn(), LDAP_SCOPE_SUBTREE, _config->getlpfilter(), attrs, 0, &userserverctls, &userclientctls, &timeout, 0, &answer); Loading Loading @@ -197,7 +199,6 @@ LDAPLOGINUSERFOUND: printSID(mysid,sid,512); destroySID(mysid); std::cout << "User : " << sid << " are logged in" << std::endl; ssid=sid; blogi::SQL sql; blogi::DBResult res; Loading @@ -210,6 +211,8 @@ LDAPLOGINUSERFOUND: _session->createSession(sid); std::cout << "User : " << sid << " are logged in" << std::endl; ldap_memfree(dn); ldap_msgfree(answer); ldap_unbind_ext_s(userldap, &userserverctls, &userclientctls); Loading
src/blogi.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -130,7 +130,6 @@ void blogi::Blogi::loginPage(libhttppp::HttpRequest *curreq,const int tid){ for (libhttppp::HttpForm::UrlcodedForm::Data* cururlform = curform.UrlFormData.getFormData(); cururlform; cururlform = cururlform->nextData()) { std::cout << cururlform->getKey() <<std::endl; if (strcmp(cururlform->getKey(), "username") == 0) { username = cururlform->getValue(); }else if (strcmp(cururlform->getKey(), "password") == 0) { Loading Loading @@ -183,8 +182,7 @@ void blogi::Blogi::loginPage(libhttppp::HttpRequest *curreq,const int tid){ PlgArgs->session->addSessionData(sessid,"username",username.c_str(), username.length()); libhttppp::HttpResponse curres; libhttppp::HttpCookie cookie; cookie.setcookie(&curres, "sessionid", sessid,nullptr,PlgArgs->config->getDomain(),-1, PlgArgs->config->buildurl("",url,512),false,"1","Lax"); cookie.setcookie(&curres, "sessionid", sessid,nullptr,PlgArgs->config->getDomain(),-1, nullptr,false,"1","None"); curres.setState(HTTP307); curres.setVersion(HTTPVERSION(1.1)); *curres.setData("Location") << PlgArgs->config->getstartpage(); Loading
src/session.cpp +16 −5 Original line number Diff line number Diff line Loading @@ -54,9 +54,15 @@ const char *blogi::Session::createSession(const char *uid){ }; void blogi::Session::addSessionData(const char *sessionid,const char *key,const char *value,size_t size){ for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ uuid_t sin; uuid_parse(sessionid,sin); if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "addSessionData Session: sessionid empty !"; throw excep; } for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ if(uuid_compare(curses->_sessionid,sin)==0){ if(curses->_firstData){ curses->_lastData->_nextData=new SessionData::Data; Loading @@ -70,7 +76,6 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const snprintf(curses->_lastData->_key,255,"%s",key); return; } } libhttppp::HTTPException excep; Loading @@ -79,9 +84,15 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const }; void blogi::Session::getSessionData(const char *sessionid,const char *key,std::string &value){ for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ uuid_t sin; uuid_parse(sessionid,sin); if(uuid_parse(sessionid,sin)!=0){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "getSessionData Session: sessionid empty !"; throw excep; } for(SessionData *curses=_firstSessionData; curses; curses=curses->_nextSessionData){ if(uuid_compare(curses->_sessionid,sin)==0){ for(SessionData::Data *curdat=curses->_firstData; curdat; curdat=curdat->_nextData){ if(strcmp(key,curdat->_key)==0){ Loading