From 13c22169624e5633977ed62b95aed844301881ac Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 4 Jul 2023 14:10:46 +0200 Subject: [systemstatus] Show (estimate) of last time updates were installed Plus other minor tweaks, like message on main page. --- modules-available/systemstatus/page.inc.php | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'modules-available/systemstatus/page.inc.php') diff --git a/modules-available/systemstatus/page.inc.php b/modules-available/systemstatus/page.inc.php index 302e150d..34dbcc84 100644 --- a/modules-available/systemstatus/page.inc.php +++ b/modules-available/systemstatus/page.inc.php @@ -123,7 +123,7 @@ class Page_SystemStatus extends Page protected function ajaxListUpgradable() { - User::assertPermission("apt.*"); + User::assertPermission("tab.listupgradable"); if (User::hasPermission('apt.update') && Taskmanager::isRunning(Taskmanager::status(self::TM_UPDATE_UUID))) { @@ -137,15 +137,9 @@ class Page_SystemStatus extends Page $task = Taskmanager::submit('AptGetUpgradable'); // Estimate last time package list was updated - $osRelease = parse_ini_file('/etc/os-release'); - $lastDownload = filemtime('/var/lib/apt/lists/partial'); - $lastChanged = 0; - foreach (glob('/var/lib/apt/lists/*_dists_' . ($osRelease['VERSION_CODENAME'] ?? '') . '*_InRelease', GLOB_NOSORT) as $f) { - $b = basename($f); - if (preg_match('/dists_[a-z]+(?:[\-_]updates)?_InRelease$/', $b)) { - $lastChanged = max($lastChanged, filemtime($f)); - } - } + $lastPackageInstalled = SystemStatus::getDpkgLastPackageChanges(); + $lastListDownloadAttempt = SystemStatus::getAptLastUpdateAttemptTime(); + $updateDbTime = SystemStatus::getAptLastDbUpdateTime(); $perms = []; Permission::addGlobalTags($perms, 0, ['apt.update', 'apt.upgrade', 'apt.autoremove', 'apt.fix']); @@ -160,14 +154,17 @@ class Page_SystemStatus extends Page if (!Taskmanager::isFailed($task) && empty($task['data']['packages'])) { $task['data']['error'] = ''; } + } else { + $task['data']['error'] = 'ECONNREFUSED'; } echo Render::parse('sys-update-main', [ 'task' => $task['data'], - 'lastDownload' => Util::prettyTime($lastDownload), - 'lastChanged' => Util::prettyTime($lastChanged), + 'lastDownload' => Util::prettyTime($lastListDownloadAttempt), + 'lastChanged' => Util::prettyTime($updateDbTime), + 'lastInstalled' => Util::prettyTime($lastPackageInstalled), 'perm' => $perms, - 'list_old' => $lastDownload + 86400 < time(), + 'list_old' => $lastListDownloadAttempt + 86400 < time(), ]); } -- cgit v1.2.3-55-g7522