fix(ui): показывать реальный источник и ошибки DNS

This commit is contained in:
Denozordec committed 2026-10-01 04:24:28 +07:00
1 parent 155dfc5716
commit 1b91ba4e1d
6 files changed
+30 -5

No files matched your search

+2
View File
@@ -6,3 +6,5 @@ test("Диагностика отклоняет legacy error и oversized output
import { probeServersSchema } from "./probe-response"
test("Каталог диагностики требует уникальные id и достоверный status/enabled",()=>{const row={id:1,name:"Тест",host:"192.0.2.1",type:"exit-node",enabled:true,status:null};assert.equal(probeServersSchema.safeParse([row]).success,true);for(const rows of [[row,row],[{...row,id:0}],[{...row,status:"active"}],[{...row,enabled:"yes"}]])assert.equal(probeServersSchema.safeParse(rows).success,false)})
test("DNS inline ERROR не подтверждает успех",()=>{assert.throws(()=>readProbeOutput({output:";; QUESTION: example.test A\n;; ERROR: ENOTFOUND"}),/ENOTFOUND/);assert.equal(readProbeOutput({output:";; QUESTION: example.test A\nexample.test IN A 192.0.2.1"}),";; QUESTION: example.test A\nexample.test IN A 192.0.2.1")})
+1 -1
View File
@@ -3,7 +3,7 @@ const response = z.object({ output: z.string().max(1024 * 1024) }).strict()
export function readProbeOutput(raw: unknown): string {
const result = response.safeParse(raw)
if (!result.success) throw new Error("Некорректный ответ API: результат диагностики не подтверждён.")
if (/^error:/i.test(result.data.output.trimStart())) throw new Error(result.data.output.trim())
if (/^error:/i.test(result.data.output.trimStart()) || /^;;\s*ERROR:/im.test(result.data.output)) throw new Error(result.data.output.trim())
return result.data.output
}