From ace6c2ca4c2acaeaf252bb729b604ca4fb073d83 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 4 Jan 2016 14:29:04 -0500 Subject: [PATCH] Add a new subsystem to sysadm-server: the sysadm-network device information system. To Access: namespace="sysadm" name="network" args={"action" : "list-devices"} Output arguments structure: "" : { "ipv4" : , "ipv6" : , "netmask" : , "description" : , "MAC" : , "status" : , "is_active" : [true/false], "is_dhcp" : [true/false], "is_wireless" : [true/false] } --- src/server/WebBackend.cpp | 42 +++++++++++++++++++++++++++++++++++++-- src/server/WebSocket.h | 4 +++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 5a0c823..8dfd6cc 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -22,17 +22,21 @@ RestOutputStruct::ExitCode WebSocket::EvaluateBackendRequest(QString namesp, QSt "args" - JSON input arguments structure "out" - JSON output arguments structure */ + namesp = namesp.toLower(); name = name.toLower(); //Go through and forward this request to the appropriate sub-system - if(namesp == "rpc" && name.toLower()=="syscache"){ + if(namesp=="rpc" && name=="syscache"){ return EvaluateSyscacheRequest(args, out); - }else if(namesp == "rpc" && name.toLower()=="dispatcher"){ + }else if(namesp=="rpc" && name=="dispatcher"){ return EvaluateSyscacheRequest(args, out); + }else if(namesp=="sysadm" && name=="network"){ + return EvaluateSysadmNetworkRequest(args, out); }else{ return RestOutputStruct::BADREQUEST; } } +//==== SYSCACHE ==== RestOutputStruct::ExitCode WebSocket::EvaluateSyscacheRequest(const QJsonValue in_args, QJsonObject *out){ //syscache only needs a list of sub-commands at the moment (might change later) QStringList in_req; @@ -65,6 +69,7 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSyscacheRequest(const QJsonValue i return RestOutputStruct::OK; } +//==== DISPATCHER ==== RestOutputStruct::ExitCode WebSocket::EvaluateDispatcherRequest(const QJsonValue in_args, QJsonObject *out){ //dispatcher only needs a list of sub-commands at the moment (might change later) QStringList in_req; @@ -86,3 +91,36 @@ RestOutputStruct::ExitCode WebSocket::EvaluateDispatcherRequest(const QJsonValue return RestOutputStruct::OK; } +//==== SYSADM -- Network ==== +RestOutputStruct::ExitCode WebSocket::EvaluateSysadmNetworkRequest(const QJsonValue in_args, QJsonObject *out){ + if(in_args.isObject()){ + QStringList keys = in_args.toObject().keys(); + if(keys.contains("action")){ + QString act = JsonValueToString(in_args.toObject().value("action")); + if(act=="list-devices"){ + QStringList devs = sysadm::NetDevice::listNetDevices(); + for(int i=0; iinsert(devs[i], obj); + } + + } + } + + }else if(in_args.isArray()){ + + } + return RestOutputStruct::OK; +} diff --git a/src/server/WebSocket.h b/src/server/WebSocket.h index 3573944..fca1675 100644 --- a/src/server/WebSocket.h +++ b/src/server/WebSocket.h @@ -52,7 +52,9 @@ private: // -- Individual subsystems RestOutputStruct::ExitCode EvaluateSyscacheRequest(const QJsonValue in_args, QJsonObject *out); RestOutputStruct::ExitCode EvaluateDispatcherRequest(const QJsonValue in_args, QJsonObject *out); - + // -- sysadm library/subsystems + RestOutputStruct::ExitCode EvaluateSysadmNetworkRequest(const QJsonValue in_args, QJsonObject *out); + private slots: void checkIdle(); //see if the currently-connected client is idle void SocketClosing();