mirror of
https://github.com/maelgangloff/domain-watchdog.git
synced 2025-12-18 02:05:36 +00:00
Merge branch 'feat/connector-form'
This commit is contained in:
commit
f6a4b2f4a1
@ -1,302 +1,69 @@
|
||||
import type {FormInstance} from 'antd'
|
||||
import {Alert, Button, Checkbox, Form, Input, Popconfirm, Select, Space, Typography} from 'antd'
|
||||
import React, {useState} from 'react'
|
||||
import type { FormInstance, StepProps} from 'antd'
|
||||
import {Card, Col, Row, Steps, Typography} from 'antd'
|
||||
import type {Connector} from '../../../utils/api/connectors'
|
||||
import {ConnectorProvider} from '../../../utils/api/connectors'
|
||||
import {t} from 'ttag'
|
||||
import {BankOutlined} from '@ant-design/icons'
|
||||
import {
|
||||
ovhEndpointList as ovhEndpointListFunction,
|
||||
ovhFields as ovhFieldsFunction,
|
||||
ovhPricingMode as ovhPricingModeFunction,
|
||||
ovhSubsidiaryList as ovhSubsidiaryListFunction
|
||||
} from '../../../utils/providers/ovh'
|
||||
import {helpGetTokenLink, tosHyperlink} from '../../../utils/providers'
|
||||
import React, {useState} from 'react'
|
||||
import {t} from "ttag"
|
||||
import {BankOutlined, UserOutlined} from "@ant-design/icons"
|
||||
import {providersConfig} from "../../../utils/providers"
|
||||
|
||||
const formItemLayoutWithOutLabel = {
|
||||
wrapperCol: {
|
||||
xs: {span: 24, offset: 0},
|
||||
sm: {span: 20, offset: 4}
|
||||
}
|
||||
}
|
||||
|
||||
export function ConnectorForm({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) {
|
||||
const [provider, setProvider] = useState<ConnectorProvider>()
|
||||
const ovhFields = ovhFieldsFunction()
|
||||
const ovhEndpointList = ovhEndpointListFunction()
|
||||
const ovhSubsidiaryList = ovhSubsidiaryListFunction()
|
||||
const ovhPricingMode = ovhPricingModeFunction()
|
||||
const [open, setOpen] = useState(false)
|
||||
const [ovhPricingModeValue, setOvhPricingModeValue] = useState<string | undefined>()
|
||||
const [current, setCurrent] = useState(0)
|
||||
|
||||
const ProviderForm = provider !== undefined ? providersConfig[provider].form : undefined
|
||||
|
||||
const steps: StepProps[] = [
|
||||
{
|
||||
title: t`Registrar`,
|
||||
icon: <BankOutlined/>,
|
||||
},
|
||||
{
|
||||
title: t`Authentication`,
|
||||
icon: <UserOutlined/>,
|
||||
}
|
||||
]
|
||||
|
||||
const next = () => {
|
||||
setCurrent(current + 1)
|
||||
}
|
||||
|
||||
return (
|
||||
<Form
|
||||
{...formItemLayoutWithOutLabel}
|
||||
form={form}
|
||||
layout='horizontal'
|
||||
labelCol={{span: 6}}
|
||||
wrapperCol={{span: 14}}
|
||||
onFinish={onCreate}
|
||||
>
|
||||
<Form.Item
|
||||
label={t`Provider`}
|
||||
name='provider'
|
||||
help={helpGetTokenLink(provider)}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Select
|
||||
allowClear
|
||||
placeholder={t`Please select a Provider`}
|
||||
suffixIcon={<BankOutlined/>}
|
||||
options={Object.keys(ConnectorProvider).map((c) => ({
|
||||
value: ConnectorProvider[c as keyof typeof ConnectorProvider],
|
||||
label: (
|
||||
<>
|
||||
<BankOutlined/>{' '} {c}
|
||||
</>
|
||||
)
|
||||
}))}
|
||||
value={provider}
|
||||
onChange={setProvider}
|
||||
autoFocus
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
{
|
||||
provider !== undefined && <>
|
||||
{
|
||||
[ConnectorProvider.AutoDNS, ConnectorProvider['Name.com']].includes(provider) && <Alert
|
||||
message={t`This provider does not provide a list of supported TLD. Please double check if the domain you want to register is supported.`}
|
||||
type='warning'
|
||||
style={{marginBottom: '2em'}}
|
||||
/>
|
||||
}
|
||||
{
|
||||
provider === ConnectorProvider.OVHcloud && <>
|
||||
{
|
||||
Object.keys(ovhFields).map(fieldName => <Form.Item
|
||||
key={ovhFields[fieldName as keyof typeof ovhFields]}
|
||||
label={ovhFields[fieldName as keyof typeof ovhFields]}
|
||||
name={['authData', fieldName]}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>)
|
||||
}
|
||||
<Form.Item
|
||||
label={t`OVH Endpoint`}
|
||||
name={['authData', 'apiEndpoint']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Select options={ovhEndpointList} optionFilterProp='label'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`OVH subsidiary`}
|
||||
name={['authData', 'ovhSubsidiary']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Select options={ovhSubsidiaryList} optionFilterProp='label'/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label={t`OVH pricing mode`}
|
||||
name={['authData', 'pricingMode']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Popconfirm
|
||||
title={t`Confirm pricing mode`}
|
||||
description={t`Are you sure about this setting? This may result in additional charges from the API Provider`}
|
||||
onCancel={() => {
|
||||
form.resetFields(['authData'])
|
||||
setOvhPricingModeValue(undefined)
|
||||
setOpen(false)
|
||||
}}
|
||||
onConfirm={() => setOpen(false)}
|
||||
open={open}
|
||||
>
|
||||
<Select
|
||||
options={ovhPricingMode} optionFilterProp='label' value={ovhPricingModeValue}
|
||||
onChange={(value: string) => {
|
||||
setOvhPricingModeValue(value)
|
||||
form.setFieldValue(['authData', 'pricingMode'], value)
|
||||
if (value !== 'create-default') {
|
||||
setOpen(true)
|
||||
}
|
||||
<>
|
||||
<Steps current={current} items={steps} onChange={(c: number) => setCurrent(c)}/>
|
||||
<div style={{padding: 20}}>
|
||||
{current === 0 && (
|
||||
<>
|
||||
<h2>{t`Choose a registrar`}</h2>
|
||||
<Row gutter={[16, 16]}>
|
||||
{Object.keys(providersConfig).map((provider: string) => (
|
||||
<Col key={provider as ConnectorProvider} span={8}>
|
||||
<Card
|
||||
hoverable
|
||||
style={{textAlign: "center"}}
|
||||
onClick={() => {
|
||||
setProvider(provider as ConnectorProvider)
|
||||
next()
|
||||
}}
|
||||
/>
|
||||
</Popconfirm>
|
||||
</Form.Item>
|
||||
</>
|
||||
}
|
||||
{
|
||||
provider === ConnectorProvider.Gandi && <>
|
||||
<Form.Item
|
||||
label={t`Personal Access Token (PAT)`}
|
||||
name={['authData', 'token']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`Organization sharing ID`}
|
||||
name={['authData', 'sharingId']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`It indicates the organization that will pay for the ordered product`}
|
||||
</Typography.Text>}
|
||||
required={false}
|
||||
>
|
||||
<Input autoComplete='off' placeholder='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'/>
|
||||
</Form.Item>
|
||||
</>
|
||||
}
|
||||
{
|
||||
provider === ConnectorProvider.AutoDNS && <>
|
||||
<br/>
|
||||
<Form.Item
|
||||
label={t`AutoDNS Username`}
|
||||
name={['authData', 'username']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`Attention: AutoDNS do not support 2-Factor Authentication on API Users for automated systems`}
|
||||
</Typography.Text>}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off' required/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`AutoDNS Password`}
|
||||
name={['authData', 'password']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
required
|
||||
>
|
||||
<Input.Password autoComplete='off' required placeholder=''/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`Owner nic-handle`}
|
||||
name={['authData', 'contactid']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`The nic-handle of the domain name owner`}<a
|
||||
href='https://cloud.autodns.com/contacts/domain'
|
||||
>{t`You can get it from this page`}
|
||||
</a>
|
||||
</Typography.Text>}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
required
|
||||
>
|
||||
<Input autoComplete='off' required placeholder=''/>
|
||||
</Form.Item>
|
||||
>
|
||||
<div style={{fontSize: "3rem"}}><BankOutlined style={{color: 'lightblue'}}/>
|
||||
</div>
|
||||
<h3>{Object.keys(ConnectorProvider).find(p => ConnectorProvider[p as keyof typeof ConnectorProvider] === provider)}</h3>
|
||||
</Card>
|
||||
</Col>
|
||||
))}
|
||||
</Row>
|
||||
</>
|
||||
)}
|
||||
|
||||
<Form.Item
|
||||
label={t`Context Value`}
|
||||
name={['authData', 'context']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`If you not sure, use the default value 4`}
|
||||
</Typography.Text>}
|
||||
|
||||
required={false}
|
||||
>
|
||||
<Input autoComplete='off' required={false} placeholder='4'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`Owner confirmation`}
|
||||
name={['authData', 'ownerConfirm']}
|
||||
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>{t`Owner confirms his consent of domain order jobs`}
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
</>
|
||||
|
||||
}
|
||||
{
|
||||
provider === ConnectorProvider.Namecheap && <>
|
||||
<Form.Item
|
||||
label={t`Username`}
|
||||
name={['authData', 'ApiUser']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`API key`}
|
||||
name={['authData', 'ApiKey']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
</>
|
||||
}
|
||||
{
|
||||
provider === ConnectorProvider['Name.com'] && <>
|
||||
<Form.Item
|
||||
label={t`Username`}
|
||||
name={['authData', 'username']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`API key`}
|
||||
name={['authData', 'token']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
</>
|
||||
}
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`API Terms of Service`}
|
||||
name={['authData', 'acceptConditions']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
style={{marginTop: '3em'}}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>
|
||||
<Typography.Link target='_blank' href={tosHyperlink(provider)}>
|
||||
{t`I have read and accepted the conditions of use of the Provider API, accessible from this hyperlink`}
|
||||
</Typography.Link>
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`Legal age`}
|
||||
name={['authData', 'ownerLegalAge']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>{t`I am of the minimum age required to consent to these conditions`}
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`Withdrawal period`}
|
||||
name={['authData', 'waiveRetractationPeriod']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>{t`I waive my right of withdrawal regarding the purchase of domain names via the Provider's API`}
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
</>
|
||||
}
|
||||
|
||||
<Form.Item style={{marginTop: '5vh'}}>
|
||||
<Space>
|
||||
<Button type='primary' htmlType='submit'>
|
||||
{t`Create`}
|
||||
</Button>
|
||||
<Button type='default' htmlType='reset'>
|
||||
{t`Reset`}
|
||||
</Button>
|
||||
</Space>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
{current === 1 && ProviderForm && <ProviderForm form={form} onCreate={onCreate}/>}
|
||||
</div>
|
||||
<Typography.Text type='secondary'>
|
||||
{t`This website is neither affiliated with nor sponsored by the registrars mentioned.
|
||||
The names and logos of these companies are used for informational purposes only and remain registered trademarks of their respective owners.
|
||||
The use of their services via this website is subject to the terms and conditions set by each registrar and is the sole responsibility of the user.`}
|
||||
</Typography.Text>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
@ -4,8 +4,7 @@ import {DeleteFilled} from '@ant-design/icons'
|
||||
import React from 'react'
|
||||
import type {Connector} from '../../../utils/api/connectors'
|
||||
import { ConnectorProvider, deleteConnector} from '../../../utils/api/connectors'
|
||||
import {tosHyperlink} from "../../../utils/providers"
|
||||
|
||||
import {providersConfig} from "../../../utils/providers"
|
||||
const {useToken} = theme
|
||||
|
||||
export type ConnectorElement = Connector & { id: string, createdAt: string, watchlistCount: number }
|
||||
@ -51,7 +50,7 @@ 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.`}
|
||||
|
||||
<Typography.Link href={tosHyperlink(connector.provider)}>
|
||||
<Typography.Link href={providersConfig[connector.provider].tosLink}>
|
||||
{t`The Provider’s conditions are accessible by following this hyperlink.`}
|
||||
</Typography.Link>
|
||||
</>
|
||||
|
||||
@ -8,6 +8,7 @@ import {rdapEventDetailTranslation, rdapEventNameTranslation} from '../../../uti
|
||||
import {actionToColor} from '../../../utils/functions/actionToColor'
|
||||
import {actionToIcon} from '../../../utils/functions/actionToIcon'
|
||||
import type {EventAction} from '../../../utils/api'
|
||||
import {formItemLayoutWithOutLabel} from "../../../utils/providers"
|
||||
|
||||
type TagRender = SelectProps['tagRender']
|
||||
|
||||
@ -22,13 +23,6 @@ const formItemLayout = {
|
||||
}
|
||||
}
|
||||
|
||||
const formItemLayoutWithOutLabel = {
|
||||
wrapperCol: {
|
||||
xs: {span: 24, offset: 0},
|
||||
sm: {span: 20, offset: 4}
|
||||
}
|
||||
}
|
||||
|
||||
export function WatchlistForm({form, connectors, onFinish, isCreation}: {
|
||||
form: FormInstance
|
||||
connectors: Array<Connector & { id: string }>
|
||||
@ -269,7 +263,7 @@ export function WatchlistForm({form, connectors, onFinish, isCreation}: {
|
||||
</>
|
||||
)}
|
||||
</Form.List>
|
||||
<Form.Item style={{marginTop: '5vh'}}>
|
||||
<Form.Item style={{marginTop: '5em'}}>
|
||||
<Space>
|
||||
<Button type='primary' htmlType='submit'>
|
||||
{isCreation ? t`Create` : t`Update`}
|
||||
|
||||
96
assets/utils/providers/forms/AutoDnsConnectorForm.tsx
Normal file
96
assets/utils/providers/forms/AutoDnsConnectorForm.tsx
Normal file
@ -0,0 +1,96 @@
|
||||
import type {FormInstance} from 'antd'
|
||||
import {Alert, Checkbox, Form, Input, Typography} from 'antd'
|
||||
import React from 'react'
|
||||
import type {Connector} from '../../api/connectors'
|
||||
import {ConnectorProvider} from '../../api/connectors'
|
||||
import {t} from 'ttag'
|
||||
import DefaultConnectorFormItems from "./DefaultConnectorFormItems"
|
||||
import {formItemLayoutWithOutLabel, providersConfig} from "../index"
|
||||
|
||||
export default function AutoDnsConnectorForm({form, onCreate}: {
|
||||
form: FormInstance,
|
||||
onCreate: (values: Connector) => void
|
||||
}) {
|
||||
|
||||
form.setFieldValue('provider', ConnectorProvider.AutoDNS)
|
||||
|
||||
return (
|
||||
<Form
|
||||
{...formItemLayoutWithOutLabel}
|
||||
form={form}
|
||||
layout='horizontal'
|
||||
labelCol={{span: 6}}
|
||||
wrapperCol={{span: 14}}
|
||||
onFinish={onCreate}
|
||||
>
|
||||
<Alert
|
||||
message={t`This provider does not provide a list of supported TLD. Please double check if the domain you want to register is supported.`}
|
||||
type='warning'
|
||||
style={{marginBottom: '2em'}}
|
||||
/>
|
||||
|
||||
<br/>
|
||||
<Form.Item
|
||||
label={t`AutoDNS Username`}
|
||||
name={['authData', 'username']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`Attention: AutoDNS do not support 2-Factor Authentication on API Users for automated systems`}
|
||||
</Typography.Text>}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off' required/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`AutoDNS Password`}
|
||||
name={['authData', 'password']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
required
|
||||
>
|
||||
<Input.Password autoComplete='off' required placeholder=''/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`Owner nic-handle`}
|
||||
name={['authData', 'contactid']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`The nic-handle of the domain name owner`}<a
|
||||
href='https://cloud.autodns.com/contacts/domain'
|
||||
>{t`You can get it from this page`}
|
||||
</a>
|
||||
</Typography.Text>}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
required
|
||||
>
|
||||
<Input autoComplete='off' required placeholder=''/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label={t`Context Value`}
|
||||
name={['authData', 'context']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`If you not sure, use the default value 4`}
|
||||
</Typography.Text>}
|
||||
|
||||
required={false}
|
||||
>
|
||||
<Input autoComplete='off' required={false} placeholder='4'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`Owner confirmation`}
|
||||
name={['authData', 'ownerConfirm']}
|
||||
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>{t`Owner confirms his consent of domain order jobs`}
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
|
||||
<DefaultConnectorFormItems tosLink={providersConfig[ConnectorProvider.AutoDNS].tosLink}/>
|
||||
</Form>
|
||||
)
|
||||
}
|
||||
56
assets/utils/providers/forms/DefaultConnectorFormItems.tsx
Normal file
56
assets/utils/providers/forms/DefaultConnectorFormItems.tsx
Normal file
@ -0,0 +1,56 @@
|
||||
import {Button, Checkbox, Form, Input, Typography} from "antd"
|
||||
import {t} from "ttag"
|
||||
import React from "react"
|
||||
|
||||
export default function DefaultConnectorFormItems({tosLink}: { tosLink: string }) {
|
||||
return <>
|
||||
<Form.Item name="provider" noStyle>
|
||||
<Input type="hidden" />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`API Terms of Service`}
|
||||
name={['authData', 'acceptConditions']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
style={{marginTop: '3em'}}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>
|
||||
<Typography.Link target='_blank' href={tosLink}>
|
||||
{t`I have read and accepted the conditions of use of the Provider API, accessible from this hyperlink`}
|
||||
</Typography.Link>
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`Legal age`}
|
||||
name={['authData', 'ownerLegalAge']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>{t`I am of the minimum age required to consent to these conditions`}
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
valuePropName='checked'
|
||||
label={t`Withdrawal period`}
|
||||
name={['authData', 'waiveRetractationPeriod']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Checkbox
|
||||
required
|
||||
>{t`I waive my right of withdrawal regarding the purchase of domain names via the Provider's API`}
|
||||
</Checkbox>
|
||||
</Form.Item>
|
||||
|
||||
|
||||
<Form.Item style={{marginTop: '2em', textAlign: 'center'}}>
|
||||
<Button type='primary' htmlType='submit'>
|
||||
{t`Create`}
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</>
|
||||
}
|
||||
48
assets/utils/providers/forms/GandiConnectorForm.tsx
Normal file
48
assets/utils/providers/forms/GandiConnectorForm.tsx
Normal file
@ -0,0 +1,48 @@
|
||||
import type {FormInstance} from 'antd'
|
||||
import {Form, Input, Typography} from 'antd'
|
||||
import React from 'react'
|
||||
import type {Connector} from '../../api/connectors'
|
||||
import {ConnectorProvider} from '../../api/connectors'
|
||||
import {t} from 'ttag'
|
||||
import DefaultConnectorFormItems from "./DefaultConnectorFormItems"
|
||||
import {formItemLayoutWithOutLabel, providersConfig} from "../index"
|
||||
|
||||
export default function GandiConnectorForm({form, onCreate}: {
|
||||
form: FormInstance,
|
||||
onCreate: (values: Connector) => void
|
||||
}) {
|
||||
|
||||
form.setFieldValue('provider', ConnectorProvider.Gandi)
|
||||
|
||||
return (
|
||||
<Form
|
||||
{...formItemLayoutWithOutLabel}
|
||||
form={form}
|
||||
layout='horizontal'
|
||||
labelCol={{span: 6}}
|
||||
wrapperCol={{span: 14}}
|
||||
onFinish={onCreate}
|
||||
>
|
||||
<Form.Item
|
||||
label={t`Personal Access Token (PAT)`}
|
||||
name={['authData', 'token']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`Organization sharing ID`}
|
||||
name={['authData', 'sharingId']}
|
||||
help={<Typography.Text
|
||||
type='secondary'
|
||||
>{t`It indicates the organization that will pay for the ordered product`}
|
||||
</Typography.Text>}
|
||||
required={false}
|
||||
>
|
||||
<Input autoComplete='off' placeholder='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'/>
|
||||
</Form.Item>
|
||||
<DefaultConnectorFormItems tosLink={providersConfig[ConnectorProvider.Gandi].tosLink}/>
|
||||
|
||||
</Form>
|
||||
)
|
||||
}
|
||||
42
assets/utils/providers/forms/NamecheapConnectorForm.tsx
Normal file
42
assets/utils/providers/forms/NamecheapConnectorForm.tsx
Normal file
@ -0,0 +1,42 @@
|
||||
import type {FormInstance} from 'antd'
|
||||
import {Form, Input} from 'antd'
|
||||
import React from 'react'
|
||||
import type {Connector} from '../../api/connectors'
|
||||
import {ConnectorProvider} from '../../api/connectors'
|
||||
import {t} from 'ttag'
|
||||
import DefaultConnectorFormItems from "./DefaultConnectorFormItems"
|
||||
import {formItemLayoutWithOutLabel, providersConfig} from "../index"
|
||||
|
||||
export default function NamecheapConnectorForm({form, onCreate}: {
|
||||
form: FormInstance,
|
||||
onCreate: (values: Connector) => void
|
||||
}) {
|
||||
|
||||
|
||||
form.setFieldValue('provider', ConnectorProvider.Namecheap)
|
||||
|
||||
return (
|
||||
<Form
|
||||
{...formItemLayoutWithOutLabel}
|
||||
form={form}
|
||||
layout='horizontal'
|
||||
labelCol={{span: 6}}
|
||||
wrapperCol={{span: 14}}
|
||||
onFinish={onCreate}
|
||||
>
|
||||
<Form.Item
|
||||
label={t`Username`}
|
||||
name={['authData', 'ApiUser']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`API key`}
|
||||
name={['authData', 'ApiKey']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<DefaultConnectorFormItems tosLink={providersConfig[ConnectorProvider.Namecheap].tosLink}/>
|
||||
</Form>
|
||||
)
|
||||
}
|
||||
46
assets/utils/providers/forms/NamecomConnectorForm.tsx
Normal file
46
assets/utils/providers/forms/NamecomConnectorForm.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import type {FormInstance} from 'antd'
|
||||
import {Alert, Form, Input} from 'antd'
|
||||
import React from 'react'
|
||||
import type {Connector} from '../../api/connectors'
|
||||
import {ConnectorProvider} from '../../api/connectors'
|
||||
import {t} from 'ttag'
|
||||
import DefaultConnectorFormItems from "./DefaultConnectorFormItems"
|
||||
import {formItemLayoutWithOutLabel, providersConfig} from "../index"
|
||||
|
||||
export default function NamecomConnectorForm({form, onCreate}: {
|
||||
form: FormInstance,
|
||||
onCreate: (values: Connector) => void
|
||||
}) {
|
||||
|
||||
form.setFieldValue('provider', ConnectorProvider["Name.com"])
|
||||
|
||||
return (
|
||||
<Form
|
||||
{...formItemLayoutWithOutLabel}
|
||||
form={form}
|
||||
layout='horizontal'
|
||||
labelCol={{span: 6}}
|
||||
wrapperCol={{span: 14}}
|
||||
onFinish={onCreate}
|
||||
>
|
||||
<Alert
|
||||
message={t`This provider does not provide a list of supported TLD. Please double check if the domain you want to register is supported.`}
|
||||
type='warning'
|
||||
style={{marginBottom: '2em'}}
|
||||
/>
|
||||
<Form.Item
|
||||
label={t`Username`}
|
||||
name={['authData', 'username']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`API key`}
|
||||
name={['authData', 'token']}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
<DefaultConnectorFormItems tosLink={providersConfig[ConnectorProvider["Name.com"]].tosLink}/>
|
||||
</Form>
|
||||
)
|
||||
}
|
||||
125
assets/utils/providers/forms/OvhCloudConnectorForm.tsx
Normal file
125
assets/utils/providers/forms/OvhCloudConnectorForm.tsx
Normal file
@ -0,0 +1,125 @@
|
||||
import {t} from 'ttag'
|
||||
import {regionNames} from "../../../i18n"
|
||||
import React, {useState} from 'react'
|
||||
import type {FormInstance} from "antd"
|
||||
import {Form, Input, Popconfirm, Select} from "antd"
|
||||
import type {Connector} from "../../api/connectors"
|
||||
import {ConnectorProvider} from "../../api/connectors"
|
||||
import DefaultConnectorFormItems from "./DefaultConnectorFormItems"
|
||||
import {formItemLayoutWithOutLabel, providersConfig} from "../index"
|
||||
|
||||
export default function OvhCloudConnectorForm({form, onCreate}: {
|
||||
form: FormInstance,
|
||||
onCreate: (values: Connector) => void
|
||||
}) {
|
||||
const [open, setOpen] = useState(false)
|
||||
const [ovhPricingModeValue, setOvhPricingModeValue] = useState<string | undefined>()
|
||||
|
||||
form.setFieldValue('provider', ConnectorProvider.OVHcloud)
|
||||
|
||||
const ovhEndpointList = [
|
||||
{label: t`European Region`, value: 'ovh-eu'},
|
||||
{label: t`United States Region`, value: 'ovh-us'},
|
||||
{label: t`Canada Region`, value: 'ovh-ca'}
|
||||
]
|
||||
|
||||
const ovhSubsidiaryList = [...[
|
||||
'CZ', 'DE', 'ES', 'FI', 'FR', 'GB', 'IE', 'IT', 'LT', 'MA', 'NL', 'PL', 'PT', 'SN', 'TN'
|
||||
].map(c => ({value: c, label: regionNames.of(c) ?? c})), {value: 'EU', label: t`Europe`}]
|
||||
|
||||
const ovhPricingMode = [
|
||||
{value: 'create-default', label: t`The domain is free and at the standard price`},
|
||||
{
|
||||
value: 'create-premium',
|
||||
label: t`The domain is free but can be premium. Its price varies from one domain to another`
|
||||
}
|
||||
]
|
||||
|
||||
return (
|
||||
<Form
|
||||
{...formItemLayoutWithOutLabel}
|
||||
form={form}
|
||||
layout='horizontal'
|
||||
labelCol={{span: 6}}
|
||||
wrapperCol={{span: 14}}
|
||||
onFinish={onCreate}
|
||||
>
|
||||
<Form.Item
|
||||
label={t`Application key`}
|
||||
name={['authData', 'appKey']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label={t`Application secret`}
|
||||
name={['authData', 'appSecret']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label={t`Consumer key`}
|
||||
name={['authData', 'consumerKey']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label={t`Application key`}
|
||||
name={['authData', 'appKey']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Input autoComplete='off'/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label={t`OVH Endpoint`}
|
||||
name={['authData', 'apiEndpoint']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Select options={ovhEndpointList} optionFilterProp='label'/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t`OVH subsidiary`}
|
||||
name={['authData', 'ovhSubsidiary']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Select options={ovhSubsidiaryList} optionFilterProp='label'/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label={t`OVH pricing mode`}
|
||||
name={['authData', 'pricingMode']}
|
||||
rules={[{required: true, message: t`Required`}]}
|
||||
>
|
||||
<Popconfirm
|
||||
title={t`Confirm pricing mode`}
|
||||
description={t`Are you sure about this setting? This may result in additional charges from the API Provider`}
|
||||
onCancel={() => {
|
||||
form.resetFields(['authData'])
|
||||
setOvhPricingModeValue(undefined)
|
||||
setOpen(false)
|
||||
}}
|
||||
onConfirm={() => setOpen(false)}
|
||||
open={open}
|
||||
>
|
||||
<Select
|
||||
options={ovhPricingMode} optionFilterProp='label' value={ovhPricingModeValue}
|
||||
onChange={(value: string) => {
|
||||
setOvhPricingModeValue(value)
|
||||
form.setFieldValue(['authData', 'pricingMode'], value)
|
||||
if (value !== 'create-default') {
|
||||
setOpen(true)
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Popconfirm>
|
||||
</Form.Item>
|
||||
<DefaultConnectorFormItems tosLink={providersConfig[ConnectorProvider.OVHcloud].tosLink}/>
|
||||
</Form>
|
||||
)
|
||||
}
|
||||
@ -1,62 +1,50 @@
|
||||
import type {Connector} from '../api/connectors'
|
||||
import {ConnectorProvider} from '../api/connectors'
|
||||
import {Typography} from 'antd'
|
||||
import {t} from 'ttag'
|
||||
import React from 'react'
|
||||
import OvhCloudConnectorForm from "./forms/OvhCloudConnectorForm"
|
||||
import type {FormInstance} from "antd"
|
||||
import type React from "react"
|
||||
import GandiConnectorForm from "./forms/GandiConnectorForm"
|
||||
import NamecheapConnectorForm from "./forms/NamecheapConnectorForm"
|
||||
import AutoDnsConnectorForm from "./forms/AutoDnsConnectorForm"
|
||||
import NamecomConnectorForm from "./forms/NamecomConnectorForm"
|
||||
|
||||
export const helpGetTokenLink = (provider?: string) => {
|
||||
switch (provider) {
|
||||
case ConnectorProvider.OVHcloud:
|
||||
return (
|
||||
<Typography.Link
|
||||
target='_blank'
|
||||
href='https://api.ovh.com/createToken/?GET=/order/cart&GET=/order/cart/*&POST=/order/cart&POST=/order/cart/*&DELETE=/order/cart/*&GET=/domain/extensions'
|
||||
>
|
||||
{t`Retrieve a set of tokens from your customer account on the Provider's website`}
|
||||
</Typography.Link>
|
||||
)
|
||||
|
||||
case ConnectorProvider.Gandi:
|
||||
return (
|
||||
<Typography.Link target='_blank' href='https://admin.gandi.net/organizations/account/pat'>
|
||||
{t`Retrieve a Personal Access Token from your customer account on the Provider's website`}
|
||||
</Typography.Link>
|
||||
)
|
||||
case ConnectorProvider.Namecheap:
|
||||
return (
|
||||
<Typography.Link target='_blank' href='https://ap.www.namecheap.com/settings/tools/apiaccess/'>
|
||||
{t`Retreive an API key and whitelist this instance's IP address on Namecheap's website`}
|
||||
</Typography.Link>
|
||||
)
|
||||
case ConnectorProvider.AutoDNS:
|
||||
return (
|
||||
<Typography.Link target='_blank' href='https://en.autodns.com/domain-robot-api/'>
|
||||
{t`Because of some limitations in API of AutoDNS, we suggest to create an dedicated user for API with limited rights`}
|
||||
</Typography.Link>
|
||||
)
|
||||
case ConnectorProvider['Name.com']:
|
||||
return (
|
||||
<Typography.Link target='_blank' href='https://www.name.com/account/settings/api'>
|
||||
{t`Retrieve a set of tokens from your customer account on the Provider's website`}
|
||||
</Typography.Link>
|
||||
)
|
||||
default:
|
||||
return <></>
|
||||
export const formItemLayoutWithOutLabel = {
|
||||
wrapperCol: {
|
||||
xs: {span: 24, offset: 0},
|
||||
sm: {span: 20, offset: 4}
|
||||
}
|
||||
}
|
||||
|
||||
export const tosHyperlink = (provider?: string) => {
|
||||
switch (provider) {
|
||||
case ConnectorProvider.OVHcloud:
|
||||
return 'https://www.ovhcloud.com/en/terms-and-conditions/contracts/'
|
||||
case ConnectorProvider.Gandi:
|
||||
return 'https://www.gandi.net/en/contracts/terms-of-service'
|
||||
case ConnectorProvider.Namecheap:
|
||||
return 'https://www.namecheap.com/legal/universal/universal-tos/'
|
||||
case ConnectorProvider.AutoDNS:
|
||||
return 'https://www.internetx.com/agb/'
|
||||
case ConnectorProvider['Name.com']:
|
||||
return 'https://www.name.com/policies/'
|
||||
default:
|
||||
return ''
|
||||
export type ProviderConfig = {
|
||||
tosLink: string
|
||||
tokenLink: string
|
||||
form: ({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) => React.ReactElement
|
||||
}
|
||||
|
||||
export const providersConfig: Record<ConnectorProvider, ProviderConfig> = {
|
||||
[ConnectorProvider.OVHcloud]: {
|
||||
tosLink: 'https://www.ovhcloud.com/en/terms-and-conditions/contracts/',
|
||||
tokenLink: 'https://api.ovh.com/createToken/?GET=/order/cart&GET=/order/cart/*&POST=/order/cart&POST=/order/cart/*&DELETE=/order/cart/*&GET=/domain/extensions',
|
||||
form: OvhCloudConnectorForm
|
||||
},
|
||||
[ConnectorProvider.Gandi]: {
|
||||
tosLink: 'https://www.gandi.net/en/contracts/terms-of-service',
|
||||
tokenLink: 'https://admin.gandi.net/organizations/account/pat',
|
||||
form: GandiConnectorForm
|
||||
},
|
||||
[ConnectorProvider.Namecheap]: {
|
||||
tosLink: 'https://www.namecheap.com/legal/universal/universal-tos/',
|
||||
tokenLink: 'https://ap.www.namecheap.com/settings/tools/apiaccess/',
|
||||
form: NamecheapConnectorForm
|
||||
},
|
||||
[ConnectorProvider.AutoDNS]: {
|
||||
tosLink: 'https://www.internetx.com/agb/',
|
||||
tokenLink: 'https://en.autodns.com/domain-robot-api/',
|
||||
form: AutoDnsConnectorForm
|
||||
},
|
||||
[ConnectorProvider["Name.com"]]: {
|
||||
tosLink: 'https://www.name.com/policies/',
|
||||
tokenLink: 'https://www.name.com/account/settings/api',
|
||||
form: NamecomConnectorForm
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
import {t} from 'ttag'
|
||||
import {regionNames} from '../../i18n'
|
||||
|
||||
export const ovhFields = () => ({
|
||||
appKey: t`Application key`,
|
||||
appSecret: t`Application secret`,
|
||||
consumerKey: t`Consumer key`
|
||||
})
|
||||
|
||||
export const ovhEndpointList = () => [
|
||||
{
|
||||
label: t`European Region`,
|
||||
value: 'ovh-eu'
|
||||
}
|
||||
]
|
||||
|
||||
export const ovhSubsidiaryList = () => [...[
|
||||
'CZ', 'DE', 'ES', 'FI', 'FR', 'GB', 'IE', 'IT', 'LT', 'MA', 'NL', 'PL', 'PT', 'SN', 'TN'
|
||||
].map(c => ({value: c, label: regionNames.of(c) ?? c})), {value: 'EU', label: t`Europe`}]
|
||||
|
||||
export const ovhPricingMode = () => [
|
||||
{value: 'create-default', label: t`The domain is free and at the standard price`},
|
||||
{
|
||||
value: 'create-premium',
|
||||
label: t`The domain is free but can be premium. Its price varies from one domain to another`
|
||||
}
|
||||
]
|
||||
@ -44,21 +44,23 @@ msgstr ""
|
||||
#: assets/components/RegisterForm.tsx:39
|
||||
#: assets/components/RegisterForm.tsx:47
|
||||
#: assets/components/search/DomainSearchBar.tsx:28
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:45
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:81
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:89
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:96
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:104
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:136
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:163
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:170
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:185
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:208
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:254
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:269
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:280
|
||||
#: assets/components/tracking/watchlist/WatchlistForm.tsx:125
|
||||
#: assets/components/tracking/watchlist/WatchlistForm.tsx:228
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:40
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:47
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:62
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:85
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:15
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:30
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:41
|
||||
#: assets/utils/providers/forms/GandiConnectorForm.tsx:36
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:50
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:58
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:66
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:74
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:82
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:89
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:97
|
||||
msgid "Required"
|
||||
msgstr ""
|
||||
|
||||
@ -219,185 +221,69 @@ msgstr ""
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:42
|
||||
msgid "Provider"
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:19
|
||||
#: assets/utils/functions/rdapTranslation.ts:12
|
||||
msgid "Registrar"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:49
|
||||
msgid "Please select a Provider"
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:23
|
||||
msgid "Authentication"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:69
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:38
|
||||
msgid "Choose a registrar"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:63
|
||||
msgid ""
|
||||
"This provider does not provide a list of supported TLD. Please double check "
|
||||
"if the domain you want to register is supported."
|
||||
"This website is neither affiliated with nor sponsored by the registrars "
|
||||
"mentioned.\n"
|
||||
"The names and logos of these companies are used for informational purposes "
|
||||
"only and remain registered trademarks of their respective owners.\n"
|
||||
"The use of their services via this website is subject to the terms and "
|
||||
"conditions set by each registrar and is the sole responsibility of the user."
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:87
|
||||
msgid "OVH Endpoint"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:94
|
||||
msgid "OVH subsidiary"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:102
|
||||
msgid "OVH pricing mode"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:107
|
||||
msgid "Confirm pricing mode"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:108
|
||||
msgid ""
|
||||
"Are you sure about this setting? This may result in additional charges from "
|
||||
"the API Provider"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:134
|
||||
msgid "Personal Access Token (PAT)"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:141
|
||||
msgid "Organization sharing ID"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:145
|
||||
msgid "It indicates the organization that will pay for the ordered product"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:157
|
||||
msgid "AutoDNS Username"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:161
|
||||
msgid ""
|
||||
"Attention: AutoDNS do not support 2-Factor Authentication on API Users for "
|
||||
"automated systems"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:168
|
||||
msgid "AutoDNS Password"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:176
|
||||
msgid "Owner nic-handle"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:180
|
||||
msgid "The nic-handle of the domain name owner"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:182
|
||||
msgid "You can get it from this page"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:192
|
||||
msgid "Context Value"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:196
|
||||
msgid "If you not sure, use the default value 4"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:205
|
||||
msgid "Owner confirmation"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:212
|
||||
msgid "Owner confirms his consent of domain order jobs"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:221
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:237
|
||||
#: assets/pages/UserPage.tsx:19
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:227
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:243
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:252
|
||||
msgid "API Terms of Service"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:261
|
||||
msgid ""
|
||||
"I have read and accepted the conditions of use of the Provider API, "
|
||||
"accessible from this hyperlink"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:267
|
||||
msgid "Legal age"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:273
|
||||
msgid "I am of the minimum age required to consent to these conditions"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:278
|
||||
msgid "Withdrawal period"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:284
|
||||
msgid ""
|
||||
"I waive my right of withdrawal regarding the purchase of domain names via "
|
||||
"the Provider's API"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:293
|
||||
#: assets/components/tracking/watchlist/WatchlistForm.tsx:275
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorForm.tsx:296
|
||||
#: assets/components/tracking/watchlist/WatchlistForm.tsx:278
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:19
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:18
|
||||
msgid ""
|
||||
"An error occurred while deleting the Connector. Make sure it is not used in "
|
||||
"any Watchlist"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:34
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:33
|
||||
#, javascript-format
|
||||
msgid "Connector ${ connectorName }"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:39
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:38
|
||||
msgid "Delete the Connector"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:40
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:39
|
||||
msgid "Are you sure to delete this Connector?"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:42
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:41
|
||||
#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:16
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:43
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:42
|
||||
#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:17
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:47
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:46
|
||||
#, javascript-format
|
||||
msgid "Creation date: ${ createdAt }"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:48
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:47
|
||||
#, javascript-format
|
||||
msgid "Used in: ${ watchlistCount } Watchlist"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:51
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:50
|
||||
msgid ""
|
||||
"You can stop using a connector at any time. To delete a connector, you must "
|
||||
"remove it from each linked Watchlist.\n"
|
||||
@ -407,7 +293,7 @@ msgid ""
|
||||
"withdrawal and were of the minimum age to consent to these conditions."
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:55
|
||||
#: assets/components/tracking/connector/ConnectorsList.tsx:54
|
||||
msgid "The Provider’s conditions are accessible by following this hyperlink."
|
||||
msgstr ""
|
||||
|
||||
@ -587,10 +473,19 @@ msgstr ""
|
||||
msgid "Add a Webhook"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/watchlist/WatchlistForm.tsx:275
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:52
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/watchlist/WatchlistForm.tsx:275
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: assets/components/tracking/watchlist/WatchlistForm.tsx:278
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: assets/pages/LoginPage.tsx:45
|
||||
msgid "Create an account"
|
||||
msgstr ""
|
||||
@ -733,6 +628,12 @@ msgstr ""
|
||||
msgid "Create a Watchlist"
|
||||
msgstr ""
|
||||
|
||||
#: assets/pages/UserPage.tsx:19
|
||||
#: assets/utils/providers/forms/NamecheapConnectorForm.tsx:28
|
||||
#: assets/utils/providers/forms/NamecomConnectorForm.tsx:32
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: assets/pages/UserPage.tsx:22
|
||||
msgid "Roles"
|
||||
msgstr ""
|
||||
@ -757,10 +658,6 @@ msgstr ""
|
||||
msgid "Billing"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/functions/rdapTranslation.ts:12
|
||||
msgid "Registrar"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/functions/rdapTranslation.ts:13
|
||||
msgid "Reseller"
|
||||
msgstr ""
|
||||
@ -1191,57 +1088,157 @@ msgstr ""
|
||||
msgid "An error occurred"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/index.tsx:14
|
||||
#: assets/utils/providers/index.tsx:39
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:27
|
||||
#: assets/utils/providers/forms/NamecomConnectorForm.tsx:27
|
||||
msgid ""
|
||||
"Retrieve a set of tokens from your customer account on the Provider's "
|
||||
"website"
|
||||
"This provider does not provide a list of supported TLD. Please double check "
|
||||
"if the domain you want to register is supported."
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/index.tsx:21
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:34
|
||||
msgid "AutoDNS Username"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:38
|
||||
msgid ""
|
||||
"Retrieve a Personal Access Token from your customer account on the "
|
||||
"Provider's website"
|
||||
"Attention: AutoDNS do not support 2-Factor Authentication on API Users for "
|
||||
"automated systems"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/index.tsx:27
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:45
|
||||
msgid "AutoDNS Password"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:53
|
||||
msgid "Owner nic-handle"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:57
|
||||
msgid "The nic-handle of the domain name owner"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:59
|
||||
msgid "You can get it from this page"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:69
|
||||
msgid "Context Value"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:73
|
||||
msgid "If you not sure, use the default value 4"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:82
|
||||
msgid "Owner confirmation"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/AutoDnsConnectorForm.tsx:89
|
||||
msgid "Owner confirms his consent of domain order jobs"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:13
|
||||
msgid "API Terms of Service"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:22
|
||||
msgid ""
|
||||
"Retreive an API key and whitelist this instance's IP address on Namecheap's "
|
||||
"website"
|
||||
"I have read and accepted the conditions of use of the Provider API, "
|
||||
"accessible from this hyperlink"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/index.tsx:33
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:28
|
||||
msgid "Legal age"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:34
|
||||
msgid "I am of the minimum age required to consent to these conditions"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:39
|
||||
msgid "Withdrawal period"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/DefaultConnectorFormItems.tsx:45
|
||||
msgid ""
|
||||
"Because of some limitations in API of AutoDNS, we suggest to create an "
|
||||
"dedicated user for API with limited rights"
|
||||
"I waive my right of withdrawal regarding the purchase of domain names via "
|
||||
"the Provider's API"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/ovh.tsx:5
|
||||
msgid "Application key"
|
||||
#: assets/utils/providers/forms/GandiConnectorForm.tsx:34
|
||||
msgid "Personal Access Token (PAT)"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/ovh.tsx:6
|
||||
msgid "Application secret"
|
||||
#: assets/utils/providers/forms/GandiConnectorForm.tsx:41
|
||||
msgid "Organization sharing ID"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/ovh.tsx:7
|
||||
msgid "Consumer key"
|
||||
#: assets/utils/providers/forms/GandiConnectorForm.tsx:45
|
||||
msgid "It indicates the organization that will pay for the ordered product"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/ovh.tsx:12
|
||||
#: assets/utils/providers/forms/NamecheapConnectorForm.tsx:34
|
||||
#: assets/utils/providers/forms/NamecomConnectorForm.tsx:38
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:21
|
||||
msgid "European Region"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/ovh.tsx:19
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:22
|
||||
msgid "United States Region"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:23
|
||||
msgid "Canada Region"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:28
|
||||
msgid "Europe"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/ovh.tsx:22
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:31
|
||||
msgid "The domain is free and at the standard price"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/ovh.tsx:25
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:34
|
||||
msgid ""
|
||||
"The domain is free but can be premium. Its price varies from one domain to "
|
||||
"another"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:48
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:72
|
||||
msgid "Application key"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:56
|
||||
msgid "Application secret"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:64
|
||||
msgid "Consumer key"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:80
|
||||
msgid "OVH Endpoint"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:87
|
||||
msgid "OVH subsidiary"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:95
|
||||
msgid "OVH pricing mode"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:100
|
||||
msgid "Confirm pricing mode"
|
||||
msgstr ""
|
||||
|
||||
#: assets/utils/providers/forms/OvhCloudConnectorForm.tsx:101
|
||||
msgid ""
|
||||
"Are you sure about this setting? This may result in additional charges from "
|
||||
"the API Provider"
|
||||
msgstr ""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user