1
0
mirror of https://github.com/labstack/echo.git synced 2025-10-30 23:57:38 +02:00

1788 Commits

Author SHA1 Message Date
kumapower17
53b692c4d4 Ensure proxy connection is closed in proxyRaw function
(#2837)
2025-10-26 19:26:29 +02:00
kumapower17
e644ff8f7b Replace custom private IP range check with built-in net.IP.IsPrivate() method 2025-10-15 21:46:24 +03:00
yuya-morimoto
40e2e8faf9 Fix typo "+" 2025-10-07 22:31:32 +03:00
Vishal Rana
55cb3b625d Optimize realm quoting to happen once during middleware creation
Move strconv.Quote(config.Realm) from per-request execution
to middleware initialization for better performance.

- Pre-compute quoted realm at middleware creation time
- Avoids repeated string operations on every auth failure
- Maintains same behavior with better efficiency

Performance improvement suggested during code review.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 11:48:13 +03:00
Vishal Rana
dbd583fa4d Add comprehensive tests for realm quoting behavior
Tests cover:
- Default realm quoting
- Custom realm with spaces
- Special characters (quotes, backslashes)
- Empty realm fallback to default
- Unicode realm support

Addresses review feedback about testing strconv.Quote behavior
in WWW-Authenticate header per RFC 7617 compliance.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 11:48:13 +03:00
Vishal Rana
432a2adf46 Improve BasicAuth middleware: use strings.Cut and RFC compliance
- Replace manual for loop with strings.Cut for credential parsing
- Simplify realm handling to always quote according to RFC 7617
- Improve code readability and maintainability

Fixes #2794

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 11:48:13 +03:00
Vishal Rana
212bfe0071 Fix typo in ContextTimeout middleware comment
Change 'aries' to 'arises' in ErrorHandler comment.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 11:23:09 +03:00
Vishal Rana
b4ea924836 Fix typo in SetParamValues comment
Change 'brake' to 'break' in Router#Find code comment.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 11:22:52 +03:00
Vishal Rana
52d2bff1b9 Modernize context.go by replacing interface{} with any (#2822)
Modernizes the Context interface by replacing all instances of interface{}
with the more readable 'any' type alias introduced in Go 1.18.

**Changes:**
- Replaced interface{} with any in all Context interface method signatures
- Affects Get(), Set(), Bind(), Validate(), Render(), JSON(), JSONP(), XML(),
  Blob(), Stream(), File(), Attachment(), Inline(), and NoContent() methods
- Total of 23 interface{} → any replacements

**Benefits:**
- Improves code readability and modernizes to Go 1.18+ standards
- No functional changes - 'any' is just an alias for interface{}
- Follows current Go best practices for new code
- Makes the API more approachable for developers familiar with modern Go

**Compatibility:**
- Zero breaking changes - 'any' and interface{} are identical
- Maintains full backward compatibility
- All existing code continues to work unchanged

This modernization aligns Echo with current Go conventions while maintaining
100% compatibility with existing applications.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-15 22:08:28 -07:00
Vishal Rana
f1ebc67c56 Enhance Logger Middleware Documentation with Detailed Configuration Examples
Addresses issue #2665 by providing comprehensive documentation for the Logger
middleware including:

**Configuration Examples:**
- Basic usage with default settings
- Custom simple and JSON formats
- Custom time formatting
- Header, query, form, and cookie logging
- File output configuration
- Custom tag functions
- Conditional logging with Skipper
- External logging service integration

**Detailed Tag Reference:**
- Complete list of all available tags (time, request, response, dynamic)
- Clear explanations of each tag's purpose and format
- Examples showing proper usage

**Enhanced Field Documentation:**
- Detailed descriptions for all LoggerConfig fields
- Examples for each configuration option
- Default values and behavior

**Troubleshooting Section:**
- Common issues and solutions
- Performance optimization tips
- Best practices for high-traffic applications

**Function Documentation:**
- Enhanced Logger() and LoggerWithConfig() documentation
- Example outputs and usage patterns

This makes the Logger middleware much more accessible to new users while
providing advanced configuration guidance for experienced developers.

Fixes #2665

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-15 19:27:34 -07:00
Vishal Rana
b7a781ce5d Add comprehensive tests for IP extraction improvements
Adds tests for issue #2757 IP extraction edge cases where RemoteAddr
may not include a port. The enhanced extractIP function now properly
handles IPv4/IPv6 addresses without ports using net.ParseIP validation.

Test cases cover:
- IPv4 without port
- IPv6 without port
- IPv6 with port brackets
- Invalid IP format handling

Existing tests for issue #2789 response flush error handling are already
comprehensive and validate the improved error messages with ResponseWriter types.

Fixes #2757

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-15 19:21:57 -07:00
Vishal Rana
d0137c3e80 Revert Issue #2813 fix based on maintainer feedback
Revert the DefaultBinder empty body handling changes following
@aldas's concerns about:
- Body replacement potentially interfering with custom readers
- Lack of proper reproduction case for the original issue
- Potential over-engineering for an edge case

The "read one byte and reconstruct body" approach could interfere
with users who add custom readers with specific behavior.

Waiting for better reproduction case and less invasive solution.

Refs: https://github.com/labstack/echo/issues/2813#issuecomment-3294563361

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-15 19:08:27 -07:00
Vishal Rana
2fb84197e9 Fix DefaultBinder empty body handling for unknown ContentLength
Fix issue where POST requests with empty bodies and ContentLength=-1
(unknown/chunked encoding) incorrectly fail with 415 Unsupported Media Type.

The DefaultBinder.BindBody method now properly detects truly empty bodies
when ContentLength=-1 by peeking at the first byte. If no content is found,
it returns early without error. If content exists, it reconstructs the body
to preserve the original data.

Fixes #2813

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-15 18:47:57 -07:00
Vishal Rana
61da50fefc Update test to expect improved Response.Flush error message
The test TestResponse_FlushPanics was expecting the old generic error
message but should now expect the improved message that includes the
specific ResponseWriter type information.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-15 17:54:49 -07:00
Vishal Rana
a92f4209c6 Fix IP extraction fallback and improve Response.Flush error messages
Fixes two issues:

1. extractIP now handles RemoteAddr without port (#2757)
   - Previously returned empty string for addresses like "192.168.1.1"
   - Now validates with net.ParseIP and returns the IP directly
   - Maintains full backwards compatibility for existing behavior

2. Response.Flush uses modern error handling (#2789)
   - Replaces type assertion with http.NewResponseController
   - Provides descriptive panic message with ResponseWriter type info
   - Improves debugging experience when flushing is not supported

Both changes maintain full backwards compatibility while fixing edge cases.

Closes #2757
Closes #2789

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-15 17:52:30 -07:00
Martti T.
5ac2f11f21 Use Go 1.25 in CI (#2810)
* Use Go 1.25 in CI

* Disable test: in Go 1.24 and earlier http.NoBody would result ContentLength=-1 but as of Go 1.25 http.NoBody would result ContentLength=0 I am too lazy to bother documenting this as 2 version specific tests.
2025-08-29 17:53:06 +03:00
cui
9acf534182 refactor to use reflect.TypeFor (#2812) 2025-08-25 22:32:58 +03:00
Martti T.
8493c61ede Update deps (#2807)
* Update golang.org/x/ dependencies
2025-08-12 11:57:52 +03:00
Martti T.
98ca08e7dd Improve changelog for 4.13.4 (#2783) v4.13.4 2025-05-22 14:18:29 +03:00
Martti T.
f24aaff49b Revert "CORS: reject requests with 401 for non-preflight request with not mat…" (#2782)
This reverts commit ee3e129778.
2025-05-22 14:11:54 +03:00
Martti T.
9f50a659e9 Changelog for 4.13.4 (#2781) 2025-05-22 14:04:26 +03:00
Martti T.
d735cb6a2e Upgrade dependencies (#2780)
Fixed these:
* https://pkg.go.dev/vuln/GO-2025-3487  (affects: `golang.org/x/crypto/ssh`)
* https://pkg.go.dev/vuln/GO-2025-3503 (affects: `golang.org/x/net/http/httpproxy` and `golang.org/x/net/proxy` )
* https://pkg.go.dev/vuln/GO-2025-3595 (affects: `golang.org/x/net/html` )
2025-05-22 13:57:55 +03:00
t-ibayashi-safie
de44c53a5b Add support for TLS WebSocket proxy (#2762)
* Add support for TLS WebSocket proxy

* support tls to non-tls and non-tls to tls websocket proxy
2025-04-04 11:01:42 +03:00
Martti T.
c44f6283f0 CI: test with Go 1.24 (#2748) 2025-02-12 19:17:34 +02:00
zhuhaicity
ce0b12ae53 chore: fix some typos in comment (#2735)
Signed-off-by: zhuhaicity <zhuhai@52it.net>
2025-01-12 09:28:38 +02:00
Martti T.
ee3e129778 CORS: reject requests with 401 for non-preflight request with not matching origin header (#2732) 2025-01-07 22:06:28 +02:00
Martti T.
45524e39d6 Update golang.org/x/net dependency [GO-2024-3333](https://pkg.go.dev/vuln/GO-2024-3333) (#2722) v4.13.3 2024-12-19 06:51:34 +02:00
Martti T.
692bc2abb6 Update dependencies (dependabot reports https://pkg.go.dev/vuln/GO-2024-3321) (#2721) v4.13.2 2024-12-12 07:47:56 +02:00
Martti T.
fd3f07447e Changelog for v4.13.1 (#2719) v4.13.1 2024-12-11 12:18:50 +02:00
Masahiro Furudate
0368ed87f2 Add Conditions to Ensure Bind Succeeds with Transfer-Encoding: chunked (#2717)
* Add conditions to ensure Bind succeeds with `Transfer-Encoding: chunked`.

* Revert the ContentLength conditions for BindBody
2024-12-11 12:04:21 +02:00
Martti T.
3b017855b4 Changelog for 4.13.0 (#2712) v4.13.0 2024-12-04 22:13:45 +02:00
Steven-Whitehead
fe26277781 remove jwt middleware 2024-11-25 22:21:56 +02:00
toimtoimtoim
9e73691837 Shorten Github issue template and add test example 2024-11-22 22:54:55 +02:00
toimtoimtoim
118c1632f2 CORS middleware should compile allowOrigin regexp at creation. 2024-11-22 11:59:58 +02:00
pham vinh dat
a973e3bc43 add unit-test 2024-11-22 11:58:56 +02:00
pham vinh dat
c4410fe0b8 fix(bind body): content-length can be -1 2024-11-22 11:58:56 +02:00
toimtoimtoim
5d98929328 Remove broken header 2024-11-18 21:56:43 +02:00
eolson
5a0b4dd806 clean up field assignments with default values to make test configuration more concise/readable 2024-10-26 15:44:47 +03:00
eolson
03c0236fb3 refactor basic_auth_test to utilize table driven tests 2024-10-26 15:44:47 +03:00
toimtoimtoim
822d11a465 Add TemplateRenderer struct to ease creating renderers for html/template and text/template packages. 2024-10-20 21:21:51 +03:00
toimtoimtoim
d5b32c6e47 Refactor work done by martinpasaribu <martin.yonathan305@gmail.com> (binding multipart files by using struct tags) 2024-10-20 21:03:50 +03:00
martinpasaribu
fb769d71b5 🎨 : add some test case for multipart file 2024-10-20 21:03:50 +03:00
martinpasaribu
d1ab8e8544 bind: add support of multipart multi files 2024-10-20 21:03:50 +03:00
martinpasaribu
ab87b63640 improve MultipartForm test 2024-10-06 23:53:23 +03:00
toimtoimtoim
d20a6257aa Remove pre Go1.20 support 2024-08-16 09:16:52 +03:00
toimtoimtoim
27c55f2189 tests: In Go 1.23 fs related errors have changed. 2024-08-16 09:16:52 +03:00
toimtoimtoim
a5612d83d0 Add Go 1.23 to CI 2024-08-16 09:16:52 +03:00
Saloni Agarwal
f13e2640f0 bind: Maintain backwards compatibility for map[string]interface{} binding (#2656)
* bind: Maintain backwards compatibility for map[string]interface{} binding

* bind to single string for map[string]interface{}{}
2024-07-22 07:33:01 +03:00
Behnam
f7d9f5142e optimization: struct alignment (#2636)
(#2632)
2024-05-30 22:50:01 +03:00
Martti T
88c379ff77 Changelog for v4.12.0 (#2626) v4.12.0 2024-04-15 21:31:01 +03:00