init all
This commit is contained in:
1 parent
2324e056da
commit
574bfdead4
33 files changed
+2042
No files matched your search
@@ -0,0 +1 @@
|
||||
*.db
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash
|
||||
|
||||
while true; do
|
||||
|
||||
echo ""
|
||||
echo "============================="
|
||||
echo " Git Management Script"
|
||||
echo "============================="
|
||||
echo ""
|
||||
echo "1) Geänderte Dateien anzeigen"
|
||||
echo "2) Einzelne Dateien zum Commit auswählen"
|
||||
echo "3) Alles stagen"
|
||||
echo "4) Commit & Push"
|
||||
echo "5) Alte Stände anzeigen"
|
||||
echo "6) Aktueller Branch"
|
||||
echo "7) Änderungen"
|
||||
echo "99) Programm beenden"
|
||||
echo ""
|
||||
|
||||
read -p "Auswahl: " auswahl
|
||||
|
||||
case $auswahl in
|
||||
|
||||
1)
|
||||
echo "Geänderte Dateien:"
|
||||
git status -s
|
||||
;;
|
||||
|
||||
2)
|
||||
echo "Geänderte Dateien:"
|
||||
git status -s
|
||||
echo ""
|
||||
read -p "Welche Datei soll gestaged werden? (Pfad eingeben): " file
|
||||
git add "$file"
|
||||
echo ">> Datei '$file' wurde gestaged."
|
||||
;;
|
||||
|
||||
3)
|
||||
echo ">> Alle Dateien werden gestaged..."
|
||||
git add -A
|
||||
;;
|
||||
|
||||
4)
|
||||
read -p "Commit Nachricht: " commitmsg
|
||||
git commit -m "$commitmsg"
|
||||
echo ">> Pushen..."
|
||||
git push
|
||||
;;
|
||||
|
||||
5)
|
||||
echo ">> Alte Commits:"
|
||||
git log --oneline --graph --decorate --all
|
||||
;;
|
||||
6)
|
||||
echo "Aktueller Branch"
|
||||
git branch
|
||||
;;
|
||||
7)
|
||||
echo "Änderungen"
|
||||
git status
|
||||
;;
|
||||
|
||||
99)
|
||||
echo "Beendet."
|
||||
exit 0
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Ungültige Auswahl!"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "."
|
||||
},
|
||||
],
|
||||
"settings": {
|
||||
"workbench.colorTheme": "Default Dark Modern",
|
||||
"workbench.colorCustomizations": {
|
||||
"activityBar.background": "#0051ffd0",
|
||||
"activityBar.foreground": "#000000",
|
||||
"breadcrumb.foreground": "#FFFFFF",
|
||||
},
|
||||
"editor.renderWhitespace": "all",
|
||||
"editor.smoothScrolling": true,
|
||||
"editor.fontSize": 14,
|
||||
"editor.formatOnSave": true,
|
||||
"editor.minimap.enabled": true,
|
||||
"editor.minimap.scale": 2,
|
||||
"editor.minimap.side": "right",
|
||||
"editor.minimap.maxColumn": 100,
|
||||
"editor.minimap.renderCharacters": true,
|
||||
"editor.minimap.showSlider": "always",
|
||||
"files.autoSave": "afterDelay",
|
||||
"files.autoSaveDelay": 3000,
|
||||
"window.title": "PUBLIC",
|
||||
"workbench.editor.wrapTabs": true,
|
||||
},
|
||||
"extensions": {
|
||||
"recommendations": [
|
||||
"oderwat.indent-rainbow",
|
||||
"pranaygp.vscode-css-peek",
|
||||
"wayou.vscode-todo-highlight",
|
||||
"mrmlnc.vscode-mustache",
|
||||
"fabiospampinato.vscode-highlight",
|
||||
"junstyle.php-cs-fixer",
|
||||
"mtea.gettext-editor",
|
||||
"neilbrayfield.php-docblocker",
|
||||
"bmewburn.vscode-intelephense-client",
|
||||
"mohamed-ali.html-css-class-completion",
|
||||
"rifi2k.format-html-in-php",
|
||||
"mrorz.language-gettext",
|
||||
"voldemortensen.rainbow-tags",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
class cookieController {
|
||||
|
||||
public function setCookie(string $CookieName, int $CookieValue, int $CookieTime) {
|
||||
setcookie($CookieName, $CookieValue, time()+($CookieTime*60));
|
||||
}
|
||||
|
||||
public function readCookieValue(string $CookieName) {
|
||||
if (isset($_COOKIE[$CookieName])) {
|
||||
return $_COOKIE[$CookieName];
|
||||
}
|
||||
return 'Cookie not set';
|
||||
}
|
||||
|
||||
public function DeleteCookie(string $CookieName) {
|
||||
setcookie($CookieName, "", time()-(3600*24));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// USE:
|
||||
|
||||
/**
|
||||
* Cookie setzen:
|
||||
* $cookieManager = new cookieController();
|
||||
* $cookieManager->SetCookie("USER", "7", 60);
|
||||
*/
|
||||
|
||||
/**
|
||||
* Cookie auslesen:
|
||||
* $cookieValue = $cookieManager->readCookieValueCookie("USER");
|
||||
* echo $cookieValue;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Cookie loeschen:
|
||||
* $cookieManager->DeleteCookie("USER");
|
||||
*/
|
||||
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
class getSpecificData {
|
||||
|
||||
public function getServerIP(): string {
|
||||
return $_SERVER['SERVER_ADDR'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getUserAgent(): string {
|
||||
return $_SERVER['HTTP_USER_AGENT'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getRequestURL(): string {
|
||||
return $_SERVER['REQUEST_URI'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getCookie(string $name): ?string {
|
||||
return $_COOKIE[$name] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getSessionID(): string {
|
||||
return $session_id ?? 'Unbekannt ';
|
||||
}
|
||||
|
||||
public function getServerPort(): string {
|
||||
return $_SERVER['SERVER_PORT'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getClientPort(): string {
|
||||
return $_SERVER['REMOTE_PORT'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getDocumentRoot(): string {
|
||||
return $_SERVER['DOCUMENT_ROOT'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getRequestTimeFloat(): string {
|
||||
return $_SERVER['REQUEST_TIME_FLOAT'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getQuery(): string {
|
||||
return $_SERVER['QUERY_STRING'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getServerName(): string {
|
||||
return $_SERVER['SERVER_NAME'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getRequestMethod(): string {
|
||||
return $_SERVER['REQUEST_METHOD'] ?? 'Unbekannt';
|
||||
}
|
||||
|
||||
public function getCurrentDir(): string {
|
||||
return __DIR__ ;
|
||||
}
|
||||
|
||||
public function getDatabase(): string {
|
||||
$conn = db_connect();
|
||||
return $conn->host_info;
|
||||
}
|
||||
|
||||
public function getClientIP(): string {
|
||||
$xff = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? null;
|
||||
|
||||
if ($xff) {
|
||||
$ips = array_map('trim', explode(',', $xff));
|
||||
$clientIp = $ips[0];
|
||||
return $clientIp;
|
||||
} else {
|
||||
return $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
}
|
||||
|
||||
public function getRequestTime(): string {
|
||||
date_default_timezone_set('Europe/Berlin');
|
||||
$timestamp = $_SERVER['REQUEST_TIME'] ?? time();
|
||||
return date('Y-m-d H:i:s', $timestamp);
|
||||
}
|
||||
|
||||
function getGeoIP($ClientIP) {
|
||||
$response = file_get_contents("http://ip-api.com/json/{$ClientIP}?fields=country,countryCode");
|
||||
$data = json_decode($response);
|
||||
return $data->country;
|
||||
}
|
||||
|
||||
function getWhitelistedIPs() {
|
||||
$conn = db_connect();
|
||||
$ips="SELECT `IP-ADDRESSE` FROM Whitelisted";
|
||||
$results = $conn->query($ips);
|
||||
|
||||
$WhitelistedIPs = [];
|
||||
if ($results && $results->num_rows > 0) {
|
||||
while ($row = $results->fetch_assoc()) {
|
||||
$WhitelistedIPs[] = $row['IP-ADDRESSE'];
|
||||
}
|
||||
}
|
||||
return $WhitelistedIPs;
|
||||
}
|
||||
|
||||
public function getAllData(): array {
|
||||
return [
|
||||
'Document-Root' => $this->getDocumentRoot(),
|
||||
'CurrentDir' => $this->getCurrentDir(),
|
||||
'SERVER-IP' => $this->getServerIP(),
|
||||
'Server-Port' => $this->getServerPort(),
|
||||
'Server-Name' => $this->getServerName(),
|
||||
'Client-IP' => $this->getClientIP(),
|
||||
'Client-Port' => $this->getClientPort(),
|
||||
'User-Agent' => $this->getUserAgent(),
|
||||
'Request URL' => $this->getRequestURL(),
|
||||
'Cookie' => $this->getCookie('USER'),
|
||||
'Session' => $this->getSessionID(),
|
||||
'Query' => $this->getQuery(),
|
||||
'Request-Method' => $this->getRequestMethod(),
|
||||
'Request-Time' => $this->getRequestTime(),
|
||||
'Request-Time-Float' => $this->getRequestTimeFloat(),
|
||||
'Land' => $this->getGeoIP($this->getClientIP()),
|
||||
'Database' => $this->getDatabase(),
|
||||
'Whitelisted' => $this->getWhitelistedIPs(),
|
||||
];
|
||||
}
|
||||
|
||||
public function ShowAllData(): void {
|
||||
$SpecificData = (new getSpecificData())->getAllData();
|
||||
echo "<pre>";
|
||||
print_r($SpecificData);
|
||||
echo "</pre>";
|
||||
}
|
||||
}
|
||||
|
||||
// $ShowAllDAta = (new getSpecificData())->ShowAllData();
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
function db_connect() {
|
||||
$local = false;
|
||||
|
||||
$servers = [
|
||||
'remote' => '10.233.1.244',
|
||||
'local' => '100.123.136.86'
|
||||
];
|
||||
|
||||
$username = "worker";
|
||||
$password = "bBHofurUJWKzPE8Z";
|
||||
$dbname = "DEV";
|
||||
|
||||
$host = $local ? $servers['local'] : $servers['remote'];
|
||||
|
||||
$conn = new mysqli($host, $username, $password, $dbname);
|
||||
|
||||
if ($conn->connect_error) {
|
||||
throw new Exception("Datenbankverbindung fehlgeschlagen: " . $conn->connect_error);
|
||||
}
|
||||
|
||||
$conn->set_charset("utf8mb4");
|
||||
return $conn;
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
function DatabaseInsert($table, $columns, ...$values) {
|
||||
include_once 'DatabaseConnect.php';
|
||||
$conn = db_connect();
|
||||
|
||||
// Platzhalter erzeugen
|
||||
$placeholders = rtrim(str_repeat("?,", count($values)), ",");
|
||||
|
||||
// Query bauen
|
||||
$sql = "INSERT INTO `$table` ($columns) VALUES ($placeholders)";
|
||||
$stmt = $conn->prepare($sql);
|
||||
|
||||
if (!$stmt) {
|
||||
die("Fehler beim Prepare: " . $conn->error);
|
||||
}
|
||||
|
||||
if (!$stmt->execute($values)) {
|
||||
die("Fehler beim Execute: " . $stmt->error);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
|
||||
function logging() {
|
||||
include_once 'DatabaseConnect.php';
|
||||
include_once 'DataController.php';
|
||||
|
||||
$ClientIP = (new getSpecificData())->getClientIP();
|
||||
$ServerIP = (new getSpecificData())->getServerIP();
|
||||
$UserAgent = (new getSpecificData())->getUserAgent();
|
||||
$RequestURL = (new getSpecificData())->getRequestURL();
|
||||
$USERCOOKIE = (new getSpecificData())->getCookie("USER");
|
||||
$SessionID = (new getSpecificData())->getSessionID();
|
||||
$REQUESTTIME = (new getSpecificData())->getRequestTime();
|
||||
$QUERY = (new getSpecificData())->getQuery();
|
||||
$LAND = (new getSpecificData())->getGeoIP($ClientIP);
|
||||
$Whitelisted = (new getSpecificData())->getWhitelistedIPs();
|
||||
|
||||
if (in_array($ClientIP, $Whitelisted)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$db_conn = db_connect();
|
||||
|
||||
$stmt = $db_conn->prepare("SELECT * FROM logs WHERE
|
||||
`CLIENT-IP` LIKE ? and
|
||||
`REQUEST-URL` = ? and
|
||||
`REQUEST-URL` <> '/favicon.ico'
|
||||
");
|
||||
|
||||
$stmt->bind_param("ss", $ClientIP, $RequestURL);
|
||||
$stmt->execute();
|
||||
$stmt->store_result();
|
||||
|
||||
if ($RequestURL !== '/favicon.ico') {
|
||||
if ($stmt->num_rows > 0) { //wenn mindestens eine zeile vorhanden ist für die client ip dann führe updates durch, wenn nicht mache neue zeile
|
||||
$updateCounter = $db_conn->prepare("
|
||||
UPDATE logs
|
||||
SET COUNTER = COUNTER + 1
|
||||
WHERE `CLIENT-IP` = ?
|
||||
AND `REQUEST-URL` = ?
|
||||
");
|
||||
$updateCounter->bind_param("ss", $ClientIP, $RequestURL);
|
||||
$updateCounter->execute();
|
||||
|
||||
$updateLastRequest = $db_conn->prepare("
|
||||
UPDATE logs
|
||||
SET `LAST-REQUEST` = ?
|
||||
WHERE `CLIENT-IP` = ?
|
||||
AND `REQUEST-URL` = ?
|
||||
");
|
||||
$updateLastRequest->bind_param("sss", $REQUESTTIME, $ClientIP, $RequestURL);
|
||||
$updateLastRequest->execute();
|
||||
|
||||
$updateCookieValue = $db_conn->prepare("
|
||||
UPDATE logs
|
||||
SET `USER-COOKIE-VALUE` = ?
|
||||
WHERE `CLIENT-IP` = ?
|
||||
AND `REQUEST-URL` = ?
|
||||
");
|
||||
$updateCookieValue->bind_param("sss", $USERCOOKIE, $ClientIP, $RequestURL);
|
||||
$updateCookieValue->execute();
|
||||
|
||||
$updateServerIP = $db_conn->prepare("
|
||||
UPDATE logs
|
||||
SET `SERVER-IP` = ?
|
||||
WHERE `CLIENT-IP` = ?
|
||||
AND `REQUEST-URL` = ?
|
||||
AND `SERVER-IP` IS NULL
|
||||
");
|
||||
$updateServerIP->bind_param("sss", $ServerIP, $ClientIP, $RequestURL);
|
||||
$updateServerIP->execute();
|
||||
|
||||
$updateClientIP = $db_conn->prepare("
|
||||
UPDATE logs
|
||||
SET `CLIENT-IP` = ?
|
||||
WHERE `REQUEST-URL` = ?
|
||||
AND `CLIENT-IP` = 'Unbekannt'
|
||||
");
|
||||
$updateClientIP->bind_param("ss", $ClientIP, $RequestURL);
|
||||
$updateClientIP->execute();
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
$query = $db_conn->prepare("
|
||||
INSERT INTO logs (
|
||||
`CLIENT-IP`,
|
||||
`LAND`,
|
||||
`SERVER-IP`,
|
||||
`USER-AGENT`,
|
||||
`REQUEST-URL`,
|
||||
`USER-COOKIE-VALUE`,
|
||||
`USER-SESSION-VALUE`,
|
||||
`FIRST-REQUEST`,
|
||||
`QUERY`
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
");
|
||||
|
||||
$query->bind_param(
|
||||
"sssssssss",
|
||||
$ClientIP,
|
||||
$LAND,
|
||||
$ServerIP,
|
||||
$UserAgent,
|
||||
$RequestURL,
|
||||
$USERCOOKIE,
|
||||
$SessionID,
|
||||
$REQUESTTIME,
|
||||
$QUERY
|
||||
);
|
||||
|
||||
$query->execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
include_once '../controller/LogController.php';
|
||||
logging();
|
||||
|
||||
if (!isset($_GET['website'])) {
|
||||
die("Fehlender Parameter: website");
|
||||
}
|
||||
|
||||
$website = trim($_GET['website']);
|
||||
|
||||
$blocked_schemes = ['javascript:', 'data:', 'file:'];
|
||||
foreach ($blocked_schemes as $scheme) {
|
||||
if (stripos($website, $scheme) === 0) {
|
||||
die("Ungültige URL.");
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/^https?:\/\//i', $website)) {
|
||||
header("Location: " . $website);
|
||||
exit;
|
||||
}
|
||||
|
||||
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? "https://" : "http://";
|
||||
$domain = $_SERVER['HTTP_HOST'];
|
||||
|
||||
$website = ltrim($website, "/");
|
||||
|
||||
$redirectUrl = $protocol . $domain . "/" . $website;
|
||||
|
||||
header("Location: " . $redirectUrl);
|
||||
exit;
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 69 KiB |
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
include_once 'controller/CookieController.php';
|
||||
include_once 'controller/LogController.php';
|
||||
include_once 'controller/DataController.php';
|
||||
include_once 'controller/DatabaseConnect.php';
|
||||
include_once 'moduls/ConsoleLog.php';
|
||||
|
||||
$data = new getSpecificData();
|
||||
$cookie = new cookieController();
|
||||
|
||||
$clientIP = $data->getClientIP();
|
||||
$whitelist = $data->getWhitelistedIPs();
|
||||
|
||||
if (in_array($clientIP, $whitelist)) {
|
||||
|
||||
$cookie->SetCookie("USER", "1", 60);
|
||||
|
||||
print_r($data->ShowAllData());
|
||||
echo '<a href="/controller/RoutesController.php?website=/services/Dashboards/MainDashboard.php">Main Dashboard</a>';
|
||||
} else {
|
||||
|
||||
$cookie->SetCookie("USER", "0", 60);
|
||||
|
||||
header("Location: /controller/RoutesController.php?website=/services/Dashboards/MainDashboard.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
$allData = (new getSpecificData())->getAllData();
|
||||
DebugLog($allData);
|
||||
logging();
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
include_once '../controller/DatabaseController.php';
|
||||
|
||||
// --- Empfangene Werte ---
|
||||
$datum = $_POST['datum'];
|
||||
$p1 = $_POST['p1'];
|
||||
$p2 = $_POST['p2'];
|
||||
$p3 = $_POST['p3'];
|
||||
$p4 = $_POST['p4'];
|
||||
$beginn = $_POST['beginn']; // Format HH:MM
|
||||
$endeReal = $_POST['ende_real']; // Format HH:MM
|
||||
|
||||
// --- Sollzeit berechnen: BEGINN + 8h 30min ---
|
||||
$soll = new DateTime($beginn);
|
||||
$soll->modify("+8 hours 30 minutes");
|
||||
|
||||
// --- ENDE_PUBLIC berechnen ---
|
||||
$randomMin = rand(1, 9);
|
||||
$endePublicDt = clone $soll;
|
||||
$endePublicDt->modify("+{$randomMin} minutes");
|
||||
$endePublic = $endePublicDt->format("H:i");
|
||||
|
||||
// --- OVERTIME berechnen: ENDE_REAL - Sollzeit ---
|
||||
$real = DateTime::createFromFormat("H:i", $endeReal);
|
||||
|
||||
// Gesamtarbeitszeit tatsächliche (real - beginn)
|
||||
$beginnDt = new DateTime($beginn);
|
||||
$arbeitsDiff = $beginnDt->diff($real);
|
||||
$arbeitsMinuten = ($arbeitsDiff->h * 60) + $arbeitsDiff->i;
|
||||
|
||||
// Sollzeit in Minuten
|
||||
$sollMinuten = 8 * 60 + 30;
|
||||
|
||||
// Overtime bestimmen
|
||||
if ($arbeitsMinuten <= $sollMinuten) {
|
||||
$overtime = 0;
|
||||
} else {
|
||||
// Differenz: real - soll
|
||||
$diff = $soll->diff($real);
|
||||
$overtime = ($diff->h * 60) + $diff->i;
|
||||
}
|
||||
|
||||
// --- Insert in DB ---
|
||||
DatabaseInsert(
|
||||
"Firmenberichte",
|
||||
"DATUM, PROZESS_1, PROZESS_2, PROZESS_3, PROZESS_4, BEGINN, ENDE_REAL, ENDE_PUBLIC, OVERTIME",
|
||||
$datum,
|
||||
$p1,
|
||||
$p2,
|
||||
$p3,
|
||||
$p4,
|
||||
$beginn,
|
||||
$endeReal,
|
||||
$endePublic,
|
||||
$overtime
|
||||
);
|
||||
|
||||
if (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])) {
|
||||
$redirectUrl = $_SERVER['HTTP_REFERER'];
|
||||
} else {
|
||||
$redirectUrl = 'index.php';
|
||||
}
|
||||
|
||||
header("Location: $redirectUrl");
|
||||
exit;
|
||||
?>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
function DebugLog(...$vars) {
|
||||
echo "<script>";
|
||||
|
||||
foreach ($vars as $index => $value) {
|
||||
$data = [
|
||||
"Index" => $index,
|
||||
"Value" => $value
|
||||
];
|
||||
echo "console.log(" . json_encode($data) . ");";
|
||||
}
|
||||
|
||||
echo "</script>";
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
include_once '../controller/DatabaseConnect.php';
|
||||
include_once '../controller/DataController.php';
|
||||
|
||||
$db_conn = db_connect();
|
||||
|
||||
$stmt = $db_conn->prepare("SELECT `CLIENT-IP`, `REQUEST-URL` FROM logs WHERE `LAND` = '' OR `LAND` IS NULL LIMIT 25");
|
||||
$stmt->execute();
|
||||
$result = $stmt->get_result();
|
||||
|
||||
$GeoIP = new getSpecificData();
|
||||
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$ip = $row['CLIENT-IP'];
|
||||
$url = $row['REQUEST-URL'];
|
||||
|
||||
$country = $GeoIP->getGeoIP($ip);
|
||||
|
||||
if (empty($country)) {
|
||||
$country = 'Unbekannt';
|
||||
}
|
||||
|
||||
$update = $db_conn->prepare("
|
||||
UPDATE logs
|
||||
SET `LAND` = ?
|
||||
WHERE `CLIENT-IP` = ? AND `REQUEST-URL` = ?
|
||||
LIMIT 50
|
||||
");
|
||||
$update->bind_param("sss", $country, $ip, $url);
|
||||
$update->execute();
|
||||
|
||||
echo "<br>";
|
||||
echo "<table style='border:1px solid black; border-collapse: collapse; width: 400px; text-align: center;'>";
|
||||
echo "<tr>";
|
||||
echo "<td style='border:1px solid black; width: 200px'>$ip</td>";
|
||||
echo "<td style='border:1px solid black; width: 200px'>$country</td>";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
// Redirect Ziel bestimmen
|
||||
if (!empty($_SERVER['HTTP_REFERER'])) {
|
||||
$redirectUrl = $_SERVER['HTTP_REFERER'];
|
||||
} else {
|
||||
$redirectUrl = 'index.php';
|
||||
}
|
||||
|
||||
// Meldung anzeigen + automatische Weiterleitung
|
||||
echo "<h3>Update abgeschlossen – weiterleitung erfolgt in 3 Sekunden...</h3>";
|
||||
echo "<meta http-equiv='refresh' content='3;url=$redirectUrl'>";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,4 @@
|
||||
User-agent: *
|
||||
Disallow: /admin/
|
||||
|
||||
Sitemap: https://blackpi.ipv64.net/sitemap.xml
|
||||
@@ -0,0 +1 @@
|
||||
Contact: bruno.eckhardt@gmx.de
|
||||
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
include_once '../controller/LogController.php';
|
||||
logging();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Bericht hinzufügen</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #f4f7f8;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 50px auto;
|
||||
background: #fff;
|
||||
padding: 30px;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
h2 {
|
||||
text-align: center;
|
||||
color: #333;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
form label {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
font-weight: bold;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
form input {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
transition: border-color 0.3s;
|
||||
}
|
||||
|
||||
form input:focus {
|
||||
border-color: #007BFF;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
button {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
background-color: #007BFF;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #0056b3;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<h2>Neuen Firmenbericht hinzufügen</h2>
|
||||
|
||||
<form action="../moduls/BerichteErstellenInsertModule.php" method="post">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="datum">Datum:</label>
|
||||
<input type="date" id="datum" name="datum" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="p1">Prozess 1:</label>
|
||||
<input type="text" id="p1" name="p1" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="p2">Prozess 2:</label>
|
||||
<input type="text" id="p2" name="p2" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="p3">Prozess 3:</label>
|
||||
<input type="text" id="p3" name="p3" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="p4">Prozess 4:</label>
|
||||
<input type="text" id="p4" name="p4" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="beginn">Beginn:</label>
|
||||
<input type="time" id="beginn" name="beginn" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="ende_real">Ende (real):</label>
|
||||
<input type="time" id="ende_real" name="ende_real" required>
|
||||
</div>
|
||||
|
||||
<button type="submit">Speichern</button>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,138 @@
|
||||
<?php
|
||||
include_once '../controller/LogController.php';
|
||||
include_once '../controller/DatabaseConnect.php';
|
||||
logging();
|
||||
|
||||
$conn = db_connect();
|
||||
$corrections_file = __DIR__ . '/overtime_corrections.json';
|
||||
|
||||
// --- JSON-Korrektur laden ---
|
||||
if (file_exists($corrections_file)) {
|
||||
$corrections = json_decode(file_get_contents($corrections_file), true);
|
||||
if (!is_array($corrections)) $corrections = [];
|
||||
} else {
|
||||
$corrections = ['plus' => 0, 'minus' => 0];
|
||||
}
|
||||
|
||||
// --- Generelle Korrektur speichern ---
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$man_plus = intval($_POST['man_plus'] ?? 0);
|
||||
$man_minus = intval($_POST['man_minus'] ?? 0);
|
||||
|
||||
$corrections = [
|
||||
'plus' => $man_plus,
|
||||
'minus' => $man_minus,
|
||||
'total' => $man_plus - $man_minus
|
||||
];
|
||||
|
||||
file_put_contents($corrections_file, json_encode($corrections, JSON_PRETTY_PRINT));
|
||||
}
|
||||
|
||||
// --- Alle Firmenberichte aus DB laden ---
|
||||
$daten = [];
|
||||
$sql = "SELECT `DATUM`, `PROZESS_1`, `PROZESS_2`, `PROZESS_3`, `PROZESS_4`, `BEGINN`, `ENDE_REAL`, `ENDE_PUBLIC`, `OVERTIME` FROM Firmenberichte ORDER BY `DATUM` DESC";
|
||||
if ($erg = $conn->query($sql)) {
|
||||
while ($datensatz = $erg->fetch_object()) {
|
||||
$daten[] = $datensatz;
|
||||
}
|
||||
$erg->free();
|
||||
}
|
||||
|
||||
// --- Overtime-Summe berechnen ---
|
||||
$gesamt_minuten = 0;
|
||||
$time = "SELECT SUM(OVERTIME) AS db_minuten FROM Firmenberichte";
|
||||
if ($erg = $conn->query($time)) {
|
||||
$datensatz = $erg->fetch_object();
|
||||
$gesamt_minuten = intval($datensatz->db_minuten);
|
||||
}
|
||||
|
||||
// Generelle Korrektur hinzufügen
|
||||
$gesamt_minuten += intval($corrections['total'] ?? 0);
|
||||
|
||||
// Stunden/Minuten
|
||||
$stunden = intdiv($gesamt_minuten, 60);
|
||||
$minuten = $gesamt_minuten % 60;
|
||||
|
||||
// Overtime-Objekt für Tabelle
|
||||
$overtime = [
|
||||
(object)[
|
||||
'db_minuten' => intval($datensatz->db_minuten),
|
||||
'plus' => $corrections['plus'] ?? 0,
|
||||
'minus' => $corrections['minus'] ?? 0,
|
||||
'gesamt_korrigiert'=> $gesamt_minuten,
|
||||
'stunden' => $stunden,
|
||||
'minuten' => $minuten
|
||||
]
|
||||
];
|
||||
|
||||
?>
|
||||
|
||||
<h1>Firmenberichte</h1>
|
||||
|
||||
<!-- Formular für generelle Korrektur -->
|
||||
<form method="POST">
|
||||
<h3>Generelle Stundenkorrektur für alle Berichte</h3>
|
||||
<label>Plus-Minuten: </label>
|
||||
<input type="number" name="man_plus" value=""><br>
|
||||
<label>Minus-Minuten: </label>
|
||||
<input type="number" name="man_minus" value=""><br><br>
|
||||
<button type="submit">Speichern</button>
|
||||
</form>
|
||||
<hr>
|
||||
|
||||
<!-- Overtime Gesamtanzeige -->
|
||||
<h2>Gesamte Overtime inkl. Korrektur</h2>
|
||||
<div style="max-width:100%; overflow-x:auto;">
|
||||
<table border="1" cellpadding="5" cellspacing="0"
|
||||
style="border-collapse:collapse; width:100%; font-family:Arial; font-size:14px;">
|
||||
<tr style="background:#f0f0f0; font-weight:bold;">
|
||||
<th>DB-Minuten</th>
|
||||
<th>Plus-Minuten</th>
|
||||
<th>Minus-Minuten</th>
|
||||
<th>Gesamt korrigiert</th>
|
||||
<th>Stunden</th>
|
||||
<th>Minuten</th>
|
||||
</tr>
|
||||
<?php foreach($overtime as $row): ?>
|
||||
<tr>
|
||||
<td style="padding:6px; word-break:break-word; white-space:normal;">
|
||||
<?= htmlspecialchars($row->db_minuten ?? '') ?></td>
|
||||
<td style="padding:6px; word-break:break-word; white-space:normal;">
|
||||
<?= htmlspecialchars($row->plus ?? '') ?></td>
|
||||
<td style="padding:6px; word-break:break-word; white-space:normal;">
|
||||
<?= htmlspecialchars($row->minus ?? '') ?></td>
|
||||
<td style="padding:6px; word-break:break-word; white-space:normal;">
|
||||
<?= htmlspecialchars($row->gesamt_korrigiert ?? '') ?></td>
|
||||
<td style="padding:6px; word-break:break-word; white-space:normal;">
|
||||
<?= htmlspecialchars($row->stunden ?? '') ?></td>
|
||||
<td style="padding:6px; word-break:break-word; white-space:normal;">
|
||||
<?= htmlspecialchars($row->minuten ?? '') ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<h2>Berichte im Detail</h2>
|
||||
<div style="max-width:100%; overflow-x:auto;">
|
||||
<table border="1" cellpadding="5" cellspacing="0"
|
||||
style="border-collapse:collapse; width:100%; font-family:Arial; font-size:14px;">
|
||||
<tr style="background:#f0f0f0; font-weight:bold;">
|
||||
<?php
|
||||
if (!empty($daten)) {
|
||||
foreach ($daten[0] as $k => $v) {
|
||||
echo "<th style='text-align:left; padding:6px; word-break:break-word; white-space:normal;'>".htmlspecialchars($k ?? '')."</th>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
<?php foreach ($daten as $bericht): ?>
|
||||
<tr>
|
||||
<?php foreach ($bericht as $v): ?>
|
||||
<td style="padding:6px; word-break:break-word; white-space:normal; max-width:300px;">
|
||||
<?= htmlspecialchars($v ?? '') ?></td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
include_once '../../templates/AdminDashboardButtons.php';
|
||||
include_once '../../controller/LogController.php';
|
||||
logging();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Admin Dashboard</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f9;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
flex: 1;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
width: 90%;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.section {
|
||||
background: #ffffff;
|
||||
padding: 20px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.section h2 {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 15px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
a.button {
|
||||
padding: 15px 25px;
|
||||
font-size: 18px;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
a.button:hover {
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.container {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<?php foreach ($buttons as $section): ?>
|
||||
<div class="section">
|
||||
<h2><?php echo htmlspecialchars($section['section']); ?></h2>
|
||||
<div class="button-container">
|
||||
<?php foreach ($section['buttons'] as $button): ?>
|
||||
<a class="button" href="<?php echo htmlspecialchars($button['link']); ?>" target="_blank"
|
||||
style="background-color: <?php echo htmlspecialchars($button['color']); ?>;">
|
||||
<?php echo htmlspecialchars($button['name']); ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
include_once '../../templates/DevicesDashboardButtons.php';
|
||||
include_once '../../controller/LogController.php';
|
||||
logging();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Device Dashboard</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f9;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
flex: 1;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
width: 90%;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.section {
|
||||
background: #ffffff;
|
||||
padding: 20px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.section h2 {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 15px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
a.button {
|
||||
padding: 15px 25px;
|
||||
font-size: 18px;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
a.button:hover {
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.container {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<?php foreach ($buttons as $section): ?>
|
||||
<div class="section">
|
||||
<h2><?php echo htmlspecialchars($section['section']); ?></h2>
|
||||
<div class="button-container">
|
||||
<?php foreach ($section['buttons'] as $button): ?>
|
||||
<a class="button" href="<?php echo htmlspecialchars($button['link']); ?>" target="_blank"
|
||||
style="background-color: <?php echo htmlspecialchars($button['color']); ?>;">
|
||||
<?php echo htmlspecialchars($button['name']); ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
include_once '../../templates/MainDashboardButtons.php';
|
||||
include_once '../../controller/LogController.php';
|
||||
logging();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Main Dashboard</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f9;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
flex: 1;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
width: 90%;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.section {
|
||||
background: #ffffff;
|
||||
padding: 20px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.section h2 {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 15px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
a.button {
|
||||
padding: 15px 25px;
|
||||
font-size: 18px;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
a.button:hover {
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.container {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<?php foreach ($buttons as $section): ?>
|
||||
<div class="section">
|
||||
<h2><?php echo htmlspecialchars($section['section']); ?></h2>
|
||||
<div class="button-container">
|
||||
<?php foreach ($section['buttons'] as $button): ?>
|
||||
<a class="button" href="<?php echo htmlspecialchars($button['link']); ?>"
|
||||
style="background-color: <?php echo htmlspecialchars($button['color']); ?>;">
|
||||
<?php echo htmlspecialchars($button['name']); ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
include_once '../../templates/ServicesDashboardButtons.php';
|
||||
include_once '../../controller/LogController.php';
|
||||
logging();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Services Dashboard</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f9;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
flex: 1;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
width: 90%;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.section {
|
||||
background: #ffffff;
|
||||
padding: 20px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.section h2 {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 15px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
a.button {
|
||||
padding: 15px 25px;
|
||||
font-size: 18px;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
a.button:hover {
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.container {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<?php foreach ($buttons as $section): ?>
|
||||
<div class="section">
|
||||
<h2><?php echo htmlspecialchars($section['section']); ?></h2>
|
||||
<div class="button-container">
|
||||
<?php foreach ($section['buttons'] as $button): ?>
|
||||
<a class="button" href="<?php echo htmlspecialchars($button['link']); ?>" target="_blank"
|
||||
style="background-color: <?php echo htmlspecialchars($button['color']); ?>;">
|
||||
<?php echo htmlspecialchars($button['name']); ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
include_once '../../templates/ThirdpartyDashboardButtons.php';
|
||||
include_once '../../controller/LogController.php';
|
||||
logging();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Thirdparty Dashboard</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f9;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
flex: 1;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
width: 90%;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.section {
|
||||
background: #ffffff;
|
||||
padding: 20px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.section h2 {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 15px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
a.button {
|
||||
padding: 15px 25px;
|
||||
font-size: 18px;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
a.button:hover {
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.container {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<?php foreach ($buttons as $section): ?>
|
||||
<div class="section">
|
||||
<h2><?php echo htmlspecialchars($section['section']); ?></h2>
|
||||
<div class="button-container">
|
||||
<?php foreach ($section['buttons'] as $button): ?>
|
||||
<a class="button" href="<?php echo htmlspecialchars($button['link']); ?>" target="_blank"
|
||||
style="background-color: <?php echo htmlspecialchars($button['color']); ?>;">
|
||||
<?php echo htmlspecialchars($button['name']); ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,253 @@
|
||||
<?php
|
||||
include_once '../controller/LogController.php';
|
||||
include_once '../controller/DatabaseConnect.php';
|
||||
|
||||
logging();
|
||||
$conn = db_connect();
|
||||
|
||||
// $devips = [
|
||||
// '178.19.224.210',
|
||||
// '80.153.174.251',
|
||||
// 'Unbekannt',
|
||||
// ];
|
||||
|
||||
$devips = $Whitelisted = (new getSpecificData())->getWhitelistedIPs();
|
||||
$devips_sql = "'" . implode("','", $devips) . "'";
|
||||
|
||||
echo "<h1>Datenbank auslesen um " . date("H:i:s") . "</h1>";
|
||||
echo "<h2>Excluded:</h2>";
|
||||
echo '<pre>';
|
||||
print_r($devips_sql);
|
||||
echo '</pre>';
|
||||
echo '<br>';
|
||||
|
||||
/* ----------------------------------------------------------
|
||||
FILTER aus Dropdown
|
||||
---------------------------------------------------------- */
|
||||
|
||||
$filter = $_GET['filter'] ?? 'alle';
|
||||
|
||||
/* ----------------------------------------------------------
|
||||
Eigene Query aus Form
|
||||
---------------------------------------------------------- */
|
||||
|
||||
$customQuery = $_POST['custom_query'] ?? '';
|
||||
$useCustom = false;
|
||||
|
||||
if ($customQuery) {
|
||||
$forbidden = ['DELETE', 'UPDATE', 'INSERT', 'DROP', 'ALTER', 'TRUNCATE'];
|
||||
$upper = strtoupper($customQuery);
|
||||
|
||||
foreach ($forbidden as $bad) {
|
||||
if (strpos($upper, $bad) !== false) {
|
||||
die("<b style='color:red'>Gefährliche Query blockiert! ($bad gefunden)</b>");
|
||||
}
|
||||
}
|
||||
|
||||
if (stripos($customQuery, "SELECT") !== 0) {
|
||||
die("<b style='color:red'>Nur SELECT-Befehle sind erlaubt!</b>");
|
||||
}
|
||||
|
||||
$sql = $customQuery;
|
||||
$useCustom = true;
|
||||
}
|
||||
|
||||
if (!$useCustom) {
|
||||
switch ($filter) {
|
||||
case 'today':
|
||||
$sql = "
|
||||
SELECT * FROM `logs`
|
||||
WHERE `CLIENT-IP` NOT IN ($devips_sql)
|
||||
AND DATE(`FIRST-REQUEST`) = CURDATE()
|
||||
ORDER BY `FIRST-REQUEST` DESC
|
||||
";
|
||||
break;
|
||||
case 'last10':
|
||||
$sql = "
|
||||
SELECT * FROM `logs`
|
||||
WHERE `CLIENT-IP` NOT IN ($devips_sql)
|
||||
ORDER BY `FIRST-REQUEST` DESC
|
||||
LIMIT 10
|
||||
";
|
||||
break;
|
||||
case 'last50':
|
||||
$sql = "
|
||||
SELECT * FROM `logs`
|
||||
WHERE `CLIENT-IP` NOT IN ($devips_sql)
|
||||
ORDER BY `FIRST-REQUEST` DESC
|
||||
LIMIT 50
|
||||
";
|
||||
break;
|
||||
case 'last100':
|
||||
$sql = "
|
||||
SELECT * FROM `logs`
|
||||
WHERE `CLIENT-IP` NOT IN ($devips_sql)
|
||||
ORDER BY `FIRST-REQUEST` DESC
|
||||
LIMIT 100
|
||||
";
|
||||
break;
|
||||
case 'lands':
|
||||
$sql = "
|
||||
SELECT LAND, COUNT(*) AS Anzahl
|
||||
FROM logs
|
||||
WHERE `CLIENT-IP` NOT IN ($devips_sql)
|
||||
GROUP BY LAND
|
||||
ORDER BY Anzahl DESC
|
||||
";
|
||||
break;
|
||||
|
||||
case 'counterperreq':
|
||||
$sql = "
|
||||
SELECT `CLIENT-IP`, `LAND`, `USER-AGENT`, `REQUEST-URL`, `FIRST-REQUEST` ,`LAST-REQUEST`, `COUNTER`
|
||||
FROM logs
|
||||
WHERE `CLIENT-IP` NOT IN ($devips_sql)
|
||||
AND `COUNTER` > '1'
|
||||
ORDER BY `COUNTER` 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)
|
||||
GROUP BY `CLIENT-IP`
|
||||
ORDER BY gesamt_counter DESC;
|
||||
";
|
||||
break;
|
||||
|
||||
case 'alle':
|
||||
default:
|
||||
$sql = "
|
||||
SELECT * FROM `logs`
|
||||
WHERE `CLIENT-IP` NOT IN ($devips_sql)
|
||||
ORDER BY `FIRST-REQUEST` DESC
|
||||
";
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------
|
||||
Dropdown anzeigen
|
||||
---------------------------------------------------------- */
|
||||
?>
|
||||
<form method="GET">
|
||||
<label><b>Log-Filter auswählen:</b></label>
|
||||
<select name="filter" onchange="this.form.submit()">
|
||||
<option value="alle" <?= $filter == 'alle' ? 'selected' : '' ?>>Alle Logs</option>
|
||||
<option value="today" <?= $filter == 'today' ? 'selected' : '' ?>>Heute</option>
|
||||
<option value="last10" <?= $filter == 'last10' ? 'selected' : '' ?>>Letzte 10</option>
|
||||
<option value="last50" <?= $filter == 'last50' ? 'selected' : '' ?>>Letzte 50</option>
|
||||
<option value="last100" <?= $filter == 'last100' ? 'selected' : '' ?>>Letzte 100</option>
|
||||
<option value="lands" <?= $filter == 'lands' ? 'selected' : '' ?>>Länder per Counter</option>
|
||||
<option value="counterperreq" <?= $filter == 'counterperreq' ? 'selected' : '' ?>>Counter per Req and IP
|
||||
</option>
|
||||
<option value="counterperip" <?= $filter == 'counterperip' ? 'selected' : '' ?>>Counter per IP</option>
|
||||
</select>
|
||||
</form>
|
||||
|
||||
<br><br>
|
||||
|
||||
<form method="POST">
|
||||
<label><b>Eigene SELECT-Query ausführen:</b></label><br>
|
||||
<textarea name="custom_query" style="width:1200px;height:60px;"><?= htmlspecialchars($customQuery) ?></textarea><br>
|
||||
<button type="submit">Query ausführen</button>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const ta = document.querySelector("textarea[name='custom_query']");
|
||||
|
||||
const keywords = [
|
||||
"select", "from", "where", "group", "by",
|
||||
"is", "binary", "regexp", "any", "order",
|
||||
"update", "delete", "create", "drop", "limit",
|
||||
"null", "and", "or", "exists", "case",
|
||||
"alter", "distinct", "having", "as", "on",
|
||||
"not", "in", "union", "all", "like",
|
||||
"some", "as", "by", "asc", "desc",
|
||||
"outer", "inner", "left", "right", "join",
|
||||
];
|
||||
|
||||
const regex = new RegExp("\\b(" + keywords.join("|") + ")\\b", "gi");
|
||||
|
||||
ta.addEventListener("input", () => {
|
||||
let pos = ta.selectionStart; // Cursorposition merken
|
||||
|
||||
ta.value = ta.value.replace(regex, m => m.toUpperCase());
|
||||
|
||||
// Cursor zurücksetzen
|
||||
ta.selectionStart = ta.selectionEnd = pos;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<br>
|
||||
<hr>
|
||||
<br>
|
||||
|
||||
<?php
|
||||
|
||||
$daten = [];
|
||||
|
||||
if ($erg = $conn->query($sql)) {
|
||||
|
||||
// Query schön anzeigen
|
||||
echo "<b>Query:</b><br>";
|
||||
echo "<div style='background:#f4f4f4; padding:10px; border-left:5px solid #007BFF; font-family:monospace; white-space:pre-wrap; word-wrap:break-word; max-width:1200px; overflow:auto;'>$sql</div><br>";
|
||||
|
||||
if ($erg->num_rows) {
|
||||
echo "<b>Gefundene Einträge: " . $erg->num_rows . "</b><br><br>";
|
||||
} else {
|
||||
echo "<b>Keine Datensätze gefunden.</b><br><br>";
|
||||
}
|
||||
|
||||
while ($datensatz = $erg->fetch_object()) {
|
||||
$daten[] = $datensatz;
|
||||
}
|
||||
|
||||
$erg->free();
|
||||
}
|
||||
|
||||
// echo "<h2>Ergebnis:</h2>";
|
||||
// echo '<pre>';
|
||||
// print_r($daten);
|
||||
// echo '</pre>';
|
||||
|
||||
echo "<h2>Ergebnis:</h2>";
|
||||
|
||||
if (empty($daten)) {
|
||||
echo "<b>Keine Daten vorhanden.</b>";
|
||||
} else {
|
||||
|
||||
// Responsives Wrapper-DIV
|
||||
echo '<div style="max-width: 100%; overflow-x: auto;">';
|
||||
|
||||
// Tabelle
|
||||
echo '<table border="1" cellpadding="5" cellspacing="0"
|
||||
style="border-collapse:collapse; width:100%; font-family:Arial; font-size:14px;">';
|
||||
|
||||
// Tabellenkopf
|
||||
echo "<tr style='background:#f0f0f0; font-weight:bold;'>";
|
||||
foreach ($daten[0] as $spaltenname => $wert) {
|
||||
echo "<th style='text-align:left; padding:6px; word-break:break-word; white-space:normal;'>" . htmlspecialchars($spaltenname ?? '') . "</th>";
|
||||
|
||||
}
|
||||
echo "</tr>";
|
||||
|
||||
// Datenzeilen
|
||||
foreach ($daten as $row) {
|
||||
echo "<tr>";
|
||||
foreach ($row as $value) {
|
||||
echo "<td style='padding:6px; word-break:break-word; white-space:normal; max-width:300px;'>" . htmlspecialchars($value ?? '') . "</td>";
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
|
||||
echo "</table>";
|
||||
echo "</div>"; // END responsive wrapper
|
||||
}
|
||||
|
||||
|
||||
|
||||
exit;
|
||||
?>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include_once '../controller/LogController.php';
|
||||
logging();
|
||||
|
||||
$sitemapUrl = "http://blackpi.ipv64.net/sitemap.xml";
|
||||
$xml = simplexml_load_file($sitemapUrl);
|
||||
|
||||
foreach ($xml->url as $urlEntry) {
|
||||
$loc = (string) $urlEntry->loc;
|
||||
|
||||
echo '<div><a href="'.$loc.'" target="_blank">'.$loc.'</a></div>';
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"plus": 0,
|
||||
"minus": 480,
|
||||
"total": -480
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/favicon.ico</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/index.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/moduls/BerichteErstellenInsertModule.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/moduls/ConsoleLog.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/moduls/DatabaseLandUpdateModule.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/robots.txt</loc>
|
||||
<lastmod>2025-12-11</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/security.txt</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/BerichteErstellen.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/BerichteShow.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/Dashboards/AdminDashboard.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/Dashboards/DevicesDashboard.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/Dashboards/MainDashboard.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/Dashboards/ServicesDashboard.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/Dashboards/ThirdpartyDashboard.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/DatabaseLogShow.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/overtime_corrections.json</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/services/SitemapXMLShow.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/sitemap.xml</loc>
|
||||
<lastmod>2025-12-11</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://blackpi.ipv64.net/static/access_denied.php</loc>
|
||||
<lastmod>2025-12-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
include_once '../controller/LogController.php';
|
||||
logging();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Zugang verweigert</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
background-color: #f8f9fa;
|
||||
color: #333;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.container {
|
||||
background-color: #fff;
|
||||
padding: 2.5rem 3rem;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #c0392b;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.1rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 0.75rem 1.5rem;
|
||||
background-color: #c0392b;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
border-radius: 8px;
|
||||
font-weight: bold;
|
||||
transition: background-color 0.3s ease;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background-color: #a93226;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>🚫 Zugriff verweigert</h1>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
$buttoncoloractive = "#287decff";
|
||||
$buttoncolorinactive = "#75666691";
|
||||
$buttoncoloradmin = "#fd6a09ec";
|
||||
$routing = "../../controller/RoutesController.php?website";
|
||||
|
||||
$buttons = [
|
||||
["section" => "Datenbank Updaten", "buttons" => [
|
||||
["name" => "Geo IPs Update", "link" => "$routing=/moduls/DatabaseLandUpdateModule.php", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Data Lookup", "buttons" => [
|
||||
["name" => "Access Logs", "link" => "$routing=/services/DatabaseLogShow.php", "color" => $buttoncoloractive],
|
||||
["name" => "Sitemap.xml", "link" => "$routing=/sitemap.xml", "color" => $buttoncoloractive],
|
||||
["name" => "Sitemap", "link" => "$routing=/services/SitemapXMLShow.php", "color" => $buttoncoloractive],
|
||||
["name" => "Robots.txt", "link" => "$routing=/robots.txt", "color" => $buttoncoloractive],
|
||||
["name" => "Berichte", "link" => "$routing=/services/BerichteShow.php", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Dev", "buttons" => [
|
||||
["name" => "Gitea / Code", "link" => "$routing=http://gitea.blackpi.ipv64.net/", "color" => $buttoncoloractive], // Username: bruno | Passwort: bBHofurUJWKzPE8Z
|
||||
["name" => "HAProxy", "link" => "$routing=http://stats.blackpi.ipv64.net/", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Management", "buttons" => [
|
||||
["name" => "Webshell", "link" => "$routing=/services/Webshell/", "color" => $buttoncolorinactive],
|
||||
["name" => "Manuelles Mailing", "link" => "$routing=/services/ManualMailer/", "color" => $buttoncolorinactive],
|
||||
]],
|
||||
];
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
$buttoncoloractive = "#287decff";
|
||||
$buttoncolorinactive = "#75666691";
|
||||
$buttoncoloradmin = "#fd6a09ec";
|
||||
$routing = "../../controller/RoutesController.php?website";
|
||||
|
||||
$buttons = [
|
||||
["section" => "3D Drucker", "buttons" => [
|
||||
["name" => "Ender 3 V3 KE", "link" => "$routing=http://10.233.1.52/", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "NAS1", "buttons" => [
|
||||
["name" => "NAS1-Manager", "link" => "$routing=http://nas-1.blackpi.ipv64.net", "color" => $buttoncoloractive],
|
||||
["name" => "NAS1-Webserver", "link" => "$routing=http://10.233.1.21/", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "NAS2", "buttons" => [
|
||||
["name" => "NAS2-Manager", "link" => "$routing=http://nas-2.blackpi.ipv64.net", "color" => $buttoncoloractive],
|
||||
["name" => "NAS2-Webserver", "link" => "$routing=http://10.233.1.22/", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Ubuntu-Server NAS", "buttons" => [
|
||||
["name" => "Apache", "link" => "$routing=http://100.104.7.93", "color" => $buttoncoloractive],
|
||||
["name" => "NAS-Manager", "link" => "$routing=http://100.104.7.93:9000", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Router", "buttons" => [
|
||||
["name" => "FritzBox 7490", "link" => "$routing=http://fritzbox-1.blackpi.ipv64.net", "color" => $buttoncoloractive],
|
||||
["name" => "FritzBox 7590", "link" => "$routing=http://fritzbox-2.blackpi.ipv64.net", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Netzwerk", "buttons" => [
|
||||
["name" => "Zyxel GS1910-24", "link" => "$routing=http://switch.blackpi.ipv64.net", "color" => $buttoncoloractive],
|
||||
["name" => "NWA5121-NI Innen", "link" => "$routing=http://ap-1.blackpi.ipv64.net", "color" => $buttoncoloractive],
|
||||
["name" => "NWA5121-NI Außen", "link" => "$routing=http://ap-2.blackpi.ipv64.net", "color" => $buttoncoloractive],
|
||||
["name" => "ZyWALL 20", "link" => "$routing=http://10.233.1.20", "color" => $buttoncoloractive],
|
||||
["name" => "ZyWALL 110 WAN 1", "link" => "$routing=http://10.233.1.248", "color" => $buttoncoloractive],
|
||||
["name" => "ZyWALL 110 WAN 2", "link" => "$routing=http://10.233.1.249", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Proxmox-LXC", "buttons" => [
|
||||
["name" => "Chatserver", "link" => "$routing=http://100.97.206.98/chat/", "color" => $buttoncoloractive],
|
||||
["name" => "Nextcloud", "link" => "$routing=http://100.122.126.69", "color" => $buttoncoloractive],
|
||||
["name" => "Heimdall", "link" => "$routing=http://proxmox-tower-ubuntu-server2", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Proxmox-VM", "buttons" => [
|
||||
["name" => "US 1 Webmin", "link" => "http://100.75.98.83:10000", "color" => $buttoncoloractive],
|
||||
["name" => "US 2 Webmin", "link" => "http://100.120.248.66:10000", "color" => $buttoncoloractive],
|
||||
["name" => "US 3 Webmin", "link" => "http://100.121.22.107:10000", "color" => $buttoncoloractive],
|
||||
["name" => "US 4 Webmin", "link" => "http://100.97.206.98:10000", "color" => $buttoncoloractive],
|
||||
["name" => "US 5 Webmin", "link" => "http://100.122.126.69:10000", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
|
||||
];
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
$buttoncoloractive = "#287decff";
|
||||
$buttoncolorinactive = "#75666691";
|
||||
$buttoncoloradmin = "#fd6a09ec";
|
||||
$routing = "../../controller/RoutesController.php?website";
|
||||
|
||||
$buttons = [
|
||||
["section" => "Devices", "buttons" => [
|
||||
["name" => "Devices Dashboard", "link" => "$routing=/services/Dashboards/DevicesDashboard.php", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Services", "buttons" => [
|
||||
["name" => "Services Dashboard", "link" => "$routing=/services/Dashboards/ServicesDashboard.php", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Thirdparty", "buttons" => [
|
||||
["name" => "Thirdparty Dashboard", "link" => "$routing=/services/Dashboards/ThirdpartyDashboard.php", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Admin", "buttons" => [
|
||||
["name" => "Admin Dashboard", "link" => "$routing=/services/Dashboards/AdminDashboard.php", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
];
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
$buttoncoloractive = "#287decff";
|
||||
$buttoncolorinactive = "#75666691";
|
||||
$buttoncoloradmin = "#fd6a09ec";
|
||||
$routing = "../../controller/RoutesController.php?website";
|
||||
|
||||
$buttons = [
|
||||
["section" => "Ausbildung", "buttons" => [
|
||||
["name" => "Vertretungsplan", "link" => "$routing=https://sbsz-hsp.de/sdb/getPlan", "color" => $buttoncoloractive],
|
||||
["name" => "Stundenplan", "link" => "$routing=/services/Stundenplan.php", "color" => $buttoncolorinactive],
|
||||
["name" => "Berichte Erstellen", "link" => "$routing=/services/BerichteErstellen.php", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Webserver", "buttons" => [
|
||||
["name" => "Etherwake", "link" => "../../GLOBAL/routes.php/?website=/Etherwake/", "color" => $buttoncolorinactive],
|
||||
["name" => "FileServer", "link" => "../../GLOBAL/routes.php/?website=/Fileserver/", "color" => $buttoncolorinactive],
|
||||
["name" => "PasswortManager", "link" => "../../GLOBAL/routes.php/?website=/PasswortManager/", "color" => $buttoncolorinactive],
|
||||
["name" => "Blackpi-Webcam", "link" => "../../GLOBAL/routes.php/?website=/Webcam/", "color" => $buttoncolorinactive],
|
||||
]],
|
||||
|
||||
];
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
$buttoncoloractive = "#287decff";
|
||||
$buttoncolorinactive = "#75666691";
|
||||
$buttoncoloradmin = "#fd6a09ec";
|
||||
$routing = "../../controller/RoutesController.php?website";
|
||||
|
||||
$buttons = [
|
||||
["section" => "3D-Druck", "buttons" => [
|
||||
["name" => "Cults 3D", "link" => "$routing=https://cults3d.com/de", "color" => $buttoncoloractive],
|
||||
["name" => "Thingiverse", "link" => "$routing=https://www.thingiverse.com", "color" => $buttoncoloractive],
|
||||
["name" => "Printables", "link" => "$routing=https://www.printables.com", "color" => $buttoncoloractive],
|
||||
["name" => "Creality", "link" => "$routing=https://www.crealitycloud.com", "color" => $buttoncoloractive],
|
||||
["name" => "Yeggi 3D Search", "link" => "$routing=https://www.yeggi.com", "color" => $buttoncoloractive],
|
||||
]],
|
||||
|
||||
["section" => "Streaming", "buttons" => [
|
||||
["name" => "Anyworld-Serien", "link" => "$routing=http://186.2.175.5/serien", "color" => $buttoncoloractive],
|
||||
["name" => "Streamkiste", "link" => "$routing=https://www.streamkiste.al", "color" => $buttoncoloractive],
|
||||
["name" => "Megakino", "link" => "$routing=https://megakino.me", "color" => $buttoncoloractive],
|
||||
]],
|
||||
];
|
||||
Reference in new issue
Block a user