Add new content to the "USB" variables submenu Add new content to the "USB" submenu Add new content to the "Services" submenu
276 lines
12 KiB
PHP
276 lines
12 KiB
PHP
<?php
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Pi.Alert
|
|
// Open Source Network Guard / WIFI & LAN intrusion detector
|
|
//
|
|
// devices.php - Front module. Server side. Manage Devices
|
|
//------------------------------------------------------------------------------
|
|
// Puche 2021 pi.alert.application@gmail.com GNU GPLv3
|
|
// jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3
|
|
// leiweibau 2022 https://github.com/leiweibau GNU GPLv3
|
|
// cvc90 2023 https://github.com/cvc90 GNU GPLv3
|
|
//------------------------------------------------------------------------------
|
|
|
|
?>
|
|
<?php
|
|
error_reporting(0);// Turn off php errors
|
|
require 'php/templates/header.php';
|
|
?>
|
|
<!-- Page ------------------------------------------------------------------ -->
|
|
<div class="content-wrapper">
|
|
|
|
<!-- Content header--------------------------------------------------------- -->
|
|
<section class="content-header">
|
|
<?php require 'php/templates/notification.php'; ?>
|
|
<h1 id="pageTitle">
|
|
<?= lang('SYSTEM_TITLE') ;?>
|
|
</h1>
|
|
</section>
|
|
|
|
<!-- Main content ---------------------------------------------------------- -->
|
|
<section class="content">
|
|
|
|
<?php
|
|
// OS-Version
|
|
$os_version = '';
|
|
// Raspbian
|
|
if ($os_version == '') {$os_version = exec('cat /etc/os-release | grep PRETTY_NAME');}
|
|
// Dietpi
|
|
if ($os_version == '') {$os_version = exec('uname -o');}
|
|
//$os_version_arr = explode("\n", trim($os_version));
|
|
$stat['os_version'] = str_replace('"', '', str_replace('PRETTY_NAME=', '', $os_version));
|
|
$stat['uptime'] = str_replace('up ', '', shell_exec("uptime -p"));
|
|
//cpu stat
|
|
$prevVal = shell_exec("cat /proc/cpuinfo | grep processor");
|
|
$prevArr = explode("\n", trim($prevVal));
|
|
$stat['cpu'] = sizeof($prevArr);
|
|
$cpu_result = shell_exec("cat /proc/cpuinfo | grep Model");
|
|
$stat['cpu_model'] = strstr($cpu_result, "\n", true);
|
|
$stat['cpu_model'] = str_replace(":", "", trim(str_replace("Model", "", $stat['cpu_model'])));
|
|
if ($stat['cpu_model'] == '') {
|
|
$cpu_result = shell_exec("cat /proc/cpuinfo | grep model\ name");
|
|
$stat['cpu_model'] = strstr($cpu_result, "\n", true);
|
|
$stat['cpu_model'] = str_replace(":", "", trim(str_replace("model name", "", $stat['cpu_model'])));
|
|
}
|
|
if (file_exists('/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq')) {
|
|
// RaspbianOS
|
|
$stat['cpu_frequ'] = exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq') / 1000;
|
|
} elseif (is_numeric(str_replace(',', '.', exec('lscpu | grep "MHz" | awk \'{print $3}\'')))) {
|
|
// Ubuntu Server, DietPi event. others
|
|
$stat['cpu_frequ'] = round(exec('lscpu | grep "MHz" | awk \'{print $3}\''), 0);
|
|
} elseif (is_numeric(str_replace(',', '.', exec('lscpu | grep "max MHz" | awk \'{print $4}\'')))) {
|
|
// RaspbianOS and event. others
|
|
$stat['cpu_frequ'] = round(str_replace(',', '.', exec('lscpu | grep "max MHz" | awk \'{print $4}\'')), 0);
|
|
} else {
|
|
// Fallback
|
|
$stat['cpu_frequ'] = "unknown";
|
|
}
|
|
//memory stat
|
|
$total_memory = shell_exec("cat /proc/meminfo | grep MemTotal | cut -d' ' -f2-") / 1024 | bc;
|
|
$mem_result = shell_exec("cat /proc/meminfo | grep MemTotal");
|
|
$stat['mem_total'] = round(preg_replace("#[^0-9]+(?:\.[0-9]*)?#", "", $mem_result) / 1024 / 1024, 3);
|
|
$stat['mem_used'] = round(memory_get_usage() / 1048576 * 100, 2);
|
|
$memory_usage_percent = round(($stat['mem_used'] / $stat['mem_total']), 2);
|
|
//Load System
|
|
$load_average = sys_getloadavg();
|
|
//Date & Time
|
|
$date = new DateTime();
|
|
$formatted_date = $date->format('l, F j, Y H:i:s');
|
|
$formatted_date2 = $date->format('d/m/Y H:i:s');
|
|
$formatted_date3 = $date->format('Y/m/d H:i:s');
|
|
//hdd stat
|
|
$hdd_result = shell_exec("df | awk '{print $1}'");
|
|
$hdd_devices = explode("\n", trim($hdd_result));
|
|
$hdd_result = shell_exec("df | awk '{print $2}'");
|
|
$hdd_devices_total = explode("\n", trim($hdd_result));
|
|
$hdd_result = shell_exec("df | awk '{print $3}'");
|
|
$hdd_devices_used = explode("\n", trim($hdd_result));
|
|
$hdd_result = shell_exec("df | awk '{print $4}'");
|
|
$hdd_devices_free = explode("\n", trim($hdd_result));
|
|
$hdd_result = shell_exec("df | awk '{print $5}'");
|
|
$hdd_devices_percent = explode("\n", trim($hdd_result));
|
|
$hdd_result = shell_exec("df | awk '{print $6}'");
|
|
$hdd_devices_mount = explode("\n", trim($hdd_result));
|
|
//usb devices
|
|
$usb_result = shell_exec("lsusb");
|
|
$usb_devices_mount = explode("\n", trim($usb_result));
|
|
|
|
// Client ----------------------------------------------------------
|
|
echo '<div class="box box-solid">
|
|
<div class="box-header">
|
|
<h3 class="box-title sysinfo_headline"><i class="fa fa-globe"></i> This Client</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">User Agent</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $_SERVER['HTTP_USER_AGENT'] . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Browser Resolution:</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b" id="resolution"></div>
|
|
</div>
|
|
</div>
|
|
</div>';
|
|
|
|
// General ----------------------------------------------------------
|
|
echo '<div class="box box-solid">
|
|
<div class="box-header">
|
|
<h3 class="box-title sysinfo_headline"><i class="fa fa-info-circle"></i> General</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Full Date</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $formatted_date . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Date</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $formatted_date2 . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Date2</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $formatted_date3 . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Timezone</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $timeZone . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Uptime</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $stat['uptime'] . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Operating System</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $stat['os_version'] . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">CPU Name:</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $stat['cpu_model'] . '</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">CPU Cores:</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $stat['cpu'] . ' @ ' . $stat['cpu_frequ'] . ' MHz</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Memory:</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $stat['mem_used'] . ' MB / ' . $stat['mem_total'] . ' MB</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Memory %:</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $memory_usage_percent . ' %</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Total memory:</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">' . $total_memory . ' MB</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 sysinfo_gerneral_a">Load AVG:</div>
|
|
<div class="col-sm-9 sysinfo_gerneral_b">'. $load_average[0] .' '. $load_average[1] .' '. $load_average[2] .'</div>
|
|
</div>
|
|
</div>
|
|
</div>';
|
|
|
|
echo '<script>
|
|
var ratio = window.devicePixelRatio || 1;
|
|
var w = window.innerWidth;
|
|
var h = window.innerHeight;
|
|
var rw = window.innerWidth * ratio;
|
|
var rh = window.innerHeight * ratio;
|
|
|
|
var resolutionDiv = document.getElementById("resolution");
|
|
resolutionDiv.innerHTML = "Width: " + w + "px / Height: " + h + "px<br> " + "Width: " + rw + "px / Height: " + rh + "px (native)";
|
|
</script>';
|
|
|
|
// Storage usage ----------------------------------------------------------
|
|
echo '<div class="box box-solid">
|
|
<div class="box-header">
|
|
<h3 class="box-title sysinfo_headline"><i class="fa fa-hdd"></i> Storage usage</h3>
|
|
</div>
|
|
<div class="box-body">';
|
|
for ($x = 0; $x < sizeof($hdd_devices); $x++) {
|
|
if (stristr($hdd_devices[$x], '/dev/')) {
|
|
if ($hdd_devices_total[$x] == 0) {$temp_total = 0;} else { $temp_total = number_format(round(($hdd_devices_total[$x] / 1024 / 1024), 2), 2, ',', '.');}
|
|
if ($hdd_devices_used[$x] == 0) {$temp_used = 0;} else { $temp_used = number_format(round(($hdd_devices_used[$x] / 1024 / 1024), 2), 2, ',', '.');}
|
|
if ($hdd_devices_free[$x] == 0) {$temp_free = 0;} else { $temp_free = number_format(round(($hdd_devices_free[$x] / 1024 / 1024), 2), 2, ',', '.');}
|
|
echo '<div class="row">';
|
|
echo '<div class="col-sm-4 sysinfo_gerneral_a">Mount point "' . $hdd_devices_mount[$x] . '"</div>';
|
|
echo '<div class="col-sm-2 sysinfo_gerneral_b">Total: ' . $temp_total . ' GB</div>';
|
|
echo '<div class="col-sm-3 sysinfo_gerneral_b">Used: ' . $temp_used . ' GB (' . number_format($hdd_devices_percent[$x], 1, ',', '.') . '%)</div>';
|
|
echo '<div class="col-sm-2 sysinfo_gerneral_b">Free: ' . $temp_free . ' GB</div>';
|
|
echo '</div>';
|
|
}
|
|
}
|
|
echo '<br>' . $pia_lang['SysInfo_storage_note'];
|
|
echo ' </div>
|
|
</div>';
|
|
|
|
// Services ----------------------------------------------------------
|
|
echo '<div class="box box-solid">
|
|
<div class="box-header">
|
|
<h3 class="box-title sysinfo_headline"><i class="fa fa-database"></i> Services (running)</h3>
|
|
</div>
|
|
<div class="box-body">';
|
|
echo '<div style="height: 300px; overflow: scroll;">';
|
|
exec('systemctl --type=service --state=running', $running_services);
|
|
echo '<table class="table table-bordered table-hover table-striped dataTable no-footer" style="margin-bottom: 10px;">';
|
|
echo '<thead>
|
|
<tr role="row">
|
|
<th style="padding: 8px;">Service Name</th>
|
|
<th style="padding: 8px;">Service Description</th>
|
|
</tr>
|
|
</thead>';
|
|
$table_color = 'odd';
|
|
for ($x = 0; $x < sizeof($running_services); $x++) {
|
|
if (stristr($running_services[$x], '.service')) {
|
|
$temp_services_arr = array_values(array_filter(explode(' ', trim($running_services[$x]))));
|
|
$servives_name = $temp_services_arr[0];
|
|
unset($temp_services_arr[0], $temp_services_arr[1], $temp_services_arr[2], $temp_services_arr[3]);
|
|
$servives_description = implode(" ", $temp_services_arr);
|
|
if ($table_color == 'odd') {$table_color = 'even';} else { $table_color = 'odd';}
|
|
|
|
echo '<tr class="' . $table_color . '"><td style="padding: 3px; padding-left: 10px;">' . substr($servives_name, 0, -8) . '</td><td style="padding: 3px; padding-left: 10px;">' . $servives_description . '</td></tr>';
|
|
}
|
|
}
|
|
echo '</table>';
|
|
echo '</div>';
|
|
echo ' </div>
|
|
</div>';
|
|
|
|
// USB ----------------------------------------------------------
|
|
echo '<div class="box box-solid">
|
|
<div class="box-header">
|
|
<h3 class="box-title sysinfo_headline"><i class="fab fa-usb"></i> USB Devices</h3>
|
|
</div>
|
|
<div class="box-body">';
|
|
echo ' <table class="table table-bordered table-hover table-striped dataTable no-footer" style="margin-bottom: 10px;">';
|
|
|
|
$table_color = 'odd';
|
|
sort($usb_devices_mount);
|
|
for ($x = 0; $x < sizeof($usb_devices_mount); $x++) {
|
|
$cut_pos = strpos($usb_devices_mount[$x], ':');
|
|
$usb_bus = substr($usb_devices_mount[$x], 0, $cut_pos);
|
|
$usb_dev = substr($usb_devices_mount[$x], $cut_pos + 1);
|
|
|
|
if ($table_color == 'odd') {$table_color = 'even';} else { $table_color = 'odd';}
|
|
echo '<tr class="' . $table_color . '"><td style="padding: 3px; padding-left: 10px; width: 150px;"><b>' . str_replace('Device', 'Dev.', $usb_bus) . '</b></td><td style="padding: 3px; padding-left: 10px;">' . $usb_dev . '</td></tr>';
|
|
}
|
|
echo ' </table>';
|
|
echo ' </div>
|
|
</div>';
|
|
echo '<br>';
|
|
|
|
|
|
?>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
<!-- /.content -->
|
|
<?php
|
|
require 'php/templates/footer.php';
|
|
?>
|
|
</div>
|
|
<!-- /.content-wrapper -->
|
|
|
|
<!-- ----------------------------------------------------------------------- -->
|