feat(platform): harden telemetry pipeline and unify Semi UI workspaces
This commit is contained in:
10
deploy/feichi-ocr/Dockerfile
Normal file
10
deploy/feichi-ocr/Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM python:3.11-slim
|
||||
|
||||
RUN pip install --no-cache-dir \
|
||||
--index-url https://mirrors.aliyun.com/pypi/simple \
|
||||
ddddocr==1.6.1
|
||||
|
||||
WORKDIR /app
|
||||
COPY ocr.py /app/ocr.py
|
||||
USER nobody
|
||||
ENTRYPOINT ["python", "/app/ocr.py"]
|
||||
22
deploy/feichi-ocr/ocr.py
Normal file
22
deploy/feichi-ocr/ocr.py
Normal file
@@ -0,0 +1,22 @@
|
||||
import re
|
||||
import sys
|
||||
|
||||
import ddddocr
|
||||
|
||||
|
||||
def main() -> int:
|
||||
image = sys.stdin.buffer.read()
|
||||
if not image:
|
||||
print("captcha image is empty", file=sys.stderr)
|
||||
return 2
|
||||
result = ddddocr.DdddOcr(show_ad=False).classification(image)
|
||||
code = re.sub(r"[^0-9A-Za-z]", "", result).upper()
|
||||
if not re.fullmatch(r"[0-9A-Z]{4}", code):
|
||||
print(f"invalid OCR result: {code!r}", file=sys.stderr)
|
||||
return 3
|
||||
print(code)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
15
deploy/systemd/lingniu-go-feichi-bridge.env
Normal file
15
deploy/systemd/lingniu-go-feichi-bridge.env
Normal file
@@ -0,0 +1,15 @@
|
||||
FEICHI_BASE_URL=http://mob.fsfeichi.com.cn:8000
|
||||
FEICHI_AUTH_SECRET_FILE=/opt/lingniu-go-native/secrets/feichi-auth.json
|
||||
FEICHI_TARGET_SECRET_FILE=/opt/lingniu-go-native/secrets/feichi-target.json
|
||||
FEICHI_TARGET_ADDR=127.0.0.1:32960
|
||||
FEICHI_STATE_FILE=/var/lib/lingniu-feichi-bridge/state.json
|
||||
FEICHI_OCR_IMAGE=lingniu/feichi-captcha-ocr:1.0.0
|
||||
FEICHI_LOGIN_MAX_ATTEMPTS=20
|
||||
FEICHI_LOGIN_RETRY_SECONDS=1
|
||||
FEICHI_POLL_INTERVAL_SECONDS=10
|
||||
FEICHI_DISCOVERY_INTERVAL_SECONDS=300
|
||||
FEICHI_FETCH_CONCURRENCY=4
|
||||
FEICHI_SOURCE_STALE_SECONDS=120
|
||||
FEICHI_STALE_REISSUE_ENABLED=true
|
||||
FEICHI_BACKFILL_ENABLED=false
|
||||
HEALTH_ADDR=127.0.0.1:20219
|
||||
28
deploy/systemd/lingniu-go-feichi-bridge.service
Normal file
28
deploy/systemd/lingniu-go-feichi-bridge.service
Normal file
@@ -0,0 +1,28 @@
|
||||
[Unit]
|
||||
Description=Lingniu Feichi HTTP to GB/T 32960 Bridge
|
||||
Documentation=file:/opt/lingniu-go-native/current/docs/ops/feichi-bridge.md
|
||||
After=network-online.target docker.service lingniu-go-gateway.service
|
||||
Wants=network-online.target
|
||||
Requires=docker.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/lingniu-go-native/current
|
||||
EnvironmentFile=/opt/lingniu-go-native/env/base.env
|
||||
EnvironmentFile=/opt/lingniu-go-native/env/feichi-bridge.env
|
||||
Environment=GOMEMLIMIT=256MiB
|
||||
ExecStart=/opt/lingniu-go-native/current/feichi-bridge
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
LimitNOFILE=65536
|
||||
MemoryLimit=384M
|
||||
KillSignal=SIGTERM
|
||||
TimeoutStopSec=30
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=full
|
||||
ProtectHome=true
|
||||
ReadWriteDirectories=/var/lib/lingniu-feichi-bridge
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user