debug.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';
  3. if (!isset($_SESSION['mailcow_cc_role']) || $_SESSION['mailcow_cc_role'] != "admin") {
  4. header('Location: /');
  5. exit();
  6. }
  7. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/header.inc.php';
  8. $_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
  9. $solr_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_SOLR"])) ? false : solr_status();
  10. $clamd_status = (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["SKIP_CLAMD"])) ? false : true;
  11. $js_minifier->add('/web/js/site/debug.js');
  12. // vmail df
  13. $exec_fields = array('cmd' => 'system', 'task' => 'df', 'dir' => '/var/vmail');
  14. $vmail_df = explode(',', (string)json_decode(docker('post', 'dovecot-mailcow', 'exec', $exec_fields), true));
  15. // containers
  16. $containers = (array) docker('info');
  17. if ($clamd_status === false) unset($containers['clamd-mailcow']);
  18. if ($solr_status === false) unset($containers['solr-mailcow']);
  19. ksort($containers);
  20. foreach ($containers as $container => $container_info) {
  21. date_default_timezone_set('UTC');
  22. $StartedAt = date_parse($container_info['State']['StartedAt']);
  23. if ($StartedAt['hour'] !== false) {
  24. $date = new \DateTime();
  25. $date->setTimestamp(mktime(
  26. $StartedAt['hour'],
  27. $StartedAt['minute'],
  28. $StartedAt['second'],
  29. $StartedAt['month'],
  30. $StartedAt['day'],
  31. $StartedAt['year']));
  32. $user_tz = new DateTimeZone(getenv('TZ'));
  33. $date->setTimezone($user_tz);
  34. $started = $date->format('r');
  35. }
  36. else {
  37. $started = '?';
  38. }
  39. $containers[$container]['State']['StartedAtHR'] = $started;
  40. }
  41. // get mailcow data
  42. $hostname = getenv('MAILCOW_HOSTNAME');
  43. $timezone = getenv('TZ');
  44. // get public ips
  45. $curl = curl_init();
  46. curl_setopt($curl, CURLOPT_URL, 'http://ipv4.mailcow.email');
  47. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  48. curl_setopt($curl, CURLOPT_POST, 0);
  49. $ipv4 = curl_exec($curl);
  50. curl_setopt($curl, CURLOPT_URL, 'http://ipv6.mailcow.email');
  51. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  52. curl_setopt($curl, CURLOPT_POST, 0);
  53. $ipv6 = curl_exec($curl);
  54. $ips = array(
  55. "ipv4" => $ipv4,
  56. "ipv6" => $ipv6
  57. );
  58. curl_close($curl);
  59. $template = 'debug.twig';
  60. $template_data = [
  61. 'log_lines' => getenv('LOG_LINES'),
  62. 'vmail_df' => $vmail_df,
  63. 'hostname' => $hostname,
  64. 'timezone' => $timezone,
  65. 'ips' => $ips,
  66. 'solr_status' => $solr_status,
  67. 'solr_uptime' => round($solr_status['status']['dovecot-fts']['uptime'] / 1000 / 60 / 60),
  68. 'clamd_status' => $clamd_status,
  69. 'containers' => $containers,
  70. 'lang_admin' => json_encode($lang['admin']),
  71. 'lang_debug' => json_encode($lang['debug']),
  72. 'lang_datatables' => json_encode($lang['datatables']),
  73. ];
  74. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';