403)); } // Handle form submission if (isset($_POST['dwarpal_settings']) && isset($_POST['_wpnonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['_wpnonce'])), 'dwarpal_settings')) { $dwarpal_old_firewall = get_option('dwarpal_firewall_enabled', true); $dwarpal_old_login = get_option('dwarpal_login_security_enabled', true); $dwarpal_old_audit = get_option('dwarpal_audit_log_enabled', true); $dwarpal_new_firewall = isset($_POST['dwarpal_firewall_enabled']) ? 1 : 0; $dwarpal_new_login = isset($_POST['dwarpal_login_security_enabled']) ? 1 : 0; $dwarpal_new_limit = isset($_POST['dwarpal_login_attempts_limit']) ? absint(wp_unslash($_POST['dwarpal_login_attempts_limit'])) : 5; $dwarpal_new_duration = isset($_POST['dwarpal_login_lockout_duration']) ? absint(wp_unslash($_POST['dwarpal_login_lockout_duration'])) : 3600; $dwarpal_new_audit = isset($_POST['dwarpal_audit_log_enabled']) ? 1 : 0; // Ensure minimum values if ($dwarpal_new_limit < 1) $dwarpal_new_limit = 5; if ($dwarpal_new_duration < 60) $dwarpal_new_duration = 3600; $dwarpal_result1 = update_option('dwarpal_firewall_enabled', $dwarpal_new_firewall); $dwarpal_result2 = update_option('dwarpal_login_security_enabled', $dwarpal_new_login); $dwarpal_result3 = update_option('dwarpal_login_attempts_limit', $dwarpal_new_limit); $dwarpal_result4 = update_option('dwarpal_login_lockout_duration', $dwarpal_new_duration); $dwarpal_result5 = update_option('dwarpal_audit_log_enabled', $dwarpal_new_audit); // Log the changes if (class_exists('Dwarpal_Security')) { $dwarpal_security = new Dwarpal_Security(); $dwarpal_user = wp_get_current_user(); $dwarpal_changes = array(); if ($dwarpal_old_firewall != $dwarpal_new_firewall) { $dwarpal_status = $dwarpal_new_firewall ? 'enabled' : 'disabled'; $dwarpal_security->log_event('settings_changed', sprintf('Firewall %s by user: %s', $dwarpal_status, $dwarpal_user->user_login)); $dwarpal_changes[] = 'Firewall ' . $dwarpal_status; } if ($dwarpal_old_login != $dwarpal_new_login) { $dwarpal_status = $dwarpal_new_login ? 'enabled' : 'disabled'; $dwarpal_security->log_event('settings_changed', sprintf('Login Security %s by user: %s', $dwarpal_status, $dwarpal_user->user_login)); $dwarpal_changes[] = 'Login Security ' . $dwarpal_status; } if ($dwarpal_old_audit != $dwarpal_new_audit) { $dwarpal_status = $dwarpal_new_audit ? 'enabled' : 'disabled'; $dwarpal_security->log_event('settings_changed', sprintf('Audit Log %s by user: %s', $dwarpal_status, $dwarpal_user->user_login)); $dwarpal_changes[] = 'Audit Log ' . $dwarpal_status; } if (!empty($dwarpal_changes)) { $dwarpal_security->log_event('settings_changed', sprintf('Login Security settings updated by user: %s (Limit: %d, Duration: %ds)', $dwarpal_user->user_login, $dwarpal_new_limit, $dwarpal_new_duration)); } } if ($dwarpal_result1 !== false && $dwarpal_result2 !== false && $dwarpal_result3 !== false && $dwarpal_result4 !== false && $dwarpal_result5 !== false) { echo '

' . esc_html__('Settings saved successfully.', 'dwarpal') . '

'; } else { echo '

' . esc_html__('Error: Some settings could not be saved.', 'dwarpal') . '

'; } } elseif (isset($_POST['dwarpal_settings'])) { echo '

' . esc_html__('Security check failed. Please try again.', 'dwarpal') . '

'; } // Get options - WordPress stores them as integers (1 or 0) $dwarpal_firewall_enabled = absint(get_option('dwarpal_firewall_enabled', 1)); $dwarpal_login_security_enabled = absint(get_option('dwarpal_login_security_enabled', 1)); $dwarpal_login_attempts_limit = absint(get_option('dwarpal_login_attempts_limit', 5)); $dwarpal_login_lockout_duration = absint(get_option('dwarpal_login_lockout_duration', 3600)); $dwarpal_audit_log_enabled = absint(get_option('dwarpal_audit_log_enabled', 1)); ?>

>

>

>