summaryrefslogtreecommitdiffstats
path: root/src/Client/CommandManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Client/CommandManager.cpp')
-rw-r--r--src/Client/CommandManager.cpp335
1 files changed, 0 insertions, 335 deletions
diff --git a/src/Client/CommandManager.cpp b/src/Client/CommandManager.cpp
deleted file mode 100644
index 6c643f2..0000000
--- a/src/Client/CommandManager.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * CommandManager.cpp
- *
- * Copyright (C) 2008 Matthias Schiffer <matthias@gamezock.de>
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "CommandManager.h"
-#include <Common/HostInfo.h>
-#include <Common/Logger.h>
-#include <Common/Request.h>
-
-#include <cmath>
-#include <iostream>
-#include <vector>
-
-
-namespace Mad {
-namespace Client {
-
-CommandManager CommandManager::commandManager;
-
-
-void CommandManager::printFSInfo(const Common::XmlPacket &packet) {
- const std::string units[] = {
- "kB", "MB", "GB", "TB", ""
- };
-
- for(size_t i = 0; i < packet["filesystems"].getSize(); ++i) {
- const Common::XmlPacket::Entry &fs = packet["filesystems"][i];
-
- unsigned usedUnit = 0, totalUnit = 0;
-
- float used = fs["usedSize"];
- float total = fs["totalSize"];
- float available = fs["availableSize"];
-
- while(used >= 1024 && !units[usedUnit+1].empty()) {
- ++usedUnit;
- used /= 1024;
- available /= 1024;
- }
-
- while(total >= 1024 && !units[totalUnit+1].empty()) {
- ++totalUnit;
- total /= 1024;
- }
-
-
- std::string name = fs["name"];
- std::string mountedOn = fs["mountedOn"];
-
- std::string nameString = mountedOn + " (" + name + ")";
-
- if(nameString.length() < 32) {
- nameString.resize(32, ' ');
- }
- else {
- nameString += "\n\t";
- nameString.resize(nameString.length() + 32, ' ');
- }
-
- std::printf("\t%s%.*f%s", nameString.c_str(), (used < 10) ? 2 : 1, used, (usedUnit == totalUnit) ? "" : (" " + units[usedUnit]).c_str());
- std::printf("/%.*f %s (%.1f%%)\n", (total < 10) ? 2 : 1, total, units[totalUnit].c_str(), std::min(100*used/(used+available), 100.0f));
- }
-
- std::printf("\n");
-}
-
-void CommandManager::printHostStatus(const Common::XmlPacket &packet) {
- unsigned long uptime = packet["uptime"];
-
- if(uptime) {
- unsigned long uptime = packet["uptime"];
-
- unsigned long days = uptime/86400;
- unsigned long hours = (uptime%86400)/3600;
- unsigned long minutes = (uptime%3600)/60;
-
- std::printf("\tUptime:\t\t");
-
- if(days) std::printf("%lu days ", days);
-
- std::printf("%lu:%02lu", hours, minutes);
-
- std::printf(" (load average: %.2f %.2f %.2f, %lu processes)", (float)packet["loadAvg1"], (float)packet["loadAvg5"], (float)packet["loadAvg15"], (unsigned long)packet["nProcesses"]);
-
- std::printf("\n\n");
- }
-
- if((unsigned long)packet["totalMem"] && (unsigned long)packet["freeMem"]) {
- const std::string units[] = {
- "kB", "MB", "GB", "TB", ""
- };
-
- unsigned unit = 0;
- float totalMem = packet["totalMem"], usedMem = totalMem-(float)packet["freeMem"];
-
- while(totalMem >= 1024 && !units[unit+1].empty()) {
- ++unit;
- totalMem /= 1024;
- usedMem /= 1024;
- }
-
- std::printf("\tMemory usage:\t%.*f/%.*f %s", (usedMem < 10) ? 2 : 1, usedMem, (totalMem < 10) ? 2 : 1, totalMem, units[unit].c_str());
- std::printf(" (%.1f%%)\n", usedMem*100.0f/totalMem);
-
- if((unsigned long)packet["totalSwap"] && (unsigned long)packet["freeSwap"]) {
- unit = 0;
- totalMem = packet["totalSwap"]; usedMem = totalMem-(float)packet["freeSwap"];
-
- while(totalMem >= 1024 && !units[unit+1].empty()) {
- ++unit;
- totalMem /= 1024;
- usedMem /= 1024;
- }
-
- std::printf("\tSwap usage:\t%.*f/%.*f %s", (usedMem < 10) ? 2 : 1, usedMem, (totalMem < 10) ? 2 : 1, totalMem, units[unit].c_str());
- std::printf(" (%.1f%%)\n", usedMem*100.0f/totalMem);
- }
-
- std::printf("\n");
- }
-}
-
-
-void CommandManager::daemonCommandRequestFinished(Common::Request &request) {
- try {
- request.getResult();
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::daemonFSInfoRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
- std::cout << "Host file system usage:" << std::endl;
- printFSInfo(packet);
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::daemonStatusRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
- std::cout << "Host status:" << std::endl;
- printHostStatus(packet);
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::disconnectRequestFinished(Common::Request &request) {
- try {
- request.getResult();
- disconnect = true;
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::fsInfoRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
- std::cout << "Server file system usage:" << std::endl;
- printFSInfo(packet);
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::statusRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
- std::cout << "Server status:" << std::endl;
- printHostStatus(packet);
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::userInfoRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
-
- std::cout << " " << (unsigned long)packet["uid"] << ", " << (unsigned long)packet["gid"] << ", " << (const std::string&)packet["username"] << ", "
- << (const std::string&)packet["fullName"] << std::endl << std::endl;
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::userListRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
-
- const Common::XmlPacket::Element &users = packet["users"];
-
- if(users.isEmpty()) {
- std::cout << "User list is empty." << std::endl;
- }
- else {
- std::cout << "Found " << users.getSize() << " user" << (users.getSize()==1 ? "" : "s") << ":" << std::endl;
-
-
- for(size_t i = 0; i < users.getSize(); ++i)
- std::cout << " " << (unsigned long)users[i]["uid"] << ", " << (unsigned long)users[i]["gid"] << ", " << (const std::string&)users[i]["username"] << ", " << (const std::string&)users[i]["fullName"] << std::endl;
- }
-
- std::cout << std::endl;
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::userGroupListRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
-
- const Common::XmlPacket::Element &groups = packet["groups"];
-
- if(groups.isEmpty()) {
- std::cout << "The user isn't member of any group." << std::endl;
- }
- else {
-
- std::cout << "User is member of " << groups.getSize() << " group" << (groups.getSize()==1 ? "" : "s") << ":" << std::endl;
-
-
- for(size_t i = 0; i < groups.getSize(); ++i)
- std::cout << " " << (unsigned long)groups[i]["gid"] << std::endl;
- }
-
- std::cout << std::endl;
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::groupListRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
-
- const Common::XmlPacket::Element &groups = packet["groups"];
-
- if(groups.isEmpty()) {
- std::cout << "Group list is empty." << std::endl;
- }
- else {
- std::cout << "Found " << groups.getSize() << " group" << (groups.getSize()==1 ? "" : "s") << ":" << std::endl;
-
-
- for(size_t i = 0; i < groups.getSize(); ++i)
- std::cout << " " << (unsigned long)groups[i]["gid"] << ", " << (const std::string&)groups[i]["name"] << std::endl;
- }
-
- std::cout << std::endl;
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-void CommandManager::groupUserListRequestFinished(Common::Request &request) {
- try {
- const Common::XmlPacket &packet = request.getResult();
-
- const Common::XmlPacket::Element &users = packet["users"];
-
- if(users.isEmpty()) {
- std::cout << "The group doesn't have any members." << std::endl;
- }
- else {
-
- std::cout << "The group has " << users.getSize() << " member" << (users.getSize()==1 ? "" : "s") << ":" << std::endl;
-
-
- for(size_t i = 0; i < users.getSize(); ++i)
- std::cout << " " << (unsigned long)users[i]["uid"] << std::endl;
- }
-
- std::cout << std::endl;
- }
- catch(Net::Exception &exception) {
- Common::Logger::logf(Common::Logger::ERROR, "An error occurred during your request: %s.", exception.strerror().c_str());
- }
-
- requestFinished();
-}
-
-}
-}