From a12012ad37693b39cabd363776080ef11547f0b3 Mon Sep 17 00:00:00 2001 From: Lis Date: Mon, 1 Dec 2025 00:53:46 +0300 Subject: [PATCH] security/acme-client: add support for selectel.ru V2 API (#4824) * security/acme-client: add support for selectel.ru V2 API * fix syntax depreciation warning in SecurityController.php --- .../AcmeClient/Api/SettingsController.php | 4 +-- .../AcmeClient/forms/dialogValidation.xml | 36 ++++++++++++++++++- .../AcmeClient/LeValidation/DnsSelectel.php | 7 ++++ .../models/OPNsense/AcmeClient/AcmeClient.xml | 18 ++++++++++ 4 files changed, 62 insertions(+), 3 deletions(-) diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php index 5251a32f7..4104f6bf2 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php @@ -77,7 +77,7 @@ class SettingsController extends ApiMutableModelControllerBase } else { // Cron job NOT found. This should not happen, try to fix // this automatically. - $this->getLogger()->error("AcmeClient: cron job with stored UUID not found in system config: ${cron_uuid}"); + $this->getLogger()->error("AcmeClient: cron job with stored UUID not found in system config: {$cron_uuid}"); // Search for existing AcmeClient cron job. foreach ((new Cron())->getNodeByReference('jobs.job')->iterateItems() as $cron) { @@ -86,7 +86,7 @@ class SettingsController extends ApiMutableModelControllerBase if ($_origin == 'AcmeClient') { // Found a matching AcmeClient cron job. $cron_found = 1; - $this->getLogger()->notice("AcmeClient: found existing AcmeClient cron job, fixing inconsistency in config (new UUID: ${_uuid})"); + $this->getLogger()->notice("AcmeClient: found existing AcmeClient cron job, fixing inconsistency in config (new UUID: {$_uuid})"); // Update UUID in Acme Client config. $mdlAcme->settings->UpdateCron = $_uuid; // Save updated configuration. diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml index 269807d1e..6a8f69a64 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml @@ -1236,9 +1236,43 @@ validation.dns_sl_key - + text + + validation.dns_sl_apiver + + text + Available Values: V2 + + + validation.dns_sl_token_lifetime + + text + Token lifetime in minutes (0-1440) + + + validation.dns_sl_account_id + + text + Account number, can be seen in the upper right corner on the provider's website + + + validation.dns_sl_project_name + + text + + + validation.dns_sl_login_name + + text + Service username, can be seen in the control panel + + + validation.dns_sl_password + + password + header diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsSelectel.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsSelectel.php index 56e311266..9d1ee7ec8 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsSelectel.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsSelectel.php @@ -2,6 +2,7 @@ /* * Copyright (C) 2020 Frank Wall + * Modifications Copyright (C) 2025 Renat Gorbushin * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,5 +41,11 @@ class DnsSelectel extends Base implements LeValidationInterface public function prepare() { $this->acme_env['SL_Key'] = (string)$this->config->dns_sl_key; + $this->acme_env['SL_Ver'] = (string)$this->config->dns_sl_apiver; + $this->acme_env['SL_Expire'] = (string)$this->config->dns_slv2_token_lifetime; + $this->acme_env['SL_Login_ID'] = (string)$this->config->dns_sl_account_id; + $this->acme_env['SL_Project_Name'] = (string)$this->config->dns_sl_project_name; + $this->acme_env['SL_Login_Name'] = (string)$this->config->dns_sl_login_name; + $this->acme_env['SL_Pswd'] = (string)$this->config->dns_sl_password; } } diff --git a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml index 3e4e6b916..672eac7a2 100644 --- a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml +++ b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml @@ -1056,6 +1056,24 @@ N + + N + + + N + + + N + + + N + + + N + + + N + N