DnsApi-U4yCaDJr.js 7.6 KB

1
  1. import{a as e,n as t}from"./react-dom-stZKkA6x.js";import{a as n,d as r,r as i}from"./theme-DjPzgo6g.js";import{G as a,i as o,kt as s,n as c,st as l,t as u}from"./jsx-runtime-dm82oUI8.js";import{o as d}from"./grid-BmaFEMOO.js";import{t as f}from"./table-CSW7F8Qw.js";import{n as p,r as m,t as h}from"./StatusPill-IFsKXy8H.js";import{t as g}from"./input-number-5vwSxUlw.js";import{t as _}from"./descriptions-vs1os_w7.js";import{t as v}from"./form-CvEcrSb3.js";import{t as y}from"./input-0_Xo22Fl.js";import{t as b}from"./popconfirm-BStiKU4v.js";import{t as x}from"./DeleteOutlined-B1WEjJYP.js";import{t as S}from"./EditOutlined-_SvZHznu.js";import{t as C}from"./PlusOutlined-DWXMp6Ds.js";import{t as w}from"./ReloadOutlined-C3S2BDne.js";import{t as T}from"./ThunderboltOutlined-CbXdMhP9.js";import{b as E}from"./index-BCIgegZI.js";import{t as D}from"./EmptyState-rI31ioMm.js";var O=e(t(),1),k=u();function A(){let{message:e}=r.useApp(),{t}=n(),[u]=v.useForm(),[A,N]=(0,O.useState)([]),[P,F]=(0,O.useState)(!0),[I,L]=(0,O.useState)(``),[R,z]=(0,O.useState)(``),[B,V]=(0,O.useState)(!1),[H,U]=(0,O.useState)(null),[W,G]=(0,O.useState)(null),K=v.useWatch(`provider`,u)||`cloudflare`,q=(0,O.useCallback)(async()=>{F(!0),L(``);try{let e=await i.dnsCredentials();N(e.credentials||[])}catch(e){L(e instanceof Error?e.message:t(`common.error`))}finally{F(!1)}},[t]);(0,O.useEffect)(()=>{q()},[q]);function J(){U(null),u.resetFields(),u.setFieldsValue({provider:`cloudflare`,defaultTtl:600}),V(!0)}function Y(e){U(e),u.resetFields(),u.setFieldsValue({name:e.name,provider:e.provider,zoneName:e.zoneName,defaultTtl:e.defaultTtl}),V(!0)}async function X(){let n=await u.validateFields(),r=H?`save:${H.id}`:`create`;z(r);try{await i.saveDnsCredential(n,H?.id),e.success(t(H?`actions.dnsApiUpdated`:`actions.dnsApiCreated`)),V(!1),U(null),u.resetFields(),await q()}catch(n){e.error(n instanceof Error?n.message:t(`common.error`))}finally{z(``)}}async function Z(n){z(`test:${n.id}`);try{let r=await i.testDnsCredential(n.id);r.ok?e.success(r.detail||t(`actions.dnsApiTestCompleted`)):e.error(r.error||t(`common.error`))}catch(n){e.error(n instanceof Error?n.message:t(`common.error`))}finally{z(``)}}async function Q(n){z(`delete:${n.id}`);try{await i.deleteDnsCredential(n.id),e.success(t(`actions.dnsApiDeleted`)),W?.id===n.id&&G(null),await q()}catch(n){e.error(n instanceof Error?n.message:t(`common.error`))}finally{z(``)}}let $=[{title:t(`tokens.name`),dataIndex:`name`,render:e=>(0,k.jsx)(c.Text,{strong:!0,children:e})},{title:`Provider`,dataIndex:`provider`,render:M},{title:t(`dnsApi.zone`),dataIndex:`zoneName`,render:e=>(0,k.jsx)(c.Text,{code:!0,children:e})},{title:`TTL`,dataIndex:`defaultTtl`,width:100},{title:t(`common.status`),dataIndex:`credentialSet`,width:140,render:e=>(0,k.jsx)(h,{tone:e===!1?`warning`:`success`,children:t(e===!1?`common.notConfigured`:`smtp.passwordSet`)})},{title:t(`tokens.createdAt`),dataIndex:`updatedAt`,width:190,render:e=>e?new Date(e).toLocaleString():`—`},{title:t(`common.actions`),width:220,render:(e,n)=>(0,k.jsxs)(o,{onClick:e=>e.stopPropagation(),children:[(0,k.jsx)(s,{"aria-label":`${t(`domains.test`)} ${n.name}`,icon:(0,k.jsx)(T,{}),loading:R===`test:${n.id}`,onClick:()=>void Z(n),children:t(`domains.test`)}),(0,k.jsx)(s,{"aria-label":`${t(`common.edit`)} ${n.name}`,icon:(0,k.jsx)(S,{}),onClick:()=>Y(n)}),(0,k.jsx)(b,{title:t(`tokens.deleteConfirm`),onConfirm:()=>void Q(n),children:(0,k.jsx)(s,{"aria-label":`${t(`common.delete`)} ${n.name}`,danger:!0,icon:(0,k.jsx)(x,{}),loading:R===`delete:${n.id}`})})]})}];return(0,k.jsxs)(o,{direction:`vertical`,size:20,className:`full-width`,children:[(0,k.jsx)(m,{title:t(`dnsApi.title`),subtitle:t(`dnsApi.secretHint`),extra:(0,k.jsx)(s,{type:`primary`,icon:(0,k.jsx)(C,{}),onClick:J,style:{minHeight:44},children:t(`dnsApi.create`)})}),I?(0,k.jsx)(d,{type:`error`,showIcon:!0,message:I,action:(0,k.jsx)(s,{icon:(0,k.jsx)(w,{}),onClick:()=>void q(),children:t(`common.refresh`)})}):null,(0,k.jsx)(p,{title:t(`dnsApi.title`),extra:(0,k.jsx)(h,{tone:`neutral`,children:A.length}),children:P?(0,k.jsx)(l,{active:!0,paragraph:{rows:5}}):A.length?(0,k.jsx)(f,{rowKey:`id`,columns:$,dataSource:A,scroll:{x:940},onRow:e=>({onClick:()=>G(e),style:{cursor:`pointer`},tabIndex:0,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&G(e)}})}):(0,k.jsx)(D,{description:t(`dnsApi.secretHint`),action:(0,k.jsx)(s,{icon:(0,k.jsx)(C,{}),onClick:J,children:t(`dnsApi.create`)})})}),(0,k.jsxs)(E,{title:H?`${t(`dnsApi.editTitle`)} ${H.name}`:t(`dnsApi.createTitle`),width:560,open:B,onClose:()=>V(!1),destroyOnHidden:!0,footer:(0,k.jsxs)(o,{style:{display:`flex`,justifyContent:`flex-end`},children:[(0,k.jsx)(s,{onClick:()=>V(!1),children:t(`common.cancel`)}),(0,k.jsx)(s,{type:`primary`,loading:R===`create`||R.startsWith(`save:`),onClick:()=>void X(),children:t(H?`dnsApi.save`:`dnsApi.create`)})]}),children:[(0,k.jsx)(d,{type:`info`,showIcon:!0,message:t(`dnsApi.secretHint`),style:{marginBottom:20}}),(0,k.jsxs)(v,{form:u,layout:`vertical`,initialValues:{provider:`cloudflare`,defaultTtl:600},children:[(0,k.jsx)(v.Item,{name:`name`,label:t(`tokens.name`),rules:[{required:!0,message:t(`tokens.nameRequired`)}],children:(0,k.jsx)(y,{placeholder:`Primary Cloudflare`})}),(0,k.jsx)(v.Item,{name:`provider`,label:`Provider`,rules:[{required:!0}],children:(0,k.jsx)(a,{options:j})}),(0,k.jsx)(v.Item,{name:`zoneName`,label:t(`dnsApi.zone`),rules:[{required:!0,message:t(`dnsApi.zoneRequired`)}],extra:t(K===`cloudflare`?`dnsApi.cloudflareZoneExtra`:`dnsApi.zoneExtra`),children:(0,k.jsx)(y,{placeholder:`example.com`})}),(0,k.jsx)(v.Item,{name:`defaultTtl`,label:`TTL`,children:(0,k.jsx)(g,{min:60,max:86400,className:`full-width`})}),K===`cloudflare`?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(v.Item,{name:`apiToken`,label:`Cloudflare API Token`,extra:t(H?`dnsApi.keepSecret`:`dnsApi.tokenExtra`),children:(0,k.jsx)(y.Password,{autoComplete:`new-password`})}),(0,k.jsx)(v.Item,{name:`zoneId`,label:`Cloudflare Zone ID`,children:(0,k.jsx)(y,{autoComplete:`off`})})]}):null,K===`aliyun`?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(v.Item,{name:`accessKeyId`,label:`AccessKeyId`,extra:H?t(`dnsApi.keepSecret`):void 0,children:(0,k.jsx)(y,{autoComplete:`off`})}),(0,k.jsx)(v.Item,{name:`accessKeySecret`,label:`AccessKeySecret`,extra:H?t(`dnsApi.keepSecret`):void 0,children:(0,k.jsx)(y.Password,{autoComplete:`new-password`})})]}):null,K===`dnspod`?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(v.Item,{name:`secretId`,label:`SecretId`,extra:H?t(`dnsApi.keepSecret`):void 0,children:(0,k.jsx)(y,{autoComplete:`off`})}),(0,k.jsx)(v.Item,{name:`secretKey`,label:`SecretKey`,extra:H?t(`dnsApi.keepSecret`):void 0,children:(0,k.jsx)(y.Password,{autoComplete:`new-password`})})]}):null]})]}),(0,k.jsx)(E,{title:W?.name,width:480,open:!!W,onClose:()=>G(null),children:W?(0,k.jsxs)(_,{bordered:!0,column:1,size:`small`,children:[(0,k.jsx)(_.Item,{label:`Provider`,children:M(W.provider)}),(0,k.jsx)(_.Item,{label:t(`dnsApi.zone`),children:(0,k.jsx)(c.Text,{code:!0,children:W.zoneName})}),(0,k.jsx)(_.Item,{label:`TTL`,children:W.defaultTtl}),(0,k.jsx)(_.Item,{label:t(`common.status`),children:(0,k.jsx)(h,{tone:W.credentialSet===!1?`warning`:`success`,children:W.credentialSet===!1?t(`common.notConfigured`):t(`smtp.passwordSet`)})}),(0,k.jsx)(_.Item,{label:t(`tokens.createdAt`),children:new Date(W.createdAt).toLocaleString()})]}):null})]})}var j=[{value:`cloudflare`,label:`Cloudflare`},{value:`aliyun`,label:`Aliyun DNS`},{value:`dnspod`,label:`Tencent DNSPod`}];function M(e){return{cloudflare:(0,k.jsx)(h,{tone:`info`,children:`Cloudflare`}),aliyun:(0,k.jsx)(h,{tone:`warning`,children:`Aliyun DNS`}),dnspod:(0,k.jsx)(h,{tone:`neutral`,children:`Tencent DNSPod`})}[e]||(0,k.jsx)(h,{tone:`neutral`,children:e})}export{A as default};