1
0
mirror of https://github.com/labstack/echo.git synced 2026-06-13 21:54:53 +02:00
Commit Graph

1791 Commits

Author SHA1 Message Date
Martti T. c9bd2cd8e3 Update golang.org/x/* deps (#2850) 2025-12-11 15:38:04 +02:00
Martti T. c12cb08a86 Logger middleware json string escaping and deprecation (#2849)
* Logger middleware should escape string values when outputting JSON
* Add Go license to logger_strings.go
* Deprecate middleware.Logger
2025-12-11 14:39:59 +02:00
toimtoimtoim 612967a9fe Update deps 2025-11-22 16:33:22 +02:00
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