Hermes-1
e20f15d70b
revert: DNS_SERVER default back to udp://1.1.1.1
...
10.35.99.172 is a local-environment resolver, not suitable as a
public default. On networks where public UDP DNS is unreachable,
pass DNS_SERVER explicitly at runtime.
2026-09-09 11:01:00 +03:00
Hermes-1
56f28099c8
feat: mihomo YAML subscription support + flow/fingerprint passthrough
...
- fetcher: parse mihomo/clash.meta YAML subscriptions (proxies: list),
auto-detect format (mihomo YAML vs plain vless:// lines)
- config_builder: forward VLESS flow (xtls-rprx-vision) and per-node
uTLS fingerprint to sing-box (required for Reality+Vision nodes)
- default DNS upstream: udp://10.35.99.172 (public UDP resolvers
unreachable on this network; old-sub nodes are hostnames)
- Dockerfile: install PyYAML
Verified: 50-node reality+vision subscription works end-to-end
(sing-box check + live SOCKS tunnel); legacy vless:// subs unaffected.
2026-09-09 10:56:11 +03:00
Hermes-1
467ab7edf1
fix: default to udp://1.1.1.1 DNS (DoT fails silently, breaks all proxy connections)
2026-07-19 01:22:08 +03:00
Hermes-1
ed52257dbe
refactor: split monolith into typed modules with retry logic
...
- models.py: ProxyInfo and DNSServerConfig dataclasses with type hints
- fetcher.py: subscription fetcher with exponential backoff retries (3 attempts) plus VLESS URL parser
- config_builder.py: sing-box config builder decomposed into focused helpers
- main.py: orchestrator with setup_logging(), print_banner(), pick_node()
2026-07-09 08:14:23 +00:00