Skip to content

Releases: mosajjal/sniproxy

v2.3.0

13 Mar 07:53
5be8145

Choose a tag to compare

What's Changed

Go 1.26 Upgrade

  • Upgraded from Go 1.24 to Go 1.26
  • Added goroutine leak detection tests using Go 1.26's experimental goroutineleak profile (GOEXPERIMENT=goroutineleakprofile)
  • CI now runs leak detection on every push/PR

Goroutine Leak Fixes

  • Added Stop() method to the ACL interface for proper lifecycle management
  • Domain, CIDR, and GeoIP ACL refresh workers now use ticker + select with cancellation channels instead of infinite sleep loops
  • StopACLs() is called on SIGTERM/SIGINT for clean shutdown
  • 7 goroutine leak detection tests covering TLS (single, concurrent, slow client, valid SNI), DNS, and proxyCopy paths

Security Hardening

  • All HTTP servers now set ReadHeaderTimeout to prevent Slowloris attacks (DoH server, Prometheus endpoint)
  • TLS MinVersion set to 1.2 across all TLS configs (DoT, DoH, DoQ)
  • InsecureSkipVerify defaults to false for DNS clients
  • TLS SNI parser hardened with bounds checking against malformed packets
  • Certificate/key files written with 0600 permissions instead of 0644
  • Log output sanitized to prevent log injection (newline/carriage return stripping)
  • HTTP proxy IP parsing fixed to use net.SplitHostPort for correct IPv6 handling
  • HTTP transport connection pooling limits added (MaxIdleConns, MaxIdleConnsPerHost, IdleConnTimeout)

Code Quality

  • Zero golangci-lint issues (was 100+)
  • All defer Close()/Shutdown() patterns now properly handle errors
  • Removed unused code (dead checkPIDFile function, unused struct fields)
  • Fixed ineffassign, misspelling, and staticcheck issues throughout
  • Added port range validation (1-65535) in multi-listen config parser
  • Added Config.Validate() for startup config checking
  • Accept loop backoff on repeated errors in HTTPS listener

Documentation

  • README rewritten with actual project description, feature list, install/config instructions
  • CONTRIBUTING.md rewritten to be concise and direct

Dependencies

  • routedns v0.1.115 -> v0.1.144
  • miekg/dns v1.1.67 -> v1.1.72
  • quic-go v0.57.0 -> v0.59.0
  • prometheus/client_golang v1.22.0 -> v1.23.2
  • golang.org/x/net v0.47.0 -> v0.52.0
  • golang.org/x/crypto v0.45.0 -> v0.49.0
  • And many more (see full diff)

Full Changelog: v2.2.2...v2.3.0

v2.2.2

30 Dec 08:48

Choose a tag to compare

mvoe to go 1.23.4

v2.2.1

30 Dec 08:44

Choose a tag to compare

moving the builds to Go 1.23.4

v2.2.0

30 Dec 08:40

Choose a tag to compare

What's Changed

NOTE: this version of sniproxy uses a different and more optimized method to proxy connections. should result in increased performance. Feedbacks are welcome.

Full Changelog: v2.1.2...v2.2.0

v2.1.2

07 Sep 08:34

Choose a tag to compare

Full Changelog: v2.1.1...v2.1.2

fixed go version for workflows

v2.1.1

07 Sep 08:31

Choose a tag to compare

Full Changelog: v2.1.0...v2.1.1

Fixed ipv4 only network issues and better default config

v2.1.0

07 Sep 08:12

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.0.4...v2.1.0

v2.0.4

01 Oct 19:35

Choose a tag to compare

updated dependencies

v2.0.3

29 May 22:47

Choose a tag to compare

What's Changed

[BUGFIX] many fixes in the ACL logic especially in DNS

Full Changelog: v2.0.2...v2.0.3

v2.0.2

27 May 10:49

Choose a tag to compare

fixed minor bug in geolocation

Full Changelog: v2.0.1...v2.0.2