blob: 2867770bc5a9153b0254d79abfff6612646f5734 [file] [log] [blame]
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +01001<?php
2require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +02003require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/triggers.admin.inc.php';
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +01004
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +02005protect_route(['admin']);
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +01006
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +01007require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/header.inc.php';
8$_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +01009$clamd_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_CLAMD"])) ? false : true;
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020010$olefy_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_OLEFY"])) ? false : true;
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010011
Matthias Andreas Benkard3c18a082022-12-27 17:32:58 +010012
13if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CACHE')) {
14 $_SESSION['gal'] = json_decode($license_cache, true);
15}
16
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020017$js_minifier->add('/web/js/site/dashboard.js');
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010018
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 Benkard97f12022026-10-23 08:46:40 +020024$containers_info = (array) docker('info');
25if ($clamd_status === false) unset($containers_info['clamd-mailcow']);
26if ($olefy_status === false) unset($containers_info['olefy-mailcow']);
27ksort($containers_info);
28$containers = array();
29foreach ($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 Benkardb4b5cc12021-12-28 18:02:04 +010033 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 Benkard9dabdab2024-03-06 13:12:09 +010044 try {
45 $user_tz = new DateTimeZone(getenv('TZ'));
46 $date->setTimezone($user_tz);
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020047 $container_info['State']['StartedAtHR'] = $date->format('r');
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010048 } catch(Exception $e) {
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020049 $container_info['State']['StartedAtHR'] = '?';
Matthias Andreas Benkard9dabdab2024-03-06 13:12:09 +010050 }
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010051 }
52 else {
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020053 $container_info['State']['StartedAtHR'] = '?';
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010054 }
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020055 $containers[$container] = $container_info;
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010056}
57
Matthias Andreas Benkard3c18a082022-12-27 17:32:58 +010058// get mailcow data
59$hostname = getenv('MAILCOW_HOSTNAME');
60$timezone = getenv('TZ');
61
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020062$template = 'dashboard.twig';
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010063$template_data = [
64 'log_lines' => getenv('LOG_LINES'),
65 'vmail_df' => $vmail_df,
Matthias Andreas Benkard3c18a082022-12-27 17:32:58 +010066 'hostname' => $hostname,
67 'timezone' => $timezone,
68 'gal' => @$_SESSION['gal'],
69 'license_guid' => license('guid'),
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010070 'clamd_status' => $clamd_status,
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +020071 'olefy_status' => $olefy_status,
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010072 'containers' => $containers,
Matthias Andreas Benkardd63fe562023-11-18 13:18:30 +010073 'ip_check' => customize('get', 'ip_check'),
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010074 'lang_admin' => json_encode($lang['admin']),
Matthias Andreas Benkard3c18a082022-12-27 17:32:58 +010075 'lang_debug' => json_encode($lang['debug']),
76 'lang_datatables' => json_encode($lang['datatables']),
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010077];
78
Matthias Andreas Benkard4edeb9f2021-01-02 15:32:21 +010079require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';
Matthias Andreas Benkardb4b5cc12021-12-28 18:02:04 +010080
81