Loading CMakeLists.txt +1 −1 Changes for CMakeLists.txt: 1 added line, 1 removed line. Original line number Diff line number Diff line cmake_minimum_required(VERSION 3.18) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra --warn-no-unused-parameter -Wstack-usage=1000") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra --warn-no-unused-parameter -Wstack-usage=4096") project(authdb) Loading src/admin.cpp +61 −68 Changes for src/admin.cpp: 61 added lines, 68 removed lines. Original line number Diff line number Diff line Loading @@ -958,7 +958,6 @@ namespace authdb { curform.parse(curreq); if (curform.getBoundary()) { size_t gcount=0; uuid gid; gid.generate(); Loading @@ -969,8 +968,6 @@ namespace authdb { Group grp; size_t git=0; for (libhttppp::HttpForm::MultipartForm::Data* curformdat = curform.MultipartFormData.getFormData(); curformdat; curformdat = curformdat->nextData()) { Loading Loading @@ -1119,19 +1116,19 @@ namespace authdb { bool data = false; libhttppp::HttpForm curform; std::shared_ptr<libhttppp::HttpForm> curform=std::make_shared<libhttppp::HttpForm>(); curform.parse(curreq); curform->parse(curreq); if(curform.MultipartFormData.getFormData()){ if(curform->MultipartFormData.getFormData()){ for (libhttppp::HttpForm::MultipartForm::Data* curformdat = curform.MultipartFormData.getFormData(); for (libhttppp::HttpForm::MultipartForm::Data* curformdat = curform->MultipartFormData.getFormData(); curformdat; curformdat = curformdat->nextData()) { AuthData curec(gid); std::shared_ptr<AuthData> curec=std::make_shared<AuthData>(gid); curec.Data.type=GroupData; curec.Data.storage=EmptyStorage; curec->Data.type=GroupData; curec->Data.storage=EmptyStorage; for(libhttppp::HttpForm::MultipartForm::Data::ContentDisposition *curdispo=curformdat->getDisposition(); curdispo; curdispo=curdispo->nextContentDisposition() Loading @@ -1147,15 +1144,15 @@ namespace authdb { [](unsigned char c){ return std::tolower(c); }); if(key=="name"){ strcpy(curec.Data.fieldname,curdispo->getValue()); strcpy(curec->Data.fieldname,curdispo->getValue()); } if(key=="filename"){ curec.Data.storage=BinaryStorage; curec->Data.storage=BinaryStorage; } } if(curec.Data.storage==EmptyStorage){ if(curec->Data.storage==EmptyStorage){ bool numeric=true; for(auto t : curformdat->Value){ Loading @@ -1166,43 +1163,41 @@ namespace authdb { } if(numeric) curec.Data.storage=IntStorage; curec->Data.storage=IntStorage; else curec.Data.storage=TextStorage; curec->Data.storage=TextStorage; } if(curec.Data.storage==TextStorage && strcmp(curec.Data.fieldname,"groupmembers")==0){ if(curec->Data.storage==TextStorage && strcmp(curec->Data.fieldname,"groupmembers")==0){ curformdat->Value.push_back('\0'); editrec.addMember(curformdat->Value.data()); }else if(curec.Data.storage==TextStorage) { }else if(curec->Data.storage==TextStorage) { curformdat->Value.push_back('\0'); curec.Data.datasize=curformdat->Value.size(); curec.Data.data=new char[curec.Data.datasize]; curec->Data.datasize=curformdat->Value.size(); curec->Data.data=new char[curec->Data.datasize]; std::copy(curformdat->Value.begin(), curformdat->Value.end(),curec.Data.data); editrec.append(curec); delete[] curec.Data.data; }else if(curec.Data.storage==BinaryStorage){ curec.Data.datasize=curformdat->Value.size(); curec.Data.data=new char[curec.Data.datasize]; memcpy(curec.Data.data,curformdat->Value.data(), curformdat->Value.end(),curec->Data.data); editrec.append(*curec); delete[] curec->Data.data; }else if(curec->Data.storage==BinaryStorage){ curec->Data.datasize=curformdat->Value.size(); curec->Data.data=new char[curec->Data.datasize]; memcpy(curec->Data.data,curformdat->Value.data(), curformdat->Value.size()); editrec.append(curec); delete[] curec.Data.data; }else if(curec.Data.storage==IntStorage){ editrec.append(*curec); delete[] curec->Data.data; }else if(curec->Data.storage==IntStorage){ curformdat->Value.push_back('\0'); curec.Data.datasize=sizeof(int); curec.Data.data=(char*)new int; curec->Data.datasize=sizeof(int); curec->Data.data=(char*)new int; int val=atoi(curformdat->Value.data()); memcpy(curec.Data.data,&val, curec.Data.datasize); editrec.append(curec); delete[] (int*)curec.Data.data; std::copy(&val,&val+sizeof(int), curec->Data.data); editrec.append(*curec); delete[] (int*)curec->Data.data; } } Loading @@ -1229,11 +1224,10 @@ namespace authdb { } } libhtmlpp::HtmlPage page; libhtmlpp::HtmlString form,out; std::shared_ptr<libhtmlpp::HtmlString> form=std::make_shared<libhtmlpp::HtmlString>(); std::shared_ptr<libhtmlpp::HtmlString> out=std::make_shared<libhtmlpp::HtmlString>(); form << "<form method=\"post\" enctype=\"multipart/form-data\">" *form << "<form method=\"post\" enctype=\"multipart/form-data\">" << "<table>"; while(rd<end){ Loading @@ -1245,20 +1239,20 @@ namespace authdb { if(gid == cur->ruid && cur->type==GroupData){ form << "<tr><td><label for=\""<< cur->fieldname <<"\">" << cur->fieldname << "</label></td>"; *form << "<tr><td><label for=\""<< cur->fieldname <<"\">" << cur->fieldname << "</label></td>"; if(cur->storage==TextStorage && strcmp(cur->fieldname ,"groupname")==0){ cur->data = new char[cur->datasize]; backend->read((unsigned char*)cur->data,cur->datasize); try { form << "<td><input type=\"text\" name=\"groupname\" value=\"" *form << "<td><input type=\"text\" name=\"groupname\" value=\"" << cur->data <<"\"></td>"; }catch(AuthBackendError &e){ std::cerr << e.what() << std::endl; } delete[] cur->data; form << "<td><select name=\"groupmembers\" multiple>"; *form << "<td><select name=\"groupmembers\" multiple>"; std::vector<uuid> mrecs; class Group grp; Loading @@ -1281,41 +1275,41 @@ namespace authdb { curu->data = new char[curu->datasize]; backend->read((unsigned char*)curu->data,curu->datasize); form << "<option value=\"" << uuid(curu->ruid).c_str() << "\" "; *form << "<option value=\"" << uuid(curu->ruid).c_str() << "\" "; for(const uuid &mrec : mrecs){ if(mrec == curu->ruid ){ form << " selected "; *form << " selected "; } } form << ">" << curu->data <<"</option>"; *form << ">" << curu->data <<"</option>"; delete[] curu->data; } } form << "</select>"; *form << "</select>"; } backend->setPos(rd); form << "</td>"; *form << "</td>"; break; } } form << "<tr><td></td><td><input type=\"submit\"></td></tr>" *form << "<tr><td></td><td><input type=\"submit\"></td></tr>" << "</table>" << "</form>"; libhtmlpp::HtmlElement root=*_IndexElement; libhtmlpp::HtmlElement *content=root.getElementbyID("content"); std::shared_ptr<libhtmlpp::HtmlElement> root=std::make_shared<libhtmlpp::HtmlElement>(*_IndexElement); libhtmlpp::HtmlElement *content=root->getElementbyID("content"); content->insertChild(form.parse()); content->insertChild(form->parse()); libhtmlpp::print(&root,out,true); libhtmlpp::print(root.get(),*out,true); libhttppp::HttpResponse rep; rep.setContentType("text/html"); rep.setContentLength(out.size()); rep.send(curreq,out.c_str(),out.size()); rep.setContentLength(out->size()); rep.send(curreq,out->c_str(),out->size()); } void listSessions(libhttppp::HttpRequest *curreq, const int tid, ULONG_PTR args){ Loading Loading @@ -1629,8 +1623,6 @@ namespace authdb { gpo.remove(*backend,gpid); size_t i = 0; for (libhttppp::HttpForm::MultipartForm::Data* curformdat = GPOForm.MultipartFormData.getFormData(); curformdat; curformdat = curformdat->nextData()) { for(libhttppp::HttpForm::MultipartForm::Data::ContentDisposition *curdispo=curformdat->getDisposition(); Loading Loading @@ -1740,6 +1732,7 @@ namespace authdb { bool found=false; for(const uuid &al : allow ){ std::cout << uuid(cur->ruid).c_str() << std::endl; if( al==cur->ruid ){ found=true; groupel->appendChild(&opt); Loading Loading @@ -2022,17 +2015,17 @@ namespace authdb { throw AuthBackendError("listUsers: could not parse uuid!"); } libhttppp::HttpForm form; form.parse(curreq); std::shared_ptr<libhttppp::HttpForm> form=std::make_shared<libhttppp::HttpForm>(); form->parse(curreq); if(form.UrlFormData.getFormData()){ if(form->UrlFormData.getFormData()){ uuid clid; clid.generate(); class ClientData cdat(clid); std::string key,keyhash; for(libhttppp::HttpForm::UrlcodedForm::Data *curdat=form.UrlFormData.getFormData(); curdat; for(libhttppp::HttpForm::UrlcodedForm::Data *curdat=form->UrlFormData.getFormData(); curdat; curdat=curdat->nextData() ){ if( strcmp(curdat->getKey(),"clientname")==0 ) Loading @@ -2041,9 +2034,9 @@ namespace authdb { key=curdat->getValue(); } sha512 hash; std::shared_ptr<sha512> hash=std::make_shared<sha512>(); hash.hash(key,keyhash); hash->hash(key,keyhash); cdat.setKey(keyhash.c_str()); Loading Loading @@ -2210,15 +2203,15 @@ namespace authdb { content->appendChild(toolbar); } libhtmlpp::HtmlString sendat; std::shared_ptr<libhtmlpp::HtmlString> sendat=std::make_shared<libhtmlpp::HtmlString>(); libhtmlpp::print((libhtmlpp::Element*)&index,sendat,false); libhtmlpp::print((libhtmlpp::Element*)&index,*sendat,false); libhttppp::HttpResponse rep; rep.setState(HTTP200); rep.setVersion(HTTPVERSION(1.1)); rep.setContentType("text/html"); rep.send(curreq,sendat.c_str(),sendat.size()); rep.send(curreq,sendat->c_str(),sendat->size()); } void removeClient(libhttppp::HttpRequest *curreq, const int tid, ULONG_PTR args){ Loading src/hash/sha512.h +1 −0 Changes for src/hash/sha512.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ namespace authdb { void hash(const std::string input,std::string &output); virtual ~sha512(){}; protected: void transform(const unsigned char *message, unsigned int block_nb); unsigned int m_tot_len; Loading Loading
CMakeLists.txt +1 −1 Changes for CMakeLists.txt: 1 added line, 1 removed line. Original line number Diff line number Diff line cmake_minimum_required(VERSION 3.18) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra --warn-no-unused-parameter -Wstack-usage=1000") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wextra --warn-no-unused-parameter -Wstack-usage=4096") project(authdb) Loading
src/admin.cpp +61 −68 Changes for src/admin.cpp: 61 added lines, 68 removed lines. Original line number Diff line number Diff line Loading @@ -958,7 +958,6 @@ namespace authdb { curform.parse(curreq); if (curform.getBoundary()) { size_t gcount=0; uuid gid; gid.generate(); Loading @@ -969,8 +968,6 @@ namespace authdb { Group grp; size_t git=0; for (libhttppp::HttpForm::MultipartForm::Data* curformdat = curform.MultipartFormData.getFormData(); curformdat; curformdat = curformdat->nextData()) { Loading Loading @@ -1119,19 +1116,19 @@ namespace authdb { bool data = false; libhttppp::HttpForm curform; std::shared_ptr<libhttppp::HttpForm> curform=std::make_shared<libhttppp::HttpForm>(); curform.parse(curreq); curform->parse(curreq); if(curform.MultipartFormData.getFormData()){ if(curform->MultipartFormData.getFormData()){ for (libhttppp::HttpForm::MultipartForm::Data* curformdat = curform.MultipartFormData.getFormData(); for (libhttppp::HttpForm::MultipartForm::Data* curformdat = curform->MultipartFormData.getFormData(); curformdat; curformdat = curformdat->nextData()) { AuthData curec(gid); std::shared_ptr<AuthData> curec=std::make_shared<AuthData>(gid); curec.Data.type=GroupData; curec.Data.storage=EmptyStorage; curec->Data.type=GroupData; curec->Data.storage=EmptyStorage; for(libhttppp::HttpForm::MultipartForm::Data::ContentDisposition *curdispo=curformdat->getDisposition(); curdispo; curdispo=curdispo->nextContentDisposition() Loading @@ -1147,15 +1144,15 @@ namespace authdb { [](unsigned char c){ return std::tolower(c); }); if(key=="name"){ strcpy(curec.Data.fieldname,curdispo->getValue()); strcpy(curec->Data.fieldname,curdispo->getValue()); } if(key=="filename"){ curec.Data.storage=BinaryStorage; curec->Data.storage=BinaryStorage; } } if(curec.Data.storage==EmptyStorage){ if(curec->Data.storage==EmptyStorage){ bool numeric=true; for(auto t : curformdat->Value){ Loading @@ -1166,43 +1163,41 @@ namespace authdb { } if(numeric) curec.Data.storage=IntStorage; curec->Data.storage=IntStorage; else curec.Data.storage=TextStorage; curec->Data.storage=TextStorage; } if(curec.Data.storage==TextStorage && strcmp(curec.Data.fieldname,"groupmembers")==0){ if(curec->Data.storage==TextStorage && strcmp(curec->Data.fieldname,"groupmembers")==0){ curformdat->Value.push_back('\0'); editrec.addMember(curformdat->Value.data()); }else if(curec.Data.storage==TextStorage) { }else if(curec->Data.storage==TextStorage) { curformdat->Value.push_back('\0'); curec.Data.datasize=curformdat->Value.size(); curec.Data.data=new char[curec.Data.datasize]; curec->Data.datasize=curformdat->Value.size(); curec->Data.data=new char[curec->Data.datasize]; std::copy(curformdat->Value.begin(), curformdat->Value.end(),curec.Data.data); editrec.append(curec); delete[] curec.Data.data; }else if(curec.Data.storage==BinaryStorage){ curec.Data.datasize=curformdat->Value.size(); curec.Data.data=new char[curec.Data.datasize]; memcpy(curec.Data.data,curformdat->Value.data(), curformdat->Value.end(),curec->Data.data); editrec.append(*curec); delete[] curec->Data.data; }else if(curec->Data.storage==BinaryStorage){ curec->Data.datasize=curformdat->Value.size(); curec->Data.data=new char[curec->Data.datasize]; memcpy(curec->Data.data,curformdat->Value.data(), curformdat->Value.size()); editrec.append(curec); delete[] curec.Data.data; }else if(curec.Data.storage==IntStorage){ editrec.append(*curec); delete[] curec->Data.data; }else if(curec->Data.storage==IntStorage){ curformdat->Value.push_back('\0'); curec.Data.datasize=sizeof(int); curec.Data.data=(char*)new int; curec->Data.datasize=sizeof(int); curec->Data.data=(char*)new int; int val=atoi(curformdat->Value.data()); memcpy(curec.Data.data,&val, curec.Data.datasize); editrec.append(curec); delete[] (int*)curec.Data.data; std::copy(&val,&val+sizeof(int), curec->Data.data); editrec.append(*curec); delete[] (int*)curec->Data.data; } } Loading @@ -1229,11 +1224,10 @@ namespace authdb { } } libhtmlpp::HtmlPage page; libhtmlpp::HtmlString form,out; std::shared_ptr<libhtmlpp::HtmlString> form=std::make_shared<libhtmlpp::HtmlString>(); std::shared_ptr<libhtmlpp::HtmlString> out=std::make_shared<libhtmlpp::HtmlString>(); form << "<form method=\"post\" enctype=\"multipart/form-data\">" *form << "<form method=\"post\" enctype=\"multipart/form-data\">" << "<table>"; while(rd<end){ Loading @@ -1245,20 +1239,20 @@ namespace authdb { if(gid == cur->ruid && cur->type==GroupData){ form << "<tr><td><label for=\""<< cur->fieldname <<"\">" << cur->fieldname << "</label></td>"; *form << "<tr><td><label for=\""<< cur->fieldname <<"\">" << cur->fieldname << "</label></td>"; if(cur->storage==TextStorage && strcmp(cur->fieldname ,"groupname")==0){ cur->data = new char[cur->datasize]; backend->read((unsigned char*)cur->data,cur->datasize); try { form << "<td><input type=\"text\" name=\"groupname\" value=\"" *form << "<td><input type=\"text\" name=\"groupname\" value=\"" << cur->data <<"\"></td>"; }catch(AuthBackendError &e){ std::cerr << e.what() << std::endl; } delete[] cur->data; form << "<td><select name=\"groupmembers\" multiple>"; *form << "<td><select name=\"groupmembers\" multiple>"; std::vector<uuid> mrecs; class Group grp; Loading @@ -1281,41 +1275,41 @@ namespace authdb { curu->data = new char[curu->datasize]; backend->read((unsigned char*)curu->data,curu->datasize); form << "<option value=\"" << uuid(curu->ruid).c_str() << "\" "; *form << "<option value=\"" << uuid(curu->ruid).c_str() << "\" "; for(const uuid &mrec : mrecs){ if(mrec == curu->ruid ){ form << " selected "; *form << " selected "; } } form << ">" << curu->data <<"</option>"; *form << ">" << curu->data <<"</option>"; delete[] curu->data; } } form << "</select>"; *form << "</select>"; } backend->setPos(rd); form << "</td>"; *form << "</td>"; break; } } form << "<tr><td></td><td><input type=\"submit\"></td></tr>" *form << "<tr><td></td><td><input type=\"submit\"></td></tr>" << "</table>" << "</form>"; libhtmlpp::HtmlElement root=*_IndexElement; libhtmlpp::HtmlElement *content=root.getElementbyID("content"); std::shared_ptr<libhtmlpp::HtmlElement> root=std::make_shared<libhtmlpp::HtmlElement>(*_IndexElement); libhtmlpp::HtmlElement *content=root->getElementbyID("content"); content->insertChild(form.parse()); content->insertChild(form->parse()); libhtmlpp::print(&root,out,true); libhtmlpp::print(root.get(),*out,true); libhttppp::HttpResponse rep; rep.setContentType("text/html"); rep.setContentLength(out.size()); rep.send(curreq,out.c_str(),out.size()); rep.setContentLength(out->size()); rep.send(curreq,out->c_str(),out->size()); } void listSessions(libhttppp::HttpRequest *curreq, const int tid, ULONG_PTR args){ Loading Loading @@ -1629,8 +1623,6 @@ namespace authdb { gpo.remove(*backend,gpid); size_t i = 0; for (libhttppp::HttpForm::MultipartForm::Data* curformdat = GPOForm.MultipartFormData.getFormData(); curformdat; curformdat = curformdat->nextData()) { for(libhttppp::HttpForm::MultipartForm::Data::ContentDisposition *curdispo=curformdat->getDisposition(); Loading Loading @@ -1740,6 +1732,7 @@ namespace authdb { bool found=false; for(const uuid &al : allow ){ std::cout << uuid(cur->ruid).c_str() << std::endl; if( al==cur->ruid ){ found=true; groupel->appendChild(&opt); Loading Loading @@ -2022,17 +2015,17 @@ namespace authdb { throw AuthBackendError("listUsers: could not parse uuid!"); } libhttppp::HttpForm form; form.parse(curreq); std::shared_ptr<libhttppp::HttpForm> form=std::make_shared<libhttppp::HttpForm>(); form->parse(curreq); if(form.UrlFormData.getFormData()){ if(form->UrlFormData.getFormData()){ uuid clid; clid.generate(); class ClientData cdat(clid); std::string key,keyhash; for(libhttppp::HttpForm::UrlcodedForm::Data *curdat=form.UrlFormData.getFormData(); curdat; for(libhttppp::HttpForm::UrlcodedForm::Data *curdat=form->UrlFormData.getFormData(); curdat; curdat=curdat->nextData() ){ if( strcmp(curdat->getKey(),"clientname")==0 ) Loading @@ -2041,9 +2034,9 @@ namespace authdb { key=curdat->getValue(); } sha512 hash; std::shared_ptr<sha512> hash=std::make_shared<sha512>(); hash.hash(key,keyhash); hash->hash(key,keyhash); cdat.setKey(keyhash.c_str()); Loading Loading @@ -2210,15 +2203,15 @@ namespace authdb { content->appendChild(toolbar); } libhtmlpp::HtmlString sendat; std::shared_ptr<libhtmlpp::HtmlString> sendat=std::make_shared<libhtmlpp::HtmlString>(); libhtmlpp::print((libhtmlpp::Element*)&index,sendat,false); libhtmlpp::print((libhtmlpp::Element*)&index,*sendat,false); libhttppp::HttpResponse rep; rep.setState(HTTP200); rep.setVersion(HTTPVERSION(1.1)); rep.setContentType("text/html"); rep.send(curreq,sendat.c_str(),sendat.size()); rep.send(curreq,sendat->c_str(),sendat->size()); } void removeClient(libhttppp::HttpRequest *curreq, const int tid, ULONG_PTR args){ Loading
src/hash/sha512.h +1 −0 Changes for src/hash/sha512.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ namespace authdb { void hash(const std::string input,std::string &output); virtual ~sha512(){}; protected: void transform(const unsigned char *message, unsigned int block_nb); unsigned int m_tot_len; Loading