Resolved multiple critical discovery system issues: ## Discovery System Fixes - Fixed console commands not being discovered on first run - Implemented fallback discovery for empty caches - Added context-aware caching with separate cache keys - Fixed object serialization preventing __PHP_Incomplete_Class ## Cache System Improvements - Smart caching that only caches meaningful results - Separate caches for different execution contexts (console, web, test) - Proper array serialization/deserialization for cache compatibility - Cache hit logging for debugging and monitoring ## Object Serialization Fixes - Fixed DiscoveredAttribute serialization with proper string conversion - Sanitized additional data to prevent object reference issues - Added fallback for corrupted cache entries ## Performance & Reliability - All 69 console commands properly discovered and cached - 534 total discovery items successfully cached and restored - No more __PHP_Incomplete_Class cache corruption - Improved error handling and graceful fallbacks ## Testing & Quality - Fixed code style issues across discovery components - Enhanced logging for better debugging capabilities - Improved cache validation and error recovery Ready for production deployment with stable discovery system. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
63 lines
1.4 KiB
Django/Jinja
63 lines
1.4 KiB
Django/Jinja
# Custom Fail2ban Jails for Custom PHP Framework
|
|
# Generated by Ansible - Do not edit manually
|
|
|
|
{% for jail in fail2ban_jails %}
|
|
[{{ jail.name }}]
|
|
enabled = {{ jail.enabled | ternary('true', 'false') }}
|
|
{% if jail.port is defined %}
|
|
port = {{ jail.port }}
|
|
{% endif %}
|
|
{% if jail.filter is defined %}
|
|
filter = {{ jail.filter }}
|
|
{% endif %}
|
|
{% if jail.logpath is defined %}
|
|
logpath = {{ jail.logpath }}
|
|
{% endif %}
|
|
{% if jail.maxretry is defined %}
|
|
maxretry = {{ jail.maxretry }}
|
|
{% endif %}
|
|
{% if jail.findtime is defined %}
|
|
findtime = {{ jail.findtime }}
|
|
{% endif %}
|
|
{% if jail.bantime is defined %}
|
|
bantime = {{ jail.bantime }}
|
|
{% endif %}
|
|
{% if jail.backend is defined %}
|
|
backend = {{ jail.backend }}
|
|
{% endif %}
|
|
action = %(action_mwl)s
|
|
|
|
{% endfor %}
|
|
|
|
# PHP Framework specific jail
|
|
[php-framework]
|
|
enabled = true
|
|
port = http,https
|
|
filter = php-framework
|
|
logpath = /var/log/nginx/access.log
|
|
/var/log/nginx/error.log
|
|
maxretry = 5
|
|
findtime = 600
|
|
bantime = 3600
|
|
action = %(action_mwl)s
|
|
php-framework-notify
|
|
|
|
# Docker container protection
|
|
[docker-php]
|
|
enabled = {{ 'true' if environment == 'production' else 'false' }}
|
|
port = http,https
|
|
filter = docker-php
|
|
logpath = /var/log/docker/*.log
|
|
maxretry = 3
|
|
findtime = 300
|
|
bantime = 1800
|
|
|
|
# Custom application errors
|
|
[app-errors]
|
|
enabled = true
|
|
port = http,https
|
|
filter = nginx-limit-req
|
|
logpath = /var/log/nginx/error.log
|
|
maxretry = 10
|
|
findtime = 600
|
|
bantime = 600 |