Files
wevads-platform/scripts/api_ghost-network.php
2026-02-26 04:53:11 +01:00

73 lines
4.9 KiB
PHP
Executable File

<?php
header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");
$db = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$action = $_GET["action"] ?? $_POST["action"] ?? "status";
try {
switch($action) {
case "status":
$total = $db->query("SELECT count(*) FROM admin.proxy_pool")->fetchColumn();
$active = $db->query("SELECT count(*) FROM admin.proxy_pool WHERE status='active'")->fetchColumn();
$residential = $db->query("SELECT count(*) FROM admin.proxy_pool WHERE is_residential=true AND status='active'")->fetchColumn();
echo json_encode(["status"=>"success","service"=>"ghost-network","total"=>$total,"active"=>$active,"residential"=>$residential,"actions"=>["status","list","add","remove","test","stats","providers"]]);
break;
case "list":
$type = $_GET["type"] ?? null;
$sql = "SELECT id,provider,proxy_type,host,port,country,city,is_residential,status,success_rate,last_used FROM admin.proxy_pool";
if($type) { $stmt=$db->prepare($sql." WHERE proxy_type=? ORDER BY success_rate DESC"); $stmt->execute([$type]); }
else { $stmt=$db->query($sql." ORDER BY success_rate DESC LIMIT 100"); }
echo json_encode(["status"=>"success","data"=>$stmt->fetchAll(PDO::FETCH_ASSOC)]);
break;
case "add":
$d = json_decode(file_get_contents("php://input"), true) ?: $_POST;
$stmt = $db->prepare("INSERT INTO admin.proxy_pool (provider,proxy_type,host,port,username,password,country,city,is_residential,status) VALUES (?,?,?,?,?,?,?,?,?,?) RETURNING id");
$stmt->execute([$d["provider"]??"",$d["proxy_type"]??"http",$d["host"]??"",$d["port"]??8080,$d["username"]??"",$d["password"]??"",$d["country"]??"",$d["city"]??"",$d["is_residential"]??false,"active"]);
echo json_encode(["status"=>"success","id"=>$stmt->fetch(PDO::FETCH_ASSOC)["id"]]);
break;
case "remove":
$id = $_GET["id"] ?? $_POST["id"] ?? 0;
$db->prepare("DELETE FROM admin.proxy_pool WHERE id=?")->execute([$id]);
echo json_encode(["status"=>"success","deleted"=>$id]);
break;
case "test":
$id = $_GET["id"] ?? 0;
$proxy = $db->prepare("SELECT * FROM admin.proxy_pool WHERE id=?"); $proxy->execute([$id]);
$p = $proxy->fetch(PDO::FETCH_ASSOC);
if(!$p) { echo json_encode(["error"=>"Proxy not found"]); break; }
$ch = curl_init("https://httpbin.org/ip");
curl_setopt($ch, CURLOPT_PROXY, $p["host"].":".$p["port"]);
if($p["username"]) curl_setopt($ch, CURLOPT_PROXYUSERPWD, $p["username"].":".$p["password"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$start = microtime(true);
$result = curl_exec($ch);
$time = round((microtime(true)-$start)*1000);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$ok = $code == 200;
$db->prepare("UPDATE admin.proxy_pool SET success_rate=CASE WHEN ? THEN LEAST(success_rate+1,100) ELSE GREATEST(success_rate-5,0) END, last_check=NOW() WHERE id=?")->execute([$ok,$id]);
echo json_encode(["status"=>$ok?"success":"failed","proxy_id"=>$id,"response_time_ms"=>$time,"http_code"=>$code,"ip"=>json_decode($result,true)["origin"]??"unknown"]);
break;
case "stats":
$by_type = $db->query("SELECT proxy_type, count(*) as cnt, AVG(success_rate) as avg_rate FROM admin.proxy_pool WHERE status='active' GROUP BY proxy_type")->fetchAll(PDO::FETCH_ASSOC);
$by_country = $db->query("SELECT country, count(*) as cnt FROM admin.proxy_pool WHERE status='active' GROUP BY country ORDER BY cnt DESC LIMIT 10")->fetchAll(PDO::FETCH_ASSOC);
$by_provider = $db->query("SELECT provider, count(*) as cnt, AVG(success_rate) as avg_rate FROM admin.proxy_pool GROUP BY provider ORDER BY cnt DESC")->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(["status"=>"success","by_type"=>$by_type,"by_country"=>$by_country,"by_provider"=>$by_provider]);
break;
case "providers":
echo json_encode(["status"=>"success","supported"=>[
["name"=>"IPRoyal","type"=>"residential","url"=>"https://iproyal.com","api"=>true],
["name"=>"Bright Data","type"=>"residential","url"=>"https://brightdata.com","api"=>true],
["name"=>"Oxylabs","type"=>"datacenter+residential","url"=>"https://oxylabs.io","api"=>true],
["name"=>"SmartProxy","type"=>"residential","url"=>"https://smartproxy.com","api"=>true],
["name"=>"Storm Proxies","type"=>"rotating","url"=>"https://stormproxies.com","api"=>false],
["name"=>"Custom SOCKS5","type"=>"manual","url"=>"","api"=>false]
]]);
break;
default:
echo json_encode(["error"=>"Unknown action"]);
}
} catch(Exception $e) { echo json_encode(["error"=>$e->getMessage()]); }