HEX
Server: Apache
System: Linux webm004.cluster129.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: windevelwb (110072)
PHP: 8.5.0
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/windevelwb/www/api2/consume_mac.php
<?php
header("Content-Type: application/json; charset=utf-8");

// LOG 1 : script lancé
file_put_contents(__DIR__ . "/log.txt", "LOG1: script lancé\n", FILE_APPEND);

$macsFile = __DIR__ . "/data/macs.json";

// Charger les MAC
$macs = file_exists($macsFile) ? json_decode(file_get_contents($macsFile), true) : [];

// LOG 2 : macs chargées
file_put_contents(__DIR__ . "/log.txt", "LOG2: macs chargées (" . count($macs) . ")\n", FILE_APPEND);

// Vérifier la MAC envoyée
if (!isset($_POST["mac"])) {
    file_put_contents(__DIR__ . "/log.txt", "LOG3: MAC manquante\n", FILE_APPEND);
    echo json_encode(["error" => "MAC manquante"]);
    exit;
}

$usedMac = strtoupper(trim($_POST["mac"]));

// LOG 4 : MAC reçue
file_put_contents(__DIR__ . "/log.txt", "LOG4: MAC reçue = $usedMac\n", FILE_APPEND);

// Supprimer la MAC utilisée
$index = array_search($usedMac, $macs);
file_put_contents(__DIR__ . "/log.txt", "LOG5: index = " . var_export($index, true) . "\n", FILE_APPEND);

if ($index !== false) {
    array_splice($macs, $index, 1);
}

// LOG 6 : après suppression
file_put_contents(__DIR__ . "/log.txt", "LOG6: après suppression (" . count($macs) . ")\n", FILE_APPEND);

// Réindexer
$macs = array_values($macs);

// LOG 7 : après réindexation
file_put_contents(__DIR__ . "/log.txt", "LOG7: réindexation OK\n", FILE_APPEND);

// Récupérer la dernière MAC restante
$lastMac = end($macs);

// LOG 8 : dernière MAC
file_put_contents(__DIR__ . "/log.txt", "LOG8: lastMac = " . var_export($lastMac, true) . "\n", FILE_APPEND);

if (!$lastMac) {
    file_put_contents(__DIR__ . "/log.txt", "LOG9: ERREUR lastMac vide\n", FILE_APPEND);
    echo json_encode(["error" => "Liste MAC vide"]);
    exit;
}

$parts = explode(":", $lastMac);

// LOG 9 : explode OK
file_put_contents(__DIR__ . "/log.txt", "LOG10: explode OK\n", FILE_APPEND);

// Convertir les 3 derniers octets en entier
$hex = $parts[3] . $parts[4] . $parts[5];
$int = hexdec($hex) + 1;

// LOG 10 : incrément OK
file_put_contents(__DIR__ . "/log.txt", "LOG11: incrément OK ($hex -> $int)\n", FILE_APPEND);

// Convertir en hex sur 6 caractères
$newHex = strtoupper(str_pad(dechex($int), 6, "0", STR_PAD_LEFT));

// Construire la nouvelle MAC
$newMac = $parts[0] . ":" . $parts[1] . ":" . $parts[2] . ":" .
          substr($newHex, 0, 2) . ":" .
          substr($newHex, 2, 2) . ":" .
          substr($newHex, 4, 2);

// LOG 11 : nouvelle MAC OK
file_put_contents(__DIR__ . "/log.txt", "LOG12: newMac = $newMac\n", FILE_APPEND);

// Ajouter la nouvelle MAC
$macs[] = $newMac;

// Sauvegarder
file_put_contents($macsFile, json_encode($macs, JSON_PRETTY_PRINT));

// LOG 12 : sauvegarde OK
file_put_contents(__DIR__ . "/log.txt", "LOG13: sauvegarde OK\n", FILE_APPEND);

// Réponse
echo json_encode([
    "used" => $usedMac,
    "added" => $newMac,
    "count" => count($macs)
]);