From 7b0c3f4c070738dec69dceeceb7164edf98b645a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Gangloff?= Date: Mon, 24 Feb 2025 22:18:49 +0100 Subject: [PATCH] feat: start of EPP form --- .../tracking/connector/ConnectorsList.tsx | 6 +- assets/utils/api/connectors.ts | 3 +- .../forms/DefaultConnectorFormItems.tsx | 2 +- .../providers/forms/EppConnectorForm.tsx | 214 ++++++++++++++++++ assets/utils/providers/index.tsx | 6 +- src/Service/Connector/EppClientProvider.php | 4 + 6 files changed, 229 insertions(+), 6 deletions(-) create mode 100644 assets/utils/providers/forms/EppConnectorForm.tsx diff --git a/assets/components/tracking/connector/ConnectorsList.tsx b/assets/components/tracking/connector/ConnectorsList.tsx index 3151de5..0df8af5 100644 --- a/assets/components/tracking/connector/ConnectorsList.tsx +++ b/assets/components/tracking/connector/ConnectorsList.tsx @@ -52,9 +52,9 @@ export function ConnectorsList({connectors, onDelete}: { connectors: ConnectorEl {t`You can stop using a connector at any time. To delete a connector, you must remove it from each linked Watchlist. The creation date corresponds to the date on which you consented to the creation of the connector and on which you declared in particular that you fulfilled the conditions of use of the supplier's API, waived the right of withdrawal and were of the minimum age to consent to these conditions.`}   - - {t`The Provider’s conditions are accessible by following this hyperlink.`} - + {providersConfig[connector.provider].tosLink && + {t`The Provider’s conditions are accessible by following this hyperlink.`} + } }/> diff --git a/assets/utils/api/connectors.ts b/assets/utils/api/connectors.ts index a5aa58d..df3e7cf 100644 --- a/assets/utils/api/connectors.ts +++ b/assets/utils/api/connectors.ts @@ -6,7 +6,8 @@ export enum ConnectorProvider { Gandi = 'gandi', AutoDNS = 'autodns', Namecheap = 'namecheap', - 'Name.com' = 'namecom' + 'Name.com' = 'namecom', + EPP = 'epp' } export interface Connector { diff --git a/assets/utils/providers/forms/DefaultConnectorFormItems.tsx b/assets/utils/providers/forms/DefaultConnectorFormItems.tsx index c843c29..2c5271e 100644 --- a/assets/utils/providers/forms/DefaultConnectorFormItems.tsx +++ b/assets/utils/providers/forms/DefaultConnectorFormItems.tsx @@ -2,7 +2,7 @@ import {Checkbox, Form, Typography} from "antd" import {t} from "ttag" import React from "react" -export default function DefaultConnectorFormItems({tosLink}: { tosLink: string }) { +export default function DefaultConnectorFormItems({tosLink}: { tosLink?: string }) { return <> + + + + + + + + + + + + + + + + + + + + + + + + } placeholder='ssl://epp.nic.tld' autoComplete='off' required/> + + + + + + + + + + + + + + + + + + + + + + + + + value.trim().startsWith('-----BEGIN CERTIFICATE-----') && value.trim().endsWith('-----END CERTIFICATE-----') ? + Promise.resolve() : + Promise.reject(new Error(t`The private key format is invalid`)) + }]} + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + v > 0 && v < 100 ? Promise.resolve() : Promise.reject() + }]} + name={['authData', 'domain', 'period']} + > + + + + } required/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/assets/utils/providers/index.tsx b/assets/utils/providers/index.tsx index bfdb44a..8f2d5e1 100644 --- a/assets/utils/providers/index.tsx +++ b/assets/utils/providers/index.tsx @@ -6,6 +6,7 @@ import GandiConnectorForm from "./forms/GandiConnectorForm" import NamecheapConnectorForm from "./forms/NamecheapConnectorForm" import AutoDnsConnectorForm from "./forms/AutoDnsConnectorForm" import NamecomConnectorForm from "./forms/NamecomConnectorForm" +import EppConnectorForm from "./forms/EppConnectorForm" export const formItemLayoutWithOutLabel = { wrapperCol: { @@ -15,7 +16,7 @@ export const formItemLayoutWithOutLabel = { } export type ProviderConfig = { - tosLink: string + tosLink?: string form: ({form}: { form: FormInstance }) => React.ReactElement } @@ -39,5 +40,8 @@ export const providersConfig: Record = { [ConnectorProvider["Name.com"]]: { tosLink: 'https://www.name.com/policies/', form: NamecomConnectorForm + }, + [ConnectorProvider.EPP]: { + form: EppConnectorForm } } diff --git a/src/Service/Connector/EppClientProvider.php b/src/Service/Connector/EppClientProvider.php index 2422cf4..6a048df 100644 --- a/src/Service/Connector/EppClientProvider.php +++ b/src/Service/Connector/EppClientProvider.php @@ -136,6 +136,10 @@ class EppClientProvider extends AbstractProvider implements CheckDomainProviderI */ private function connect(): void { + if ($this->eppClient->isConnected()) { + return; + } + $conn = new eppConnection(false, null); $conn->setHostname($this->authData['hostname']); $conn->setVersion($this->authData['version']);