Skip to content

Latest commit

 

History

History
144 lines (106 loc) · 5.36 KB

CHANGELOG.md

File metadata and controls

144 lines (106 loc) · 5.36 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.6.0-alpha - 2024-09-24

Added

  • Socket.IsBound implementation for SocksClient.

0.5.0-alpha - 2024-09-06

Added

  • Socket.SetSocketOption() implementation taking an int as third parameter.
  • Socket.GetSocketOption() implementation returning an object.
  • Exposed IsCommandAvailable and Authenticated from SocksClient.
  • SocksClient.WaitForCommand() method which allows waiting until the command is ready for data transfer or has been accepted.

Fixed

  • Added lock around socket calls, so only one thread uses a socket at a time.
  • SocksClientStream trying to receive data while the command wasn't accepted yet.

0.4.0-alpha - 2024-08-28

Added

  • Socket.Available implementation for SocksClient and Command (in case it handles communication).
  • Socket.Connected property is exposed by SocksClient now.
  • A new interface ISocket to make managing socket properties and methods easier.
  • A new class SocksClientStream (similar to System.Net.Socket.NetworkStream) which allows working with SocksClients as streams.

0.3.1-alpha - 2024-08-14

Added

  • Minimal implementation of Shutdown() for SocksClient and Command (in case it handles communication).

0.3.0-alpha - 2024-08-14

Added

  • SocksClient.Connect() implementation which takes an IPEndPoint.
  • Socket.Disconnect() method is exposed by SocksClient and commands now.
  • Username and password authentication method according to RFC 1929 (#16).
  • New list property (ClientCommand.ClientEndpoints) which contains all remote client endpoints received from a proxy server.
  • New EndPoint properties for SocksClient: LocalEndPoint, ProxiedLocalEndPoint and ProxiedRemoteEndPoint.
  • Minimal implementation of GetSocketOption() and SetSocketOption() for SocksClient and Command (in case it handles communication).
  • Minimal implementation of Poll() and Blocking for SocksClient and Command (in case it handles communication).

Changed

  • Remove Is-prefix from SocksSession properties.

Removed

  • The client command property BindCommand.ClientEndpoint in favor of ClientCommand.ClientEndpoints.

Fixed

  • SocksClient.Dispose() now also calls Dispose() for commands which implement IDisposable.
  • UdpAssociateCommand.WrapperLength now correctly returns the maximum amount of bytes required to wrap/unwrap a UdpPacket.
  • The send and receive methods of commands hava parameters for SocketFlags and SocketError now.

0.2.0-alpha - 2024-07-28

Added

  • Logo made by Justin de Haas.
  • Basic SOCKS5 proxy client (not compliant yet).
  • New generated IProxyAuth.GetAuth() extension method to get the AuthMethod value from an auth implementation.
  • Packet constructor which takes a byte array.
  • New method Packet.AsSpan() to get the underlying byte array of a packet as a Span<byte>.
  • Constructors taking a ProxyEndpoint for EndpointPackets.
  • Equals() and GetHashCode() implementation for ProxyEndpoint.
  • New interface IWrapper which contains Wrap() and Unwrap().
  • New properties for Command implementations to control communication with the proxy server.
  • New method Packet.IsValid() which returns a bool instead of throwing exceptions.
  • Validate() implementation for EndPointPacket.
  • Socket.Close() and Socket.Dispose() methods are exposed by SocksClient now.
  • Missing parameterless constructor for CommandRequest.

Changed

  • Improved introduction in README.md.
  • Renamed Destination class to ProxyEndpoint.
  • SocksSession.Process*() methods were marked as virtual.
  • Improved exception messages.
  • Throw ArgumentOutOfRangeException instead of ArgumentException if the length of the domain name is invalid for EndpointPackets.
  • Replaced init-only setter for Packet.Bytes with a regular setter.
  • Replaced protected fields of SocksSession with public properties containing a protected setter.
  • Changed the signature for Wrap() and Unwrap().

Fixed

  • Misbehaving UdpAssociate command.

0.1.0-alpha - 2024-04-21

Added

  • Basic SOCKS5 proxy server (not compliant yet).
  • Connect command.
  • Bind command.
  • UdpAssociate command without fragmentation.
  • Configurable authentication methods.
  • Configurable SOCKS commands.
  • Configurable allow and block lists.