| Matthias Andreas Benkard | 4edeb9f | 2021-01-02 15:32:21 +0100 | [diff] [blame] | 1 | <?php |
| 2 | require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php'; |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 3 | require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/triggers.admin.inc.php'; |
| Matthias Andreas Benkard | 4edeb9f | 2021-01-02 15:32:21 +0100 | [diff] [blame] | 4 | |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 5 | protect_route(['admin']); |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 6 | |
| Matthias Andreas Benkard | 4edeb9f | 2021-01-02 15:32:21 +0100 | [diff] [blame] | 7 | require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/header.inc.php'; |
| 8 | $_SESSION['return_to'] = $_SERVER['REQUEST_URI']; |
| Matthias Andreas Benkard | 4edeb9f | 2021-01-02 15:32:21 +0100 | [diff] [blame] | 9 | $clamd_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_CLAMD"])) ? false : true; |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 10 | $olefy_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_OLEFY"])) ? false : true; |
| Matthias Andreas Benkard | 4edeb9f | 2021-01-02 15:32:21 +0100 | [diff] [blame] | 11 | |
| Matthias Andreas Benkard | 3c18a08 | 2022-12-27 17:32:58 +0100 | [diff] [blame] | 12 | |
| 13 | if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CACHE')) { |
| 14 | $_SESSION['gal'] = json_decode($license_cache, true); |
| 15 | } |
| 16 | |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 17 | $js_minifier->add('/web/js/site/dashboard.js'); |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 18 | |
| 19 | // vmail df |
| 20 | $exec_fields = array('cmd' => 'system', 'task' => 'df', 'dir' => '/var/vmail'); |
| 21 | $vmail_df = explode(',', (string)json_decode(docker('post', 'dovecot-mailcow', 'exec', $exec_fields), true)); |
| 22 | |
| 23 | // containers |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 24 | $containers_info = (array) docker('info'); |
| 25 | if ($clamd_status === false) unset($containers_info['clamd-mailcow']); |
| 26 | if ($olefy_status === false) unset($containers_info['olefy-mailcow']); |
| 27 | ksort($containers_info); |
| 28 | $containers = array(); |
| 29 | foreach ($containers_info as $container => $container_info) { |
| 30 | if (!isset($container_info['State']) || !is_array($container_info['State']) || !isset($container_info['State']['StartedAt'])){ |
| 31 | continue; |
| 32 | } |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 33 | date_default_timezone_set('UTC'); |
| 34 | $StartedAt = date_parse($container_info['State']['StartedAt']); |
| 35 | if ($StartedAt['hour'] !== false) { |
| 36 | $date = new \DateTime(); |
| 37 | $date->setTimestamp(mktime( |
| 38 | $StartedAt['hour'], |
| 39 | $StartedAt['minute'], |
| 40 | $StartedAt['second'], |
| 41 | $StartedAt['month'], |
| 42 | $StartedAt['day'], |
| 43 | $StartedAt['year'])); |
| Matthias Andreas Benkard | 9dabdab | 2024-03-06 13:12:09 +0100 | [diff] [blame] | 44 | try { |
| 45 | $user_tz = new DateTimeZone(getenv('TZ')); |
| 46 | $date->setTimezone($user_tz); |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 47 | $container_info['State']['StartedAtHR'] = $date->format('r'); |
| Matthias Andreas Benkard | 9dabdab | 2024-03-06 13:12:09 +0100 | [diff] [blame] | 48 | } catch(Exception $e) { |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 49 | $container_info['State']['StartedAtHR'] = '?'; |
| Matthias Andreas Benkard | 9dabdab | 2024-03-06 13:12:09 +0100 | [diff] [blame] | 50 | } |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 51 | } |
| 52 | else { |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 53 | $container_info['State']['StartedAtHR'] = '?'; |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 54 | } |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 55 | $containers[$container] = $container_info; |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 56 | } |
| 57 | |
| Matthias Andreas Benkard | 3c18a08 | 2022-12-27 17:32:58 +0100 | [diff] [blame] | 58 | // get mailcow data |
| 59 | $hostname = getenv('MAILCOW_HOSTNAME'); |
| 60 | $timezone = getenv('TZ'); |
| 61 | |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 62 | $template = 'dashboard.twig'; |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 63 | $template_data = [ |
| 64 | 'log_lines' => getenv('LOG_LINES'), |
| 65 | 'vmail_df' => $vmail_df, |
| Matthias Andreas Benkard | 3c18a08 | 2022-12-27 17:32:58 +0100 | [diff] [blame] | 66 | 'hostname' => $hostname, |
| 67 | 'timezone' => $timezone, |
| 68 | 'gal' => @$_SESSION['gal'], |
| 69 | 'license_guid' => license('guid'), |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 70 | 'clamd_status' => $clamd_status, |
| Matthias Andreas Benkard | 97f1202 | 2026-10-23 08:46:40 +0200 | [diff] [blame^] | 71 | 'olefy_status' => $olefy_status, |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 72 | 'containers' => $containers, |
| Matthias Andreas Benkard | d63fe56 | 2023-11-18 13:18:30 +0100 | [diff] [blame] | 73 | 'ip_check' => customize('get', 'ip_check'), |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 74 | 'lang_admin' => json_encode($lang['admin']), |
| Matthias Andreas Benkard | 3c18a08 | 2022-12-27 17:32:58 +0100 | [diff] [blame] | 75 | 'lang_debug' => json_encode($lang['debug']), |
| 76 | 'lang_datatables' => json_encode($lang['datatables']), |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 77 | ]; |
| 78 | |
| Matthias Andreas Benkard | 4edeb9f | 2021-01-02 15:32:21 +0100 | [diff] [blame] | 79 | require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php'; |
| Matthias Andreas Benkard | b4b5cc1 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 80 | |
| 81 | |