mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-20 15:44:45 +02:00
Don’t need this anymore
This commit is contained in:
parent
eb5c304f69
commit
3c43f3aa18
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Http\Requests\Admin\Node;
|
namespace App\Http\Requests\Admin\Node;
|
||||||
|
|
||||||
use App\Rules\Fqdn;
|
|
||||||
use App\Models\Node;
|
use App\Models\Node;
|
||||||
use App\Http\Requests\Admin\AdminFormRequest;
|
use App\Http\Requests\Admin\AdminFormRequest;
|
||||||
|
|
||||||
@ -17,9 +16,6 @@ class NodeFormRequest extends AdminFormRequest
|
|||||||
return Node::getRulesForUpdate($this->route()->parameter('node'));
|
return Node::getRulesForUpdate($this->route()->parameter('node'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = Node::getRules();
|
return Node::getRules();
|
||||||
$data['fqdn'][] = Fqdn::make('scheme');
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,80 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Rules;
|
|
||||||
|
|
||||||
use Illuminate\Support\Arr;
|
|
||||||
use Illuminate\Contracts\Validation\Rule;
|
|
||||||
use Illuminate\Contracts\Validation\DataAwareRule;
|
|
||||||
|
|
||||||
class Fqdn implements DataAwareRule, Rule
|
|
||||||
{
|
|
||||||
protected array $data = [];
|
|
||||||
protected string $message = '';
|
|
||||||
protected ?string $schemeField = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $data
|
|
||||||
*/
|
|
||||||
public function setData($data): self
|
|
||||||
{
|
|
||||||
$this->data = $data;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validates that the value provided resolves to an IP address. If a scheme is
|
|
||||||
* specified when this rule is created additional checks will be applied.
|
|
||||||
*
|
|
||||||
* @param string $attribute
|
|
||||||
* @param mixed $value
|
|
||||||
*/
|
|
||||||
public function passes($attribute, $value): bool
|
|
||||||
{
|
|
||||||
if (filter_var($value, FILTER_VALIDATE_IP)) {
|
|
||||||
// Check if the scheme is set to HTTPS.
|
|
||||||
//
|
|
||||||
// Unless someone owns their IP blocks and decides to pay who knows how much for a
|
|
||||||
// custom SSL cert, IPs will not be able to use HTTPS. This should prevent most
|
|
||||||
// home users from making this mistake and wondering why their node is not working.
|
|
||||||
if ($this->schemeField && Arr::get($this->data, $this->schemeField) === 'https') {
|
|
||||||
$this->message = 'The :attribute must not be an IP address when HTTPS is enabled.';
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lookup A and AAAA DNS records for the FQDN. Note, this function will also resolve CNAMEs
|
|
||||||
// for us automatically, there is no need to manually resolve them here.
|
|
||||||
//
|
|
||||||
// The error suppression is intentional, see https://bugs.php.net/bug.php?id=73149
|
|
||||||
$records = @dns_get_record($value, DNS_A + DNS_AAAA);
|
|
||||||
// If no records were returned fall back to trying to resolve the value using the hosts DNS
|
|
||||||
// resolution. This will not work for IPv6 which is why we prefer to use `dns_get_record`
|
|
||||||
// first.
|
|
||||||
if (!empty($records) || filter_var(gethostbyname($value), FILTER_VALIDATE_IP)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->message = 'The :attribute could not be resolved to a valid IP address.';
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function message(): string
|
|
||||||
{
|
|
||||||
return $this->message;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a new instance of the rule with a defined scheme set.
|
|
||||||
*/
|
|
||||||
public static function make(string $schemeField = null): self
|
|
||||||
{
|
|
||||||
return tap(new self(), function ($fqdn) use ($schemeField) {
|
|
||||||
$fqdn->schemeField = $schemeField;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user