118 Commits

Author SHA1 Message Date
Juergen Kunz
47735adbf2 Implement zombie connection detection and cleanup in ConnectionManager; enhance tests for edge cases 2025-06-07 10:55:59 +00:00
Juergen Kunz
9aebcd488d Implement connection timeout handling and improve connection cleanup in SmartProxy 2025-06-06 23:34:50 +00:00
Juergen Kunz
b3714d583d Implement PROXY protocol v1 support in SmartProxy
- Added ProxyProtocolParser class for parsing and generating PROXY protocol v1 headers.
- Integrated PROXY protocol parsing into RouteConnectionHandler for handling incoming connections from trusted proxies.
- Implemented WrappedSocket class to encapsulate real client information.
- Configured SmartProxy to accept and send PROXY protocol headers in routing actions.
- Developed comprehensive unit tests for PROXY protocol parsing and generation.
- Documented usage patterns, configuration, and best practices for proxy chaining scenarios.
- Added security and performance considerations for PROXY protocol implementation.
2025-06-06 13:45:44 +00:00
Juergen Kunz
5f175b4ca8 fix tests 2025-06-06 08:23:37 +00:00
Juergen Kunz
b9be6533ae start fixing tests 2025-06-06 07:40:59 +00:00
Juergen Kunz
18d79ac7e1 feat(proxy): Implement WrappedSocket class for PROXY protocol support and update connection handling 2025-06-05 17:57:24 +00:00
Juergen Kunz
2a75e7c490 Refactor routing and proxy components for improved structure and compatibility
- Removed deprecated route utility functions in favor of direct matcher usage.
- Updated imports to reflect new module structure for routing utilities.
- Consolidated route manager functionality into SharedRouteManager for better consistency.
- Eliminated legacy routing methods and interfaces, streamlining the HttpProxy and associated components.
- Enhanced WebSocket and HTTP request handling to utilize the new unified HttpRouter.
- Updated route matching logic to leverage matcher classes for domain, path, and header checks.
- Cleaned up legacy compatibility code across various modules, ensuring a more maintainable codebase.
2025-06-03 16:21:09 +00:00
54ffbadb86 feat(routing): Implement unified routing and matching system
- Introduced a centralized routing module with comprehensive matchers for domains, headers, IPs, and paths.
- Added DomainMatcher for domain pattern matching with support for wildcards and specificity calculation.
- Implemented HeaderMatcher for HTTP header matching, including exact matches and pattern support.
- Developed IpMatcher for IP address matching, supporting CIDR notation, ranges, and wildcards.
- Created PathMatcher for path matching with parameter extraction and wildcard support.
- Established RouteSpecificity class to calculate and compare route specificity scores.
- Enhanced HttpRouter to utilize the new matching system, supporting both modern and legacy route configurations.
- Added detailed logging and error handling for routing operations.
2025-06-02 03:57:52 +00:00
07f5ceddc4 Implement proxy chain connection accumulation fix and add comprehensive tests
- Updated socket handling to prevent connection accumulation in chained proxies.
- Introduced centralized bidirectional forwarding for consistent socket management.
- Enhanced cleanup logic to ensure immediate closure of sockets when one closes.
- Added tests to verify connection behavior under various scenarios, including backend failures and rapid reconnections.
2025-06-01 15:10:36 +00:00
5b40e82c41 Add tests for connect-disconnect and error handling in SmartProxy 2025-06-01 14:41:19 +00:00
250eafd36c Enhance connection cleanup and error handling in RouteConnectionHandler
- Implement immediate cleanup for connection failures to prevent leaks
- Add NFTables cleanup on socket close to manage memory usage
- Fix connection limit bypass by checking record after creation
- Introduce tests for rapid connection retries and routing failures
2025-06-01 14:22:06 +00:00
ad80798210 Enhance socket cleanup and management for improved connection handling
- Refactor cleanupSocket function to support options for immediate destruction, allowing drain, and grace periods.
- Introduce createIndependentSocketHandlers for better management of half-open connections between client and server sockets.
- Update various handlers (HTTP, HTTPS passthrough, HTTPS terminate) to utilize new cleanup and socket management functions.
- Implement custom timeout handling in socket setup to prevent immediate closure during keep-alive connections.
- Add tests for long-lived connections and half-open connection scenarios to ensure stability and reliability.
- Adjust connection manager to handle socket cleanup based on activity status, improving resource management.
2025-06-01 12:27:15 +00:00
726d40b9a5 feat(lifecycle-component): enhance lifecycle management with unref support for timers and event listeners
fix(lifecycle-component): store actual event handler for proper cleanup
chore(meta): update certificate dates in meta.json
2025-06-01 08:09:29 +00:00
eb2e67fecc feat(socket-utils): implement socket cleanup utilities and enhance socket handling in forwarding handlers 2025-06-01 07:51:20 +00:00
c7c325a7d8 fix(tests): update AcmeStateManager tests to use socket-handler for challenge routes
fix(tests): enhance non-TLS connection detection with range support in HttpProxy tests
2025-06-01 07:06:11 +00:00
e0f3e8a0ec fix(lifecycle-component): support 'once' option for event listeners 2025-05-31 22:18:34 +00:00
96c4de0f8a fix(connection-manager): set default maxConnections to 10000 if not specified 2025-05-31 18:12:19 +00:00
829ae0d6a3 fix(refactor): remove deprecated Port80Handler and related utilities
- Deleted event-utils.ts which contained deprecated Port80Handler and its subscribers.
- Updated index.ts to remove the export of event-utils.
- Refactored ConnectionManager to extend LifecycleComponent for better resource management.
- Added BinaryHeap implementation for efficient priority queue operations.
- Introduced EnhancedConnectionPool for managing pooled connections with lifecycle management.
- Implemented LifecycleComponent to manage timers and event listeners automatically.
- Added comprehensive tests for BinaryHeap and LifecycleComponent to ensure functionality.
2025-05-31 18:01:09 +00:00
7b81186bb3 feat(performance): Add async utility functions and filesystem utilities
- Implemented async utilities including delay, retryWithBackoff, withTimeout, parallelLimit, debounceAsync, AsyncMutex, and CircuitBreaker.
- Created tests for async utilities to ensure functionality and reliability.
- Developed AsyncFileSystem class with methods for file and directory operations, including ensureDir, readFile, writeFile, remove, and more.
- Added tests for filesystem utilities to validate file operations and error handling.
2025-05-31 17:45:40 +00:00
32583f784f fix(smartproxy): Fix route security configuration location and improve ACME timing tests and socket mock implementations 2025-05-29 14:34:00 +00:00
e6b3ae395c update 2025-05-29 14:06:47 +00:00
af13d3af10 update 2025-05-29 13:24:27 +00:00
30ff3b7d8a update 2025-05-29 12:54:31 +00:00
ab1ea95070 update 2025-05-29 12:15:53 +00:00
b0beeae19e update 2025-05-29 11:30:42 +00:00
fdb45cbb91 fix(test): Fix ACME challenge route creation and HTTP request parsing in tests 2025-05-29 10:23:19 +00:00
6a08bbc558 update 2025-05-29 10:13:41 +00:00
d8d1bdcd41 update 2025-05-29 01:00:20 +00:00
e4aade4a9a fix(socket-handler): Fix socket handler race condition by differentiating between async and sync handlers. Now, async socket handlers complete their setup before initial data is emitted, ensuring that no data is lost. Documentation and tests have been updated to reflect this change. 2025-05-29 00:24:57 +00:00
742adc2bd9 fix(smartproxy): Improve port binding intelligence and ACME challenge route management; update route configuration tests and dependency versions. 2025-05-28 19:58:28 +00:00
a9ac57617e fix(smartproxy): Bump @push.rocks/smartlog to ^3.1.3 and improve ACME port binding behavior in SmartProxy 2025-05-20 19:20:24 +00:00
4f3359b348 update 2025-05-20 15:44:48 +00:00
669cc2809c fix(port-manager, certificate-manager): Improve port binding and ACME challenge route integration in SmartProxy 2025-05-20 15:32:19 +00:00
018a49dbc2 fix(tests): Update test mocks to include provisionAllCertificates methods in certificate manager stubs and related objects. 2025-05-19 23:57:16 +00:00
91018173b0 fix(certificate-manager, smart-proxy): Fix race condition in ACME certificate provisioning and refactor certificate manager initialization to defer provisioning until after port listeners are active 2025-05-19 22:07:08 +00:00
42fe1e5d15 fix(route-connection-handler): Forward non-TLS connections on HttpProxy ports to fix ACME HTTP-01 challenge handling 2025-05-19 19:59:22 +00:00
da061292ae fix(certificate-manager): Preserve certificate manager update callback in updateRoutes 2025-05-19 19:17:48 +00:00
3bf4e97e71 fix(smartproxy): Improve error handling in forwarding connection handler and refine domain matching logic 2025-05-19 18:29:56 +00:00
1b4d215cd4 fix(tests): test 2025-05-19 17:59:12 +00:00
33732c2361 fix(smartproxy): Correct NFTables forwarding handling to avoid premature connection termination and add comprehensive tests 2025-05-19 17:56:48 +00:00
465148d553 fix(strcuture): refactor responsibilities 2025-05-19 17:28:05 +00:00
6d3e72c948 fix(SmartCertManager): Preserve certificate manager update callback during route updates 2025-05-19 13:23:16 +00:00
4134d2842c fix(certificates): Update static-route certificate metadata for ACME challenges 2025-05-19 12:17:21 +00:00
02e77655ad update 2025-05-19 12:04:26 +00:00
ec81678651 feat(smartproxy): Update dependencies and enhance ACME certificate provisioning with wildcard support 2025-05-19 10:11:29 +00:00
0faca5e256 fix(tests): Adjust test cases for ACME challenge route handling, mutex locking in route updates, and port management. Remove obsolete challenge-route lifecycle tests and update expected outcomes in port80 management and race condition tests. 2025-05-19 03:42:47 +00:00
3fcdce611c fix(acme): Fix port 80 ACME management and challenge route concurrency issues by deduplicating port listeners, preserving challenge route state across certificate manager recreations, and adding mutex locks to route updates. 2025-05-19 03:40:58 +00:00
094edfafd1 fix(acme): Refactor ACME challenge route lifecycle to prevent port 80 EADDRINUSE errors 2025-05-19 01:59:52 +00:00
8fd861c9a3 fix(certificate-management): Fix loss of route update callback during dynamic route updates in certificate manager 2025-05-18 23:07:31 +00:00
68738137a0 feat(acme): Improve certificate management by adding global ACME configuration support and allowing route-level overrides. Enhanced error messages help identify missing ACME email and misconfigurations (e.g. wildcard domains). Documentation has been updated and new tests added to verify SmartCertManager behavior, ensuring a clearer migration path from legacy implementations. 2025-05-18 18:29:59 +00:00