public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Trace
data/web/admin/dashboard.php
Trace helps you understand code history line by line. See who changed each line, when it changed, and which commit introduced it.
Author
Date
Commit
Line
Code
1
<?php
2
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';
3
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/triggers.admin.inc.php';
5
protect_route(['admin']);
7
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/header.inc.php';
8
$_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
9
$clamd_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_CLAMD"])) ? false : true;
10
$olefy_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_OLEFY"])) ? false : true;
13
if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CACHE')) {
14
$_SESSION['gal'] = json_decode($license_cache, true);
15
}
17
$js_minifier->add('/web/js/site/dashboard.js');
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));
23
// containers
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
}
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']));
44
try {
45
$user_tz = new DateTimeZone(getenv('TZ'));
46
$date->setTimezone($user_tz);
47
$container_info['State']['StartedAtHR'] = $date->format('r');
48
} catch(Exception $e) {
49
$container_info['State']['StartedAtHR'] = '?';
50
}
51
}
52
else {
53
$container_info['State']['StartedAtHR'] = '?';
54
}
55
$containers[$container] = $container_info;
56
}
58
// get mailcow data
59
$hostname = getenv('MAILCOW_HOSTNAME');
60
$timezone = getenv('TZ');
62
$template = 'dashboard.twig';
63
$template_data = [
64
'log_lines' => getenv('LOG_LINES'),
65
'vmail_df' => $vmail_df,
66
'hostname' => $hostname,
67
'timezone' => $timezone,
68
'gal' => @$_SESSION['gal'],
69
'license_guid' => license('guid'),
70
'clamd_status' => $clamd_status,
71
'olefy_status' => $olefy_status,
72
'containers' => $containers,
73
'ip_check' => customize('get', 'ip_check'),
74
'lang_admin' => json_encode($lang['admin']),
75
'lang_debug' => json_encode($lang['debug']),
76
'lang_datatables' => json_encode($lang['datatables']),
77
];
79
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';