4
0
Эх сурвалжийг харах

api/homepage/monitorr.php: Fixed "Monitorr plugin does not work on unresponsive services, if they have no service-link associated."

Klaus 5 жил өмнө
parent
commit
da3771c481
1 өөрчлөгдсөн 19 нэмэгдсэн , 21 устгасан
  1. 19 21
      api/homepage/monitorr.php

+ 19 - 21
api/homepage/monitorr.php

@@ -124,30 +124,28 @@ trait MonitorrHomepageItem
 				// This section grabs the names of all services by regex
 				$services = [];
 				$servicesMatch = [];
-				$servicePattern = '/<div id="servicetitle"><div>(.*)<\/div><\/div><div class="btnonline">Online<\/div><\/a><\/div><\/div>|<div id="servicetitleoffline".*><div>(.*)<\/div><\/div><div class="btnoffline".*>Offline<\/div><\/div><\/div>|<div id="servicetitlenolink".*><div>(.*)<\/div><\/div><div class="btnonline".*>Online<\/div><\/div><\/div>|<div id="servicetitle"><div>(.*)<\/div><\/div><div class="btnunknown">/';
+				$servicePattern = '/<div id="servicetitle(?:offline|nolink)?".*><div>(.*)<\/div><\/div><div class="(?:btnonline|btnoffline|btnunknown)".*>(Online|Offline|Unresponsive)<\/div>(:?<\/a>)?<\/div><\/div>/';
 				preg_match_all($servicePattern, $html, $servicesMatch);
-				$services = array_filter($servicesMatch[1]) + array_filter($servicesMatch[2]) + array_filter($servicesMatch[3]) + array_filter($servicesMatch[4]);
+				$services = array_filter($servicesMatch[1]);
+                $status = array_filter($servicesMatch[2]);
 				$statuses = [];
 				foreach ($services as $key => $service) {
-					$statusPattern = '/' . $service . '<\/div><\/div><div class="btnonline">(Online)<\/div>|' . $service . '<\/div><\/div><div class="btnoffline".*>(Offline)<\/div><\/div><\/div>|' . $service . '<\/div><\/div><div class="btnunknown">(.*)<\/div><\/a>/';
-					$status = [];
-					preg_match($statusPattern, $html, $status);
-					$statuses[$service] = $status;
-					foreach ($status as $match) {
-						if ($match == 'Online') {
-							$statuses[$service] = [
-								'status' => true
-							];
-						} else if ($match == 'Offline') {
-							$statuses[$service] = [
-								'status' => false
-							];
-						} else if ($match == 'Unresponsive') {
-							$statuses[$service] = [
-								'status' => 'unresponsive'
-							];
-						}
-					}
+					$match = $status[$key];
+					$statuses[$service] = $match;
+                    if ($match == 'Online') {
+                        $statuses[$service] = [
+                            'status' => true
+                        ];
+                    } else if ($match == 'Offline') {
+                        $statuses[$service] = [
+                            'status' => false
+                        ];
+                    } else if ($match == 'Unresponsive') {
+                        $statuses[$service] = [
+                            'status' => 'unresponsive'
+                        ];
+                    }
+
 					$statuses[$service]['sort'] = $key;
 					$imageMatch = [];
 					$imgPattern = '/assets\/img\/\.\.(.*)" class="serviceimg" alt=.*><\/div><\/div><div id="servicetitle"><div>' . $service . '|assets\/img\/\.\.(.*)" class="serviceimg imgoffline" alt=.*><\/div><\/div><div id="servicetitleoffline".*><div>' . $service . '|assets\/img\/\.\.(.*)" class="serviceimg" alt=.*><\/div><\/div><div id="servicetitlenolink".*><div>' . $service . '/';