check($ip)) { sendResponse(['error' => 'Too Many Requests', 'message' => 'Rate limit exceeded.'], 429); } $uri = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH); $method = strtoupper($_SERVER['REQUEST_METHOD'] ?? 'GET'); $rawInput = file_get_contents('php://input'); $inputData = !empty($rawInput) ? (json_decode($rawInput, true) ?? []) : $_POST; $licenseService = new LicenseService($pdo); if (str_ends_with($uri, '/validate') && $method === 'POST') { $res = $licenseService->validate($inputData, $ip); sendResponse($res); } if (str_ends_with($uri, '/deactivate') && $method === 'POST') { $res = $licenseService->deactivate($inputData, $ip); sendResponse($res); } if (str_ends_with($uri, '/status') && $method === 'GET') { sendResponse(['status' => 'ok', 'module' => 'LicenseLabrador', 'version' => '1.0']); } sendResponse(['error' => 'Not Found', 'message' => 'Endpoint not found'], 404); } catch (Throwable $t) { sendResponse(['error' => 'Server Error', 'message' => $t->getMessage()], 500); }