Merge pull request #7086 from nextcloud/enh/6774/allow-skip-domain-validation
Some checks failed
Codespell / Check spelling (push) Waiting to run
Lint php / php-lint (push) Waiting to run
Lint php / php-lint-summary (push) Blocked by required conditions
PHP Deprecation Detector / PHP Deprecation Detector (push) Waiting to run
Static analysis / static-psalm-analysis (push) Waiting to run
Docker Lint / docker-lint (push) Has been cancelled
Twig Lint / twig-lint (push) Has been cancelled

aio-interface: allow to skip domain validation via url-param
This commit is contained in:
Simon L. 2025-11-07 18:09:32 +01:00 committed by GitHub
commit a267fe5cba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 19 additions and 11 deletions

View file

@ -87,6 +87,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
$params = $request->getQueryParams();
$bypass_mastercontainer_update = isset($params['bypass_mastercontainer_update']);
$bypass_container_update = isset($params['bypass_container_update']);
$skip_domain_validation = isset($params['skip_domain_validation']);
return $view->render($response, 'containers.twig', [
'domain' => $configurationManager->GetDomain(),
@ -116,7 +117,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
'daily_backup_time' => $configurationManager->GetDailyBackupTime(),
'is_daily_backup_running' => $configurationManager->isDailyBackupRunning(),
'timezone' => $configurationManager->GetTimezone(),
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped(),
'skip_domain_validation' => ( $skip_domain_validation ? true : $configurationManager->shouldDomainValidationBeSkipped(false) ),
'talk_port' => $configurationManager->GetTalkPort(),
'collabora_dictionaries' => $configurationManager->GetCollaboraDictionaries(),
'collabora_additional_options' => $configurationManager->GetAdditionalCollaboraOptions(),

View file

@ -19,7 +19,8 @@ readonly class ConfigurationController {
try {
if (isset($request->getParsedBody()['domain'])) {
$domain = $request->getParsedBody()['domain'] ?? '';
$this->configurationManager->SetDomain($domain);
$skipDomainValidation = isset($request->getParsedBody()['skip_domain_validation']);
$this->configurationManager->SetDomain($domain, $skipDomainValidation);
}
if (isset($request->getParsedBody()['current-master-password']) || isset($request->getParsedBody()['new-master-password'])) {

View file

@ -288,7 +288,7 @@ class ConfigurationManager
/**
* @throws InvalidSettingConfigurationException
*/
public function SetDomain(string $domain) : void {
public function SetDomain(string $domain, bool $skipDomainValidation) : void {
// Validate that at least one dot is contained
if (!str_contains($domain, '.')) {
throw new InvalidSettingConfigurationException("Domain must contain at least one dot!");
@ -315,7 +315,7 @@ class ConfigurationManager
}
// Skip domain validation if opted in to do so
if (!$this->shouldDomainValidationBeSkipped()) {
if (!$this->shouldDomainValidationBeSkipped($skipDomainValidation)) {
$dnsRecordIP = gethostbyname($domain);
if ($dnsRecordIP === $domain) {
@ -898,8 +898,9 @@ class ConfigurationManager
$this->WriteConfig($config);
}
public function shouldDomainValidationBeSkipped() : bool {
if (getenv('SKIP_DOMAIN_VALIDATION') === 'true') {
public function shouldDomainValidationBeSkipped(bool $skipDomainValidation) : bool {
if ($skipDomainValidation || getenv('SKIP_DOMAIN_VALIDATION') === 'true') {
error_log('Skipping domain validation');
return true;
}
return false;

View file

@ -112,6 +112,9 @@
<input type="text" id="domain" name="domain" value="{{ domain }}" placeholder="nextcloud.yourdomain.com"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
{% if skip_domain_validation == true %}
<input type="hidden" name="skip_domain_validation" value="{{skip_domain_validation}}">
{% endif %}
<input type="submit" value="Submit domain" />
</form>
{% if skip_domain_validation == false %}