Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8f4f47439 | ||
|
|
86c20a63bf | ||
|
|
1fba004b9b | ||
|
|
9622e35ca3 | ||
|
|
2748349060 | ||
|
|
ebbb6551f7 | ||
|
|
992ac5eb6a | ||
|
|
d37937f4d8 |
No files matched your search
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
// loginTest.php
|
||||
|
||||
$loginUrl = "https://backend.blackpi.ipv64.net/login.php"; // URL zu deinem Login-Script
|
||||
$loginUrl = "https://backend.mrhossa.de/login.php"; // URL zu deinem Login-Script
|
||||
|
||||
// Testfälle
|
||||
$tests = [
|
||||
@@ -51,4 +51,4 @@ foreach ($tests as $test) {
|
||||
} else {
|
||||
echo "[FAIL] {$test['description']}\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
+126
-126
@@ -1,20 +1,20 @@
|
||||
<?php
|
||||
|
||||
$superuser = array (
|
||||
'admin' =>
|
||||
array (
|
||||
$superuser = array(
|
||||
'admin' =>
|
||||
array(
|
||||
'password' => 'bBHofurUJWKzPE8Z:',
|
||||
'active' => true,
|
||||
),
|
||||
);
|
||||
|
||||
$serviceGroups = array (
|
||||
'Info' =>
|
||||
array (
|
||||
$serviceGroups = array(
|
||||
'Info' =>
|
||||
array(
|
||||
'label' => 'Home',
|
||||
'defaultOpen' => true,
|
||||
'services' =>
|
||||
array (
|
||||
'services' =>
|
||||
array(
|
||||
0 => 'home_info',
|
||||
1 => 'vergabe',
|
||||
2 => 'links',
|
||||
@@ -22,12 +22,12 @@ $serviceGroups = array (
|
||||
4 => 'termine',
|
||||
),
|
||||
),
|
||||
'Ausbildung' =>
|
||||
array (
|
||||
'Ausbildung' =>
|
||||
array(
|
||||
'label' => 'Ausbildung',
|
||||
'defaultOpen' => true,
|
||||
'services' =>
|
||||
array (
|
||||
'services' =>
|
||||
array(
|
||||
0 => 'print_static',
|
||||
1 => 'zeiterfassung',
|
||||
2 => 'berichte_arbeit_gen',
|
||||
@@ -36,12 +36,12 @@ $serviceGroups = array (
|
||||
5 => 'berufsschulberichte',
|
||||
),
|
||||
),
|
||||
'Logs' =>
|
||||
array (
|
||||
'Logs' =>
|
||||
array(
|
||||
'label' => 'Webserver',
|
||||
'defaultOpen' => false,
|
||||
'services' =>
|
||||
array (
|
||||
'services' =>
|
||||
array(
|
||||
0 => 'public_request_logs',
|
||||
1 => 'public_request_chart',
|
||||
2 => 'backend_request_logs',
|
||||
@@ -49,24 +49,24 @@ $serviceGroups = array (
|
||||
4 => 'personal_request_logs',
|
||||
),
|
||||
),
|
||||
'System' =>
|
||||
array (
|
||||
'System' =>
|
||||
array(
|
||||
'label' => 'Verwaltung',
|
||||
'defaultOpen' => false,
|
||||
'services' =>
|
||||
array (
|
||||
'services' =>
|
||||
array(
|
||||
0 => 'data_info',
|
||||
1 => 'services_control',
|
||||
2 => 'user_control',
|
||||
3 => 'variablen_control',
|
||||
),
|
||||
),
|
||||
'Test' =>
|
||||
array (
|
||||
'Test' =>
|
||||
array(
|
||||
'label' => 'Dev / Test',
|
||||
'defaultOpen' => false,
|
||||
'services' =>
|
||||
array (
|
||||
'services' =>
|
||||
array(
|
||||
0 => 'api_tester',
|
||||
1 => 'weather_chart',
|
||||
2 => 'tabellen',
|
||||
@@ -75,335 +75,335 @@ $serviceGroups = array (
|
||||
),
|
||||
);
|
||||
|
||||
$services = array (
|
||||
'home_info' =>
|
||||
array (
|
||||
$services = array(
|
||||
'home_info' =>
|
||||
array(
|
||||
'name' => 'Home',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'vergabe' =>
|
||||
array (
|
||||
'vergabe' =>
|
||||
array(
|
||||
'name' => 'Vergabe',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'print_static' =>
|
||||
array (
|
||||
'print_static' =>
|
||||
array(
|
||||
'name' => 'Berichte Drucken',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'api_tester' =>
|
||||
array (
|
||||
'api_tester' =>
|
||||
array(
|
||||
'name' => 'API Testing',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'weather_chart' =>
|
||||
array (
|
||||
'weather_chart' =>
|
||||
array(
|
||||
'name' => 'Wetter Statistik',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'data_info' =>
|
||||
array (
|
||||
'data_info' =>
|
||||
array(
|
||||
'name' => 'Data Info',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'links' =>
|
||||
array (
|
||||
'links' =>
|
||||
array(
|
||||
'name' => 'Links',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'public_request_logs' =>
|
||||
array (
|
||||
'public_request_logs' =>
|
||||
array(
|
||||
'name' => 'Public Logs',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'public_request_chart' =>
|
||||
array (
|
||||
'public_request_chart' =>
|
||||
array(
|
||||
'name' => 'Public Statistik',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'backend_request_logs' =>
|
||||
array (
|
||||
'backend_request_logs' =>
|
||||
array(
|
||||
'name' => 'Backend Logs',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'backend_request_chart' =>
|
||||
array (
|
||||
'backend_request_chart' =>
|
||||
array(
|
||||
'name' => 'Backend Statistik',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'personal_request_logs' =>
|
||||
array (
|
||||
'personal_request_logs' =>
|
||||
array(
|
||||
'name' => 'Persönliche Logs',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'services_control' =>
|
||||
array (
|
||||
'services_control' =>
|
||||
array(
|
||||
'name' => 'Seiten',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'zeiterfassung' =>
|
||||
array (
|
||||
'zeiterfassung' =>
|
||||
array(
|
||||
'name' => 'Zeit Erfassung',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'berichte_arbeit_gen' =>
|
||||
array (
|
||||
'berichte_arbeit_gen' =>
|
||||
array(
|
||||
'name' => 'Berichte PDF',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'user_control' =>
|
||||
array (
|
||||
'user_control' =>
|
||||
array(
|
||||
'name' => 'Benutzer',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'variablen_control' =>
|
||||
array (
|
||||
'variablen_control' =>
|
||||
array(
|
||||
'name' => 'Variablen',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'tabellen' =>
|
||||
array (
|
||||
'tabellen' =>
|
||||
array(
|
||||
'name' => 'Tabellen',
|
||||
'active' => true,
|
||||
'adminOnly' => true,
|
||||
),
|
||||
'berichte' =>
|
||||
array (
|
||||
'berichte' =>
|
||||
array(
|
||||
'name' => 'Berichte Einsehen',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'domains' =>
|
||||
array (
|
||||
'domains' =>
|
||||
array(
|
||||
'name' => 'Domains',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'einkaufsliste' =>
|
||||
array (
|
||||
'einkaufsliste' =>
|
||||
array(
|
||||
'name' => 'Einkaufsliste',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'termine' =>
|
||||
array (
|
||||
'termine' =>
|
||||
array(
|
||||
'name' => 'Termine',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'firmenberichte' =>
|
||||
array (
|
||||
'firmenberichte' =>
|
||||
array(
|
||||
'name' => 'Firmenberichte',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
'berufsschulberichte' =>
|
||||
array (
|
||||
'berufsschulberichte' =>
|
||||
array(
|
||||
'name' => 'Berufsschulberichte',
|
||||
'active' => true,
|
||||
'adminOnly' => false,
|
||||
),
|
||||
);
|
||||
|
||||
$linkGroups = array (
|
||||
'info' =>
|
||||
array (
|
||||
$linkGroups = array(
|
||||
'info' =>
|
||||
array(
|
||||
'label' => 'Informationen',
|
||||
'color' => '#3498db',
|
||||
'defaultOpen' => false,
|
||||
),
|
||||
'tools' =>
|
||||
array (
|
||||
'tools' =>
|
||||
array(
|
||||
'label' => 'IoT',
|
||||
'color' => '#2ecc71',
|
||||
'defaultOpen' => false,
|
||||
),
|
||||
'admin' =>
|
||||
array (
|
||||
'admin' =>
|
||||
array(
|
||||
'label' => 'Administration',
|
||||
'color' => '#e74c3c',
|
||||
'defaultOpen' => false,
|
||||
),
|
||||
'devices' =>
|
||||
array (
|
||||
'devices' =>
|
||||
array(
|
||||
'label' => 'Geräte',
|
||||
'color' => '#b7db33',
|
||||
'defaultOpen' => false,
|
||||
),
|
||||
);
|
||||
|
||||
$linkButtons = array (
|
||||
0 =>
|
||||
array (
|
||||
$linkButtons = array(
|
||||
0 =>
|
||||
array(
|
||||
'label' => 'Gitea',
|
||||
'url' => 'http://gitea.blackpi.ipv64.net',
|
||||
'url' => 'http://gitea.mrhossa.de',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'admin',
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
1 =>
|
||||
array(
|
||||
'label' => 'HAProxy',
|
||||
'url' => 'http://stats.blackpi.ipv64.net',
|
||||
'url' => 'http://stats.mrhossa.de',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'admin',
|
||||
),
|
||||
2 =>
|
||||
array (
|
||||
2 =>
|
||||
array(
|
||||
'label' => 'Public',
|
||||
'url' => 'https://blackpi.ipv64.net',
|
||||
'url' => 'https://mrhossa.de',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'info',
|
||||
),
|
||||
3 =>
|
||||
array (
|
||||
3 =>
|
||||
array(
|
||||
'label' => 'NAS-1',
|
||||
'url' => 'http://nas-1.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'devices',
|
||||
),
|
||||
4 =>
|
||||
array (
|
||||
4 =>
|
||||
array(
|
||||
'label' => 'NAS-2',
|
||||
'url' => 'http://nas-2.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'devices',
|
||||
),
|
||||
5 =>
|
||||
array (
|
||||
5 =>
|
||||
array(
|
||||
'label' => 'FritzBox-1',
|
||||
'url' => 'http://fritzbox-1.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'devices',
|
||||
),
|
||||
6 =>
|
||||
array (
|
||||
6 =>
|
||||
array(
|
||||
'label' => 'FritzBox-2',
|
||||
'url' => 'http://fritzbox-2.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'devices',
|
||||
),
|
||||
7 =>
|
||||
array (
|
||||
7 =>
|
||||
array(
|
||||
'label' => 'GS1910-24',
|
||||
'url' => 'http://switch.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'admin',
|
||||
),
|
||||
8 =>
|
||||
array (
|
||||
8 =>
|
||||
array(
|
||||
'label' => 'NWA5121-NI Innen',
|
||||
'url' => 'http://ap-1.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'devices',
|
||||
),
|
||||
9 =>
|
||||
array (
|
||||
9 =>
|
||||
array(
|
||||
'label' => 'NWA5121-NI Aussen',
|
||||
'url' => 'http://ap-2.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'devices',
|
||||
),
|
||||
10 =>
|
||||
array (
|
||||
10 =>
|
||||
array(
|
||||
'label' => 'ZyWALL 110',
|
||||
'url' => 'http://10.233.1248',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'admin',
|
||||
),
|
||||
11 =>
|
||||
array (
|
||||
11 =>
|
||||
array(
|
||||
'label' => 'Ender 3 V3 KE',
|
||||
'url' => 'http://10.233.1.52',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'tools',
|
||||
),
|
||||
12 =>
|
||||
array (
|
||||
12 =>
|
||||
array(
|
||||
'label' => 'Ubuntu NAS',
|
||||
'url' => 'http://10.233.1.32:9000',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'tools',
|
||||
),
|
||||
13 =>
|
||||
array (
|
||||
13 =>
|
||||
array(
|
||||
'label' => 'Backend',
|
||||
'url' => 'https://backend.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'info',
|
||||
),
|
||||
14 =>
|
||||
array (
|
||||
14 =>
|
||||
array(
|
||||
'label' => 'Dev Backend',
|
||||
'url' => 'https://dev-backend.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'info',
|
||||
),
|
||||
15 =>
|
||||
array (
|
||||
15 =>
|
||||
array(
|
||||
'label' => 'Dev Pubic',
|
||||
'url' => 'https://dev-public.blackpi.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'info',
|
||||
),
|
||||
16 =>
|
||||
array (
|
||||
16 =>
|
||||
array(
|
||||
'label' => 'Local Backend',
|
||||
'url' => 'http://backend.local.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'info',
|
||||
),
|
||||
17 =>
|
||||
array (
|
||||
17 =>
|
||||
array(
|
||||
'label' => 'Local Pubic',
|
||||
'url' => 'http://public.local.ipv64.net',
|
||||
'newTab' => true,
|
||||
'adminOnly' => false,
|
||||
'group' => 'info',
|
||||
),
|
||||
18 =>
|
||||
array (
|
||||
18 =>
|
||||
array(
|
||||
'label' => 'Proxmox',
|
||||
'url' => 'https://100.88.208.86:8006',
|
||||
'newTab' => true,
|
||||
'adminOnly' => true,
|
||||
'group' => 'devices',
|
||||
),
|
||||
19 =>
|
||||
array (
|
||||
19 =>
|
||||
array(
|
||||
'label' => 'Flatnotes',
|
||||
'url' => 'http://10.233.1.130:8080',
|
||||
'newTab' => true,
|
||||
|
||||
@@ -4,7 +4,8 @@ include_once __DIR__ . '/../modules/Mail.php';
|
||||
include_once __DIR__ . '/../controller/RoutesController.php';
|
||||
include_once 'DataController.php';
|
||||
|
||||
function db_connect() {
|
||||
function db_connect()
|
||||
{
|
||||
$servers = [
|
||||
'local' => [
|
||||
'hostaddr' => '127.0.0.1',
|
||||
@@ -18,23 +19,11 @@ function db_connect() {
|
||||
'password' => 'bBHofurUJWKzPE8Z',
|
||||
'database' => 'DEV',
|
||||
],
|
||||
'backup' => [
|
||||
'hostaddr' => '10.233.1.241',
|
||||
'username' => 'worker',
|
||||
'password' => 'bBHofurUJWKzPE8Z',
|
||||
'database' => 'DEV',
|
||||
],
|
||||
'dev' => [
|
||||
'hostaddr' => '10.233.1.243',
|
||||
'username' => 'worker',
|
||||
'password' => 'bBHofurUJWKzPE8Z',
|
||||
'database' => 'DEV',
|
||||
],
|
||||
'live' => [
|
||||
'hostaddr' => '10.233.1.244',
|
||||
'hostaddr' => '152.53.159.169',
|
||||
'username' => 'worker',
|
||||
'password' => 'bBHofurUJWKzPE8Z',
|
||||
'database' => 'DEV',
|
||||
'database' => 'LIVE',
|
||||
],
|
||||
'error' => [
|
||||
'hostaddr' => '10.233.1.244',
|
||||
@@ -59,7 +48,6 @@ function db_connect() {
|
||||
|
||||
$conn->set_charset("utf8mb4");
|
||||
return $conn;
|
||||
|
||||
} catch (mysqli_sql_exception $e) {
|
||||
|
||||
errorMail(
|
||||
@@ -67,9 +55,7 @@ function db_connect() {
|
||||
$e->getMessage(),
|
||||
false,
|
||||
);
|
||||
redirectToWebsite("https://blackpi.ipv64.net");
|
||||
redirectToWebsite("https://mrhossa.de");
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
+26
-25
@@ -52,7 +52,8 @@ if (
|
||||
$selectedService = $_GET['service'];
|
||||
}
|
||||
|
||||
if (!$selectedService &&
|
||||
if (
|
||||
!$selectedService &&
|
||||
isset($defaultService) &&
|
||||
isset($services[$defaultService]) &&
|
||||
$services[$defaultService]['active']
|
||||
@@ -68,14 +69,14 @@ if (!$selectedService) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($selectedService && !in_array($selectedService, $userRights, true)) {
|
||||
$selectedService = null;
|
||||
}
|
||||
|
||||
$isAdmin = isset($_SESSION['is_admin']) && $_SESSION['is_admin'] === true;
|
||||
|
||||
if ((new getSpecificData())->getWebsite() != "backend.blackpi.ipv64.net") {
|
||||
if ((new getSpecificData())->getWebsite() != "backend.mrhossa.de") {
|
||||
$title = "DEV Backend";
|
||||
} else {
|
||||
$title = "Backend";
|
||||
@@ -101,7 +102,7 @@ if ((new getSpecificData())->getWebsite() != "backend.blackpi.ipv64.net") {
|
||||
<div class="main">
|
||||
<div class="sidebar">
|
||||
<?php foreach ($serviceGroups as $groupKey => $group): ?>
|
||||
<?php
|
||||
<?php
|
||||
$visibleServices = [];
|
||||
|
||||
foreach ($group['services'] as $serviceKey) {
|
||||
@@ -115,34 +116,34 @@ if ((new getSpecificData())->getWebsite() != "backend.blackpi.ipv64.net") {
|
||||
if (empty($visibleServices)) continue;
|
||||
|
||||
$isOpen = !empty($group['defaultOpen']) || in_array($selectedService, $visibleServices, true);
|
||||
?>
|
||||
<div class="service-group <?= $isOpen ? 'open' : '' ?>" data-group="<?= $groupKey ?>">
|
||||
?>
|
||||
<div class="service-group <?= $isOpen ? 'open' : '' ?>" data-group="<?= $groupKey ?>">
|
||||
|
||||
<div class="group-title">
|
||||
<?= htmlspecialchars($group['label']) ?>
|
||||
<span class="arrow">▸</span>
|
||||
</div>
|
||||
<div class="group-title">
|
||||
<?= htmlspecialchars($group['label']) ?>
|
||||
<span class="arrow">▸</span>
|
||||
</div>
|
||||
|
||||
<div class="group-services">
|
||||
<?php foreach ($visibleServices as $serviceKey): ?>
|
||||
<a href="?service=<?= $serviceKey ?>">
|
||||
<button class="<?= $selectedService === $serviceKey ? 'active' : '' ?>">
|
||||
<?= htmlspecialchars($services[$serviceKey]['name']) ?>
|
||||
</button>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
<div class="group-services">
|
||||
<?php foreach ($visibleServices as $serviceKey): ?>
|
||||
<a href="?service=<?= $serviceKey ?>">
|
||||
<button class="<?= $selectedService === $serviceKey ? 'active' : '' ?>">
|
||||
<?= htmlspecialchars($services[$serviceKey]['name']) ?>
|
||||
</button>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<div class="content">
|
||||
<?php
|
||||
if ($selectedService) {
|
||||
include "services/$selectedService.php";
|
||||
logging();
|
||||
} else {
|
||||
echo "<p>Kein aktiver Service verfügbar.</p>";
|
||||
}
|
||||
if ($selectedService) {
|
||||
include "services/$selectedService.php";
|
||||
logging();
|
||||
} else {
|
||||
echo "<p>Kein aktiver Service verfügbar.</p>";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
$conn = db_connect();
|
||||
|
||||
$sql = "SELECT DATE(FIRST_REQUEST) as tag, COUNT(*) as anzahl FROM logs WHERE WEBSITE = 'backend.blackpi.ipv64.net' GROUP BY DATE(FIRST_REQUEST) ORDER BY DATE(FIRST_REQUEST)";
|
||||
$sql = "SELECT DATE(FIRST_REQUEST) as tag, COUNT(*) as anzahl FROM logs WHERE WEBSITE = 'backend.mrhossa.de' GROUP BY DATE(FIRST_REQUEST) ORDER BY DATE(FIRST_REQUEST)";
|
||||
$result = $conn->query($sql);
|
||||
|
||||
$labels = [];
|
||||
$data = [];
|
||||
|
||||
if ($result->num_rows > 0) {
|
||||
while($row = $result->fetch_assoc()) {
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$labels[] = $row['tag'];
|
||||
$data[] = (int)$row['anzahl'];
|
||||
}
|
||||
@@ -33,71 +33,71 @@ $conn->close();
|
||||
<canvas id="logChart" width="600" height="400"></canvas>
|
||||
|
||||
<script>
|
||||
const ctx = document.getElementById('logChart').getContext('2d');
|
||||
const logChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: <?php echo json_encode($labels); ?>,
|
||||
datasets: [{
|
||||
label: 'Logs pro Tag',
|
||||
data: <?php echo json_encode($data); ?>,
|
||||
borderColor: 'rgba(75, 192, 192, 1)',
|
||||
backgroundColor: 'rgba(75, 192, 192, 0.2)',
|
||||
fill: true,
|
||||
tension: 0
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
title: {
|
||||
display: true,
|
||||
text: 'Logs pro Tag'
|
||||
},
|
||||
legend: {
|
||||
display: true,
|
||||
position: 'top'
|
||||
},
|
||||
zoom: {
|
||||
pan: {
|
||||
enabled: true,
|
||||
mode: 'x',
|
||||
const ctx = document.getElementById('logChart').getContext('2d');
|
||||
const logChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: <?php echo json_encode($labels); ?>,
|
||||
datasets: [{
|
||||
label: 'Logs pro Tag',
|
||||
data: <?php echo json_encode($data); ?>,
|
||||
borderColor: 'rgba(75, 192, 192, 1)',
|
||||
backgroundColor: 'rgba(75, 192, 192, 0.2)',
|
||||
fill: true,
|
||||
tension: 0
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
title: {
|
||||
display: true,
|
||||
text: 'Logs pro Tag'
|
||||
},
|
||||
legend: {
|
||||
display: true,
|
||||
position: 'top'
|
||||
},
|
||||
zoom: {
|
||||
wheel: {
|
||||
pan: {
|
||||
enabled: true,
|
||||
mode: 'x',
|
||||
},
|
||||
mode: 'x',
|
||||
}
|
||||
}
|
||||
},
|
||||
interaction: {
|
||||
mode: 'index',
|
||||
intersect: false
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
title: {
|
||||
display: true,
|
||||
text: 'Datum'
|
||||
zoom: {
|
||||
wheel: {
|
||||
enabled: true,
|
||||
},
|
||||
mode: 'x',
|
||||
}
|
||||
}
|
||||
},
|
||||
y: {
|
||||
min: 0,
|
||||
max: 100,
|
||||
title: {
|
||||
display: true,
|
||||
text: 'Anzahl Logs'
|
||||
interaction: {
|
||||
mode: 'index',
|
||||
intersect: false
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
title: {
|
||||
display: true,
|
||||
text: 'Datum'
|
||||
}
|
||||
},
|
||||
ticks: {
|
||||
stepSize: 20
|
||||
},
|
||||
beginAtZero: true
|
||||
y: {
|
||||
min: 0,
|
||||
max: 100,
|
||||
title: {
|
||||
display: true,
|
||||
text: 'Anzahl Logs'
|
||||
},
|
||||
ticks: {
|
||||
stepSize: 20
|
||||
},
|
||||
beginAtZero: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -40,7 +40,7 @@ if (!$useCustom) {
|
||||
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
||||
FROM logs
|
||||
WHERE DATE(FIRST_REQUEST) = CURDATE()
|
||||
AND (WEBSITE = 'backend.blackpi.ipv64.net')
|
||||
AND (WEBSITE = 'backend.mrhossa.de')
|
||||
AND CLIENT_IP NOT IN ($devips_sql)
|
||||
ORDER BY FIRST_REQUEST DESC
|
||||
";
|
||||
@@ -50,7 +50,7 @@ if (!$useCustom) {
|
||||
$sql = "
|
||||
SELECT CLIENT_IP, LAND, USER_AGENT, SUM(counter) AS gesamt_counter
|
||||
FROM logs
|
||||
WHERE (WEBSITE = 'backend.blackpi.ipv64.net')
|
||||
WHERE (WEBSITE = 'backend.mrhossa.de')
|
||||
AND CLIENT_IP NOT IN ($devips_sql)
|
||||
GROUP BY CLIENT_IP
|
||||
ORDER BY gesamt_counter DESC
|
||||
@@ -62,7 +62,7 @@ if (!$useCustom) {
|
||||
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
||||
FROM logs
|
||||
WHERE `SERVER_IP` = 'node1'
|
||||
AND (WEBSITE = 'backend.blackpi.ipv64.net')
|
||||
AND (WEBSITE = 'backend.mrhossa.de')
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
@@ -72,7 +72,7 @@ if (!$useCustom) {
|
||||
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
||||
FROM logs
|
||||
WHERE `SERVER_IP` = 'node2'
|
||||
AND (WEBSITE = 'backend.blackpi.ipv64.net')
|
||||
AND (WEBSITE = 'backend.mrhossa.de')
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
@@ -82,7 +82,7 @@ if (!$useCustom) {
|
||||
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
||||
FROM logs
|
||||
WHERE `SERVER_IP` = 'node3'
|
||||
AND (WEBSITE = 'backend.blackpi.ipv64.net')
|
||||
AND (WEBSITE = 'backend.mrhossa.de')
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
@@ -92,7 +92,7 @@ if (!$useCustom) {
|
||||
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
||||
FROM logs
|
||||
WHERE `SERVER_IP` = 'node4'
|
||||
AND (WEBSITE = 'backend.blackpi.ipv64.net')
|
||||
AND (WEBSITE = 'backend.mrhossa.de')
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
@@ -101,7 +101,7 @@ if (!$useCustom) {
|
||||
$sql = "
|
||||
SELECT `CLIENT_IP`, `LAND`, `REQUEST_URL`, `COUNTER`, `FIRST_REQUEST`, `WEBSITE`
|
||||
FROM logs
|
||||
WHERE (WEBSITE = 'backend.blackpi.ipv64.net')
|
||||
WHERE (WEBSITE = 'backend.mrhossa.de')
|
||||
AND CLIENT_IP NOT IN ($devips_sql)
|
||||
ORDER BY FIRST_REQUEST DESC
|
||||
";
|
||||
@@ -116,7 +116,7 @@ if (!$useCustom) {
|
||||
|
||||
<select name="filter" onchange="this.form.submit()">
|
||||
<?php
|
||||
$options = ['alle','today','node1','node2','node3','node4','counterperip'];
|
||||
$options = ['alle', 'today', 'node1', 'node2', 'node3', 'node4', 'counterperip'];
|
||||
foreach ($options as $opt) {
|
||||
$sel = ($filter === $opt) ? 'selected' : '';
|
||||
echo "<option value='$opt' $sel>$opt</option>";
|
||||
@@ -150,25 +150,25 @@ if ($erg = $conn->query($sql)) {
|
||||
?>
|
||||
|
||||
<?php if (!$daten): ?>
|
||||
<b>Keine Daten gefunden</b>
|
||||
<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>
|
||||
<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 foreach ($daten as $row): ?>
|
||||
<tr>
|
||||
<?php foreach ($row as $val): ?>
|
||||
<td><?= htmlspecialchars($val ?? '') ?></td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
@@ -57,9 +57,9 @@ $domains = DatabaseShow("Domains", "*");
|
||||
</h2>
|
||||
|
||||
<?php if ($statusMsg): ?>
|
||||
<div class="status-msg">
|
||||
<?= htmlspecialchars($statusMsg) ?>
|
||||
</div>
|
||||
<div class="status-msg">
|
||||
<?= htmlspecialchars($statusMsg) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
@@ -67,27 +67,27 @@ $domains = DatabaseShow("Domains", "*");
|
||||
|
||||
<?php foreach ($domains as $domain): ?>
|
||||
|
||||
<form method="post" class="admin-card">
|
||||
<form method="post" class="admin-card">
|
||||
|
||||
<input type="hidden" name="id" value="<?= $domain["ID"] ?>">
|
||||
<input type="hidden" name="id" value="<?= $domain["ID"] ?>">
|
||||
|
||||
<label>Subdomain</label>
|
||||
<label>Subdomain</label>
|
||||
|
||||
<input type="text" name="subdomain" value="<?= htmlspecialchars($domain["SUBDOMAIN"]) ?>">
|
||||
<input type="text" name="subdomain" value="<?= htmlspecialchars($domain["SUBDOMAIN"]) ?>">
|
||||
|
||||
<div style="margin-top:10px; display:flex; gap:10px;">
|
||||
<div style="margin-top:10px; display:flex; gap:10px;">
|
||||
|
||||
<button type="submit" name="save_domain" class="btn-save">
|
||||
Speichern
|
||||
</button>
|
||||
<button type="submit" name="save_domain" class="btn-save">
|
||||
Speichern
|
||||
</button>
|
||||
|
||||
<button type="submit" name="delete_domain" class="btn-delete">
|
||||
Löschen
|
||||
</button>
|
||||
<button type="submit" name="delete_domain" class="btn-delete">
|
||||
Löschen
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</form>
|
||||
|
||||
<?php endforeach; ?>
|
||||
|
||||
@@ -100,7 +100,7 @@ $domains = DatabaseShow("Domains", "*");
|
||||
|
||||
<label>Subdomain</label>
|
||||
|
||||
<input type="text" name="subdomain" placeholder="z.B. kleinerpenis.blackpi.ipv64.net">
|
||||
<input type="text" name="subdomain" placeholder="z.B. kleinerpenis.mrhossa.de">
|
||||
|
||||
<button type="submit" name="add_domain" class="btn-add">
|
||||
Domain hinzufügen
|
||||
|
||||
@@ -35,77 +35,77 @@ if ($customQuery) {
|
||||
// Standard Queries
|
||||
if (!$useCustom) {
|
||||
switch ($filter) {
|
||||
case 'today':
|
||||
$sql = "
|
||||
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 (WEBSITE != 'backend.mrhossa.de' OR WEBSITE IS NULL)
|
||||
AND DATE(FIRST_REQUEST) = CURDATE()
|
||||
ORDER BY FIRST_REQUEST DESC
|
||||
";
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'counterperip':
|
||||
$sql = "
|
||||
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)
|
||||
AND (WEBSITE != 'backend.mrhossa.de' OR WEBSITE IS NULL)
|
||||
GROUP BY CLIENT_IP
|
||||
ORDER BY gesamt_counter DESC
|
||||
";
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'node1':
|
||||
$sql = "
|
||||
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)
|
||||
AND (WEBSITE != 'backend.mrhossa.de' OR WEBSITE IS NULL)
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'node2':
|
||||
$sql = "
|
||||
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)
|
||||
AND (WEBSITE != 'backend.mrhossa.de' OR WEBSITE IS NULL)
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'node3':
|
||||
$sql = "
|
||||
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)
|
||||
AND (WEBSITE != 'backend.mrhossa.de' OR WEBSITE IS NULL)
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'node4':
|
||||
$sql = "
|
||||
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)
|
||||
AND (WEBSITE != 'backend.mrhossa.de' OR WEBSITE IS NULL)
|
||||
ORDER BY `FIRST_REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
$sql = "
|
||||
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)
|
||||
AND (WEBSITE != 'backend.mrhossa.de' OR WEBSITE IS NULL)
|
||||
ORDER BY FIRST_REQUEST DESC
|
||||
";
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -116,7 +116,7 @@ if (!$useCustom) {
|
||||
|
||||
<select name="filter" onchange="this.form.submit()">
|
||||
<?php
|
||||
$options = ['alle','today','node1','node2','node3','node4','counterperip'];
|
||||
$options = ['alle', 'today', 'node1', 'node2', 'node3', 'node4', 'counterperip'];
|
||||
foreach ($options as $opt) {
|
||||
$sel = ($filter === $opt) ? 'selected' : '';
|
||||
echo "<option value='$opt' $sel>$opt</option>";
|
||||
@@ -150,25 +150,25 @@ if ($erg = $conn->query($sql)) {
|
||||
?>
|
||||
|
||||
<?php if (!$daten): ?>
|
||||
<b>Keine Daten gefunden</b>
|
||||
<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>
|
||||
<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 foreach ($daten as $row): ?>
|
||||
<tr>
|
||||
<?php foreach ($row as $val): ?>
|
||||
<td><?= htmlspecialchars($val ?? '') ?></td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
@@ -1,42 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Erzwingt den Abbruch des Skripts, sobald ein Befehl fehlschlägt
|
||||
set -e
|
||||
|
||||
echo "🚀 Starte automatischen Merge- und Tag-Prozess..."
|
||||
echo "Starte automatischen Merge- und Tag-Prozess..."
|
||||
|
||||
# 1. Sicherstellen, dass wir die neuesten Stände vom Server haben
|
||||
echo "🔄 Aktualisiere lokale Branches vom Remote..."
|
||||
git fetch --all
|
||||
git config core.filemode false
|
||||
|
||||
# 2. Main aktualisieren
|
||||
echo "🌿 Prüfe main..."
|
||||
git checkout main
|
||||
git pull origin main
|
||||
echo "Aktualisiere lokale Branches vom Remote..."
|
||||
git fetch --all --quiet
|
||||
|
||||
# 3. Main in Dev mergen
|
||||
echo "🔀 Merge: main -> dev..."
|
||||
git checkout dev
|
||||
git pull origin dev || true # Falls dev lokal noch nicht existiert
|
||||
git merge main --no-ff -m "Automated merge from main to dev"
|
||||
git push origin dev
|
||||
echo "Wechsle zu main..."
|
||||
git checkout main --quiet
|
||||
git pull origin main --quiet
|
||||
|
||||
# 4. Dev in Live mergen
|
||||
echo "🔀 Merge: dev -> live..."
|
||||
git checkout live
|
||||
git pull origin live || true # Falls live lokal noch nicht existiert
|
||||
git merge dev --no-ff -m "Automated merge from dev to live"
|
||||
git push origin live
|
||||
echo "Merge: main -> dev..."
|
||||
git checkout dev --quiet
|
||||
git pull origin dev --quiet || true
|
||||
git merge main --no-ff -m "Automated merge from main to dev" --quiet
|
||||
git push origin dev --quiet
|
||||
|
||||
echo "Merge: dev -> live..."
|
||||
git checkout live --quiet
|
||||
git pull origin live --quiet || true
|
||||
git merge dev --no-ff -m "Automated merge from dev to live" --quiet
|
||||
git push origin live --quiet
|
||||
|
||||
# 5. Tag erstellen und pushen
|
||||
# Format: vYYYY.MM.DD-HHMM (z. B. v2026.07.13-1430)
|
||||
TAG_NAME="v$(date +'%Y.%m.%d-%H%M')"
|
||||
|
||||
echo "🏷️ Erstelle Tag: $TAG_NAME..."
|
||||
echo " Erstelle Tag: $TAG_NAME..."
|
||||
git tag -a "$TAG_NAME" -m "Automated release tag $TAG_NAME"
|
||||
git push origin "$TAG_NAME"
|
||||
git push origin "$TAG_NAME" --quiet
|
||||
|
||||
# Zurück auf den Ausgangs-Branch (main) wechseln
|
||||
git checkout main
|
||||
git checkout main --quiet
|
||||
|
||||
echo "✅ Fertig! Alles erfolgreich gemergt und Tag $TAG_NAME wurde gepusht."
|
||||
echo ""
|
||||
echo "========================================================"
|
||||
echo "✅ FERTIG! Alles sauber durchgelaufen."
|
||||
echo "📦 Neuer Release-Tag gepusht: $TAG_NAME"
|
||||
echo "========================================================"
|
||||
Reference in new issue
Block a user