HEX
Server: nginx/1.28.3
System: Linux ip-172-31-12-242 6.17.0-1007-aws #7~24.04.1-Ubuntu SMP Thu Jan 22 21:04:49 UTC 2026 x86_64
User: root (0)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/panel/BTPanel/static/js/apply-lest-ssl.js
import{c as Ae,Q as se,k as $,n as Pe,W as Oe,c_ as Fe,cP as Me,d3 as Ue,K as $e,f as He}from"./utils-lib.js?v=1777008528";import{c as qe,aI as We,H as ae,r as c,e as a,w as Je,o as je,I as ze,j as i,k as v,v as o,p as n,x as f,F as D,q as d,y as w,C as y,B as H,s as N,Q as le,J as Xe,aB as oe,L as Ge,ak as Qe,aj as Ke,ad as Ze,U as Ye,am as et,an as tt,ay as st,z as at,aA as lt,ab as ot,n as nt}from"./base-lib.js?v=1777008528";import{_ as rt}from"./index118.js?v=1777008528";import{validateDomain as ut,authDomainApi as it,setCertToSite as ct}from"./site.js?v=1777008528";import{q as mt,r as dt,t as pt,u as ft}from"./ssl.js?v=1777008528";import{u as _t}from"./useStore2.js?v=1777008528";import{u as vt}from"./useStore3.js?v=1777008528";import{g as yt}from"./useStore7.js?v=1777008528";import{d as gt,r as ht}from"./useMethod3.js?v=1777008528";import{M as q,N as W,O as bt}from"./useController8.js?v=1777008528";import{u as St}from"./useStore11.js?v=1777008528";import"./__commonjsHelpers__.js?v=1777008528";import"./index3.js?v=1777008528";import"./index119.js?v=1777008528";import"./index116.js?v=1777008528";import"./useController18.js?v=1777008528";import"./useController13.js?v=1777008528";import"./useController19.js?v=1777008528";import"./useMethod12.js?v=1777008528";import"./index192.js?v=1777008528";import"./useController20.js?v=1777008528";const xt={class:"py-[1.6rem] relative w-[90%] mx-[auto]"},kt={key:0},wt={class:"!max-h-[20rem] overflow-auto"},Ct=["title"],Lt={key:1},Dt={class:"!max-h-[20rem] overflow-auto"},Nt=["title"],Tt={class:"p-[1.5rem]"},Et={class:"ml-[.4rem] text-danger"},Vt={class:"max-h-[38rem] overflow-auto"},Bt={key:0,class:"flex justify-end"},ss=qe({__name:"apply-lest-ssl",emits:["close"],setup(It,{emit:ne}){const{encryptIsRefresh:re}=We(St()),{mainHeight:J}=Ae(),_=He(),ue=ne,{siteInfo:ie}=_t(),{setApplyInfo:ce,letApplyInfo:j}=vt(),{refs:{isRefreshDomainConfigList:R}}=yt(),s=ae({ca:"litessl",resource:"0",autoWildcard:!1,auth_to:!1,checkAll:!1,domain:[],checkList:[]}),A=c(!1);c([]);const me=c([]),g=ae({}),b=c(!1),de=[{content:"注意:请勿将SSL证书用于非法网站",class:"text-danger"},{content:"如开启后无法使用HTTPS访问,请检查安全组是否正确放行443端口"},{content:"在DNS验证中,我们提供了多种自动化DNS-API,并提供了手动模式"},{content:"使用DNS接口申请证书可自动续期,手动模式下证书到期后需重新申请"}],pe=c([{label:"解析域名",prop:"domain"},{label:"记录值",prop:"auth_value",render(t,e){const r=g.auth_type==="dns"?t.auth_value:t.file_path;return a("div",{class:"flex items-center"},[a("div",{class:"truncate w-[15rem]"},[r]),a("span",{class:"svgtofont-icon-copy ml-[4px] text-secondary text-medium w-[1.6rem] cursor-pointer",onClick:()=>se({value:r})},null)])}},{label:"类型",prop:"type",render:(t,e)=>g.auth_type==="dns"?a("span",null,[t.type]):a("div",{class:"flex items-center"},[a("div",{class:"truncate w-[15rem]"},[t.content]),a("span",{class:"svgtofont-icon-copy ml-[4px] text-secondary text-medium w-[1.6rem] cursor-pointer",onClick:()=>se({value:t.content})},null)])},{label:"必需",prop:"must",width:100}]),P=c([]),T=c(!1),fe=c(""),z=c([{text:"解析域名需要一定时间来生效,完成所以上所有解析操作后,请等待1分钟后再点击验证按钮"},{text:""},{text:"若您使用的是宝塔云解析插件,阿里云DNS,DnsPod作为DNS,可使用DNS接口自动解析"}]),_e=async()=>{const t=await q(),e=await $({request:ut({index:g.index}),message:!1});t._props.onCancel(),e.status===!0?(b.value=!1,X(e,!0)):W(e,me.value,g,s)},ve=async t=>{const e=await q(),{data:r}=await it({index:g.index,domain:t.domain});e._props.onCancel(),r.status==="valid"?_.success("验证成功"):r.status===!0?(b.value=!1,X(r,!0)):W(r,t.data,g)},X=async({index:t},e=!1,r=ie.value.name)=>{const p=await $({loading:"正在部署证书,请稍候...",request:ct({index:t,siteName:r}),message:!1,data:{status:Boolean,msg:String}});bt(p,e)},S=c([]),C=c(""),O=c([]),G=c(null),L=c([]),Q=c(!0),x=c(""),E=c(!1),F=async(t=!1)=>{let e;try{let r={site_id:s.resource==="1"?S.value.join(","):C.value};A.value=!0,e=_.load("正在获取域名列表,请稍后...");const{data:p}=await pt(r);if(s.domain=p.map(m=>m.name),O.value=p,s.resource==="1"){const m=s.checkList.filter(u=>S.value.includes(u.site_id));await nt(),m.forEach(u=>{const h=O.value.find(M=>M.name===u.name);h&&G.value.toggleRowSelection(h,!0)})}}catch(r){}finally{e&&e.close(),A.value=!1}},ye=async()=>{let t;try{t=_.load("正在获取站点列表,请稍后...");const{data:e}=await ft();e.length&&(L.value=e,Q.value&&(S.value[0]=e[0].id,C.value=e[0].id,Q.value=!1),await F())}catch(e){}finally{t&&t.close()}},ge=t=>!(s.resource==="1"&&V(t.name)),he=({row:t})=>{if(!t.name.includes(x.value)&&E.value)return"!hidden"},be=t=>{s.resource==="1"&&t.some(e=>V(e.name))&&(_.error("IP类型域名仅支持文件验证"),s.resource="0"),s.checkList=t},Se=t=>{s.resource==="1"&&t.some(e=>V(e.name))&&(_.error("IP类型域名仅支持文件验证"),s.resource="0"),s.checkList=t},K=async()=>{await F()},V=t=>/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(t),Z=async t=>{s.resource==="1"?S.value=t:C.value=t,await F()},xe=t=>{E.value=!0,x.value=t},ke=()=>{E.value=!0},we=()=>{x.value="",E.value=!1},Ce=t=>t.some(e=>e.status===0),B=t=>t.map(e=>e.name),Le=async()=>{if(s.checkList.length===0){_.error("请选择一个域名");return}if(s.resource==="1"&&Ce(s.checkList)&&!s.auth_to){_.error("选中的域名存在未设置DNS接口配置");return}if(s.resource==="1"&&s.autoWildcard&&s.checkList.some(e=>e.name.indexOf("*")!==-1)){_.error("开启自动组合泛域名时不能选择泛域名");return}let t={ca:s.ca,domains:JSON.stringify(B(s.checkList)),auth_type:s.resource=="1"?"dns":"http",auth_to:JSON.stringify(B(s.checkList)),auto_wildcard:s.autoWildcard?"1":"0"};s.resource=="1"&&(t.auth_to=s.auth_to?"dns":JSON.stringify(B(s.checkList)));try{const e=await q(),r=await mt(t);e._props.onCancel(),r.status&&(ue("close"),re.value=!0),De(r.data,t),z.value[1].text="可通过CMD命令来手动验证域名解析是否生效: nslookup -q=txt _acme-challenge.".concat(B(s.checkList)[0].replace("*.",""))}catch(e){}},De=(t,e)=>{if(t.status===!1&&t.hasOwnProperty("msg")&&Pe(t.msg)){_.msg({customClass:"bt-message-error-html",dangerouslyUseHTMLString:!0,message:t.msg,type:"error",showClose:!0,duration:0});return}if(t.status===!0||t.status==="pending"||(t==null?void 0:t.save_path)!==void 0){if(t.status==="pending"&&e.auth_type==="dns"){P.value=[];for(let r=0;r<t.auths.length;r++){let p=[];const m=t.auths[r].domain.replace("*.","");p.push({domain:"_acme-challenge.".concat(m),type:"TXT",auth_value:t.auths[r].auth_value,must:"是",force:"是"}),p.push({domain:m,type:"CAA",auth_value:'0 issue "letsencrypt.org"',must:"否",force:"否"}),P.value.push({domain:t.auths[r].domain,data:p})}t.hasOwnProperty("error")?T.value=t.error:T.value=!1,ce(t,e),b.value=!0;return}Ne(t);return}W(t,j.value.dnsTable,j.value.info,e)},Ne=async t=>{let e;try{e=_.load("正在部署证书,请稍后...");let r=[];s.resource==="1"?r=S.value.map(u=>L.value.find(h=>h.id===u)).filter(u=>u).map(u=>({siteName:u.name})):r=[{siteName:L.value.find(u=>u.id===C.value).name}];const p=await $({request:dt({BatchInfo:JSON.stringify(r),privkey:t.private_key,fullchain:t.cert+t.root})});let m={resultData:[...p.data.faildList,...p.data.successList],resultTitle:"部署结果",resultColumn:[{label:"站点名称",prop:"siteName"},{label:"操作结果",render:u=>a("div",{class:u.status?"text-primary":"text-danger"},[u.status?"操作成功":a("span",{class:"flex items-center"},[f("操作失败,"),a(oe,{popperClass:"el-popover-shadow el-light-popover",trigger:"hover",placement:"top-start",enterable:!1,"open-delay":400,"close-delay":0},{default:()=>[a("span",{class:"inline-block",innerHTML:u.error_msg||"暂无详情"},null)],reference:()=>a("span",{class:"text-primary cursor-pointer"},[f("详情")])})])])}]};await ht(m)}catch(r){}finally{e&&e.close()}};return Je(R,t=>{t&&(ye(),R.value=!1)},{immediate:!0}),je(()=>{R.value=!0}),(t,e)=>{const r=Qe,p=Ke,m=Ze,u=Ye,h=et,M=Oe,Te=tt,Ee=Fe,U=st,I=at,Ve=lt,Y=rt,Be=ot,ee=Me,Ie=Ue,Re=$e,te=ze("bt-loading");return i(),v("div",xt,[a(Be,{class:"mb-[2rem]"},{default:o(()=>[a(m,{label:"品牌"},{default:o(()=>[a(p,{modelValue:n(s).ca,"onUpdate:modelValue":e[0]||(e[0]=l=>n(s).ca=l),onChange:K},{default:o(()=>[a(r,{label:"LiteSSL",value:"litessl"},{default:o(()=>[...e[6]||(e[6]=[f("LiteSSL",-1)])]),_:1}),a(r,{label:"Let's Encrypt",value:"letsencrypt"},{default:o(()=>[...e[7]||(e[7]=[f("Let's Encrypt",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(m,{label:"验证方法"},{default:o(()=>[a(p,{modelValue:n(s).resource,"onUpdate:modelValue":e[1]||(e[1]=l=>n(s).resource=l),onChange:K},{default:o(()=>[a(r,{label:"0",value:"0"},{default:o(()=>[...e[8]||(e[8]=[f("文件验证",-1)])]),_:1}),a(r,{label:"1",value:"1"},{default:o(()=>[...e[9]||(e[9]=[f("DNS验证(支持通配符)",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),n(s).resource=="1"?(i(),v(D,{key:0},[a(m,{label:" ",class:"!mt-[-.3rem]"},{default:o(()=>[a(u,{modelValue:n(s).auth_to,"onUpdate:modelValue":e[2]||(e[2]=l=>n(s).auth_to=l)},{default:o(()=>[...e[10]||(e[10]=[f(" 手动解析",-1)])]),_:1},8,["modelValue"])]),_:1}),a(m,{label:" ",class:"!mt-[-.3rem] !mb-[2rem]"},{default:o(()=>[a(u,{modelValue:n(s).autoWildcard,"onUpdate:modelValue":e[3]||(e[3]=l=>n(s).autoWildcard=l)},{default:o(()=>[...e[11]||(e[11]=[f(" 自动组合泛域名",-1)])]),_:1},8,["modelValue"]),e[12]||(e[12]=d("div",{class:"text-small"},"* 如需申请通配符域名请勾选此项,且不要在下方域名列表中选中泛域名",-1))]),_:1})],64)):w("",!0),a(m,{label:"网站"},{default:o(()=>[d("div",null,[n(s).resource=="1"?(i(),v("div",kt,[(i(),y(M,{multiple:!0,filterable:"","model-value":n(S),class:"mr-[.8rem] !w-[22rem] max-h-[100px] overflow-auto",key:n(s).resource,onChange:Z},{default:o(()=>[d("div",wt,[(i(!0),v(D,null,H(n(L),(l,k)=>(i(),y(h,{key:k,label:l.name,value:l.id},{default:o(()=>[d("span",{class:"!w-[22rem] truncate",title:l.name,style:{float:"left"}},N(l.name),9,Ct)]),_:2},1032,["label","value"]))),128))])]),_:1},8,["model-value"]))])):(i(),v("div",Lt,[(i(),y(Te,{filterable:"","model-value":n(C),class:"mr-[.8rem] !w-[22rem]",key:n(s).resource,onChange:Z},{default:o(()=>[d("div",Dt,[(i(!0),v(D,null,H(n(L),(l,k)=>(i(),y(h,{key:k,label:l.name,value:l.id},{default:o(()=>[d("span",{class:"!w-[22rem] truncate",title:l.name,style:{float:"left"}},N(l.name),9,Nt)]),_:2},1032,["label","value"]))),128))])]),_:1},8,["model-value"]))])),e[13]||(e[13]=d("div",{class:"text-small mt-[.5rem]"},"* 根据网站筛选下方域名",-1))])]),_:1}),a(m,{label:"域名"},{default:o(()=>[d("div",{class:Ge(["w-[60rem] !relative border-[1px] border-light",n(J)>1e3?"max-h-[52rem]":"max-h-[31rem]"])},[a(Ee,{class:"!absolute right-[1rem] top-[.7rem] z-99 !w-[200px]",modelValue:n(x),"onUpdate:modelValue":e[4]||(e[4]=l=>le(x)?x.value=l:null),onSearch:xe,onClear:we,onBlur:ke,placeholder:"搜索域名"},null,8,["modelValue"]),a(Y,null,{content:o(()=>[Xe((i(),y(Ve,{ref_key:"domainTable",ref:G,class:"!mb-[1rem] mt-[-1.2rem]","row-class-name":he,onSelectionChange:be,onSelectAll:Se,data:n(O),"max-height":n(J)<1e3?290:500,description:"列表为空"},{default:o(()=>[a(U,{type:"selection",selectable:ge,width:"35"}),a(U,{prop:"name",label:"域名"},{default:o(l=>[l.row.apply_ssl?(i(),y(n(oe),{key:0,placement:"top-start",trigger:"hover",offset:-100},{reference:o(()=>[d("span",null,N(l.row.name),1)]),default:o(()=>[e[14]||(e[14]=d("div",{class:"flex flex-col"},[d("span",null,"Let's Encrypt证书不支持申请IP证书"),d("span",null,"请选择【商用证书】的多域名SSL证书申请")],-1))]),_:2},1024)):w("",!0)]),_:1}),a(U,{align:"right"},{default:o(l=>[n(s).resource==="1"&&l.row.status===0&&!n(s).auth_to&&!V(l.row.name)?(i(),y(I,{key:0,size:"small",type:"primary",class:"ml-auto",onClick:k=>n(gt)(l.row)},{default:o(()=>[...e[15]||(e[15]=[f("配置DNS",-1)])]),_:1},8,["onClick"])):w("",!0)]),_:1})]),_:1},8,["data","max-height"])),[[te,n(A)],[te,"正在加载域名列表,请稍后...","title"]])]),_:1})],2)]),_:1}),a(m,{label:" "},{default:o(()=>[a(I,{type:"primary",onClick:Le},{default:o(()=>[...e[16]||(e[16]=[f("申请证书",-1)])]),_:1})]),_:1})]),_:1}),a(ee,{options:de,class:"pl-2rem"}),a(Re,{modelValue:n(b),"onUpdate:modelValue":e[5]||(e[5]=l=>le(b)?b.value=l:null),area:70,title:"手动".concat(n(g).auth_type==="dns"?"解析TXT记录":"创建验证文件")},{default:o(()=>[d("div",Tt,[e[19]||(e[19]=f(" 请按以下列表做TXT解析: ",-1)),d("span",Et,N(n(fe)),1),a(Y,null,{content:o(()=>[d("div",Vt,[(i(!0),v(D,null,H(n(P),(l,k)=>(i(),v(D,null,[l.data.length?(i(),v("div",{key:k},[d("span",null,"验证域名:"+N(l.domain),1),a(Ie,{class:"my-[1rem]",column:n(pe),data:l.data},null,8,["column","data"]),n(T)?(i(),v("div",Bt,[a(I,{type:"default",onClick:Rt=>ve(l)},{default:o(()=>[...e[17]||(e[17]=[f("验证",-1)])]),_:1},8,["onClick"])])):w("",!0)])):w("",!0)],64))),256))])]),"footer-right":o(()=>[n(T)?w("",!0):(i(),y(I,{key:0,type:"default",onClick:_e},{default:o(()=>[...e[18]||(e[18]=[f("验证",-1)])]),_:1}))]),_:1}),a(ee,{list:n(z),listStyle:"disc",class:"ml-[20px]"},null,8,["list"])])]),_:1},8,["modelValue","title"])])}}});export{ss as default};