feat: Fix discovery system critical issues
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>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# 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
|
||||
@@ -0,0 +1,20 @@
|
||||
# Fail2ban Main Configuration for Custom PHP Framework
|
||||
# Generated by Ansible - Do not edit manually
|
||||
|
||||
[Definition]
|
||||
loglevel = {{ fail2ban_loglevel }}
|
||||
socket = {{ fail2ban_socket }}
|
||||
pidfile = {{ fail2ban_pidfile }}
|
||||
|
||||
# Database configuration
|
||||
dbfile = /var/lib/fail2ban/fail2ban.sqlite3
|
||||
dbmaxmatches = 10
|
||||
|
||||
# Backend
|
||||
backend = systemd
|
||||
|
||||
# Email Configuration
|
||||
[mta]
|
||||
sender = fail2ban-{{ inventory_hostname }}@{{ domain_name }}
|
||||
destemail = {{ ssl_email }}
|
||||
action = %(action_mwl)s
|
||||
@@ -0,0 +1,73 @@
|
||||
# SSH Configuration for Custom PHP Framework - {{ environment | upper }}
|
||||
# Generated by Ansible - Do not edit manually
|
||||
|
||||
# Basic Configuration
|
||||
Port {{ ssh_port }}
|
||||
Protocol 2
|
||||
AddressFamily inet
|
||||
|
||||
# Authentication
|
||||
PermitRootLogin {{ ssh_permit_root_login | ternary('yes', 'no') }}
|
||||
PasswordAuthentication {{ ssh_password_authentication | ternary('yes', 'no') }}
|
||||
PubkeyAuthentication {{ ssh_pubkey_authentication | ternary('yes', 'no') }}
|
||||
AuthorizedKeysFile .ssh/authorized_keys
|
||||
ChallengeResponseAuthentication {{ ssh_challenge_response_authentication | ternary('yes', 'no') }}
|
||||
GSSAPIAuthentication {{ ssh_gss_api_authentication | ternary('yes', 'no') }}
|
||||
UsePAM yes
|
||||
|
||||
# Security Settings
|
||||
MaxAuthTries {{ ssh_max_auth_tries }}
|
||||
ClientAliveInterval {{ ssh_client_alive_interval }}
|
||||
ClientAliveCountMax {{ ssh_client_alive_count_max }}
|
||||
MaxSessions {{ ssh_max_sessions }}
|
||||
TCPKeepAlive {{ ssh_tcp_keep_alive | ternary('yes', 'no') }}
|
||||
Compression {{ ssh_compression | ternary('yes', 'no') }}
|
||||
UseDNS {{ ssh_use_dns | ternary('yes', 'no') }}
|
||||
|
||||
# Tunnel and Forwarding
|
||||
X11Forwarding {{ ssh_x11_forwarding | ternary('yes', 'no') }}
|
||||
PermitTunnel {{ ssh_permit_tunnel | ternary('yes', 'no') }}
|
||||
PermitUserEnvironment {{ ssh_permit_user_environment | ternary('yes', 'no') }}
|
||||
AllowTcpForwarding no
|
||||
AllowStreamLocalForwarding no
|
||||
GatewayPorts no
|
||||
|
||||
# Host Key Configuration
|
||||
{% for algorithm in ssh_host_key_algorithms %}
|
||||
HostKey /etc/ssh/ssh_host_{{ algorithm.split('-')[0] }}_key
|
||||
{% endfor %}
|
||||
|
||||
# Allowed Users and Groups
|
||||
{% if ssh_allowed_users %}
|
||||
AllowUsers {{ ssh_allowed_users | join(' ') }}
|
||||
{% endif %}
|
||||
{% if ssh_allowed_groups %}
|
||||
AllowGroups {{ ssh_allowed_groups | join(' ') }}
|
||||
{% endif %}
|
||||
|
||||
# Banner
|
||||
Banner {{ ssh_banner }}
|
||||
|
||||
# Logging
|
||||
SyslogFacility AUTH
|
||||
LogLevel INFO
|
||||
|
||||
# Kex Algorithms (secure)
|
||||
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
|
||||
|
||||
# Ciphers (secure)
|
||||
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
|
||||
|
||||
# MAC Algorithms (secure)
|
||||
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512
|
||||
|
||||
# Host Key Algorithms
|
||||
PubkeyAcceptedKeyTypes {{ ssh_host_key_algorithms | join(',') }}
|
||||
|
||||
# Additional Security
|
||||
PermitEmptyPasswords no
|
||||
StrictModes yes
|
||||
IgnoreRhosts yes
|
||||
HostbasedAuthentication no
|
||||
PrintMotd no
|
||||
PrintLastLog yes
|
||||
Reference in New Issue
Block a user