6 Commits

Author SHA1 Message Date
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