174 lines
4.8 KiB
PHP
174 lines
4.8 KiB
PHP
<?php
|
|
|
|
$conn = db_connect();
|
|
|
|
// Dev-IPs
|
|
$devips = (new getSpecificData())->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 "<b style='color:red'>Gefährliche Query blockiert ($bad)</b>";
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (stripos(trim($customQuery), "SELECT") !== 0) {
|
|
echo "<b style='color:red'>Nur SELECT erlaubt</b>";
|
|
return;
|
|
}
|
|
|
|
$sql = $customQuery;
|
|
$useCustom = true;
|
|
}
|
|
|
|
// Standard Queries
|
|
if (!$useCustom) {
|
|
switch ($filter) {
|
|
case 'today':
|
|
$sql = "
|
|
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
|
FROM logs
|
|
WHERE CLIENT_IP NOT IN ($devips_sql)
|
|
AND (WEBSITE != 'backend.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 != 'backend.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`, `FIRST_REQUEST`, `WEBSITE`
|
|
FROM logs
|
|
WHERE `SERVER_IP` = 'node1'
|
|
AND (WEBSITE != 'backend.blackpi.ipv64.net' OR WEBSITE IS NULL)
|
|
ORDER BY `FIRST_REQUEST` DESC
|
|
";
|
|
break;
|
|
|
|
case 'node2':
|
|
$sql = "
|
|
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
|
FROM logs
|
|
WHERE `SERVER_IP` = 'node2'
|
|
AND (WEBSITE != 'backend.blackpi.ipv64.net' OR WEBSITE IS NULL)
|
|
ORDER BY `FIRST_REQUEST` DESC
|
|
";
|
|
break;
|
|
|
|
case 'node3':
|
|
$sql = "
|
|
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
|
FROM logs
|
|
WHERE `SERVER_IP` = 'node3'
|
|
AND (WEBSITE != 'backend.blackpi.ipv64.net' OR WEBSITE IS NULL)
|
|
ORDER BY `FIRST_REQUEST` DESC
|
|
";
|
|
break;
|
|
|
|
case 'node4':
|
|
$sql = "
|
|
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
|
FROM logs
|
|
WHERE `SERVER_IP` = 'node4'
|
|
AND (WEBSITE != 'backend.blackpi.ipv64.net' OR WEBSITE IS NULL)
|
|
ORDER BY `FIRST_REQUEST` DESC
|
|
";
|
|
break;
|
|
|
|
default:
|
|
$sql = "
|
|
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
|
FROM logs
|
|
WHERE CLIENT_IP NOT IN ($devips_sql)
|
|
AND (WEBSITE != 'backend.blackpi.ipv64.net' OR WEBSITE IS NULL)
|
|
ORDER BY FIRST_REQUEST DESC
|
|
";
|
|
}
|
|
}
|
|
?>
|
|
|
|
<h1>📊 Logs</h1>
|
|
|
|
<form method="GET" action="index.php">
|
|
<input type="hidden" name="service" value="<?= htmlspecialchars($_GET['service'] ?? 'logs') ?>">
|
|
|
|
<select name="filter" onchange="this.form.submit()">
|
|
<?php
|
|
$options = ['alle','today','node1','node2','node3','node4','counterperip'];
|
|
foreach ($options as $opt) {
|
|
$sel = ($filter === $opt) ? 'selected' : '';
|
|
echo "<option value='$opt' $sel>$opt</option>";
|
|
}
|
|
?>
|
|
</select>
|
|
</form>
|
|
|
|
<!-- <br>
|
|
|
|
<form method="POST">
|
|
<textarea name="custom_query" style="width:100%;height:60px;"><?= htmlspecialchars($customQuery) ?></textarea>
|
|
<br>
|
|
<button type="submit">Query ausführen</button>
|
|
</form>
|
|
|
|
<hr> -->
|
|
|
|
<br>
|
|
|
|
<?php
|
|
$daten = [];
|
|
|
|
if ($erg = $conn->query($sql)) {
|
|
// echo "<pre style='background:var(--bg-soft,#f4f4f4);padding:10px;'>$sql</pre>";
|
|
|
|
while ($row = $erg->fetch_object()) {
|
|
$daten[] = $row;
|
|
}
|
|
}
|
|
?>
|
|
|
|
<?php if (!$daten): ?>
|
|
<b>Keine Daten gefunden</b>
|
|
<?php else: ?>
|
|
|
|
<div style="overflow-x:auto;">
|
|
<table border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse;width:100%;">
|
|
<tr>
|
|
<?php foreach ($daten[0] as $key => $_): ?>
|
|
<th><?= htmlspecialchars($key) ?></th>
|
|
<?php endforeach; ?>
|
|
</tr>
|
|
|
|
<?php foreach ($daten as $row): ?>
|
|
<tr>
|
|
<?php foreach ($row as $val): ?>
|
|
<td><?= htmlspecialchars($val ?? '') ?></td>
|
|
<?php endforeach; ?>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</table>
|
|
</div>
|
|
|
|
<?php endif; ?>
|