mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 20:00:47 +00:00
- Centralize proxy management with reusable proxy pools - Per-connection proxy binding with legacy fallback - Add strictProxy option: fail hard instead of silently falling back to direct - Resolve alicode-intl conflict: keep alicode-intl support + proxy support Made-with: Cursor
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import { NextResponse } from "next/server";
|
|
import { getProxyPoolById, updateProxyPool } from "@/models";
|
|
import { testProxyUrl } from "@/lib/network/proxyTest";
|
|
|
|
// POST /api/proxy-pools/[id]/test - Test proxy pool entry
|
|
export async function POST(request, { params }) {
|
|
try {
|
|
const { id } = await params;
|
|
const proxyPool = await getProxyPoolById(id);
|
|
|
|
if (!proxyPool) {
|
|
return NextResponse.json({ error: "Proxy pool not found" }, { status: 404 });
|
|
}
|
|
|
|
const result = await testProxyUrl({ proxyUrl: proxyPool.proxyUrl });
|
|
const now = new Date().toISOString();
|
|
|
|
await updateProxyPool(id, {
|
|
testStatus: result.ok ? "active" : "error",
|
|
lastTestedAt: now,
|
|
lastError: result.ok ? null : (result.error || `Proxy test failed with status ${result.status}`),
|
|
isActive: result.ok,
|
|
});
|
|
|
|
return NextResponse.json({
|
|
ok: result.ok,
|
|
status: result.status,
|
|
statusText: result.statusText || null,
|
|
error: result.error || null,
|
|
elapsedMs: result.elapsedMs || 0,
|
|
testedAt: now,
|
|
});
|
|
} catch (error) {
|
|
console.log("Error testing proxy pool:", error);
|
|
return NextResponse.json({ error: "Failed to test proxy pool" }, { status: 500 });
|
|
}
|
|
}
|