API Change (New Class: sysadm/moused)

Add a new class: sysadm/moused
This class handles all the settings for the moused daemon on the system and provides per-device input device management.

First API "action":
"list_devices": This will list all the devices detected on the system with relevant information about them.
----------------

REST Request (example):
-------------------------------
PUT /sysadm/moused
{
   "action" : "list_devices"
}

WebSocket Request:
-------------------------------
{
   "id" : "fooid",
   "namespace" : "sysadm",
   "name" : "moused",
   "args" : {
      "action" : "list_devices"
   }
}

Response:
-------------------------------
{
  "args": {
    "list_devices": {
      "psm0": {
        "description": "PS/2 Mouse",
        "device": "psm0",
        "driver": "psm",
        "parent": "atkbdc0"
      },
      "ums0": {
        "description": "YSTEK G Mouse, class 0/0, rev 1.10/0.01, addr 1",
        "device": "ums0",
        "driver": "ums",
        "parent": "uhub1"
      }
    }
  },
  "id": "fooid",
  "name": "response",
  "namespace": "sysadm"
}
This commit is contained in:
Ken Moore
2017-01-18 16:03:00 -05:00
parent b50a4c6fc3
commit d1cfc02465
3 changed files with 38 additions and 3 deletions

View File

@@ -23,6 +23,7 @@
#include "library/sysadm-users.h"
#include "library/sysadm-servicemanager.h"
#include "library/sysadm-firewall.h"
#include "library/sysadm-moused.h"
#define DEBUG 0
//#define SCLISTDELIM QString("::::") //SysCache List Delimiter
@@ -82,7 +83,7 @@ RestOutputStruct::ExitCode WebSocket::AvailableSubsystems(bool allaccess, QJsonO
// - Generic system information
out->insert("sysadm/systemmanager","read/write");
// - PC-BSD Updater
// - PC-BSD/TrueOS Updater
if(QFile::exists("/usr/local/bin/pc-updatemanager")){
out->insert("sysadm/update", "read/write");
}
@@ -94,6 +95,11 @@ RestOutputStruct::ExitCode WebSocket::AvailableSubsystems(bool allaccess, QJsonO
// - Firewall Manager
out->insert("sysadm/firewall","read/write");
// - moused
if(QFile::exists("/usr/sbin/moused")){
out->insert("sysadm/moused", "read/write");
}
return RestOutputStruct::OK;
}
@@ -149,6 +155,8 @@ RestOutputStruct::ExitCode WebSocket::EvaluateBackendRequest(const RestInputStru
return EvaluateSysadmServiceRequest(IN.args, out);
}else if(namesp=="sysadm" && name=="firewall"){
return EvaluateSysadmFirewallRequest(IN.args, out);
}else if(namesp=="sysadm" && name=="moused"){
return EvaluateSysadmMousedRequest(IN.args, out);
}else{
return RestOutputStruct::BADREQUEST;
}
@@ -1211,3 +1219,26 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmFirewallRequest(const QJsonV
}
return (ok ? RestOutputStruct::OK : RestOutputStruct::BADREQUEST);
}
RestOutputStruct::ExitCode WebSocket::EvaluateSysadmMousedRequest(const QJsonValue in_args, QJsonObject *out){
QString action = in_args.toObject().value("action").toString();
QJsonObject outobj;
if(action == "list_devices"){
outobj = sysadm::moused::listDevices();
}else if(action == "list_device_options"){
}else if(action == "read_device_options"){
}else if(action == "set_device_options"){
}
//check return structure for validity
if(!outobj.keys().isEmpty()){
out->insert(action, outobj);
return RestOutputStruct::OK;
}else{
return RestOutputStruct::BADREQUEST;
}
}

View File

@@ -96,6 +96,8 @@ private:
RestOutputStruct::ExitCode EvaluateSysadmServiceRequest(const QJsonValue in_args, QJsonObject *out);
// -- sysadm Firewall Manager API
RestOutputStruct::ExitCode EvaluateSysadmFirewallRequest(const QJsonValue in_args, QJsonObject *out);
// -- sysadm moused API
RestOutputStruct::ExitCode EvaluateSysadmMousedRequest(const QJsonValue in_args, QJsonObject *out);
private slots:
void sendReply(QString msg);

View File

@@ -15,7 +15,8 @@ HEADERS += $${PWD}/sysadm-global.h \
$${PWD}/sysadm-update.h \
$${PWD}/sysadm-users.h \
$${PWD}/sysadm-zfs.h \
$${PWD}/sysadm-pkg.h
$${PWD}/sysadm-pkg.h \
$${PWD}/sysadm-moused.h
SOURCES += $${PWD}/NetDevice.cpp \
$${PWD}/sysadm-general.cpp \
@@ -31,4 +32,5 @@ SOURCES += $${PWD}/NetDevice.cpp \
$${PWD}/sysadm-update.cpp \
$${PWD}/sysadm-users.cpp \
$${PWD}/sysadm-zfs.cpp \
$${PWD}/sysadm-pkg.cpp
$${PWD}/sysadm-pkg.cpp \
$${PWD}/sysadm-moused.cpp