Services / Unbound - fix domain override ip validation as it may contain a port number using the following format x.x.x.x@53 cc @swhite2

When migration failed into 22.1.5, this patch in combination with `/usr/local/opnsense/mvc/script/run_migrations.php` should fix migration issues. No new model version is needed as
the previous version wasn't able to migrate in this case. closes https://github.com/opnsense/core/issues/5693
This commit is contained in:
Ad Schellevis 2022-04-09 08:50:38 +02:00
parent 4d8468434c
commit ff11cde38e
2 changed files with 69 additions and 1 deletions

View File

@ -0,0 +1,68 @@
<?php
/**
* Copyright (C) 2022 Deciso B.V.
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
namespace OPNsense\Unbound\FieldTypes;
use OPNsense\Base\FieldTypes\BaseField;
use OPNsense\Base\Validators\CallbackValidator;
use OPNsense\Firewall\Util;
/**
* Class UnboundServerField
* @package OPNsense\Unbound\FieldTypes
*/
class UnboundServerField extends BaseField
{
/**
* @inheritdoc
*/
protected $internalIsContainer = false;
/**
* @inheritdoc
*/
public function getValidators()
{
$validators = parent::getValidators();
$validators[] = new CallbackValidator([
"callback" => function ($value) {
$parts = explode("@", $value);
if (count($parts) == 2 && (!Util::isIpAddress($parts[0]) || !Util::isPort($parts[1]))) {
return [gettext("A valid IP address and port must be specified, for example 192.168.100.10@5353.")];
} elseif (count($parts) != 2 && !Util::isIpAddress($value)) {
return [gettext("A valid IP address must be specified, for example 192.168.100.10.")];
}
return [];
}
]);
return $validators;
}
}

View File

@ -225,7 +225,7 @@
<mask>/^(?:(?:[a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*(?:[a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])$/i</mask>
<ValidationMessage>A valid domain must be specified.</ValidationMessage>
</domain>
<server type="NetworkField">
<server type=".\UnboundServerField">
<Required>Y</Required>
</server>
<description type="TextField">