Skip to content

Latest commit

 

History

History
283 lines (171 loc) · 8.08 KB

CHANGELOG.md

File metadata and controls

283 lines (171 loc) · 8.08 KB

Unreleased: mitmproxy_rs next

11 December 2024: mitmproxy_rs 0.11.1

  • Update twine to fix the deploy CI.

10 December 2024: mitmproxy_rs 0.11.0

  • Add LocalRedirector.unavailable_reason() and TunInterface.unavailable_reason().
  • Add active_processes() on Linux.

28 October 2024: mitmproxy_rs 0.10.7

  • tun mode: disable rp_filter, remove debug logging.

28 October 2024: mitmproxy_rs 0.10.6

  • tun mode: re-add debug logging.

27 October 2024: mitmproxy_rs 0.10.5

  • tun mode: add default netmask

27 October 2024: mitmproxy_rs 0.10.4

  • Remove superfluous debug logs.

27 October 2024: mitmproxy_rs 0.10.3

  • Add more debug info.

27 October 2024: mitmproxy_rs 0.10.2

  • Add debug info.

27 October 2024: mitmproxy_rs 0.10.1

  • Assign a local IP address to our tun interface for Linux compatibility.

27 October 2024: mitmproxy_rs 0.10.0

  • Add tun mode.

18 October 2024: mitmproxy_rs 0.9.3

  • Improve error messages for better debugging.

02 October 2024: mitmproxy_rs 0.9.2

  • Improve error messages for better debugging.

06 September 2024: mitmproxy_rs 0.9.1

  • Actually better speculative fix.

05 September 2024: mitmproxy_rs 0.9.0

  • Better speculative fix.

04 September 2024: mitmproxy_rs 0.8.1

  • Speculative fix for stack overflows on Windows.

04 September 2024: mitmproxy_rs 0.8.0

  • Move functionality into submodules.

0.7.2

  • Make active_executables raise for invalid paths on Windows.

0.7.1

  • Make DnsResolver.lookup_* methods return error numbers matching getaddrinfo.

0.7.0

  • Set IPV6_V6ONLY flag for UDP sockets

0.6.3

  • Fix a bug when initializing local redirect mode on macOS.

0.6.2

  • Handle errors when remote host has closed UDP socket

0.6.1

  • Add dedicated IPv4/IPv6 resolution methods to the DNS resolver.

0.6.0

  • Change intercept spec syntax.
  • Add DNS resolver.

0.5.2

  • Dependency updates.

0.5.1

  • Make server shutdown more robust.

0.5.0

  • UDP connections are now modeled as streams.

0.4.0

  • Renamed OsProxy to LocalRedirector.

0.3.9 - 0.3.11

  • Various improvements to the mitmproxy-macos source distribution.

0.3.8

  • mitmproxy-macos is now also distributed as a source distribution on PyPI. The source distribution contains some pre-compiled binaries built by our CI. This is necessary because the network system extension needs to be signed & notarized with a valid Apple Developer ID before it can be installed.

0.3.7

  • Raise an ImportError if platform-specific dependencies are missing.

0.3.6

  • Building from source does not require a protobuf compiler anymore.

0.3.1 - 0.3.5

  • Improve transparent proxy functionality on macOS.

0.3.0

  • Add transparent proxy functionality for macOS. This will receive a proper announcement later on.
  • Prefer a system-provided PROTOC env var if set.
  • Split mitmproxy_rs into three Python packages: mitmproxy-rs, mitmproxy-windows, and mitmproxy-macos.
    • mitmproxy-rs is a cross-platform package distributed both as sdist and wheels. Building from source requires a Rust compiler only, and optionally a Protobuf compiler.
    • mitmproxy-windows and mitmproxy-macos are distributed as precompiled wheels only on PyPI. Both can be built from source using a full git checkout (see the build-os-wheels CI job). Note that the macOS app needs to be signed and notarized using a valid Apple Developer Id for the system extension to work.

0.2.2

  • Fall back to system-provided protoc if protoc-bin-vendored is not available.

0.2.1

  • Fix source distributions on Linux and macOS.

0.2.0

  • mitmproxy_wireguard is now mitmproxy_rs. As indicated by the name change, the scope of the project now goes beyond WireGuard.
  • Add transparent proxy functionality for Windows. This will receive a proper announcement later on.

0.1.18

  • Expose the "original" (i.e. not the address inside the WireGuard tunnel) source address of WireGuard UDP packets in TcpStream via TcpStream.get_extra_info("original_src").
  • Internal refactoring to simplify code for spawning TCP connection handler coroutines, which makes it possible to check whether they raised an exception (which were previously just silently ignored).
  • Update all Rust dependencies, including an update to PyO3 v0.17.3, which is the first release that marked support for Python 3.11 as official.

0.1.17

  • Ensure that the virtual network device does not block unnecessarily and that it is always polled when necessary. Fixes a regression that was introduced in version 0.1.16.

0.1.16

  • Optimize event processing in the internal network stack by always consuming as many events as possible before polling the virtual network device and processing open TCP sockets.
  • Ensure that only one TCP socket is created per connection, even if SYN packets are resent for some reason.
  • Channel sizes for processing events in the internal network stack are increased to avoid errors with full channels when some tasks don't keep up.
  • Logging calls are removed from the network task's hot loop unless the project is built in debug mode.
  • Failures to send to channels that were already closed when processing data that was received for sockets are now ignored to avoid crashes.

0.1.15

  • Manually include source files for the test client binary in published sdists to ensure the sources which are published on PyPI can actually be built.

0.1.14

  • Increase buffer size for WireGuard packets to accommodate large outgoing packets.
  • Check length of outgoing packets and drop packets that are larger than the maximum possible WireGuard packet payload (maximum packet size - WireGuard header length) to avoid crashes with super-sized packets.

0.1.13

  • Update dependencies to the latest versions (pyo3 v0.17, pyo3-asyncio v0.17, pyo3-log v0.7), now that pyo3-asyncio v0.17 was released with pyo3 v0.17 support.
  • Switch back from patched version of pyo3-asyncio to the official releases, since v0.17 incorporates our patch.

0.1.12

  • Fix a race condition in the shutdown code that could cause shutdown to never happen.
  • Make logger setup more robust and only try to initialize once.

0.1.11

  • Make failures to initialize the Rust -> Python logger non-fatal.

0.1.10

  • Temporarily use a patched version of pyo3-asyncio to fix a race condition in the handling of Python Futures which caused frequent race conditions.
  • Implement is_closing(self) -> bool method on TcpStream to match asyncio.StreamWriter.

0.1.9

  • Simplified GitHub actions for CI and publishing wheels to PyPI.
  • Failed sub-tasks are now handled immediately and cause a server shutdown instead of silently returning and only yielding an error when shutting down the server manually.

0.1.8

  • Fix building binary wheels for aarch64-unknown-linux-gnu.

0.1.7

  • Do not exit the network task when a draining TcpStream is already closed.
  • Make log messages for "no current WireGuard session" more user-friendly.
  • Attempt to build binary wheels for aarch64-unknown-linux-gnu for Raspberry Pi support.

0.1.6

  • Fix test client to only send valid packets.

0.1.5

  • Adapt the test client to handle EAGAIN gracefully.

0.1.4

  • Split test client into separate workspace crate to speed up builds and hopefully fix them on macOS.

0.1.3

  • Adapt test client to produce packets with correct checksums.
  • Build test client binaries in the publish GitHub Action.
  • Stop building binary wheels for 32-bit Linux and Windows targets.
  • Validate TCP checksums and reject invalid incoming packets early.
  • Lower priority of log messages for non-fatal TcpStream cleanup errors during server shutdown.

0.1.2

  • Revert addition of ChecksumCapabilities::ignored to the virtual network device. This change in v0.1.1 completely broke TCP connection handling.

0.1.1

  • Added a simple test client binary (mitm-wg-test-client).
  • Ignore TCP checksums in network device code, they are already checked in other places.
  • Port to boringtun v0.5.

0.1.0

Initial Release.