Service Uptime Checker php

V 1.1

<?php
/*
 * Szerzői jog: 2024, YnM
 * Szerkesztette: Markus ([email protected])
 * Minden jog fenntartva.
 */

function getUptime($service) {
    $cacheDir = "cache/";
    $cacheFile = "{$cacheDir}{$service}_uptime.cache"; // Cache fájl
    $lastCheckFile = "{$cacheDir}last_check_time.cache"; // Utolsó ellenőrzés ideje
    $cacheTime = 600; // 10 perc cache idő

    // Ellenőrizzük, hogy a cache könyvtár létezik-e
    if (!is_dir($cacheDir)) {
        mkdir($cacheDir, 0777, true); // Létrehozza a könyvtárat, ha nem létezik
    }

    // Ellenőrizzük, hogy létezik-e a cache fájl, és hogy nem járt-e le
    $lastCheckTime = file_exists($lastCheckFile) ? file_get_contents($lastCheckFile) : 0;

    // Ha a cache fájl nem létezik vagy a cache időtartam lejárt
    if (!file_exists($cacheFile) || time() - $lastCheckTime > $cacheTime) {
        // Kérdezd le a szolgáltatás futási idejét
        $output = shell_exec("systemctl show -p ActiveEnterTimestamp $service 2>/dev/null");
        if ($output) {
            // Kivesszük az időbélyeget
            $timestamp = str_replace('ActiveEnterTimestamp=', '', trim($output));
            if ($timestamp && $timestamp != "0") {
                // Ha érvényes timestamp
                $uptime = date('Y-m-d H:i:s', strtotime($timestamp));
                // Cache-eljük az új értéket
                file_put_contents($cacheFile, $uptime);
                file_put_contents($lastCheckFile, time()); // Frissítjük az utolsó ellenőrzés idejét
                return $uptime;
            } else {
                return false; // Ha nincs érvényes uptime
            }
        } else {
            return false; // Ha a szolgáltatás nem található
        }
    }

    // Használja a cache-ből
    return file_get_contents($cacheFile);
}

// Szolgáltatások futási idejének lekérdezése
$services = [
    'apache2' => getUptime('apache2'),
    'matterbridge' => getUptime('matterbridge'),
    'thelounge' => getUptime('thelounge'),
    'ircd' => getUptime('ircd'),
    'mysql' => getUptime('mysql'),
    'nextcloud' => getUptime('nextcloud'),
    'testerror' => getUptime('testerror'),
    'jellyfin' => getUptime('jellyfin'),
    'docker' => getUptime('docker'),
    'dovecot' => getUptime('dovecot'),
    '[email protected]' => getUptime('[email protected]')
];

// HTML táblázat generálása
echo "<table border='1' style='border-collapse: collapse; width: 50%; margin: 20px auto; text-align: center;'>";
echo "<tr><th style='padding: 10px; font-weight: bold;'>Szolgáltatás neve</th><th style='padding: 10px; font-weight: bold;'>Uptime</th></tr>";

foreach ($services as $serviceName => $uptime) {
    // Ha van uptime, zöld, ha nincs, piros
    $rowColor = $uptime ? 'background-color: #c8e6c9;' : 'background-color: #ffcccb;';
    $uptimeText = $uptime ? $uptime : 'Nincs adat';
    
    echo "<tr style='text-align: center;'>
            <td style='padding: 10px; font-weight: bold;'>$serviceName</td>
            <td style='padding: 10px; $rowColor'>$uptimeText</td>
          </tr>";
}

echo "</table>";
?>

V 1.2

<?php
/*
 * Szerzői jog: 2024, YnM
 * Szerkesztette: Markus ([email protected])
 * Minden jog fenntartva.
 */

function getUptime($service) {
    $cacheDir = "cache/";
    $cacheFile = "{$cacheDir}{$service}_uptime.cache"; // Cache fájl
    $lastCheckFile = "{$cacheDir}last_check_time.cache"; // Utolsó ellenőrzés ideje
    $cacheTime = 600; // 10 perc cache idő

    // Ellenőrizzük, hogy a cache könyvtár létezik-e
    if (!is_dir($cacheDir)) {
        mkdir($cacheDir, 0777, true); // Létrehozza a könyvtárat, ha nem létezik
    }

    // Ellenőrizzük, hogy létezik-e a cache fájl, és hogy nem járt-e le
    $lastCheckTime = file_exists($lastCheckFile) ? file_get_contents($lastCheckFile) : 0;

    // Ha a cache fájl nem létezik vagy a cache időtartam lejárt
    if (!file_exists($cacheFile) || time() - $lastCheckTime > $cacheTime) {
        // Kérdezd le a szolgáltatás futási idejét
        $output = shell_exec("systemctl show -p ActiveEnterTimestamp $service 2>/dev/null");
        if ($output) {
            // Kivesszük az időbélyeget
            $timestamp = str_replace('ActiveEnterTimestamp=', '', trim($output));
            if ($timestamp && $timestamp != "0") {
                // Ha érvényes timestamp
                $uptime = date('Y-m-d H:i:s', strtotime($timestamp));
                // Cache-eljük az új értéket
                file_put_contents($cacheFile, $uptime);
                file_put_contents($lastCheckFile, time()); // Frissítjük az utolsó ellenőrzés idejét
                return $uptime;
            } else {
                return false; // Ha nincs érvényes uptime
            }
        } else {
            return false; // Ha a szolgáltatás nem található
        }
    }

    // Használja a cache-ből
    return file_get_contents($cacheFile);
}

// Szolgáltatások futási idejének lekérdezése
$services = [
    'apache2' => getUptime('apache2') ?: 'N/A',
    'matterbridge' => getUptime('matterbridge') ?: 'N/A',
    'thelounge' => getUptime('thelounge') ?: 'N/A',
    'ircd' => getUptime('ircd') ?: 'N/A',
    'mysql' => getUptime('mysql') ?: 'N/A',
    'nextcloud' => getUptime('nextcloud') ?: 'N/A',
    'testerror' => getUptime('testerror') ?: 'N/A',
    'jellyfin' => getUptime('jellyfin') ?: 'N/A',
    'docker' => getUptime('docker') ?: 'N/A',
    'dovecot' => getUptime('dovecot') ?: 'N/A',
    '[email protected]' => getUptime('[email protected]') ?: 'N/A'
];

// Az egyes szolgáltatások uptime-jának megjelenítése
?>

<!-- HTML rész, ahol a PHP változókat felhasználjuk -->
<small class="text-success">Apache2: <?php echo $services['apache2']; ?></small><br>
<small class="text-success">Matterbridge: <?php echo $services['matterbridge']; ?></small><br>
<small class="text-success">Thelounge: <?php echo $services['thelounge']; ?></small><br>
<small class="text-success">IRCD: <?php echo $services['ircd']; ?></small><br>
<small class="text-success">MySQL: <?php echo $services['mysql']; ?></small><br>
<small class="text-success">Nextcloud: <?php echo $services['nextcloud']; ?></small><br>
<small class="text-success">Testerror: <?php echo $services['testerror']; ?></small><br>
<small class="text-success">Jellyfin: <?php echo $services['jellyfin']; ?></small><br>
<small class="text-success">Docker: <?php echo $services['docker']; ?></small><br>
<small class="text-success">Dovecot: <?php echo $services['dovecot']; ?></small><br>
<small class="text-success">WG-Quick: <?php echo $services['[email protected]']; ?></small><br>

V1.3

<?php
/*
 * Szerzői jog: 2024, YnM
 * Szerkesztette: Markus ([email protected])
 * Minden jog fenntartva.
 */

// 1. Közvetlen hozzáférés tiltása
if (basename($_SERVER['PHP_SELF']) === basename(__FILE__)) {
    http_response_code(403); // Forbidden
    exit('Access denied.');
}

// 2. Konstans alapú védelem
if (!defined('YnM_Hu')) {
    http_response_code(403);
    exit('Nem kellene itt légy');
}

function getUptime($service) {
    $cacheDir = "cache/";
    $cacheFile = "{$cacheDir}{$service}_uptime.cache"; // Cache fájl
    $lastCheckFile = "{$cacheDir}{$service}_last_check_time.cache"; // Utolsó ellenőrzés ideje
    $cacheTime = 600; // 10 perc cache idő

    // Ellenőrizzük, hogy a cache könyvtár létezik-e
    if (!is_dir($cacheDir)) {
        mkdir($cacheDir, 0777, true); // Létrehozza a könyvtárat, ha nem létezik
    }

    // Ellenőrizzük, hogy létezik-e a cache fájl, és hogy nem járt-e le
    $lastCheckTime = file_exists($lastCheckFile) ? file_get_contents($lastCheckFile) : 0;

    // Ha a cache fájl nem létezik vagy a cache időtartam lejárt
    if (!file_exists($cacheFile) || time() - $lastCheckTime > $cacheTime) {
        // Kérdezd le a szolgáltatás futási idejét
        $output = shell_exec("systemctl show -p ActiveEnterTimestamp $service 2>/dev/null");
        if ($output) {
            // Kivesszük az időbélyeget
            $timestamp = str_replace('ActiveEnterTimestamp=', '', trim($output));
            if ($timestamp && $timestamp != "0") {
                // Ha érvényes timestamp
                $uptime = date('Y-m-d H:i:s', strtotime($timestamp));
                // Cache-eljük az új értéket
                file_put_contents($cacheFile, $uptime);
                file_put_contents($lastCheckFile, time()); // Frissítjük az utolsó ellenőrzés idejét
                return $uptime;
            } else {
                return false; // Ha nincs érvényes uptime
            }
        } else {
            return false; // Ha a szolgáltatás nem található
        }
    }

    // Használja a cache-ből
    return file_get_contents($cacheFile);
}

// Szolgáltatások futási idejének lekérdezése
$services = [
    'YnM-YnM' => getUptime('apache2') ?: 'N/A',
    'matterbridge' => getUptime('matterbridge') ?: 'N/A',
    'thelounge' => getUptime('thelounge') ?: 'N/A',
    'irc' => getUptime('irc') ?: 'N/A',
    'mysql' => getUptime('mysql') ?: 'N/A',
    'lufi' => getUptime('lufi') ?: 'N/A',
    'filmek' => getUptime('filmek') ?: 'N/A',
    'jellyfin' => getUptime('jellyfin') ?: 'N/A',
    'docker' => getUptime('docker') ?: 'N/A',
    'dovecot' => getUptime('dovecot') ?: 'N/A',   
    'apache2' => getUptime('apache2') ?: 'N/A',     
    'YnM-VpN' => getUptime('[email protected]') ?: 'N/A'
];

function mySecureFunction() {
    return "This function is secure!";
}
?>

V 1.4

<?php
/*
 * Szerzői jog: 2024, YnM
 * Szerkesztette: Markus ([email protected])
 * Minden jog fenntartva.
 */

// 1. Közvetlen hozzáférés tiltása
if (basename($_SERVER['PHP_SELF']) === basename(__FILE__)) {
    http_response_code(403); // Forbidden
    exit('Access denied.');
}

// 2. Konstans alapú védelem
if (!defined('YnM_Hu')) {
    http_response_code(403);
    exit('Nem kellene itt légy');
}

function getUptime($service) {
    // Lekérjük a szolgáltatás állapotát
    $statusOutput = shell_exec("systemctl is-active $service");

    if (trim($statusOutput) === 'active') {
        // Ha aktív a szolgáltatás, lekérjük az uptime-ot
        $output = shell_exec("systemctl show -p ActiveEnterTimestamp $service 2>/dev/null");
        if ($output) {
            // Kivesszük az időbélyeget
            $timestamp = str_replace('ActiveEnterTimestamp=', '', trim($output));
            if ($timestamp && $timestamp != "0") {
                // Ha érvényes timestamp
                return date('Y-m-d H:i:s', strtotime($timestamp));
            }
        }
    }

    // Ha a szolgáltatás nem aktív, akkor 'OFFLINE' vagy 'N/A'
    return 'OFFLINE';
}

function mySecureFunction() {
    return "This function is secure!";
}

// Szolgáltatások futási idejének lekérdezése
$services = [
    'YnM-YnM' => getUptime('apache2') ?: 'N/A',
    'matterbridge' => getUptime('matterbridge') ?: 'N/A',
    'thelounge' => getUptime('thelounge') ?: 'N/A',
    'irc' => getUptime('irc') ?: 'N/A',
    'mysql' => getUptime('mysql') ?: 'N/A',
    'lufi' => getUptime('lufi') ?: 'N/A',
    'filmek' => getUptime('filmek') ?: 'N/A',
    'jellyfin' => getUptime('jellyfin') ?: 'N/A',
    'docker' => getUptime('docker') ?: 'N/A',
    'dovecot' => getUptime('dovecot') ?: 'N/A',   
    'apache2' => getUptime('apache2') ?: 'N/A',   
    'ai' => getUptime('sopel') ?: 'N/A',    
    'YnM-VpN' => getUptime('[email protected]') ?: 'N/A'
];
?>