30 lines
1.5 KiB
PHP
Executable File
30 lines
1.5 KiB
PHP
Executable File
|
|
<?php
|
|
header('Content-Type: application/json');
|
|
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");
|
|
$pdo->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']]);
|
|
}
|
|
|