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)
]);