All notable changes to this project will be documented in this file. I will do my best to guarantee that this project adheres to Semantic Versioning after 1.0.0, but please do read change log before updating.
DirectAdapterSocket
andSpeedAdapter
will disconnect when the request host is IPv6 address.- GeoIP now also supports IPv6 address.
- It's possible to match to a domain exactly now in
DomainRuleList
.
NWTCPSocket
will not crash ifdisconnect
is called beforeconnectTo
.- Hashing of
IPv4Address
might overflow on 32bit machines. - Error when parsing HTTP header with ":" in the value.
- HTTP server now gets host information from request url instead of Host field in header.
- Correctly handle empty line in list files.
DomainRuleList
can match domain based on prefix, suffix and keyword.
- Parse error when HTTP header contains non-ascii characters.
- You can limit the number of active sockets in
GCDProxyServer
by settingOpt.ProxyActiveSocketLimit
. But DO USE WITH CAUTION.
- Fixed a bug when the http request has no header fields the parsing of the header fails.
- Updated to Swift 2.3.
- Fixed a very edge case where
inet_ntoa
does not support multi-thread.
- SOCKS5 proxy now can correctly process IPv6 requests. Thx yarshure.
- SOCKS5 proxy correctly handles connections with IP address.
- Now one can initailize a
Port
by an integer directly.
- The interface of
Port
is refined. - Now SOCKS5 proxy response with
BND.ADDR = 0x00, 0x00, 0x00, 0x00
andBND.PORT = 0
.
- SOCKS5 proxy now handles client which supports more than one method.
- Added test.
- Support for SOCKS5 adapter.
- Fixed a bug when
IPRange
handling IP range with/32
.
- GeoIP now returns
nil
if input is not a valid IP address, so it is distinguishable from a failed search.
ShadowsocksAdapter
works correctly with IP-based request now.HTTPHeader
parses header incorrectly when the header is non-CONNECT with a non default(80) port.
- Now all encryption methods are represented in uppercase.
- Many things are now exposed as
public
. - Some meta-parameters can be set in
Opt
.
- Support to reject request.
- A potential memory leakage if DNS response is lost in transmission.
- Proxy server can listen on port without specific IP address.
- IPv4Address will return
nil
when initialize with an invalid IP address string. ListRule
is renamed toDomainListRule
.
- DNS server will only process A queries and return others intact.
- Support for IP range list matching rule.
- Many things in
HTTPHeader
andConnectRequest
becomepublic
. - Refined
description
of many classes.
- The
RuleManager
now triggers events.
- The
ProxyServer.mainProxy
is removed and instead you should set theproxyServer
in the implemention ofIPStackProtocol
(TCPStack
as of now) which requires a proxy server to function. - Many things are now
public
instead ofinternal
.
- The proxy server, adapter socket, proxy socket and tunnel now trigger events.
- A build-in debug observer to help with debugging.
- Chacha20 and Salsa20 encryption are fixed.