Commit Graph

997 Commits

Author SHA1 Message Date
yusing
678cf4b3c6 fix(idlewatcher): incorrect "dependency has positive idle timeout" error 2025-12-18 23:18:11 +08:00
yusing
4299c78067 refactor(http): enhance health check error logic by treating all 5xx as unhealthy 2025-12-18 10:13:59 +08:00
yusing
b49d565213 feat(reverse_proxy): add scheme mismatch handling for retry logic in reverse proxy 2025-12-18 10:13:53 +08:00
yusing
85b93be277 fix(docker): nil panic reading container names 2025-12-18 10:13:51 +08:00
yusing
a754a2ed9f refactor(http): consolidate User-Agent header in health monitor 2025-12-18 10:08:51 +08:00
yusing
7547de6077 fix(idlewatcher): directly serve the request on ready instead of redirecting 2025-12-17 11:47:53 +08:00
yusing
f7340015b5 fix(access_log): fix slice out-of-bound panic on log rotation 2025-12-17 10:29:27 +08:00
yusing
ba8d23fada fix(config): nil panic introduced in ff934a4bb2911f5fa3c23d8fe6fea252d881fdc3; remove duplicated log 2025-12-17 10:29:26 +08:00
yusing
0a3332bd10 refactor: simplify and optimize deserialization 2025-12-17 10:29:26 +08:00
yusing
da1e666a72 refactor(config): remove unused ActiveConfig 2025-12-17 10:29:25 +08:00
yusing
3873e2860b fix(config): fix default values not applied 2025-12-17 10:29:24 +08:00
yusing
57d229f94b refactor(config): remove unnecessary indirection 2025-12-17 10:29:24 +08:00
yusing
7705402360 feat(rules): add protocol matching functionality
- Introduced a new checker for HTTP protocols (http, https, h3) in the routing rules.
- Added corresponding test cases to validate protocol matching behavior in requests.
2025-12-17 10:29:24 +08:00
yusing
6614783450 fix(icons): add handling for dark icons for walkxcode 2025-12-17 10:29:23 +08:00
yusing
c50fe0ee4a refactor(favicon): enhance FindIcon function to support icon variants
- Updated FindIcon to accept an additional variant parameter for improved icon fetching.
- Adjusted FavIcon and GetFavIconFromAlias functions to utilize the new variant handling logic.
2025-12-17 10:29:23 +08:00
yusing
8ba8726bc2 refactor(icon): improve handling in WithVariant 2025-12-17 10:29:22 +08:00
yusing
e9eba5a892 fix(favicon): enhance variant handling in GetFavIconFromAlias function
- Added fallback logic to handle cases where the requested icon variant is unavailable.
- If variant not provided, do not call WithVariant.
2025-12-17 10:29:22 +08:00
yusing
2d73dde9ff fix(favicon): correct icon cache key in FindIcon method 2025-12-17 10:29:21 +08:00
yusing
da13b3b66d refactor(icon): add variant handling for absolute/relative icons in WithVariant method 2025-12-17 10:29:21 +08:00
yusing
80c122b3b7 chore: update api swagger 2025-12-17 10:29:20 +08:00
yusing
6fec81deb9 feat(favicon): add variant support for favicons
- Introduced a new Variant field in GetFavIconRequest to specify icon variants (light/dark).
- Updated GetFavIconFromAlias function to handle the variant when fetching favicons.
- Added WithVariant method in IconURL to manage icon variants effectively.
2025-12-17 10:29:20 +08:00
yusing
48db8930cc refactor(docker): streamline idlewatcher label handling
- Introduced a map for idlewatcher labels to simplify the loading of configuration values.
- Simplify logic to check for the presence of an idle timeout and handle dependencies.
2025-12-17 10:27:01 +08:00
yusing
a54f6942ba feat(idlewatcher): add option to disable loading page 2025-12-17 10:22:09 +08:00
yusing
37e72cda57 fix(idlewatcher): improve container readiness handling in wakeFromHTTP
- Updated the wakeFromHTTP method to send a 100 Continue response to prevent client wait-header timeout.
- Implemented logic for non-HTML requests to wait for the container to become ready, returning an error message if it times out, or redirecting if successful.
- Adjusted the waitForReady method to return true upon receiving a ready notification.
2025-12-17 10:15:31 +08:00
yusing
b783ded2e7 chore(deps): upgrade dependencies 2025-12-10 17:35:27 +08:00
yusing
fde5a304e8 chore(deps): upgrade dependencies in submodules 2025-12-09 10:51:56 +08:00
yusing
06233759d9 fix(middleware): enhance response modification handling in ServeHTTP
- Replaced ResponseModifier with new LazyResponseModifier.
- Added logic to skip modification for non-HTML content.
2025-12-09 10:51:50 +08:00
yusing
33180878d9 refactor(route): simplify context handling in RouteContext
- Removed unnecessary requestInternal struct and directly accessed the context field of http.Request.
- Simplified the initialization of ctxFieldOffset.
2025-12-09 10:51:46 +08:00
yusing
074b420848 refactor(config): update config structures to use strutils.Redacted for sensitive fields
- Modified Config structs in various packages to replace string fields with strutils.Redacted to prevent logging sensitive information.
- Updated serialization methods to accommodate new data types.
- Adjusted API token handling in Proxmox configuration.
2025-12-09 10:51:30 +08:00
yusing
e7c87bae77 refactor(http,rules): move SharedData and ResponseModifier to httputils
- implemented dependency injection for rule auth handler
2025-12-05 16:27:04 +08:00
yusing
f561362530 fix(middleware): skip modify response for websocket and event-stream requests in ServeHTTP 2025-12-05 16:27:03 +08:00
yusing
ecd151d1ea fix(route): nil panic when used as an idlewatcher dependency 2025-12-05 16:26:46 +08:00
yusing
4a17245e6e refactor(deps): upgrade go to 1.25.5; isolate dependencies for reverseproxy, websocket and server modules 2025-12-05 16:26:43 +08:00
yusing
6e40f53a16 fix(http): handle 0 content length properly in some cases 2025-12-05 16:24:43 +08:00
yusing
714826213f fix(middleware): skip modification for HEAD requests in ModifyHTML middleware 2025-12-05 16:24:43 +08:00
yusing
429b0d9ce8 fix(http): enhance Content-Length handling in ResponseModifier
- Introduced origContentLength and bodyModified fields to track original content length and body modification status.
- Updated ContentLength and ContentLengthStr methods to return accurate content length based on body modification state.
- Adjusted Write and FlushRelease methods to ensure proper handling of Content-Length header.
- Modified middleware to use the new ContentLengthStr method.
2025-12-05 16:24:42 +08:00
yusing
a9adf79551 fix(tests): correct test expectations for middleware bypass and rules 2025-12-05 16:24:42 +08:00
yusing
9bb71ac76e refactor(labels): refine wildcard expansion logic and tests
- Added multiple test cases for the ExpandWildcard function to cover various scenarios including basic wildcards, no wildcards, empty labels, and YAML configurations.
- Improved handling of nested maps and invalid YAML inputs.
- Ensured that explicit labels and reference aliases are correctly processed and expanded.
2025-12-05 16:24:42 +08:00
yusing
65ee6d40bd refactor(healthcheck): streamline health check configuration and defaults
- Moved health check constants from common package alongside type definition.
- Updated health check configuration to use struct directly instead of pointers.
- Introduced global default health check config
2025-12-05 16:24:41 +08:00
yusing
100eac1f3c refactor(routes): simplify route exclusion check and health check defaults 2025-12-05 16:24:41 +08:00
yusing
894cd4d982 chore(deps): upgrade go version and dependencies 2025-12-05 16:23:55 +08:00
yusing
de15dbf405 refactor: move some utility functions to goutils and update references 2025-12-05 16:21:34 +08:00
yusing
98eab1fb4f Revert "refactor(docker): migrate from github.com/docker/docker to github.com/moby/moby"
This reverts commit c156173757.
2025-11-19 15:11:54 +08:00
yusing
71177b0b05 Revert "fix(docker): revert to API version negotiation for Docker client"
This reverts commit 1bcaf0dab5.
2025-11-19 15:08:07 +08:00
yusing
cb642d7b32 fix(middleware): correct body mutation behavior in ServeHTTP
Refactor ServeHTTP to properly handle response body mutations by:
- Using ResponseModifier to capture response before modification
- Reading body content and allowing middleware to modify it
- Writing modified body back if changed during modification
- Ensuring proper order: RequestModifier before, ResponseModifier after next()

Previously, httputils.NewModifyResponseWriter did not correctly handle
body mutations. The new implementation captures the full response,
allows modification via modifyResponse, and properly writes back any
changes to the body.

Add BodyReader() and SetBody() methods to ResponseModifier to support
reading and replacing response body content.
2025-11-17 16:32:58 +08:00
yusing
9285977495 chore(deps): upgrade dependencies 2025-11-17 15:15:06 +08:00
yusing
8ac459c038 fix(rules): ignore unsupported flush errors in ResponseModifier 2025-11-17 10:59:20 +08:00
yusing
1bcaf0dab5 fix(docker): revert to API version negotiation for Docker client 2025-11-15 10:52:03 +08:00
yusing
a291a49a0e fix(swagger): update netip.Addr definition type to string 2025-11-14 22:28:29 +08:00
yusing
28fdf3d2f4 fix(types/route): update HealthCheck JSON tag to be nullable for load-balancer routes 2025-11-14 22:16:30 +08:00