* feat(logger): Add predefined log formats
This commit introduces predefined log formats for the logger middleware, enhancing its flexibility and ease of use. Users can now specify formats like "common", "combined", and "json" in addition to the default format.
Changes:
- Added a `format.go` file to store predefined log format constants.
- Updated `config.go` to include documentation for the `Format` configuration option, explaining the available placeholders and predefined formats.
- Modified `logger.go` to utilize the predefined formats based on the `Format` configuration.
- Added a new test case `Test_Logger_CLF` in `logger_test.go` to verify the "common" log format.
* feat(logger): Use predefined formats and fix default format
This commit updates the logger middleware to utilize the predefined log formats introduced in a previous commit. It also fixes the default format to use the `FormatDefault` constant.
Changes:
- Updated `config.go` to use `FormatDefault` constant for the default format.
- Updated `default_logger.go` to use `FormatDefault` constant for the default format.
- Added new test cases in `logger_test.go` to verify the "common", "combined" and "json" log formats.
- Updated `format.go` to add newline character to the end of the default format.
* feat(logger): Document and exemplify predefined formats
* fix(logger): Improve test assertions based on golangci-lint
* docs(logger): Improve documentation and formatting logger.md based on markdownlint-cli2
* docs(logger): Improve documentation based on markdownlint-cli2
* fix(logger): Improve combined and JSON format tests
* feat(logger): Add ECS log format
* feat(logger): Add CustomFormat option
This commit introduces a `CustomFormat` option to the `Config` struct, allowing users to specify a predefined format (like "common", "combined", "json", or "ecs")
* feat(logger): Add ECS log format to examples and config
* docs(logger): Update examples in whats_new.md
* feat(logger): Remove CustomFormat option and renamed Format consts
- Removed `CustomFormat` field from `Config`.
- Removed `LoggerConfig` map.
- Rename predefined formats constants.
* docs(logger): Update documentation and examples after format refactor
---------
Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
* Rename UserContext() to Context(). Rename Context() to RequestCtx()
* Update Ctxt docs and What's new
* Remove extra blank lines
---------
Co-authored-by: M. Efe Çetin <efectn@protonmail.com>
* feat!(middleware/session): re-write session middleware with handler
* test(middleware/session): refactor to IdleTimeout
* fix: lint errors
* test: Save session after setting or deleting raw data in CSRF middleware
* Update middleware/session/middleware.go
Co-authored-by: Renan Bastos <renanbastos.tec@gmail.com>
* fix: mutex and globals order
* feat: Re-Add read lock to session Get method
* feat: Migrate New() to return middleware
* chore: Refactor session middleware to improve session handling
* chore: Private get on store
* chore: Update session middleware to use saveSession instead of save
* chore: Update session middleware to use getSession instead of get
* chore: Remove unused error handler in session middleware config
* chore: Update session middleware to use NewWithStore in CSRF tests
* test: add test
* fix: destroyed session and GHSA-98j2-3j3p-fw2v
* chore: Refactor session_test.go to use newStore() instead of New()
* feat: Improve session middleware test coverage and error handling
This commit improves the session middleware test coverage by adding assertions for the presence of the Set-Cookie header and the token value. It also enhances error handling by checking for the expected number of parts in the Set-Cookie header.
* chore: fix lint issues
* chore: Fix session middleware locking issue and improve error handling
* test: improve middleware test coverage and error handling
* test: Add idle timeout test case to session middleware test
* feat: add GetSession(id string) (*Session, error)
* chore: lint
* docs: Update session middleware docs
* docs: Security Note to examples
* docs: Add recommendation for CSRF protection in session middleware
* chore: markdown lint
* docs: Update session middleware docs
* docs: makrdown lint
* test(middleware/session): Add unit tests for session config.go
* test(middleware/session): Add unit tests for store.go
* test(middleware/session): Add data.go unit tests
* refactor(middleware/session): session tests and add session release test
- Refactor session tests to improve readability and maintainability.
- Add a new test case to ensure proper session release functionality.
- Update session.md
* refactor: session data locking in middleware/session/data.go
* refactor(middleware/session): Add unit test for session middleware store
* test: fix session_test.go and store_test.go unit tests
* refactor(docs): Update session.md with v3 changes to Expiration
* refactor(middleware/session): Improve data pool handling and locking
* chore(middleware/session): TODO for Expiration field in session config
* refactor(middleware/session): Improve session data pool handling and locking
* refactor(middleware/session): Improve session data pool handling and locking
* test(middleware/csrf): add session middleware coverage
* chroe(middleware/session): TODO for unregistered session middleware
* refactor(middleware/session): Update session middleware for v3 changes
* refactor(middleware/session): Update session middleware for v3 changes
* refactor(middleware/session): Update session middleware idle timeout
- Update the default idle timeout for session middleware from 24 hours to 30 minutes.
- Add a note in the session middleware documentation about the importance of the middleware order.
* docws(middleware/session): Add note about IdleTimeout requiring save using legacy approach
* refactor(middleware/session): Update session middleware idle timeout
Update the idle timeout for the session middleware to 30 minutes. This ensures that the session expires after a period of inactivity. The previous value was 24 hours, which is too long for most use cases. This change improves the security and efficiency of the session management.
* docs(middleware/session): Update session middleware idle timeout and configuration
* test(middleware/session): Fix tests for updated panics
* refactor(middleware/session): Update session middleware initialization and saving
* refactor(middleware/session): Remove unnecessary comment about negative IdleTimeout value
* refactor(middleware/session): Update session middleware make NewStore public
* refactor(middleware/session): Update session middleware Set, Get, and Delete methods
Refactor the Set, Get, and Delete methods in the session middleware to use more descriptive parameter names. Instead of using "middlewareContextKey", the methods now use "key" to represent the key of the session value. This improves the readability and clarity of the code.
* feat(middleware/session): AbsoluteTimeout and key any
* fix(middleware/session): locking issues and lint errors
* chore(middleware/session): Regenerate code in data_msgp.go
* refactor(middleware/session): rename GetSessionByID to GetByID
This commit also includes changes to the session_test.go and store_test.go files to add test cases for the new GetByID method.
* docs(middleware/session): AbsoluteTimeout
* refactor(middleware/csrf): Rename Expiration to IdleTimeout
* docs(whats-new): CSRF Rename Expiration to IdleTimeout and remove SessionKey field
* refactor(middleware/session): Rename expirationKeyType to absExpirationKeyType and update related functions
* refactor(middleware/session): rename Test_Session_Save_Absolute to Test_Session_Save_AbsoluteTimeout
* chore(middleware/session): update as per PR comments
* docs(middlware/session): fix indent lint
* fix(middleware/session): Address EfeCtn Comments
* refactor(middleware/session): Move bytesBuffer to it's own pool
* test(middleware/session): add decodeSessionData error coverage
* refactor(middleware/session): Update absolute timeout handling
- Update absolute timeout handling in getSession function
- Set absolute expiration time in getSession function
- Delete expired session in GetByID function
* refactor(session/middleware): fix *Session nil ctx when using Store.GetByID
* refactor(middleware/session): Remove unnecessary line in session_test.go
* fix(middleware/session): *Session lifecycle issues
* docs(middleware/session): Update GetByID method documentation
* docs(middleware/session): Update GetByID method documentation
* docs(middleware/session): markdown lint
* refactor(middleware/session): Simplify error handling in DefaultErrorHandler
* fix( middleware/session/config.go
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* add ctx releases for the test cases
---------
Co-authored-by: Renan Bastos <renanbastos.tec@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
Co-authored-by: René <rene@gofiber.io>
* feat: add max calculator to limiter middleware
* docs: update docs including the new parameter
* refactor: add new line before go code in docs
* fix: use crypto/rand instead of math/rand on tests
* test: add new test with zero set as limit
* fix: repeated tests failing when generating random limits
* fix: wrong type of MaxCalculator in docs
* feat: include max calculator in limiter_sliding
* refactor: rename MaxCalculator to MaxFunc
* docs: update docs with MaxFunc parameter
* tests: rename tests and add test for limiter sliding
* added startup default probe endpoint
* added test case
* updated docs
* updated test order
* added test case
* fixed go fmt and md lint
* fixed go fmt and md lint
* updated doc as per coderabbitai suggestions
* changed healhtcheck route register to use default const instead of string for test cases
* updated whats new with healthcheck content
* updated whats new doc with coderabbitai sugg
* updated migration guide
* Add support for consistent documentation using markdownlint
* Only run workflow during changes to markdown files
* Fix more inconsistencies
* Fixes to markdown under .github/
* More fixes
* Apply suggestions from code review
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Fix typo in limiter docs
* Add missing space before code-block
* Add check for dead-links
* Add write-good
* Remove legacy README files
* Fix glob for skipping .md files
* Use paths-ignore instead
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Support for key length, Add benchmarks for EncryptCookie middleware
* Format tests
* Add tests for panics and key check in Encryptor and Decryptor functions
* Add tests for base64 decoding errors
* Update docs/middleware/encryptcookie.md
Co-authored-by: Jason McNeil <sixcolors@mac.com>
* Update middleware/encryptcookie/utils.go
Co-authored-by: Jason McNeil <sixcolors@mac.com>
* Add suggestions from code review
---------
Co-authored-by: Jason McNeil <sixcolors@mac.com>
* port over FallbackKeyLookups from v2 middleware to v3
Signed-off-by: Dave Lee <dave@gray101.com>
* bot pointed out that I missed the format variable
Signed-off-by: Dave Lee <dave@gray101.com>
* fix lint and gofumpt issues
Signed-off-by: Dave Lee <dave@gray101.com>
* major revision: instead of FallbackKeyLookups, expose CustomKeyLookup as function, with utility functions to make creating these easy
Signed-off-by: Dave Lee <dave@gray101.com>
* add more tests to boost coverage
Signed-off-by: Dave Lee <dave@gray101.com>
* teardown code and cleanup
Signed-off-by: Dave Lee <dave@gray101.com>
* test fixes
Signed-off-by: Dave Lee <dave@gray101.com>
* slight boost to test coverage
Signed-off-by: Dave Lee <dave@gray101.com>
* docs: fix md table alignment
* fix comments - change some names, expose functions, improve docs
Signed-off-by: Dave Lee <dave@gray101.com>
* missed one old name
Signed-off-by: Dave Lee <dave@gray101.com>
* fix some suggestions from the bot - error messages, test coverage, mark purely defensive code
Signed-off-by: Dave Lee <dave@gray101.com>
---------
Signed-off-by: Dave Lee <dave@gray101.com>
Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
Co-authored-by: Jason McNeil <sixcolors@mac.com>
Co-authored-by: RW <rene@gofiber.io>
* Add an option to invalidate cache
* Add a summary about the cache middleware update
* Rename the option to make it clearer
* Rename hard tab
* Fix markdown formatting
* Revert unnecessary change
* Clarify the description of cache invalidator
* Add empty line
---------
Co-authored-by: RW <rene@gofiber.io>
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3