From b004fcaf4013bcd9fb414559e855b80783d0c74a Mon Sep 17 00:00:00 2001 From: Bruno Eckhardt Date: Mon, 16 Feb 2026 11:04:23 +0100 Subject: [PATCH] update: new services and LogController --- WEBROOT/config.php | 35 +++- WEBROOT/controller/LogController.php | 8 +- ...st_chart.php => backend_request_chart.php} | 2 +- ...uest_logs.php => backend_request_logs.php} | 15 +- WEBROOT/services/public_request_chart.php | 105 +++++++++++ WEBROOT/services/public_request_logs.php | 167 ++++++++++++++++++ 6 files changed, 314 insertions(+), 18 deletions(-) rename WEBROOT/services/{request_chart.php => backend_request_chart.php} (95%) rename WEBROOT/services/{request_logs.php => backend_request_logs.php} (87%) create mode 100644 WEBROOT/services/public_request_chart.php create mode 100644 WEBROOT/services/public_request_logs.php diff --git a/WEBROOT/config.php b/WEBROOT/config.php index 5998f4e..4962ebd 100644 --- a/WEBROOT/config.php +++ b/WEBROOT/config.php @@ -26,8 +26,11 @@ $serviceGroups = array ( 'defaultOpen' => true, 'services' => array ( - 0 => 'request_logs', - 1 => 'request_chart', + 0 => 'public_request_logs', + 1 => 'public_request_chart', + 2 => 'backend_request_logs', + 3 => 'backend_request_chart', + 4 => 'personal_request_logs', ), ), 'System' => @@ -55,15 +58,33 @@ $services = array ( 'active' => true, 'adminOnly' => false, ), - 'request_logs' => + 'public_request_logs' => array ( - 'name' => 'Logs', + 'name' => 'Public Logs', 'active' => true, 'adminOnly' => false, ), - 'request_chart' => + 'public_request_chart' => array ( - 'name' => 'Statistik', + 'name' => 'Public Statistik', + 'active' => true, + 'adminOnly' => false, + ), + 'backend_request_logs' => + array ( + 'name' => 'Backend Logs', + 'active' => true, + 'adminOnly' => false, + ), + 'backend_request_chart' => + array ( + 'name' => 'Backend Statistik', + 'active' => true, + 'adminOnly' => false, + ), + 'personal_request_logs' => + array ( + 'name' => 'Persönliche Logs', 'active' => true, 'adminOnly' => false, ), @@ -155,4 +176,4 @@ $linkButtons = array ( 'adminOnly' => false, 'group' => 'devices', ), -); +); \ No newline at end of file diff --git a/WEBROOT/controller/LogController.php b/WEBROOT/controller/LogController.php index 69a2989..e5e3903 100644 --- a/WEBROOT/controller/LogController.php +++ b/WEBROOT/controller/LogController.php @@ -4,6 +4,7 @@ function logging() { include_once 'DatabaseConnect.php'; include_once 'DatabaseController.php'; + include_once '../modules/ConsoleLog.php'; include_once 'DataController.php'; $ClientIP = (new getSpecificData())->getClientIP(); @@ -16,6 +17,7 @@ function logging() { $LAND = (new getSpecificData())->getGeoIP($ClientIP); $Whitelisted = (new getSpecificData())->getWhitelistedIPs(); $node = (new getSpecificData())->getServerNode((new getSpecificData())->getServerIP()); + $username = $_SESSION['username'] ?? 'Unbekannt'; $website = (new getSpecificData())->getWebsite(); // if (in_array($ClientIP, $Whitelisted)) { @@ -65,7 +67,7 @@ function logging() { } else { DatabaseInsert( "logs", - "CLIENT_IP, LAND, SERVER_IP, USER_AGENT, REQUEST_URL, USER_COOKIE_VALUE, USER_SESSION_VALUE, FIRST_REQUEST, QUERY, WEBSITE", + "CLIENT_IP, LAND, SERVER_IP, USER_AGENT, REQUEST_URL, USER_COOKIE_VALUE, USER_SESSION_VALUE, FIRST_REQUEST, QUERY, WEBSITE, USER", $ClientIP, $LAND, $node, @@ -75,8 +77,10 @@ function logging() { $SessionID, $REQUESTTIME, $QUERY, - $website + $website, + $username ); } + // ConsoleLog("Client IP: $ClientIP | User Agent: $UserAgent | Request URL: $RequestURL | User Cookie: $USERCOOKIE | Session ID: $SessionID | Request Time: $REQUESTTIME | GeoIP: $LAND | Server Node: $node | Website: $website"); } } \ No newline at end of file diff --git a/WEBROOT/services/request_chart.php b/WEBROOT/services/backend_request_chart.php similarity index 95% rename from WEBROOT/services/request_chart.php rename to WEBROOT/services/backend_request_chart.php index 1fb164a..5db9c6b 100644 --- a/WEBROOT/services/request_chart.php +++ b/WEBROOT/services/backend_request_chart.php @@ -1,7 +1,7 @@ query($sql); $labels = []; diff --git a/WEBROOT/services/request_logs.php b/WEBROOT/services/backend_request_logs.php similarity index 87% rename from WEBROOT/services/request_logs.php rename to WEBROOT/services/backend_request_logs.php index 0d3a21b..fed4e63 100644 --- a/WEBROOT/services/request_logs.php +++ b/WEBROOT/services/backend_request_logs.php @@ -39,8 +39,7 @@ if (!$useCustom) { $sql = " SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` FROM logs - WHERE CLIENT_IP NOT IN ($devips_sql) - AND DATE(FIRST_REQUEST) = CURDATE() + WHERE DATE(FIRST_REQUEST) = CURDATE() AND WEBSITE = 'backend.blackpi.ipv64.net' ORDER BY FIRST_REQUEST DESC "; break; @@ -49,7 +48,7 @@ if (!$useCustom) { $sql = " SELECT CLIENT_IP, LAND, USER_AGENT, SUM(counter) AS gesamt_counter FROM logs - WHERE CLIENT_IP NOT IN ($devips_sql) + WHERE WEBSITE = 'backend.blackpi.ipv64.net' GROUP BY CLIENT_IP ORDER BY gesamt_counter DESC "; @@ -59,7 +58,7 @@ if (!$useCustom) { $sql = " SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` FROM logs - WHERE `SERVER_IP` = 'node1' + WHERE `SERVER_IP` = 'node1' AND WEBSITE = 'backend.blackpi.ipv64.net' ORDER BY `FIRST_REQUEST` DESC; "; break; @@ -68,7 +67,7 @@ if (!$useCustom) { $sql = " SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` FROM logs - WHERE `SERVER_IP` = 'node2' + WHERE `SERVER_IP` = 'node2' AND WEBSITE = 'backend.blackpi.ipv64.net' ORDER BY `FIRST_REQUEST` DESC; "; break; @@ -77,7 +76,7 @@ if (!$useCustom) { $sql = " SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` FROM logs - WHERE `SERVER_IP` = 'node3' + WHERE `SERVER_IP` = 'node3' AND WEBSITE = 'backend.blackpi.ipv64.net' ORDER BY `FIRST_REQUEST` DESC; "; break; @@ -86,7 +85,7 @@ if (!$useCustom) { $sql = " SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` FROM logs - WHERE `SERVER_IP` = 'node4' + WHERE `SERVER_IP` = 'node4' AND WEBSITE = 'backend.blackpi.ipv64.net' ORDER BY `FIRST_REQUEST` DESC; "; break; @@ -95,7 +94,7 @@ if (!$useCustom) { $sql = " SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` FROM logs - WHERE CLIENT_IP NOT IN ($devips_sql) + WHERE WEBSITE = 'backend.blackpi.ipv64.net' ORDER BY FIRST_REQUEST DESC "; } diff --git a/WEBROOT/services/public_request_chart.php b/WEBROOT/services/public_request_chart.php new file mode 100644 index 0000000..5dbe7a7 --- /dev/null +++ b/WEBROOT/services/public_request_chart.php @@ -0,0 +1,105 @@ +query($sql); + +$labels = []; +$data = []; + +if ($result->num_rows > 0) { + while($row = $result->fetch_assoc()) { + $labels[] = $row['tag']; + $data[] = (int)$row['anzahl']; + } +} + +$conn->close(); +?> + + + + + + + Logs Chart + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WEBROOT/services/public_request_logs.php b/WEBROOT/services/public_request_logs.php new file mode 100644 index 0000000..d1ec964 --- /dev/null +++ b/WEBROOT/services/public_request_logs.php @@ -0,0 +1,167 @@ +getWhitelistedIPs(); +$devips_sql = "'" . implode("','", $devips) . "'"; + +// Filter +$filter = $_GET['filter'] ?? 'today'; +$customQuery = $_POST['custom_query'] ?? ''; +$useCustom = false; + +// Custom Query Schutz +if ($customQuery) { + $forbidden = ['DELETE', 'UPDATE', 'INSERT', 'DROP', 'ALTER', 'TRUNCATE']; + $upper = strtoupper($customQuery); + + foreach ($forbidden as $bad) { + if (strpos($upper, $bad) !== false) { + echo "Gefährliche Query blockiert ($bad)"; + return; + } + } + + if (stripos(trim($customQuery), "SELECT") !== 0) { + echo "Nur SELECT erlaubt"; + return; + } + + $sql = $customQuery; + $useCustom = true; +} + +// Standard Queries +if (!$useCustom) { + switch ($filter) { + case 'today': + $sql = " + SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` + FROM logs + WHERE CLIENT_IP NOT IN ($devips_sql) AND WEBSITE = 'blackpi.ipv64.net' OR WEBSITE IS NULL + AND DATE(FIRST_REQUEST) = CURDATE() + ORDER BY FIRST_REQUEST DESC + "; + break; + + case 'counterperip': + $sql = " + SELECT CLIENT_IP, LAND, USER_AGENT, SUM(counter) AS gesamt_counter + FROM logs + WHERE CLIENT_IP NOT IN ($devips_sql) AND WEBSITE = 'blackpi.ipv64.net' OR WEBSITE IS NULL + GROUP BY CLIENT_IP + ORDER BY gesamt_counter DESC + "; + break; + + case 'node1': + $sql = " + SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` + FROM logs + WHERE `SERVER_IP` = 'node1' AND WEBSITE = 'blackpi.ipv64.net' OR WEBSITE IS NULL + ORDER BY `FIRST_REQUEST` DESC; + "; + break; + + case 'node2': + $sql = " + SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` + FROM logs + WHERE `SERVER_IP` = 'node2' AND WEBSITE = 'blackpi.ipv64.net' OR WEBSITE IS NULL + ORDER BY `FIRST_REQUEST` DESC; + "; + break; + + case 'node3': + $sql = " + SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` + FROM logs + WHERE `SERVER_IP` = 'node3' AND WEBSITE = 'blackpi.ipv64.net' OR WEBSITE IS NULL + ORDER BY `FIRST_REQUEST` DESC; + "; + break; + + case 'node4': + $sql = " + SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` + FROM logs + WHERE `SERVER_IP` = 'node4' AND WEBSITE = 'blackpi.ipv64.net' OR WEBSITE IS NULL + ORDER BY `FIRST_REQUEST` DESC; + "; + break; + + default: + $sql = " + SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER` + FROM logs + WHERE CLIENT_IP NOT IN ($devips_sql) AND WEBSITE = 'blackpi.ipv64.net' OR WEBSITE IS NULL + ORDER BY FIRST_REQUEST DESC + "; + } +} +?> + +

📊 Logs

+ +
+ + + +
+ + + +
+ +query($sql)) { + // echo "
$sql
"; + + while ($row = $erg->fetch_object()) { + $daten[] = $row; + } +} +?> + + +Keine Daten gefunden + + +
+ + + $_): ?> + + + + + + + + + + + +
+
+ + \ No newline at end of file