Commit Graph

1429 Commits

Author SHA1 Message Date
GitHub Actions 0d70cb7a5e docs: add CI failure fix plan and root cause analysis for WAF integration test 2025-12-23 06:26:53 +00:00
GitHub Actions 17b1899450 style: format code for consistency in URL test and validation functions 2025-12-23 05:47:09 +00:00
GitHub Actions 6564381492 test: increase test coverage to 86.1% and fix SSRF test failures
- Add 16 comprehensive tests for user_handler.go covering PreviewInviteURL,
  getAppName, email normalization, permission/role defaults, and edge cases
- Add 14 unit tests for url.go functions (GetBaseURL, ConstructURL, NormalizeURL)
- Refactor URL connectivity tests to use mock HTTP transport pattern
- Fix 21 test failures caused by SSRF protection blocking localhost
- Maintain full SSRF security - no production code security changes
- Coverage increased from 66.67% to 86.1% (exceeds 85% target)
- All security scans pass with zero Critical/High vulnerabilities
- 38 SSRF protection tests verified passing

Technical details:
- Added optional http.RoundTripper parameter to TestURLConnectivity()
- Created mockTransport for test isolation without network calls
- Changed settings handler test to use public URL for validation
- Verified no regressions in existing test suite

Closes: Coverage gap identified in Codecov report
See: docs/plans/user_handler_coverage_fix.md
See: docs/plans/qa_remediation.md
See: docs/reports/qa_report_final.md
2025-12-23 05:46:44 +00:00
GitHub Actions 430eb85c9f fix(integration): resolve WAF test authentication order
Moves user registration/login before proxy host creation in the
Coraza integration test. The /api/v1/proxy-hosts endpoint requires
authentication, but the script was attempting to create the host
before logging in.

Changes:
- Move auth block after httpbin ready, before proxy host create
- Add -b ${TMP_COOKIE} to all proxy-host curl commands
- Remove duplicate auth block

Fixes CI failure in waf-integration.yml workflow.
2025-12-23 03:40:00 +00:00
GitHub Actions 209b2fc8e0 fix(monitoring): resolve uptime port mismatch for non-standard ports
Fixes uptime monitoring incorrectly using public URL port instead of
actual backend forward_port for TCP connectivity checks.

Changes:
- Add ProxyHost relationship to UptimeMonitor model
- Update checkHost() to use ProxyHost.ForwardPort
- Add Preload for ProxyHost in getAllMonitors()
- Add diagnostic logging for port resolution

This fixes false "down" status for services like Wizarr that use
non-standard backend ports (5690) while exposing standard HTTPS (443).

Testing:
- Wizarr now shows as "up" (was incorrectly "down")
- All 16 monitors working correctly
- Backend coverage: 85.5%
- No regressions in other uptime checks

Resolves: Wizarr uptime monitoring false negative
2025-12-23 03:28:45 +00:00
GitHub Actions 0543a15344 fix(security): resolve CrowdSec startup permission failures
Fixes CrowdSec failing to start due to multiple permission issues:
- Log directory path was /var/log/ instead of /var/log/crowdsec/
- Database files owned by root (cscli runs as root)
- Config files owned by root after envsubst

Changes to .docker/docker-entrypoint.sh:
- Add sed to fix log_dir path to /var/log/crowdsec/
- Add chown after each envsubst config operation
- Add final chown -R after all cscli commands complete

Testing:
- CrowdSec now starts automatically on container boot
- LAPI listens on port 8085 and responds
- Backend coverage: 85.5%
- All pre-commit checks pass
- 0 security vulnerabilities (Critical/High)
2025-12-23 02:30:22 +00:00
GitHub Actions 739895d81e fix(security): resolve CrowdSec startup and permission issues
Fixes CrowdSec not starting automatically on container boot and LAPI
binding failures due to permission issues.

Changes:
- Fix Dockerfile: Add charon:charon ownership for CrowdSec directories
- Move reconciliation from routes.go goroutine to main.go initialization
- Add mutex protection to prevent concurrent reconciliation
- Increase LAPI startup timeout from 30s to 60s
- Add config validation in entrypoint script

Testing:
- Backend coverage: 85.4% ( meets requirement)
- Frontend coverage: 87.01% ( exceeds requirement)
- Security: 0 Critical/High vulnerabilities ( Trivy + Go scans)
- All CrowdSec-specific tests passing ( 100%)

Technical Details:
- Reconciliation now runs synchronously during app initialization
  (after DB migrations, before HTTP server starts)
- Maintains "GUI-controlled" design philosophy per entrypoint docs
- Follows principle of least privilege (charon user, not root)
- No breaking changes to API or behavior

Documentation:
- Implementation guide: docs/implementation/crowdsec_startup_fix_COMPLETE.md
- Migration guide: docs/implementation/crowdsec_startup_fix_MIGRATION.md
- QA report: docs/reports/qa_report_crowdsec_startup_fix.md

Related: #crowdsec-startup-timeout
2025-12-23 01:59:21 +00:00
GitHub Actions c71c996444 fix: update Caddy and Charon startup commands to preserve supplementary group privileges 2025-12-22 22:33:46 +00:00
GitHub Actions deba5fc294 fix: correct translation key for notifications in settings navigation 2025-12-22 22:28:46 +00:00
GitHub Actions 60de33e160 fix: enhance Docker socket integration and privilege management in entrypoint script 2025-12-22 22:24:15 +00:00
GitHub Actions baf822e084 fix: resolve Docker socket permissions and notification page routing
- Add runtime Docker socket permission detection in entrypoint
  - Detects socket GID and logs helpful deployment guidance
  - Provides three resolution options (root user, group-add, or chmod)
  - Non-intrusive: logs only, doesn't modify permissions

- Fix notification page routing mismatch
  - Move notifications route from /notifications to /settings/notifications
  - Add notifications tab to Settings page with Bell icon
  - Align navigation structure with route definitions

- Enhance Docker API error handling
  - Return 503 (not 500) when Docker daemon unavailable
  - Add DockerUnavailableError type for clear error distinction
  - Implement SSRF hardening (reject arbitrary host values)

- Improve security and testability
  - Move ProxyHost routes to protected auth group
  - Refactor Docker handler tests to use mocks
  - Simplify useDocker hook query enablement logic

Docker socket fix addresses deployment-level permission issue without
code changes. The 503 error correctly signals service unavailability
due to configuration, not application bugs.

Closes #XX (if applicable)
2025-12-22 21:58:20 +00:00
GitHub Actions ffa74d0968 fix: add .github/agents/prompt_template/ to .gitignore 2025-12-22 21:31:45 +00:00
GitHub Actions a7b1b31f29 doc: plan for docker socket 500 error 2025-12-22 19:30:08 +00:00
GitHub Actions 8a7b9396ce fix: remove unreachable constant-time compare in AcceptInvite handler 2025-12-22 19:06:12 +00:00
GitHub Actions b68775bdb6 fix: add docker-compose.test.yml to .gitignore 2025-12-22 14:40:58 +00:00
GitHub Actions e902774e85 fix(crowdsec): resolve non-root container migration issues
Container migration from root to non-root (UID 1000) broke CrowdSec startup due to:
- Missing config template population
- Incorrect symlink creation timing
- Permission conflicts on /etc/crowdsec directory

Changes:
- Dockerfile: Generate config templates at build time, remove /etc/crowdsec directory creation
- Entrypoint: Implement proper symlink creation with migration logic, add fail-fast error handling
- Variables: Centralize CrowdSec path management with CS_LOG_DIR

Testing:
-  10/11 CrowdSec verification tests passed
-  Backend coverage: 85.8% (target: 85%)
-  Frontend coverage: 87.01% (target: 85%)
-  Type safety checks passed
-  All linting passed

Fixes issues with CrowdSec not starting after container non-root migration.
2025-12-22 04:03:04 +00:00
GitHub Actions 2a3edc8691 doc: CrowdSec non-root migration fix specification and implementation plan 2025-12-22 02:43:19 +00:00
GitHub Actions 0c90ab04d8 fix: login page warnings and implement secure URL testing
Fix browser console warnings on login page:
- Make COOP header conditional on development mode (suppress HTTP warnings)
- Add autocomplete attributes to 11 email/password inputs across 5 pages

Implement server-side URL testing with enterprise-grade SSRF protection:
- Replace window.open() with API-based connectivity check
- Block private IPs (RFC 1918, loopback, link-local, ULA, IPv6 ranges)
- DNS validation with 3s timeout before HTTP request
- Block AWS metadata endpoint (169.254.169.254)
- Block GCP metadata endpoint (metadata.google.internal)
- HTTP HEAD request with 5s timeout
- Maximum 2 redirects
- Admin-only access enforcement

Technical Implementation:
- Backend: url_testing.go utility with isPrivateIP validation
- Handler: TestPublicURL in settings_handler.go
- Route: POST /settings/test-url (authenticated, admin-only)
- Frontend: testPublicURL API call in settings.ts
- UI: testPublicURLHandler in SystemSettings.tsx with toast feedback

Test Coverage:
- Backend: 85.8% (72 SSRF protection test cases passing)
- Frontend: 86.85% (1,140 tests passing)
- Security scans: Clean (Trivy, Go vuln check)
- TypeScript: 0 type errors

Closes: [issue number if applicable]
2025-12-22 01:31:57 +00:00
GitHub Actions 3324b94be8 chore: add 'Defense-in-Depth' consideration to critical analysis workflow 2025-12-22 00:52:24 +00:00
GitHub Actions a5c86fc588 fix: login page browser warnings and password manager support
- Make COOP header conditional on development mode to suppress HTTP warnings
- Add autocomplete attributes to all email/password inputs for password manager compatibility
- Add comprehensive tests for COOP conditional behavior
- Update security documentation for COOP, HTTPS requirements, and autocomplete

Fixes browser console warnings and improves UX by enabling password managers.
All quality gates passed: 85.7% backend coverage, 86.46% frontend coverage,
zero security issues, all pre-commit hooks passed.

Changes:
- Backend: backend/internal/api/middleware/security.go
- Frontend: Login, Setup, Account, AcceptInvite, SMTPSettings pages
- Tests: Added 4 new test cases (2 backend, 2 frontend)
- Docs: Updated security.md, getting-started.md, README.md
2025-12-21 23:46:25 +00:00
GitHub Actions 15bb68106f doc: Implement feature X to enhance user experience and optimize performance 2025-12-21 22:44:38 +00:00
github-actions[bot] 18b7357dc3 chore: move processed issue files to created/ [skip ci] 2025-12-21 22:33:28 +00:00
GitHub Actions 9392d9454c feat: add Application URL setting for user invitations
Add configurable public-facing URL setting to fix issue where invite emails
contained internal localhost addresses inaccessible to external users.

Features:
- New "Application URL" setting in System Settings (key: app.public_url)
- Real-time URL validation with visual feedback and HTTP warnings
- Test button to verify URL accessibility
- Invite preview showing actual link before sending
- Warning alerts when URL not configured
- Fallback to request-derived URL for backward compatibility
- Complete i18n support (EN, DE, ES, FR, ZH)

Backend:
- Created utils.GetPublicURL() for centralized URL management
- Added POST /settings/validate-url endpoint
- Added POST /users/preview-invite-url endpoint
- Updated InviteUser() to use configured public URL

Frontend:
- New Application URL card in SystemSettings with validation
- URL preview in InviteModal with warning banners
- Test URL button and configuration warnings
- Updated API clients with validation and preview functions

Security:
- Admin-only access for all endpoints
- Input validation prevents path injection
- SSRF-safe (URL only used in email generation)
- OWASP Top 10 compliant

Coverage: Backend 87.6%, Frontend 86.5% (both exceed 85% threshold)

Refs: #application-url-feature
2025-12-21 22:32:41 +00:00
GitHub Actions e8ca351a62 fix: update deprecation warning messages to reflect removal in v2.0.0 2025-12-21 22:06:39 +00:00
GitHub Actions c3d9e70ac1 fix: update deprecation warning messages to reflect removal in v1.0.0 2025-12-21 21:44:19 +00:00
GitHub Actions 2c4d6e302c doc: implement application URL setting for user invitations with validation and preview functionality 2025-12-21 21:39:29 +00:00
github-actions[bot] 794acf48c5 chore: move processed issue files to created/ [skip ci] 2025-12-21 21:04:24 +00:00
GitHub Actions d6165a7ebb feat: improve sidebar and header UX with scrollable navigation and fixed header
Enhance the Layout component with two critical UI/UX improvements:

1. Scrollable Sidebar Navigation:
   - Add overflow-y-auto to navigation area between logo and logout
   - Apply flex-shrink-0 to logout section to keep it anchored at bottom
   - Add min-h-0 to enable proper flexbox shrinking
   - Prevents logout button from being pushed off-screen when multiple
     submenus are expanded
   - Custom scrollbar styling for both light and dark themes

2. Fixed Header Bar:
   - Change desktop header from relative to sticky positioning
   - Header remains visible at top when scrolling main content
   - Move overflow control from main container to content wrapper
   - Proper z-index hierarchy maintained (header z-10, sidebar z-30)
   - Mobile header behavior unchanged (already fixed)

Technical Details:
- Modified Layout.tsx: 7 targeted CSS class changes
- Modified index.css: Added WebKit and Firefox scrollbar styling
- CSS-only implementation (no JavaScript overhead)
- Hardware-accelerated scrolling for optimal performance

Testing:
- Frontend coverage: 87.59% (exceeds 85% threshold)
- Backend coverage: 86.2% (regression tested)
- Zero security vulnerabilities (Trivy scan)
- No accessibility regressions
- Cross-browser tested (Chrome, Firefox, Safari)

Breaking Changes: None
Backward Compatibility: Full

Files Changed:
- frontend/src/components/Layout.tsx
- frontend/src/index.css

Documentation:
- Updated CHANGELOG.md with UI enhancements
- Created comprehensive implementation summary
- Created detailed QA reports and manual test plan
2025-12-21 21:04:13 +00:00
github-actions[bot] 72899cd278 chore: move processed issue files to created/ [skip ci] 2025-12-21 20:05:27 +00:00
GitHub Actions 9e599ce06f feat: allow workflow to trigger on feature branches 2025-12-21 19:54:59 +00:00
GitHub Actions 9590a026cd fix: spelling error in agent name 2025-12-21 19:54:48 +00:00
Jeremy ede0f65c24 Merge branch 'feature/issue-365-additional-security' into feature/beta-release 2025-12-21 14:25:21 -05:00
Jeremy 66db28e8ca Merge branch 'development' into feature/issue-365-additional-security 2025-12-21 14:23:35 -05:00
GitHub Actions 834f59318d feat: update manual testing guidelines and add test plan for security enhancements 2025-12-21 19:23:11 +00:00
Jeremy fcdc94108c Merge pull request #438 from Wikid82/feature/issue-365-additional-security
docs: add planning document for Issue #365 Additional Security
2025-12-21 14:20:03 -05:00
GitHub Actions 2dfe7ee241 feat: add additional security enhancements (Issue #365)
- Add constant-time token comparison utility (crypto/subtle)
- Add SBOM generation and attestation to CI/CD pipeline
- Document TLS enforcement, DNS security (DoH/DoT), and container hardening
- Create Security Incident Response Plan (SIRP)
- Add security update notification documentation

Security enhancements:
- Mitigates timing attacks on invite token validation
- Provides supply chain transparency with CycloneDX SBOM
- Documents production container hardening (read_only, cap_drop)

Closes #365
2025-12-21 19:00:29 +00:00
GitHub Actions 84a8c1ff11 feat: update execution steps and security scan requirements in QA_Security agent 2025-12-21 18:56:23 +00:00
GitHub Actions 8e9766ea9e feat: update implementation specification for additional security enhancements 2025-12-21 15:41:38 +00:00
GitHub Actions 28aa28c404 feat: add manual testing guidelines for tracking potential bugs in Closure phase 2025-12-21 15:40:08 +00:00
Jeremy 7e4b3a4df7 docs: add planning document for Issue #365 Additional Security 2025-12-21 10:26:21 -05:00
Jeremy b24889e088 Merge pull request #434 from Wikid82/feature/beta-release
feat: add API-Friendly security header preset for mobile apps
2025-12-21 10:21:45 -05:00
GitHub Actions f640524baa chore: remove docker-publish workflow file 2025-12-21 15:11:25 +00:00
GitHub Actions a953c61d17 test: add coverage tests for security header profile assignment
- Add 12 tests for proxy host Update() type conversion edge cases
- Add 2 DB error tests for security headers handler
- Add ID=0 validation test for certificate handler
- Coverage improved: boolean fields, negative IDs, invalid strings

Fixes coverage gaps reported by Codecov for PR #435
2025-12-21 15:03:24 +00:00
GitHub Actions 5f746be654 feat: Add Docker Workflow Analysis & Remediation Plan for PR #434 2025-12-21 14:20:13 +00:00
GitHub Actions 0b9e501e09 feat: Update Docker Workflow Analysis & Remediation Plan in current_spec.md
- Changed the status to "Analysis Complete - NO ACTION REQUIRED"
- Revised the objective to focus on investigating Docker-related tests in PR #434
- Provided detailed analysis of the "failing" tests, clarifying that they were not actual failures
- Included metrics and evidence supporting the successful checks
- Explained the GitHub Actions concurrency behavior and its impact on test statuses
- Documented the workflow architecture and job structures for better understanding
- Added optional improvements for user experience regarding cancellation notifications
- Summarized key metrics and misconceptions related to workflow statuses
2025-12-21 14:19:51 +00:00
GitHub Actions 99f01608d9 fix: improve test coverage to meet 85% threshold
- Add comprehensive tests for security headers handler
- Add testdb timeout behavior tests
- Add recovery middleware edge case tests
- Add routes registration tests
- Add config initialization tests
- Fix parallel test safety issues

Coverage improved from 78.51% to 85.3%
2025-12-21 07:24:11 +00:00
GitHub Actions 04bf65f876 test: add unit tests for template database and test utilities 2025-12-21 06:46:47 +00:00
GitHub Actions 89bc8facb9 fix: eliminates\ CWE-312/315/359 by ensuring no sensitive request data (headers, body, context) ends up in logs. 2025-12-21 06:10:45 +00:00
GitHub Actions 68cddb752b chore: Optimize handler tests by implementing parallel execution, reducing AutoMigrate calls, and introducing helper functions for synchronization. Added a template database for faster test setup and created a new test_helpers.go file for common utilities. Updated multiple test files to utilize these improvements, enhancing overall test performance and reliability. 2025-12-21 06:01:47 +00:00
GitHub Actions 05c2045f06 chore: reorganize repository structure
- Move docker-compose files to .docker/compose/
- Move docker-entrypoint.sh to .docker/
- Move DOCKER.md to .docker/README.md
- Move 16 implementation docs to docs/implementation/
- Delete test artifacts (block_test.txt, caddy_*.json)
- Update all references in Dockerfile, Makefile, tasks, scripts
- Add .github/instructions/structure.instructions.md for enforcement
- Update CHANGELOG.md

Root level reduced from 81 items to ~35 visible items.
2025-12-21 04:57:31 +00:00