Files
kefu/deploy/ark-chat-config-20260917/probe_lan.py
T
2026-09-21 10:34:06 +08:00

21 lines
1.2 KiB
Python

from pathlib import Path
import http.client,hashlib,json
release=Path(__file__).resolve().parent
manifest=json.loads((release/'manifest.json').read_text())
asset=next(r for r in manifest if '/dist/js/model-catalog-' in r['path'] and r['path'].endswith('.js'))
path='/' + asset['path'].split('/dist/',1)[1]
checks=[('/',200,'GET'),('/api/health',200,'GET'),('/api/models',401,'GET'),('/api/models/test',401,'POST'),(path,200,'GET')]
statuses={}
for endpoint,wanted,method in checks:
c=http.client.HTTPConnection('192.168.110.111',8369,timeout=20,source_address=('192.168.123.43',0))
try:
c.request(method,endpoint,body=b'{"provider_id":"deployment-probe"}' if method=='POST' else None,headers={'Content-Type':'application/json'})
response=c.getresponse();data=response.read()
assert response.status==wanted,(endpoint,response.status)
if endpoint==path:assert hashlib.sha256(data).hexdigest()==asset['sha256']
if endpoint=='/':assert data==(release/'payload/admin-web/apps/web-antd/dist/index.html').read_bytes()
statuses[method+' '+endpoint]=response.status
finally:c.close()
(release/'lan-verification.json').write_text(json.dumps(statuses,indent=2),encoding='utf-8')
print(json.dumps(statuses))