diff --git a/src/server/EventWatcher.cpp b/src/server/EventWatcher.cpp index 8b54458..9c59d2f 100644 --- a/src/server/EventWatcher.cpp +++ b/src/server/EventWatcher.cpp @@ -9,6 +9,7 @@ #include "library/sysadm-general.h" #include "library/sysadm-zfs.h" #include "library/sysadm-update.h" +#include "library/sysadm-systemmanager.h" // === PUBLIC === EventWatcher::EventWatcher(){ @@ -370,8 +371,23 @@ void EventWatcher::CheckSystemState(){ if(!updates.isEmpty()){ if(updates.value("status").toString()!="noupdates"){ int tmp = 2; - if(updates.value("status").toString()=="rebootrequired"){ tmp = 9; } //user input required - else if(updates.value("status").toString()!="updaterunning"){ + if(updates.value("status").toString()=="rebootrequired"){ + tmp = 9; //user input required + //Check if the auto_update_reboot flag is set, and reboot as needed + QJsonObject upset = sysadm::Update::readSettings(); + if(upset.contains("auto_update_reboot")){ + bool ok = false; + int hour = upset.value("auto_update_reboot").toString().toInt(&ok); + if(ok){ //got a valid number + //Check if that time has recently happened + QDateTime finished = sysadm::Update::rebootRequiredSince(); + QDateTime cdt = QDateTime::currentDateTime(); + if( (finished.addSecs(60*60*24)