Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 0c60937253296d81c68d8cde50df6fd8fbe21442
Author: Stephan de Wit <stephan.de.wit@deciso.com>
Date:   Mon Jul 1 15:00:43 2024 +0200

    dashboard: remove old widgets

commit 7a58bc05871388225412fa87bcc816aadf03237e
Author: Stephan de Wit <stephan.de.wit@deciso.com>
Date:   Mon Jul 1 14:57:33 2024 +0200

    Dashboard: match ACLs with implied pages and restructure system controller layer

commit 65e97442d57eeb6fb0c714b4493c4667d76ac8b0
Author: Stephan de Wit <stephan.de.wit@deciso.com>
Date:   Thu Jun 27 16:42:25 2024 +0200

    dashboard: update ACLs

commit e54a5b82b1f46158760346c45a4e80c5aaa182bf
Author: Stephan de Wit <stephan.de.wit@deciso.com>
Date:   Fri Jun 14 16:25:40 2024 +0200

    dashboard: VisibleName not necessary anymore

commit fc45589318a98315e93399575a67de368be01353
Author: Stephan de Wit <stephan.de.wit@deciso.com>
Date:   Fri Jun 14 16:15:06 2024 +0200

    dashboard: fix ACLs

commit 01f8e1c3e1357c61ed7e2db03fa5488d05535773
Author: Stephan de Wit <stephan.de.wit@deciso.com>
Date:   Fri Jun 14 14:03:30 2024 +0200

    dashboard: initial cleanup code
  • Loading branch information
AdSchellevis committed Jul 7, 2024
1 parent f587c30 commit cff24b7
Show file tree
Hide file tree
Showing 49 changed files with 341 additions and 4,686 deletions.
36 changes: 0 additions & 36 deletions plist
Original file line number Diff line number Diff line change
Expand Up @@ -2197,42 +2197,6 @@
/usr/local/www/vpn_ipsec_settings.php
/usr/local/www/vpn_openvpn_client.php
/usr/local/www/vpn_openvpn_server.php
/usr/local/www/widgets/api/get.php
/usr/local/www/widgets/api/plugins/system.inc
/usr/local/www/widgets/api/plugins/temperature.inc
/usr/local/www/widgets/include/carp_status.inc
/usr/local/www/widgets/include/cpu_usage.inc
/usr/local/www/widgets/include/gateways.inc
/usr/local/www/widgets/include/interface_list.inc
/usr/local/www/widgets/include/interface_statistics.inc
/usr/local/www/widgets/include/ipsec.inc
/usr/local/www/widgets/include/log.inc
/usr/local/www/widgets/include/monit.inc
/usr/local/www/widgets/include/ntp_status.inc
/usr/local/www/widgets/include/openvpn.inc
/usr/local/www/widgets/include/services_status.inc
/usr/local/www/widgets/include/system_log.inc
/usr/local/www/widgets/include/thermal_sensors.inc
/usr/local/www/widgets/include/traffic_graph.inc
/usr/local/www/widgets/include/wireguard.inc
/usr/local/www/widgets/widgets/carp_status.widget.php
/usr/local/www/widgets/widgets/cpu_usage.widget.php
/usr/local/www/widgets/widgets/gateways.widget.php
/usr/local/www/widgets/widgets/interface_list.widget.php
/usr/local/www/widgets/widgets/interface_statistics.widget.php
/usr/local/www/widgets/widgets/ipsec.widget.php
/usr/local/www/widgets/widgets/log.widget.php
/usr/local/www/widgets/widgets/monit.widget.php
/usr/local/www/widgets/widgets/ntp_status.widget.php
/usr/local/www/widgets/widgets/openvpn.widget.php
/usr/local/www/widgets/widgets/picture.widget.php
/usr/local/www/widgets/widgets/rss.widget.php
/usr/local/www/widgets/widgets/services_status.widget.php
/usr/local/www/widgets/widgets/system_information.widget.php
/usr/local/www/widgets/widgets/system_log.widget.php
/usr/local/www/widgets/widgets/thermal_sensors.widget.php
/usr/local/www/widgets/widgets/traffic_graphs.widget.php
/usr/local/www/widgets/widgets/wireguard.widget.php
/usr/local/www/wizard.php
/usr/local/www/xmlrpc.php
@sample /usr/local/etc/bogons.sample
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,28 +41,6 @@
*/
class SystemController extends ApiControllerBase
{
private function formatUptime($uptime)
{
$days = floor($uptime / (3600 * 24));
$hours = floor(($uptime % (3600 * 24)) / 3600);
$minutes = floor(($uptime % 3600) / 60);
$seconds = $uptime % 60;

if ($days > 0) {
$plural = $days > 1 ? gettext("days") : gettext("day");
return sprintf(
"%d %s, %02d:%02d:%02d",
$days,
$plural,
$hours,
$minutes,
$seconds
);
} else {
return sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds);
}
}

public function haltAction()
{
if ($this->request->isPost()) {
Expand Down Expand Up @@ -208,154 +186,4 @@ public function dismissStatusAction()

return ["status" => "failed"];
}

public function systemInformationAction()
{
$config = Config::getInstance()->object();
$backend = new Backend();

$product = json_decode($backend->configdRun('firmware product'), true);
$current = explode('_', $product['product_version'])[0];
/* information from changelog, more accurate for production release */
$from_changelog = strpos($product['product_id'], '-devel') === false &&
!empty($product['product_latest']) &&
$product['product_latest'] != $current;

/* update status from last check, also includes major releases */
$from_check = !empty($product['product_check']['upgrade_sets']) ||
!empty($product['product_check']['downgrade_packages']) ||
!empty($product['product_check']['new_packages']) ||
!empty($product['product_check']['reinstall_packages']) ||
!empty($product['product_check']['remove_packages']) ||
!empty($product['product_check']['upgrade_packages']);

$versions = [
sprintf('%s %s-%s', $product['product_name'], $product['product_version'], $product['product_arch']),
php_uname('s') . ' ' . php_uname('r'),
trim($backend->configdRun('system openssl version')),
];

if (!empty($product['product_license']['valid_to'])) {
$versions[] = sprintf(gettext('Licensed until %s'), $product['product_license']['valid_to']);
}

$response = [
'name' => $config->system->hostname . '.' . $config->system->domain,
'versions' => $versions,
'updates' => ($from_changelog || $from_check)
? gettext('Click to view pending updates.')
: gettext('Click to check for updates.'),
];

return $response;
}

public function systemTimeAction()
{
$config = Config::getInstance()->object();
$boottime = json_decode((new Backend())->configdRun('system sysctl values kern.boottime'), true);
preg_match("/sec = (\d+)/", $boottime['kern.boottime'], $matches);

$last_change = date("D M j G:i:s T Y", !empty($config->revision->time) ? intval($config->revision->time) : 0);

$response = [
'uptime' => $this->formatUptime(time() - $matches[1]),
'datetime' => date("D M j G:i:s T Y"),
'config' => $last_change,
];

return $response;
}

public function systemResourcesAction()
{
$result = [];

$mem = json_decode((new Backend())->configdpRun('system sysctl values', implode(',', [
'hw.physmem',
'vm.stats.vm.v_page_count',
'vm.stats.vm.v_inactive_count',
'vm.stats.vm.v_cache_count',
'vm.stats.vm.v_free_count',
'kstat.zfs.misc.arcstats.size'
])), true);

if (!empty($mem['vm.stats.vm.v_page_count'])) {
$pc = $mem['vm.stats.vm.v_page_count'];
$ic = $mem['vm.stats.vm.v_inactive_count'];
$cc = $mem['vm.stats.vm.v_cache_count'];
$fc = $mem['vm.stats.vm.v_free_count'];
$result['memory']['total'] = $mem['hw.physmem'];
$result['memory']['total_frmt'] = sprintf('%d', $mem['hw.physmem'] / 1024 / 1024);
$result['memory']['used'] = round(((($pc - ($ic + $cc + $fc))) / $pc) * $mem['hw.physmem'], 0);
$result['memory']['used_frmt'] = sprintf('%d', $result['memory']['used'] / 1024 / 1024);
if (!empty($mem['kstat.zfs.misc.arcstats.size'])) {
$arc_size = $mem['kstat.zfs.misc.arcstats.size'];
$result['memory']['arc'] = $arc_size;
$result['memory']['arc_frmt'] = sprintf('%d', $arc_size / 1024 / 1024);
$result['memory']['arc_txt'] = sprintf(gettext('ARC size %d MB'), $arc_size / 1024 / 1024);
}
} else {
$result['memory']['used'] = gettext('N/A');
}

return $result;
}

public function systemDiskAction()
{
$result = [];

$disk_info = json_decode((new Backend())->configdRun('system diag disk'), true);

if (!empty($disk_info['storage-system-information'])) {
foreach ($disk_info['storage-system-information']['filesystem'] as $fs) {
if (!in_array(trim($fs['type']), ['cd9660', 'msdosfs', 'tmpfs', 'ufs', 'zfs'])) {
continue;
}

$result['devices'][] = [
'device' => $fs['name'],
'type' => trim($fs['type']),
'blocks' => $fs['blocks'],
'used' => $fs['used'],
'available' => $fs['available'],
'used_pct' => $fs['used-percent'],
'mountpoint' => $fs['mounted-on'],
];
}
}

return $result;
}

public function systemMbufAction()
{
return json_decode((new Backend())->configdRun('system show mbuf'), true);
}

public function systemSwapAction()
{
return json_decode((new Backend())->configdRun('system show swapinfo'), true);
}

public function systemTemperatureAction()
{
$result = [];

foreach (explode("\n", (new Backend())->configdRun('system temp')) as $temp) {
$parts = explode('=', $temp);
if (count($parts) >= 2) {
$tempItem = array();
$tempItem['device'] = $parts[0];
$tempItem['device_seq'] = filter_var($tempItem['device'], FILTER_SANITIZE_NUMBER_INT);
$tempItem['temperature'] = trim(str_replace('C', '', $parts[1]));
$tempItem['type'] = strpos($tempItem['device'], 'hw.acpi') !== false ? "zone" : "core";
$tempItem['type_translated'] = $tempItem['type'] == "zone" ? gettext("Zone") : gettext("Core");
$result[] = $tempItem;
}
}

return $result;
}
}
Loading

0 comments on commit cff24b7

Please sign in to comment.