mirror of
https://github.com/outbackdingo/sysadm.git
synced 2026-01-27 02:20:17 +00:00
API CHANGE:
Two new actions for the sysadm/update class: "listlogs" and "readlogs";
REST Request (example):
-------------------------------
PUT /sysadm/update
{
"action" : "listlogs"
}
WebSocket Request:
-------------------------------
{
"namespace" : "sysadm",
"name" : "update",
"args" : {
"action" : "listlogs"
},
"id" : "fooid"
}
Response:
-------------------------------
{
"args": {
"listlogs": {
"pc-updatemanager.log": {
"finished": "1484127618",
"name": "pc-updatemanager.log",
"started": "1484127618"
},
"pc-updatemanager.log.prev": {
"finished": "1484109171",
"name": "pc-updatemanager.log.prev",
"started": "1484109171"
}
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
===================================
REST Request (example):
-------------------------------
PUT /sysadm/update
{
"logs" : [
"pc-updatemanager.log"
],
"action" : "readlogs"
}
WebSocket Request:
-------------------------------
{
"id" : "fooid",
"namespace" : "sysadm",
"name" : "update",
"args" : {
"logs" : [
"pc-updatemanager.log"
],
"action" : "readlogs"
}
}
Response:
-------------------------------
{
"args": {
"readlogs": {
"pc-updatemanager.log": "pc-updatemanager: Tue Jan 10 23:32:51 EST 2017\nChecking for updates to ports-mgmt/pkg..\nUpdating the package repo database...\nCleaning old pkg upgrade cache...\n<Shortened For Example>\nDetermine new BE name...\nCleanup mounts..."
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
This commit is contained in:
@@ -603,6 +603,14 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmUpdateRequest(const QJsonVal
|
||||
}else if(act=="changesettings"){
|
||||
ok = true;
|
||||
out->insert("changesettings", sysadm::Update::writeSettings(in_args.toObject()) );
|
||||
|
||||
}else if(act=="listlogs"){
|
||||
ok = true;
|
||||
out->insert("listlogs", sysadm::Update::listLogs() );
|
||||
|
||||
}else if(act=="readlogs" && in_args.toObject().contains("logs") ){
|
||||
ok = true;
|
||||
out->insert("readlogs", sysadm::Update::readLog(in_args.toObject()) );
|
||||
}
|
||||
|
||||
} //end of "action" key usage
|
||||
|
||||
@@ -310,3 +310,38 @@ QJsonObject Update::writeSettings(QJsonObject obj){
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
//List/Read update logs
|
||||
QJsonObject Update::listLogs(){
|
||||
QJsonObject out;
|
||||
QDir logdir("/var/log");
|
||||
QFileInfoList logs = logdir.entryInfoList(QStringList() << "pc-updatemanager*", QDir::Files, QDir::Time);
|
||||
for(int i=0; i<logs.length(); i++){
|
||||
QJsonObject tmp;
|
||||
tmp.insert("started", QString::number( logs[i].created().toTime_t() ) );
|
||||
tmp.insert("finished", QString::number( logs[i].lastModified().toTime_t() ) );
|
||||
tmp.insert("name", logs[i].fileName());
|
||||
out.insert(logs[i].fileName(), tmp);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
QJsonObject Update::readLog(QJsonObject obj){
|
||||
QJsonObject ret;
|
||||
//Check Inputs
|
||||
if(obj.contains("logs")){
|
||||
QJsonValue val = obj.value("logs");
|
||||
QStringList logs;
|
||||
if(val.isString()){ logs << val.toString(); }
|
||||
else if(val.isArray()){ logs = General::JsonArrayToStringList(obj.value("logs").toArray()); }
|
||||
QString logdir = "/var/log/";
|
||||
for(int i=0; i<logs.length(); i++){
|
||||
if(!logs[i].startsWith("pc-updatemanager")){ continue; } //wrong type of log file - this only handles pc-updatemanager logs
|
||||
QStringList info = General::readTextFile(logdir+logs[i]);
|
||||
if(!info.isEmpty()){
|
||||
ret.insert(logs[i], info.join("\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -26,10 +26,12 @@ public:
|
||||
//Read/write update settings
|
||||
static QJsonObject readSettings();
|
||||
static QJsonObject writeSettings(QJsonObject);
|
||||
|
||||
//List/Read update logs
|
||||
static QJsonObject listLogs();
|
||||
static QJsonObject readLog(QJsonObject);
|
||||
|
||||
};
|
||||
|
||||
} //end of pcbsd namespace
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user