#include "AdminCheckUserBackup.h" #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Net/HTTPServerResponse.h" #include "Poco/Net/HTMLForm.h" #include "Poco/DeflatingStream.h" #line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" #include "../Crypto/KeyPair.h" #include "../SingletonManager/ConnectionManager.h" #include "../controller/UserBackups.h" #include "Poco/Data/Binding.h" using namespace Poco::Data::Keywords; typedef Poco::Tuple, std::string> UserBackupTuple; struct SListEntry { Poco::AutoPtr user; std::vector> backups; }; #line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" #include "../ServerConfig.h" AdminCheckUserBackup::AdminCheckUserBackup(Session* arg): SessionHTTPRequestHandler(arg) { } void AdminCheckUserBackup::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) { response.setChunkedTransferEncoding(true); response.setContentType("text/html"); bool _compressResponse(request.hasToken("Accept-Encoding", "gzip")); if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); #line 25 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" const char* pageName = "Admin Check User Backups"; auto cm = ConnectionManager::getInstance(); KeyPair keys; std::list notMatchingEntrys; auto con = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER); Poco::Data::Statement select(con); std::list userBackupEntrys; select << "SELECT u.id, u.pubkey, b.passphrase FROM users as u LEFT JOIN user_backups as b on(u.id = b.user_id) order by u.id" , into(userBackupEntrys); size_t resultCount = 0; try { resultCount = select.execute(); int last_user_id = 0; for(auto it = userBackupEntrys.begin(); it != userBackupEntrys.end(); it++) { auto tuple = *it; auto pubkey = tuple.get<1>(); if(pubkey.isNull()) { continue; } auto passphrase = KeyPair::filterPassphrase(tuple.get<2>()); auto user_id = tuple.get<0>(); Mnemonic* wordSource = nullptr; if(!User::validatePassphrase(passphrase, &wordSource)) { addError(new Error("admin Check user backup", "invalid passphrase"), false); addError(new ParamError("admin Check user backup", "passphrase", passphrase.data()), false); addError(new ParamError("admin Check user backup", "user id", user_id), false); continue; } else { keys.generateFromPassphrase(passphrase.data(), wordSource); } bool matching = false; if(keys.isPubkeysTheSame(pubkey.value().content().data())) { matching = true; } if(user_id != last_user_id) { last_user_id = user_id; if(matching) continue; } else { auto lastEntry = notMatchingEntrys.back(); if(lastEntry.user->getModel()->getID() == user_id && matching == true) { notMatchingEntrys.pop_back(); continue; } } SListEntry entry; entry.user = controller::User::create(); entry.user->load(user_id); entry.backups = controller::UserBackups::load(user_id); notMatchingEntrys.push_back(entry); } } catch (Poco::Exception& ex) { addError(new ParamError("adminCheckUserBackup", "mysql error", ex.displayText().data()), false); } std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; responseStream << "\n"; // begin include header_old.cpsp responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" responseStream << ( pageName ); responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; responseStream << "\t

Alpha "; #line 53 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; // end include header_old.cpsp responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Admin Check User Backup

\n"; responseStream << "\t"; #line 91 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "\t

Unmatching count: "; #line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" responseStream << ( notMatchingEntrys.size() ); responseStream << "

\n"; responseStream << "\t\n"; responseStream << "\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\n"; responseStream << "\t\t\n"; responseStream << "\t\t\t"; #line 98 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" for(auto it = notMatchingEntrys.begin(); it != notMatchingEntrys.end(); it++) { auto userModel = (*it).user->getModel(); responseStream << "\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t"; #line 108 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" } responseStream << "\n"; responseStream << "\t\t\n"; responseStream << "\n"; // begin include footer.cpsp responseStream << "
\n"; responseStream << "

Copyright © Gradido 2020

\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << " "; #line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" responseStream << ( mTimeProfiler.string() ); responseStream << "\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "

Login Server in Entwicklung

\n"; responseStream << "

Alpha "; #line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "\n"; responseStream << "\n"; responseStream << ""; // end include footer.cpsp responseStream << "\n"; if (_compressResponse) _gzipStream.close(); }
idVornameNachnameE-Mailbackups count
"; #line 102 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" responseStream << ( userModel->getID() ); responseStream << ""; #line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" responseStream << ( userModel->getFirstName() ); responseStream << ""; #line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" responseStream << ( userModel->getLastName() ); responseStream << ""; #line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" responseStream << ( userModel->getEmail() ); responseStream << ""; #line 106 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminCheckUserBackup.cpsp" responseStream << ( (*it).backups.size() ); responseStream << "