diff --git a/.gitignore b/.gitignore index f43bafc..348226d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ src/library/sysadm-general.o src/library/sysadm-lifepreserver.o src/library/sysadm-network.o src/library/sysadm-firewall.o +src/library/sysadm-servicemanager.o +src/library/sysadm-systeminfo.o src/library/sysadm-update.o src/library/sysadm-usermanager.o src/server/AuthorizationManager.o diff --git a/src/library/library.pro b/src/library/library.pro index 61c4696..b0c650e 100644 --- a/src/library/library.pro +++ b/src/library/library.pro @@ -16,6 +16,7 @@ HEADERS += sysadm-global.h \ sysadm-network.h \ sysadm-firewall.h \ sysadm-servicemanager.h\ + sysadm-systeminfo.h\ sysadm-update.h \ sysadm-usermanager.h @@ -25,6 +26,7 @@ SOURCES += NetDevice.cpp \ sysadm-network.cpp \ sysadm-firewall.cpp \ sysadm-servicemanager.cpp \ + sysadm-systeminfo.cpp \ sysadm-update.cpp \ sysadm-usermanager.cpp diff --git a/src/library/sysadm-systeminfo.cpp b/src/library/sysadm-systeminfo.cpp new file mode 100644 index 0000000..b0ae88d --- /dev/null +++ b/src/library/sysadm-systeminfo.cpp @@ -0,0 +1,52 @@ +//=========================================== +// PC-BSD source code +// Copyright (c) 2015, PC-BSD Software/iXsystems +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "sysadm-general.h" +#include "sysadm-systeminfo.h" +#include "sysadm-global.h" + +using namespace sysadm; + +//PLEASE: Keep the functions in the same order as listed in pcbsd-general.h + +// ==== ExternalDevicePaths() ==== +QJsonObject SysInfo::ExternalDevicePaths() { + QJsonObject retObject; + + //Returns: QStringList[::::::::] + //Note: = [USB, HDRIVE, DVD, SDCARD, UNKNOWN] + QStringList devs = General::RunCommand("mount").split("\n"); + + //Now check the output + for(int i=0; i +#include "sysadm-global.h" + +namespace sysadm{ + +class SysInfo{ +public: + static QJsonObject ExternalDevicePaths(); +}; + +} //end of pcbsd namespace + +#endif diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 5f3c058..6b28d2e 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -12,6 +12,7 @@ #include "sysadm-general.h" #include "sysadm-lifepreserver.h" #include "sysadm-network.h" +#include "sysadm-systeminfo.h" #include "sysadm-update.h" #include "syscache-client.h" @@ -67,6 +68,8 @@ RestOutputStruct::ExitCode WebSocket::EvaluateBackendRequest(const RestInputStru return EvaluateSysadmNetworkRequest(IN.args, out); }else if(namesp=="sysadm" && name=="lifepreserver"){ return EvaluateSysadmLifePreserverRequest(IN.args, out); + }else if(namesp=="sysadm" && name=="systeminfo"){ + return EvaluateSysadmSystemInfoRequest(IN.args, out); }else if(namesp=="sysadm" && name=="update"){ return EvaluateSysadmUpdateRequest(IN.args, out); }else{ @@ -245,6 +248,30 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmLifePreserverRequest(const Q return RestOutputStruct::OK; } +//==== SYSADM -- SysInfo ==== +RestOutputStruct::ExitCode WebSocket::EvaluateSysadmSystemInfoRequest(const QJsonValue in_args, QJsonObject *out){ + if(in_args.isObject()){ + QStringList keys = in_args.toObject().keys(); + bool ok = false; + if(keys.contains("action")){ + QString act = JsonValueToString(in_args.toObject().value("action")); + if(act=="externalmounts"){ + ok = true; + out->insert("externalmounts", sysadm::SysInfo::ExternalDevicePaths()); + } + + } //end of "action" key usage + + //If nothing done - return the proper code + if(!ok){ + return RestOutputStruct::BADREQUEST; + } + }else{ // if(in_args.isArray()){ + return RestOutputStruct::BADREQUEST; + } + return RestOutputStruct::OK; +} + //==== SYSADM -- Update ==== RestOutputStruct::ExitCode WebSocket::EvaluateSysadmUpdateRequest(const QJsonValue in_args, QJsonObject *out){ if(in_args.isObject()){ diff --git a/src/server/WebSocket.h b/src/server/WebSocket.h index a4a45ae..7ab88e8 100644 --- a/src/server/WebSocket.h +++ b/src/server/WebSocket.h @@ -50,6 +50,8 @@ private: RestOutputStruct::ExitCode EvaluateSysadmNetworkRequest(const QJsonValue in_args, QJsonObject *out); // -- sysadm LifePreserver API RestOutputStruct::ExitCode EvaluateSysadmLifePreserverRequest(const QJsonValue in_args, QJsonObject *out); + // -- sysadm info API + RestOutputStruct::ExitCode EvaluateSysadmSystemInfoRequest(const QJsonValue in_args, QJsonObject *out); // -- sysadm Update API RestOutputStruct::ExitCode EvaluateSysadmUpdateRequest(const QJsonValue in_args, QJsonObject *out);