Skip to content

Releases: wiresock/proxifyre

ProxiFyre-v2.2.0

01 Jan 13:01
b5c6a4d

Choose a tag to compare

🚀 ProxiFyre 2.2.0

✨ New Feature: LAN Bypass for SOCKS5 Proxy

ProxiFyre 2.2.0 adds an optional LAN bypass feature that allows local network traffic to bypass the SOCKS5 proxy. This improves performance and prevents routing issues when accessing LAN resources such as local services, NAS devices, or printers.

🔧 Changes

  • Added a configurable bypassLan option to exclude local network traffic from proxying
  • Implemented LAN pass-through filters for private IPv4 subnets:
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
    • 169.254.0.0/16 (link-local)
    • 224.0.0.0/4 (multicast)
  • Introduced set_bypass_lan() in the SOCKS local router
  • Propagated LAN bypass functionality through:
    • socksify_unmanaged
    • C++/CLI Socksifier wrapper
  • Updated app-config.json schema and settings parsing

🧩 Configuration

Enable LAN bypass by setting bypassLan in app-config.json:

{
  "logLevel": "Info",
  "bypassLan": true,
  "proxies": [
    ...
  ]
}

✅ Benefits

  • Faster access to local network resources
  • Avoids proxy-related issues with LAN-only services
  • Fully optional and disabled by default

Full Changelog:

  • feat: Add LAN bypass option to exclude local network traffic from proxying (#116)

ProxiFyre-v2.1.4

25 Dec 15:22
df24f2a

Choose a tag to compare

Proxifyre 2.1.4

Improvements

  • Improved stability of TCP and SOCKS5 UDP proxy connections on Windows
  • More reliable asynchronous I/O and background thread handling
  • Safer startup and shutdown behavior under heavy network load

Fixes

  • Fixed rare edge cases that could cause instability during active connections
  • Corrected timeout handling for long waits on Windows
  • Improved internal resource cleanup to prevent shutdown hangs

Notes

  • No configuration changes required
  • Fully backward compatible with previous 2.1.x releases

ProxiFyre-v2.1.3

30 Oct 14:23

Choose a tag to compare

🧩 Proxifyre 2.1.3

Overview

Proxifyre 2.1.3 is a maintenance release focused on improving reliability and addressing minor issues identified in the previous version (2.1.2). While this update does not introduce new features, it enhances the overall stability and consistency of the service.

🛠 Fixes and Improvements

  • Implementation stability: Fixed minor inconsistencies in the implementation layer affecting edge-case request handling.
  • Code maintainability: Minor refactoring across implementation classes for better readability and long-term maintainability.

⚙️ Impact

  • No API or interface changes.
  • Fully backward compatible with version 2.1.x clients.
  • Recommended for all users currently running 2.1.x builds.

🔗 Upgrade Notes

Upgrade to 2.1.3 using your standard deployment process. No configuration or migration changes are required.

ProxiFyre-v2.1.2

03 Sep 09:07
0e641da

Choose a tag to compare

🚀 ProxiFyre 2.1.2

🛠 Fixes & Improvements

Config Handling Bugfix

  • Fixed an issue with configurations containing multiple proxies (including entries with empty appNames) that caused incorrect routing or failures.
  • Example (now supported):
    {
        "logLevel": "Error",
        "proxies": [
            {
                "appNames": ["chrome"],
                "socks5ProxyEndpoint": "proxy1.example.com:1080",
                "username": "user",
                "password": "********",
                "supportedProtocols": ["TCP", "UDP"]
            },
            {
                "appNames": [""],
                "socks5ProxyEndpoint": "proxy2.example.com:1080",
                "username": "user",
                "password": "********",
                "supportedProtocols": ["TCP", "UDP"]
            }
        ],
        "excludes": ["firefox"]
    }

What's Changed

  • feat: integrate caching into network_process objects by @wiresock in #87

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

ProxiFyre-v2.1.1

02 Sep 09:28
aa8524e

Choose a tag to compare

🚀 ProxiFyre 2.1.1

🛠 Fixes & Improvements

Process Exclusion Support

  • Added ability to exclude specific processes from proxy routing.
  • Configurations can now specify applications that should bypass the SOCKS proxy.
  • Prevents unwanted tunneling for apps like browsers or local services when a global proxy is configured.
  • Updated configuration examples to clearly demonstrate exclusion usage.
{
    "logLevel": "Debug",
    "proxies": [
        {
            "appNames": [""],
            "socks5ProxyEndpoint": "socks5.sshvpn.me:1080",
            "username": "username1",
            "password": "password1",
            "supportedProtocols": ["TCP", "UDP"]
        }
    ],
    "excludes": [
        "firefox"
    ]
}

Impact: Enables more flexible setups where most processes are proxied, but selected applications remain direct.
Reference: #46


Performance Optimization via Caching

  • Implemented intelligent caching for process matching.
  • Reduces repeated pattern lookups in high-frequency proxy routing scenarios.
  • Lowers CPU overhead and improves responsiveness under heavy connection loads.

Impact: Provides smoother performance when managing many simultaneous proxied processes.
Reference: Pull Request with caching and exclusion improvements.


⚡ Upgrade Note

If you want to use the new process exclusion feature, add the "excludes" section to your configuration.
Existing configurations will continue to work without changes.


🙌 Special Thanks

A big thank you to @PoneyClairDeLune for suggesting the initial PR that inspired this release and pushing the improvements forward. 🎉


Full changelog:

  • Feature: Add process exclusion support in configuration.
  • Improvement: Optimize process matching with caching for better performance.
  • Docs: Extend configuration documentation with examples for exclusions.

Full Changelog: v2.0.12...v2.1.1

ProxiFyre-v2.0.12

14 Aug 10:18

Choose a tag to compare

🚀 ProxiFyre 2.0.12

🛠 Fixes & Improvements

Template Name Resolution in Logging Macro

  • Added explicit this-> qualification to get_log_level() and other logging method calls in the NETLIB_LOG macro.
  • Resolves dependent name lookup issues in CRTP (Curiously Recurring Template Pattern) inheritance.
  • Removes IDE warnings about unresolved method names in template contexts.
  • Ensures proper two-phase template name lookup for both source location variants.
  • No functional changes — improves code clarity and IDE compatibility.

Technical note: In CRTP patterns like logger<Derived>, method calls are considered dependent names and require this-> qualification for proper template instantiation and IDE recognition.


Extended TCP Proxy Idle Timeout

  • Increased idle timeout in is_ready_for_removal() from 2 minutes to 1 hour.
  • Timeout now acts as a safety measure for abandoned connections, rather than routine session control.
  • Maintains behavior where closing either socket closes both — correct for TCP proxy operation.
  • Updated logging to reflect new safety timeout semantics.

Impact: Prevents premature disconnections causing frequent reconnections during testing, especially in web applications with legitimate long idle periods.
Reference: #79


Full changelog:

  • Fix: Explicit this-> in CRTP logging macro for template name resolution.
  • Fix: Increase TCP proxy session timeout to 1 hour to avoid breaking idle connections.

Full Changelog: v2.0.10...v2.0.12

ProxiFyre-v2.0.10

11 Aug 08:28

Choose a tag to compare

🚀 ProxiFyre 2.0.10

Highlights

  • Global verbosity control for netlib::log with runtime configuration and managed integration.
  • Smarter log formatting; no duplicate timestamps/levels with NLog.
  • Managed log levels map to progressive verbosity:
    • error/warn → level only
    • info → level + logger
    • debug → level + thread + path
    • all → full detail

Refactors

  • Removed redundant log-level guards in process_lookup (TCP/UDP, v4/v6) — now rely on NETLIB_LOG macro early-return for performance.

Benefits

  • Fine-grained log detail for prod/dev.
  • Runtime tunable without rebuilds.
  • Backward compatible with existing log calls.

ProxiFyre-v2.0.9

10 Aug 22:01

Choose a tag to compare

ProxiFyre 2.0.9 — Accurate Caller Locations in Logs

🛠 Logging Improvements

  • Fixed an issue where log entries with std::source_location always reported the logger’s internal header and line number instead of the actual call site.
  • Introduced the NETLIB_LOG macro to capture true caller file/line/function when logging formatted messages.
  • Added print_log_with_loc() overload to accept explicit std::source_location from wrappers or macros.
  • Updated feature detection for std::source_location to ensure reliable activation across compilers.

Result: Log output now points to the real code location where the log was generated, making debugging and tracing significantly easier.

Full Changelog: v2.0.8...v2.0.9

ProxiFyre-v2.0.8

10 Aug 17:39

Choose a tag to compare

ProxiFyre 2.0.8 — Faster & Smarter Logging

🚀 Performance

  • Reduced CPU and memory overhead by skipping expensive string formatting when logging is disabled.
  • Optimized TCP/UDP table processing in process_lookup for large datasets.
  • Removed per-packet logging overhead in proxy sockets:
    • tcp_proxy_socket
    • socks5_udp_proxy_socket
    • socks5_tcp_proxy_socket
  • Near-zero logging cost at error/warning levels in production.

🛠 New Logging System

  • Replaced legacy logger with modern C++20, thread-safe CRTP-based design (netlib::log).
  • Supports std::format, std::osyncstream, optional std::source_location.
  • Compact 24-bit thread IDs, local time with UTC fallback.
  • Atomic log level checks with relaxed memory ordering.

Result: Lower CPU usage, faster hot paths, and full debug visibility when needed.

Full Changelog: v2.0.6...v2.0.8

ProxiFyre-v2.0.6

08 Aug 18:54

Choose a tag to compare

🛠 ProxiFyre v2.0.6 – Unified System Process Filtering

✨ What's New

  • Centralized System Process Detection
    Introduced a new is_system_process() helper function to consistently detect both PID 0 (System Idle Process) and PID 4 (System Process).
  • Consistent Filtering Across All Protocol Handlers
    Updated all TCP/UDP IPv4 and IPv6 entry functions to skip resolution attempts for both PID 0 and PID 4.
  • Clearer Debug Logging
    Enhanced debug messages to include PID values and explicitly label them as Idle or System processes for better traceability.

🔧 Technical Details

  • Added a static constexpr is_system_process() helper for centralized PID checks.

  • Updated:

    • process_tcp_entry_v4() to use the new helper.
    • process_tcp_entry_v6() to check both PID 0 and PID 4.
    • process_udp_entry_v4() to check both PID 0 and PID 4.
    • process_udp_entry_v6() to check both PID 0 and PID 4.
  • Unified filtering logic to eliminate duplicate PID checks across the codebase.

  • Improved debug output to indicate when a skipped entry belongs to the Idle or System process.

🐛 Bug Fixes

  • Resolved inconsistencies in PID filtering logic between IPv4 and IPv6 handlers.
  • Fixed debug log discrepancies when skipping PID 4 entries, ensuring uniform output format.
  • Prevented unnecessary and expensive process resolution attempts for PID 4 (System Process) alongside PID 0.

📦 Upgrade Notes

  • Fully backward compatible with all v2.x releases.
  • Recommended for all users for improved maintainability and reduced overhead.
  • Expect cleaner debug logs with explicit identification of skipped system processes.

This release focuses on code maintainability and operational consistency, making ProxiFyre smarter in handling system-level processes while keeping the logs more informative and concise.

Full Changelog: v2.0.5...v2.0.6