@@ -124,11 +203,24 @@ const StatusTable = (props: { value: string }) => {
>
}
-const Apply = (props: any) => {
- const { styles, cx } = useStyle()
+const domainsAtom = atomWithStorage
('domains', '')
+
+
+const Apply = ( ) => {
+ const { styles } = useStyle()
const [ form ] = Form.useForm()
- const { mutate: saveOrUpdate, isPending: isSubmitting, isSuccess } = useAtomValue(saveOrUpdateCertAtom)
- const [ domains, setDomains ] = useState('')
+ const { mutate: saveOrUpdate, isPending: isSubmitting } = useAtomValue(saveOrUpdateCertAtom)
+ const [ domains, setDomains ] = useAtom(domainsAtom)
+ const dnsVerifyOK = useAtomValue(dnsVerifyOKAtom)
+
+ useEffect(() => {
+
+ if (domains) {
+ form.setFieldsValue({
+ domains
+ })
+ }
+ }, [ domains ])
return (
{
onValuesChange={(values) => {
// console.log('onValuesChange', values)
if (values.domains) {
- setDomains(values.domains)
+ // setDomains(values.domains)
}
}}
onFinish={async (values) => {
- console.log(values)
- saveOrUpdate(values)
+ if (dnsVerifyOK) {
+ saveOrUpdate(values)
+ }
}}
>
{
placeholder={`请输入域名,每行一个,支持泛解析域名;如:
*.google.com
*.a.baidu.com
- hello.alibaba.com`}/>
+ hello.alibaba.com`}
+ onBlur={(e) => {
+ setDomains(e.target.value)
+ }}
+ />
{
-
+
diff --git a/src/service/websites.ts b/src/service/websites.ts
index 703da75..c57bed8 100644
--- a/src/service/websites.ts
+++ b/src/service/websites.ts
@@ -8,63 +8,6 @@ import { IWebsiteDnsAccount } from '@/types/website/dns_account'
const websitesServ = {
cert: {
...createCURD('/website/cert'),
- list: async (params?: any) => {
- console.log(params)
- return Promise.resolve({
- 'code': 0,
- 'msg': 'success',
- 'data': {
- 'total': 3,
- 'rows': [
- {
- 'id': 10266,
- 'brand': 'ZeroSSL',
- 'domains': '*.aa.com,*.abc.com,aa.com,abc.com',
- 'type': 4,
- 'level': 1,
- 'status': 3,
- 'createTime': '2024-06-29 14:36:02',
- 'remark': '',
- 'algorithm': 'ECC',
- 'fromType': 2
- },
- {
- 'id': 10265,
- 'brand': 'ZeroSSL',
- 'domains': '*.aa.com,*.abc.com,aa.com,abc.com',
- 'type': 4,
- 'level': 1,
- 'status': 3,
- 'createTime': '2024-06-29 14:35:58',
- 'remark': '',
- 'algorithm': 'ECC',
- 'fromType': 2
- },
- {
- 'id': 10261,
- 'brand': 'Google',
- 'domains': '*.3456.world,3456.world',
- 'type': 3,
- 'level': 1,
- 'status': 1,
- 'createTime': '2024-06-29 14:17:46',
- 'notAfter': '2024-09-27 13:18:31',
- 'notBefore': '2024-06-29 13:18:32',
- 'version': 3,
- 'sigAlgName': 'SHA256withRSA',
- 'remark': '3456.world',
- 'name': '*.3456.world',
- 'lifeTime': 90,
- 'remainingTime': 82,
- 'algorithm': 'RSA',
- 'bit': 2048,
- 'fromType': 2
- }
- ]
- },
- })
- // return request.post('/website/cert/list', params)
- },
//dns_config
dnsConfig: async (params: any) => {
return request.post('/website/cert/dns_config', params)
diff --git a/src/store/websites/cert.ts b/src/store/websites/cert.ts
index 6cf7b55..9e1ff01 100644
--- a/src/store/websites/cert.ts
+++ b/src/store/websites/cert.ts
@@ -72,7 +72,7 @@ export const saveOrUpdateCertAtom = atomWithMutation((
mutationKey: [ 'updateCert' ],
mutationFn: async (data) => {
//data.status = data.status ? '1' : '0'
- if ( data.id) {
+ if (data.id) {
return await websitesServ.cert.update(data)
}
return await websitesServ.cert.add(data)
@@ -107,26 +107,54 @@ export const deleteCertAtom = atomWithMutation((get) => {
})
//dnsConfig
-export const dnsConfigAtom = (domains: string[] | string) => atomWithQuery(() => {
- if (typeof domains === 'string') {
- domains = domains.split('\n').filter(Boolean)
- }
+export const dnsConfigAtom = (domains: string) => atomWithQuery(() => {
return {
- enabled: domains.length > 0,
+ enabled: domains.length > 0 && domains.includes('.'),
queryKey: [ 'dnsConfig', domains ],
queryFn: async ({ queryKey: [ , domains ] }) => {
- if ((domains as string[]).length === 0){
+ if ((domains as string).length === 0) {
return Promise.reject({
data: []
})
}
- return await websitesServ.cert.dnsConfig({ dns_full_list: (domains as string[]).filter(Boolean), parse: true })
+ return await websitesServ.cert.dnsConfig({
+ dns_full_list: domains,
+ parse: (domains as string)?.includes('*')
+ })
},
select: res => {
return res.data
}
}
})
+
+export const dnsVerifyOKAtom = atom(false)
+
+//query dnsVerify
+export const dnsVerifyAtom = (domains: string, block: boolean) => atomWithQuery(() => {
+
+ return {
+ enabled: !block && domains.length > 0 && domains.includes('.'),
+ queryKey: [ 'dnsVerify', domains ],
+ queryFn: async ({ queryKey: [ , domains ] }) => {
+
+ if ((domains as string).length === 0) {
+ return Promise.reject({
+ data: []
+ })
+ }
+
+ return await websitesServ.cert.dnsVerify({
+ dns_list: domains,
+ })
+ },
+ select: res => {
+ return res.data?.dns_list
+ }
+ }
+})
+
+