Tags: xvzc/spoofdpi
Tags
chore(main): release 1.4.1 (#384) 🤖 I have created a release *beep* *boop* --- ## [1.4.1](v1.4.0...v1.4.1) (2026-05-03) ### Bug Fixes * **main:** return early when createServer fails to avoid nil-deref on ListenAndServe ([#382](#382)) ([2aa53d0](2aa53d0)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
chore(main): release 1.4.0 (#380) 🤖 I have created a release *beep* *boop* --- ## [1.4.0](v1.3.1...v1.4.0) (2026-04-29) ### Features * support TUI mode ([#378](#378)) ([b0c489b](b0c489b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
feat: support socks5 and tun modes (#364) * refactor(socks5): move rule matching to proxy, extract handlers * refactor: extract Destination to netutil, update socks5 to use it, restore http pipe * refactor: extract TLS tunneling logic to handler.Bridge * refactor: restructure proxy packages * chore: rename handler files for clarity * refactor: restructure proxy packages to http, socks5, and tlsutil * feat: support socks5 and tun * feat: support socks5 and tun for linux * fix: build condition for tun mode * refactor(netutil): consolidate OS-specific code into netutil_*.go - Merge bind_*.go and gateway_*.go into unified netutil_*.go files - netutil_bsd.go: bindToInterface (IP_BOUND_IF) + getDefaultGateway for macOS/BSD - netutil_linux.go: bindToInterface (LocalAddr) + getDefaultGateway for Linux - netutil.go: no-op fallbacks for unsupported platforms - Simplify bindToInterface on BSD to only use iface.Index - Reduces file count from 6 to 3 * fix(tun): use -ifscope for proper interface-bound routing on macOS - Replace 0.0.0.0/32 hack with proper -ifscope default route - SetGatewayRoute now uses 'route add -ifscope <iface> default <gateway>' - This creates a scoped default route for IP_BOUND_IF sockets - UnsetGatewayRoute updated to clean up ifscope routes properly - More logical and standards-compliant routing approach * refactor(netutil): rename TimeoutConn to IdleTimeoutConn - Better reflects the semantics: deadline extends on activity - Updated comments to clarify idle-based timeout behavior - Connection stays alive as long as there are Read/Write operations * refactor(config): rename UDPTimeout to UDPIdleTimeout - ConnOptions.UDPTimeout -> ConnOptions.UDPIdleTimeout - CLI flag: --udp-timeout -> --udp-idle-timeout - TOML key: udp-timeout -> udp-idle-timeout - Updated all usages across codebase and tests - Clearer naming to indicate idle-based timeout behavior * feat: add support for socks5, tun modes * fix: unsafe casting for trace id * style: reformat * style: reformat * style: reformat * refactor: optimize cache with generics * docs: update docs * refactor: rename network-config flag to auto-configure-network * fix(socks5): close associated UDP connection on TCP disconnection * fix: validate source address for UDP associate * fix(packet): skip ethernet layer if MAC addresses are missing * fix: ensure graceful cleanup using global context * chore: remove unnecessary file * refactor(tun): resolve gateway and interface prior to server startup * fix(cache): trigger onInvalidate on duplicate key updates LRUCache previously overwrote existing values without notification when storing a duplicate key. To prevent potential resource leaks, the onInvalidate callback is now invoked prior to storing the new value, ensuring the previous entry is properly cleaned up. * refactor(socks5): improve variable naming and logging * test: remove unused test files * refactor(netutil): rename SessionCache to ConnRegistry * fix(tcp_writer): also check dstMAC to determine ethernet layer inclusion * refactor: rename lAddr to lUDPAddr * refactor: rename network config cleanup function to unset * style: remove trailing whitespace in network_darwin * fix(socks5): send success response after upstream dial * fix(netutil): fix goroutine leak by returning and closing http.Server in RunPACServer * refactor(socks5): extract inbound udp relay logic into a method * style(socks5): make relayInboundUDP inline * fix(socks5): explicitly evict conn from pool on udp inbound loop exit * refactor: use tagged switch for cfg.App.Mode * docs: notify that 'socks5' and 'tun' modes are currently experimental * chore: fix typo
refactor: packet sniffer writer (#352) * feat: implement passive gateway and interface discovery - Replace active ARP/NDP probing with passive traffic monitoring - Introduce NetworkDetector to sniff outbound/inbound packets - Update main.go to trigger discovery via dummy UDP packet and wait for gateway MAC - Refactor system package: move interface discovery to NetworkDetector - Remove obsolete internal/system/gateway.go and internal/system/iface.go * fix(config): add missing rule validation during TOML unmarshal - Call checkRule inside Rule.UnmarshalTOML to ensure required fields exist * test: update test suites to match type changes and defaults - Update tests to use proto.NewFakeTLSMessage for HTTPSOptions.FakePacket - Fix type assertions in config, desync, and main tests - Correct expected default value for https-split-mode in CLI tests * refactor: cleanup unused files and structural changes - Remove obsolete handler and packet files (hop_tracker, injector) - Remove unused proto/http_request.go and proto/tls_message.go - Add new internal packages: proto, netutil, packet implementation - Consolidate proxy implementation under internal/proxy * feat: change default HTTPS split mode to SNI - Update default split mode from 'none' to 'sni' in config and CLI - Update documentation to reflect the new default * refactor: improve network detection and dialing - Rename DialFirstSuccessful to DialFastest and support network type - Integrate traffic triggering into NetworkDetector.Start - Increase detection timeout to 5s in main - Remove manual UDP dialing from main * refactor: modernize DNS resolvers and proxy handlers - Use standardized dnsOpts in resolvers - Update proxies to use DialFastest - Cleanup config tests and validation logic * chore: update CI and documentation - Use pull_request_target in check-pr workflow - Add sign arg to release workflow - Add Discord link to README * docs: update readme * docs: update readme * docs: update readme * style: fix wrong formatted file * docs(issue-template): add country field to issue templates * fix(timeout): increase gateway detection and dns dial timeouts * fix(cli): use correct default config variable during merge * refactor(config): support multiple domains and addresses in match rules - Update MatchAttrs to use Domains []string and Addrs []AddrMatch - Fix FakeClientHello constant length - Update all consumers (matcher, proxy, tests) to adapt to new config structure * style: fix wrong formatted code
PreviousNext