Guard if migrations fail and users already set new values, they should precede values the migration might set on a rerun

This commit is contained in:
Monviech
2026-10-07 16:55:27 +02:00
parent d4db7f0663
commit 0b54f3e81d
9 changed files with 134 additions and 64 deletions
@@ -37,15 +37,31 @@ class MFP1_0_9 extends BaseModelMigration
public function run($model)
{
if ($model instanceof Filter) {
$legacy = Config::getInstance()->object()->system;
/* Copy only so the legacy values remain available if migration recovery is needed. */
$model->settings->filter->setNodes([
'scrub_enabled' => empty($legacy->scrub_interface_disable) ? '1' : '0',
'scrub_no_df' => !empty($legacy->scrubnodf) ? '1' : '0',
'scrub_random_id' => !empty($legacy->scrubrnid) ? '1' : '0',
]);
$config = Config::getInstance()->object();
$legacy = $config->system;
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->scrub_enabled)) {
$model->settings->filter->scrub_enabled = empty($legacy->scrub_interface_disable) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->scrub_no_df)) {
$model->settings->filter->scrub_no_df = !empty($legacy->scrubnodf) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->scrub_random_id)) {
$model->settings->filter->scrub_random_id = !empty($legacy->scrubrnid) ? '1' : '0';
}
}
parent::run($model);
}
public function post($model)
{
if ($model instanceof Filter) {
$legacy = Config::getInstance()->object()->system;
unset(
$legacy->scrub_interface_disable,
$legacy->scrubnodf,
$legacy->scrubrnid,
);
}
}
}
@@ -39,11 +39,15 @@ class MFP1_1_0 extends BaseModelMigration
if ($model instanceof Filter) {
$config = Config::getInstance()->object();
$legacy_system = $config->system;
$model->settings->nat->setNodes([
'reflection_dnat' => empty($legacy_system->disablenatreflection) ? '1' : '0',
'reflection_binat' => !empty($legacy_system->enablebinatreflection) ? '1' : '0',
'reflection_snat' => !empty($legacy_system->enablenatreflectionhelper) ? '1' : '0',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->nat->reflection_dnat)) {
$model->settings->nat->reflection_dnat = empty($legacy_system->disablenatreflection) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->nat->reflection_binat)) {
$model->settings->nat->reflection_binat = !empty($legacy_system->enablebinatreflection) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->nat->reflection_snat)) {
$model->settings->nat->reflection_snat = !empty($legacy_system->enablenatreflectionhelper) ? '1' : '0';
}
}
parent::run($model);
@@ -39,9 +39,9 @@ class MFP1_1_1 extends BaseModelMigration
if ($model instanceof Filter) {
$config = Config::getInstance()->object();
$legacy_system = $config->system;
$model->settings->alias->setNodes([
'bogons_interval' => !empty($legacy_system->bogons->interval) ? (string)$legacy_system->bogons->interval : 'monthly',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->alias->bogons_interval)) {
$model->settings->alias->bogons_interval = !empty($legacy_system->bogons->interval) ? (string)$legacy_system->bogons->interval : 'monthly';
}
}
parent::run($model);
@@ -39,9 +39,9 @@ class MFP1_1_2 extends BaseModelMigration
if ($model instanceof Filter) {
$config = Config::getInstance()->object();
$legacy_system = $config->system;
$model->settings->filter->setNodes([
'skip_rules_gw_down' => !empty($legacy_system->skip_rules_gw_down) ? '1' : '0',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->skip_rules_gw_down)) {
$model->settings->filter->skip_rules_gw_down = !empty($legacy_system->skip_rules_gw_down) ? '1' : '0';
}
}
parent::run($model);
@@ -39,12 +39,18 @@ class MFP1_1_3 extends BaseModelMigration
if ($model instanceof Filter) {
$config = Config::getInstance()->object();
$legacy_system = $config->system;
$model->settings->filter->setNodes([
'lb_use_sticky' => !empty($legacy_system->lb_use_sticky) ? '1' : '0',
'source_tracking_timeout' => (string)$legacy_system->srctrack,
'pf_share_forward' => !empty($legacy_system->pf_share_forward) ? '1' : '0',
'pf_disable_force_gw' => !empty($legacy_system->pf_disable_force_gw) ? '1' : '0',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->lb_use_sticky)) {
$model->settings->filter->lb_use_sticky = !empty($legacy_system->lb_use_sticky) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->source_tracking_timeout)) {
$model->settings->filter->source_tracking_timeout = (string)$legacy_system->srctrack;
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->pf_share_forward)) {
$model->settings->filter->pf_share_forward = !empty($legacy_system->pf_share_forward) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->pf_disable_force_gw)) {
$model->settings->filter->pf_disable_force_gw = !empty($legacy_system->pf_disable_force_gw) ? '1' : '0';
}
}
parent::run($model);
@@ -39,9 +39,9 @@ class MFP1_1_4 extends BaseModelMigration
if ($model instanceof Filter) {
$config = Config::getInstance()->object();
$legacy_system = $config->system;
$model->settings->filter->setNodes([
'schedule_states' => !empty($legacy_system->schedule_states) ? '1' : '0',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->schedule_states)) {
$model->settings->filter->schedule_states = !empty($legacy_system->schedule_states) ? '1' : '0';
}
}
parent::run($model);
@@ -39,13 +39,21 @@ class MFP1_1_5 extends BaseModelMigration
if ($model instanceof Filter) {
$config = Config::getInstance()->object();
$legacy_syslog = $config->syslog;
$model->settings->logging->setNodes([
'default_block' => empty($legacy_syslog->nologdefaultblock) ? '1' : '0',
'default_pass' => empty($legacy_syslog->nologdefaultpass) ? '1' : '0',
'source_nat' => !empty($legacy_syslog->logoutboundnat) ? '1' : '0',
'bogons' => empty($legacy_syslog->nologbogons) ? '1' : '0',
'private_networks' => empty($legacy_syslog->nologprivatenets) ? '1' : '0',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->logging->default_block)) {
$model->settings->logging->default_block = empty($legacy_syslog->nologdefaultblock) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->logging->default_pass)) {
$model->settings->logging->default_pass = empty($legacy_syslog->nologdefaultpass) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->logging->source_nat)) {
$model->settings->logging->source_nat = !empty($legacy_syslog->logoutboundnat) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->logging->bogons)) {
$model->settings->logging->bogons = empty($legacy_syslog->nologbogons) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->logging->private_networks)) {
$model->settings->logging->private_networks = empty($legacy_syslog->nologprivatenets) ? '1' : '0';
}
}
parent::run($model);
@@ -39,14 +39,24 @@ class MFP1_1_6 extends BaseModelMigration
if ($model instanceof Filter) {
$config = Config::getInstance()->object();
$legacy_system = $config->system;
$model->settings->filter->setNodes([
'disable_reply_to' => !empty($legacy_system->disablereplyto) ? '1' : '0',
'no_antilockout' => !empty($legacy_system->webgui->noantilockout) ? '1' : '0',
'no_ipv6_rfc4890_req' => !empty($legacy_system->no_ipv6_rfc4890_req) ? '1' : '0',
'no_port0_block' => !empty($legacy_system->no_port0_block) ? '1' : '0',
'no_sshlockout' => !empty($legacy_system->no_sshlockout) ? '1' : '0',
'no_virusprot' => !empty($legacy_system->no_virusprot) ? '1' : '0',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->disable_reply_to)) {
$model->settings->filter->disable_reply_to = !empty($legacy_system->disablereplyto) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->no_antilockout)) {
$model->settings->filter->no_antilockout = !empty($legacy_system->webgui->noantilockout) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->no_ipv6_rfc4890_req)) {
$model->settings->filter->no_ipv6_rfc4890_req = !empty($legacy_system->no_ipv6_rfc4890_req) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->no_port0_block)) {
$model->settings->filter->no_port0_block = !empty($legacy_system->no_port0_block) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->no_sshlockout)) {
$model->settings->filter->no_sshlockout = !empty($legacy_system->no_sshlockout) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->no_virusprot)) {
$model->settings->filter->no_virusprot = !empty($legacy_system->no_virusprot) ? '1' : '0';
}
}
parent::run($model);
@@ -40,28 +40,54 @@ class MFP1_1_7 extends BaseModelMigration
$config = Config::getInstance()->object();
$legacy_system = $config->system;
$legacy_filter = $config->filter;
$model->settings->filter->setNodes([
'disable_filter' => !empty($legacy_system->disablefilter) ? '1' : '0',
'optimization' => !empty($legacy_system->optimization) ? (string)$legacy_system->optimization : 'normal',
'state_policy' => !empty($legacy_system->{'state-policy'}) ? '1' : '0',
'adaptive_start' => !empty($legacy_system->adaptivestart) ? (string)$legacy_system->adaptivestart : '',
'adaptive_end' => !empty($legacy_system->adaptiveend) ? (string)$legacy_system->adaptiveend : '',
'maximum_states' => !empty($legacy_system->maximumstates) ? (string)$legacy_system->maximumstates : '',
'maximum_fragments' => !empty($legacy_system->maximumfrags) ? (string)$legacy_system->maximumfrags : '',
'maximum_table_entries' => !empty($legacy_system->maximumtableentries) ? (string)$legacy_system->maximumtableentries : '',
'bypass_static_routes' => !empty($legacy_filter->bypassstaticroutes) ? '1' : '0',
'syncookies' => (string)$legacy_system->syncookies,
'syncookies_adaptive_start' => (string)$legacy_system->syncookies_adaptstart,
'syncookies_adaptive_end' => (string)$legacy_system->syncookies_adaptend,
'keep_counters' => !empty($legacy_system->keepcounters) ? '1' : '0',
]);
$model->settings->alias->setNodes([
'aliases_resolve_interval' => !empty($legacy_system->aliasesresolveinterval) ? (string)$legacy_system->aliasesresolveinterval : '300',
'check_aliases_url_cert' => !empty($legacy_system->checkaliasesurlcert) ? '1' : '0',
]);
$model->settings->logging->setNodes([
'debug' => !empty($legacy_system->pfdebug) ? (string)$legacy_system->pfdebug : 'urgent',
]);
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->disable_filter)) {
$model->settings->filter->disable_filter = !empty($legacy_system->disablefilter) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->optimization)) {
$model->settings->filter->optimization = !empty($legacy_system->optimization) ? (string)$legacy_system->optimization : 'normal';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->state_policy)) {
$model->settings->filter->state_policy = !empty($legacy_system->{'state-policy'}) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->adaptive_start)) {
$model->settings->filter->adaptive_start = !empty($legacy_system->adaptivestart) ? (string)$legacy_system->adaptivestart : '';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->adaptive_end)) {
$model->settings->filter->adaptive_end = !empty($legacy_system->adaptiveend) ? (string)$legacy_system->adaptiveend : '';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->maximum_states)) {
$model->settings->filter->maximum_states = !empty($legacy_system->maximumstates) ? (string)$legacy_system->maximumstates : '';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->maximum_fragments)) {
$model->settings->filter->maximum_fragments = !empty($legacy_system->maximumfrags) ? (string)$legacy_system->maximumfrags : '';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->maximum_table_entries)) {
$model->settings->filter->maximum_table_entries = !empty($legacy_system->maximumtableentries) ? (string)$legacy_system->maximumtableentries : '';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->bypass_static_routes)) {
$model->settings->filter->bypass_static_routes = !empty($legacy_filter->bypassstaticroutes) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->syncookies)) {
$model->settings->filter->syncookies = (string)$legacy_system->syncookies;
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->syncookies_adaptive_start)) {
$model->settings->filter->syncookies_adaptive_start = (string)$legacy_system->syncookies_adaptstart;
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->syncookies_adaptive_end)) {
$model->settings->filter->syncookies_adaptive_end = (string)$legacy_system->syncookies_adaptend;
}
if (!isset($config->OPNsense->Firewall->Filter->settings->filter->keep_counters)) {
$model->settings->filter->keep_counters = !empty($legacy_system->keepcounters) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->alias->aliases_resolve_interval)) {
$model->settings->alias->aliases_resolve_interval = !empty($legacy_system->aliasesresolveinterval) ? (string)$legacy_system->aliasesresolveinterval : '300';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->alias->check_aliases_url_cert)) {
$model->settings->alias->check_aliases_url_cert = !empty($legacy_system->checkaliasesurlcert) ? '1' : '0';
}
if (!isset($config->OPNsense->Firewall->Filter->settings->logging->debug)) {
$model->settings->logging->debug = !empty($legacy_system->pfdebug) ? (string)$legacy_system->pfdebug : 'urgent';
}
}
parent::run($model);