Commit Graph
8 Commits
Author SHA1 Message Date
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 5addc6471e refactor: update entrypoint.py to thin shim re-exporting from main module 2026-07-09 08:14:30 +00: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
Hermes-1 d74ea6cc69 feat: migrate to sing-box v1.13+ native DNS config
- Replace deprecated dns.servers[] with new format (type + server + server_port)
- Add _make_dns_server() to parse udp://, tls://, https:// and bare IP addresses
- Drop ENABLE_DEPRECATED_* environment variable shims — fully v1.14-ready
- Fix transport block: omit for plain TCP (sing-box default), add httpupgrade support
- Add dns.final fallback and route.default_domain_resolver
- Config file renamed to hidden /tmp/.sub2socks.json (matches README)
- Include test_proxy.py live proxy CONNECT test suite
2026-07-03 19:52:43 +00:00
Hermes-1 5cbb3b15ae fix(README): typo selction -> selection 2026-06-19 09:42:29 +00:00
Hermes-1 77d8066f85 Initial: minimal sub-to-SOCKS container
- Python entrypoint fetches subscription URL, picks VLESS node,
  generates sing-box JSON config on the fly, then execs sing-box.

Required env var: SUB_URL
Optional: SOCKS_PORT, SOCKS_USER/PASS, DNS_SERVER, PICK_STRATEGY, LOG_LEVEL
2026-06-19 07:41:51 +00:00