exec("CREATE TABLE IF NOT EXISTS admin.wrapped_links (id SERIAL PRIMARY KEY, original_url TEXT, short_code VARCHAR(20) UNIQUE, clicks INTEGER DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); $action = $_POST['action'] ?? $_GET['action'] ?? ''; switch ($action) { case 'wrap': $url = $_POST['url'] ?? ''; $code = substr(md5($url . time()), 0, 8); $pdo->prepare("INSERT INTO admin.wrapped_links (original_url, short_code) VALUES (?, ?) ON CONFLICT DO NOTHING")->execute([$url, $code]); echo json_encode(['original' => $url, 'wrapped' => "http://89.167.40.150:5821/r/$code", 'code' => $code]); break; case 'resolve': $code = $_GET['code'] ?? ''; $stmt = $pdo->prepare("SELECT original_url FROM admin.wrapped_links WHERE short_code = ?"); $stmt->execute([$code]); $link = $stmt->fetchColumn(); if ($link) { $pdo->exec("UPDATE admin.wrapped_links SET clicks = clicks + 1 WHERE short_code = '$code'"); } echo json_encode(['url' => $link ?: null]); break; case 'stats': $links = $pdo->query("SELECT * FROM admin.wrapped_links ORDER BY clicks DESC LIMIT 50")->fetchAll(PDO::FETCH_ASSOC); echo json_encode(['links' => $links]); break; default: echo json_encode(['actions' => ['wrap','resolve','stats']]); }