fix(ui): проверять источник IPv4 для диагностики
This commit is contained in:
1 parent
d0c715e93c
commit
b60b7ac8e8
8 files changed
+81
-26
No files matched your search
@@ -0,0 +1,4 @@
|
||||
import {test} from "node:test"
|
||||
import assert from "node:assert/strict"
|
||||
import {readProbeSource} from "./probe-source"
|
||||
test("Preview принимает только IPv4 текущего host, null остаётся неизвестностью",()=>{assert.equal(readProbeSource({host:"router.test",ipv4:"192.0.2.1"},"router.test"),"192.0.2.1");assert.equal(readProbeSource({host:"router.test",ipv4:null},"router.test"),null);for(const raw of [{ipv4:"192.0.2.1"},{host:"other.test",ipv4:"192.0.2.1"},{host:"router.test",ipv4:"999.0.0.1"},{host:"router.test",ipv4:"192.000.2.1"},{host:"router.test",ipv4:"::1"},{}])assert.throws(()=>readProbeSource(raw,"router.test"))})
|
||||
@@ -0,0 +1,8 @@
|
||||
import {z} from "zod"
|
||||
const ipv4=z.string().refine(value=>/^\d{1,3}(\.\d{1,3}){3}$/.test(value)&&value.split(".").every(part=>Number(part)<=255&&String(Number(part))===part),"Ожидался IPv4")
|
||||
const response=z.object({host:z.string().min(1),ipv4:ipv4.nullable()})
|
||||
export function readProbeSource(raw:unknown,host:string){
|
||||
const result=response.safeParse(raw)
|
||||
if(!result.success||result.data.host!==host)throw new Error("Некорректный ответ API: источник preview не подтверждён.")
|
||||
return result.data.ipv4
|
||||
}
|
||||
Reference in new issue
Block a user