mirror of
https://github.com/ivuorinen/f2b.git
synced 2026-03-07 15:58:20 +00:00
* fix: repair Renovate config and convert Makefile to go run (#117) - Remove non-existent `github>renovatebot/presets:golang` preset that broke Renovate PR creation - Replace deprecated `fileMatch` with `managerFilePatterns` in customManagers - Rewrite regex to match new Makefile pattern (renovate comment above version variable assignment) - Fix `matchFileNames` glob pattern (`*.mk` -> `**/*.mk`) - Convert all tool invocations from `go install` + global binary to `go run tool@version` for reproducible builds - Convert npm global tools to `npx --yes` invocations - Remove `dev-deps` and `check-deps` targets (tools auto-download) - Add mdformat pre-commit hook with GFM support and config - Add `fmt-md` Makefile target for manual markdown formatting - Update local golangci-lint pre-commit hook to use `go run` - Apply golangci-lint v2.10.1 auto-fixes (fmt.Fprintf optimization) - Add nolint:gosec annotations for legitimate exec.Command usage - Exclude .serena/ from mdformat and megalinter - Add markdown indent_size=unset in .editorconfig for CommonMark compat * chore(deps): update GitHub Actions to latest versions - anthropics/claude-code-action: v1.0.34 -> v1.0.64 - actions/setup-go: v6.2.0 -> v6.3.0 - actions/upload-artifact: v6.0.0 -> v7.0.0 - goreleaser/goreleaser-action: v6.4.0 -> v7.0.0 - docker/login-action: v3.6.0 -> v3.7.0 - ivuorinen/actions: v2026.01.21 -> v2026.02.24 * fix: address code review feedback - Fix issue template YAML frontmatter (replace underscore separators with proper --- delimiters); exclude templates from mdformat - Replace string(rune(n)) with strconv.Itoa(n) in test files to produce deterministic numeric directory names instead of Unicode characters - Remove stale `make dev-deps` reference in README, replace with `make dev-setup` - Extract ban/unban format strings into shared.MetricsFmtBanOperations and shared.MetricsFmtUnbanOperations constants - Replace hardcoded coverage percentages in README with evergreen phrasing * fix: address round 2 code review feedback for PR #120 - Fix corrupted path traversal example in docs/security.md - Fix Renovate .mk regex to match nested paths (.*\.mk$) - Update checkmake pre-commit hook to v0.3.2 to match Makefile - Add sync.WaitGroup to unsynchronized goroutines in security tests - Fix fmt-md target to use pre-commit run mdformat - Pin markdownlint-cli2 to v0.21.0 in lint-md target - Standardize //nolint:gosec to // #nosec annotations for gosec CLI * fix(ci): install PyYAML dependency for PR lint workflow The pr-lint workflow uses ivuorinen/actions/pr-lint which internally calls validate-inputs running a Python script that imports yaml. Python was set up but PyYAML was never installed, causing ModuleNotFoundError at runtime. * fix: address round 3 code review feedback for PR #120 - Wrap Windows-style path traversal example in backtick code span so backslashes render literally in docs/security.md - Add Renovate-managed MARKDOWNLINT_CLI2_VERSION variable in Makefile to match the pattern used by all other tool versions
3.2 KiB
3.2 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Initial public release of
f2bGo CLI. - Support for listing jails, banning/unbanning IPs, checking status, viewing logs, testing filters, and controlling the Fail2Ban service.
- Configuration via environment variables and CLI flags.
- Basic test suite and CI workflows.
- Comprehensive sudo privilege management system for secure fail2ban operations:
- Automatic detection of root users, sudo group membership, and sudo capabilities
- Smart command classification (which commands require sudo vs. read-only)
- Automatic sudo escalation for privileged operations when user has permissions
- Clear error messages with helpful hints when sudo privileges are missing
- Support for testing with comprehensive mock sudo checkers
- Shell completion command for bash, zsh, fish, and PowerShell.
- Command aliases for common commands (
list-jails,ban,unban,status). - Log level configuration via
--log-levelflag andF2B_LOG_LEVELenv var. - Log file output support via
--log-fileflag andF2B_LOG_FILEenv var. - Consistent output and error handling using logrus and helpers.
- Pagination/tailing for logs with
--limitflag. - JSON output for all commands via
--format=json. - Extensive input validation for all user-supplied data.
- Modular, testable architecture with dependency injection.
.github/AGENTS.mdfor LLM/AI agent contribution guidelines.- Initial
CHANGELOG.mdfor tracking releases and changes. - Comprehensive documentation updates across all markdown files.
Changed
- Enhanced Runner interface to support both regular and sudo command execution
- Updated all fail2ban operations to use appropriate privilege escalation
- Improved client initialization to check sudo requirements upfront
- Enhanced error messages for privilege-related failures with actionable hints
- Comprehensive documentation updates:
- Updated README.md with complete feature overview and security guidance
- Enhanced CONTRIBUTING.md with security and testing guidelines
- Expanded docs/faq.md with sudo troubleshooting and new features
- Updated .github/README.md to reflect modern Go implementation
- Enhanced .github/AGENTS.md with privilege handling guidelines
- Refactored CLI to use dependency injection for all commands.
- Enhanced security and error handling throughout the codebase.
Security
- Privilege validation: All user input validated before privilege escalation
- Secure command execution: Uses argument arrays instead of shell string concatenation
- Test isolation: Comprehensive mocking prevents accidental privileged operations in tests
- Principle of least privilege: Only escalates privileges when required for specific commands
Fixed
- Various minor bug fixes and improved test coverage.
- Test safety: Eliminated potential for real sudo execution during testing