uptime_kuma.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. trait UptimeKumaHomepageItem
  3. {
  4. public function uptimeKumaSettingsArray($infoOnly = false)
  5. {
  6. $homepageInformation = [
  7. 'name' => 'Uptime Kuma',
  8. 'enabled' => true,
  9. 'image' => 'plugins/images/tabs/kuma.png',
  10. 'category' => 'Monitor',
  11. 'settingsArray' => __FUNCTION__
  12. ];
  13. if ($infoOnly) {
  14. return $homepageInformation;
  15. }
  16. $homepageSettings = [
  17. 'debug' => true,
  18. 'settings' => [
  19. 'Enable' => [
  20. $this->settingsOption('enable', 'homepageUptimeKumaEnabled'),
  21. $this->settingsOption('auth', 'homepageUptimeKumaAuth'),
  22. ],
  23. 'Connection' => [
  24. $this->settingsOption('url', 'uptimeKumaURL', ['help' => 'URL for Uptime Kuma e.g. http://kuma:3001 (no trailing slash)', 'placeholder' => 'http://kuma:3001']),
  25. $this->settingsOption('token', 'uptimeKumaToken'),
  26. ],
  27. 'Options' => [
  28. $this->settingsOption('refresh', 'homepageUptimeKumaRefresh'),
  29. $this->settingsOption('title', 'homepageUptimeKumaHeader'),
  30. $this->settingsOption('toggle-title', 'homepageUptimeKumaHeaderToggle'),
  31. ],
  32. ]
  33. ];
  34. return array_merge($homepageInformation, $homepageSettings);
  35. }
  36. public function uptimeKumaHomepagePermissions($key = null)
  37. {
  38. $permissions = [
  39. 'main' => [
  40. 'enabled' => [
  41. 'homepageUptimeKumaEnabled'
  42. ],
  43. 'auth' => [
  44. 'homepageUptimeKumaAuth'
  45. ],
  46. 'not_empty' => [
  47. 'uptimeKumaURL'
  48. ]
  49. ]
  50. ];
  51. return $this->homepageCheckKeyPermissions($key, $permissions);
  52. }
  53. public function homepageOrderUptimeKuma()
  54. {
  55. if ($this->homepageItemPermissions($this->uptimeKumaHomepagePermissions('main'))) {
  56. return '
  57. <div id="' . __FUNCTION__ . '">
  58. <div class="white-box homepage-loading-box"><h2 class="text-center" lang="en">Loading Uptime Kuma...</h2></div>
  59. <script>
  60. // Uptime Kuma
  61. homepageUptimeKuma("' . $this->config['homepageUptimeKumaRefresh'] . '");
  62. // End Uptime Kuma
  63. </script>
  64. </div>
  65. ';
  66. }
  67. }
  68. public function getUptimeKumaHomepageData()
  69. {
  70. if (!$this->homepageItemPermissions($this->uptimeKumaHomepagePermissions('main'), true)) {
  71. return false;
  72. }
  73. $api = [];
  74. $url = $this->qualifyURL($this->config['uptimeKumaURL']);
  75. $dataUrl = $url . '/assets/php/loop.php';
  76. try {
  77. $options = $this->requestOptions($url, $this->config['homepageUptimeKumaRefresh']);
  78. $response = Requests::get($dataUrl, ['Token' => $this->config['organizrAPI']], $options);
  79. } catch (Requests_Exception $e) {
  80. $this->setLoggerChannel('UptimeKuma')->error($e);
  81. $this->setAPIResponse('error', $e->getMessage(), 401);
  82. return false;
  83. };
  84. $api = isset($api) ? $api : false;
  85. $this->setAPIResponse('success', null, 200, $api);
  86. return $api;
  87. }
  88. }