From 41d9c3ac8398def541e65351cbe920d4a927182d Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Oct 2024 16:21:35 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=80=9F=E5=BA=A6=E5=92=8C=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E7=8E=87=EF=BC=8C=E5=8F=8D=E4=BB=A3=E5=9C=B0=E5=9D=80=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8Cgoogle=E5=9F=BA=E6=9C=AC=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=A8=B3=E5=AE=9A=E8=AF=B7=E6=B1=82=E3=80=82=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E9=87=8D=E8=AF=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/guide/use/rerun/images/rerun.png | Bin 0 -> 10792 bytes docs/guide/use/rerun/index.md | 5 +++ packages/core/acme-client/src/auto.js | 40 +++++++++++++++--- packages/core/acme-client/src/client.js | 1 + packages/core/acme-client/src/logger.js | 6 +-- packages/core/acme-client/types/index.d.ts | 1 + .../src/plugin/cert-plugin/acme.ts | 14 +++--- .../certd-client/src/router/source/header.ts | 5 ++- .../ui/certd-client/src/style/common.less | 3 ++ .../views/certd/pipeline/pipeline/index.vue | 5 ++- .../plugins/plugin-cloudflare/dns-provider.ts | 4 ++ 11 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 docs/guide/use/rerun/images/rerun.png create mode 100644 docs/guide/use/rerun/index.md diff --git a/docs/guide/use/rerun/images/rerun.png b/docs/guide/use/rerun/images/rerun.png new file mode 100644 index 0000000000000000000000000000000000000000..41f85302167f81faecc63f3c1d3535d2ddedf3fd GIT binary patch literal 10792 zcmZ8{by$>N(6)k#NC{HXB?wB#0!z12A|)j#t-#W;lyonhOGr0J$cnHawWP4b(kv3v z>=H}YhrjoI|M~uTu5(@IJoDVo%$YOy%$%qv_N5&GAjpN9ABIM)b~le`i#<;5Zjns$cO47neuBDtYU*HpwAe z2+;lH3KD8|!3^a*jl+|{#Hp-Uvc>;NPDi@4;W@?*C?=LlQBo<9Q*AuBm!Ds}Nh5+p z@_*fYV0?UqIhym$S-h_PeloK@s(G?`RBq-xJp1|PSZ4iF<^p!SlFfJc@ka(t9*`l7 zRhNfR$X^}rjBUJQaY*Q?Q0-T#f-W6OtE6JNl7mR)wr`YuFm2YOG$Lz7#9+)_Rc~>a-<)WSO`3* zypkyB&=)_kq^87~K$01`FJP`habVrezDP&!ZHN#5J0{q7N5|CPlTvH4lP_5)yiA<^ z&Kcgv1duA_($`uT@#B!#?!H$$hmg@|jWF+|XX)inLn!TN*#XiI&Qt`dNYnc7h*@!j zi#}Hk=!|xQj7DhSg=wTe4^!t8rAzCJYhpE*V(;kK0S{WR63X*Gul(D)?cANP;}g6p zWJFT*s*9p|^ud93gq4Rt3|c6cjnxiZc|mf{P#k<|cX9Ezmsv4*-6d%-MKnQ(M0j+bAR!-h za7ZixC4xhi;x2ztB$hv>SZ~(&?njbtKtjJ7u9C?AHZeKG6K<^*MqDny?ppV^m!8e7 zTkuiBtH*2{*m$rLW6j`%ULOa9t%vSGpJptZd9Fem`J-!3LW1!vUd7p9HU=h3tgFkr zHYj_1RyBH_XC{NmnBj)>8Nu2^RD7^js*jSErj! zxavJdJJ@v54=0Oar(a2=w`DQ6cu#7KOViQqRep2E#t`-e$8%HQph3o)n_bwawpyIA zJbT1(FT4^N5)0qWyX1b_rthZ=May5TyYcW}I&o^^j|>-V9tPgb^q7G1HxJ9>btn!f z!{#3Px?J=ML7!f4+3_maY>Tbq)>iaQPxP_aHYnP;*+u76oxR}ttjOif7H{D!;+&0- z1V4MOhpUuW_*EfbjM2ZFa;k=l72iRgT>_-v6JxM*P=>a-bpCm|!YtOD)`|3MZfH6__%w~(egFCDzmjbM(H;n>EqiDK$Zh zh2-V0j`|QC8Da6q*0O~)HBNa24Gp^89+YYQ9GOlYBZ)435LVA{>Cu;aa&fltHM(vTKqb^A<%iU4O z2`jzv%s|hbjnP88bR9-z`HQE3O>o&~$~*ys?&Z^|?67`tXqCDF7+yybZk!kuj3i>k zt4lf4_99YNuvS z{o>)}U~(&P6<0#ypE@q!e|^>7trS06Ltpn&dh!YN*+yZ!`#t2v7M?r(DKlUXVReeg zxCQJcPza07;^W)c-A(<6Z!nE&99^&h-y=(utlAcyfZ+`8-(5)Sxt zTh6fOH)p*fITz`9dz%vlG~B!+H+g}rdxhITDD=7gD|=cwcPt^(5R}K1~@U>c-)5eI;!mGxgMmkJn&cqcu{cXsr|E-C?ctPrb z{bY|BD1ohYwqH{w&unndiC!CLpfi6~&zI!fr#oXaI7K`x3c3%Z-QX>xbMdf?u2f`} zd0Fc$e$d_c{KG&+M7lBPZI*Vf4ty}RYjVr%349NtTWTdsWnF>q<31s^o-FOi2~d zX>wZS_TvRZwh32_6T&KGc`~g5<+k^@5R(EP|JJIVlNK{h&-e!2zl#IYU~a=fBvcfq zBRXG-tgfyWDq@#C825E*im@epa(|Re{O_on>)QAa&A*m+NzG&4vBTNu4!2*C3}1lG z=h|+rWbHfqE-%S$(84&(td85;%{U{0?9w{g>||qH#sy)rU=5-@SJE5N?ml~Yxgfi~ zAO%HFEb10RVMJ2j6-POtd%roOm%l25WO)9#97X0Wzuj0{vw1p}$V@ow9Ev7PIO~^o znSU{nbsf6MM=g?fpjm9`>Ti{MJ=FZZbzWROzVxs8P8s;Y{mX9XXZx*8;W?tC2aLWl z5+_*M?VRK8Oxs*cj>P>2i&~~2XfIj;l<~?Vm2+d^ru$xFo>9xA)XDfXP0+-rtxYNu z>_>?V15kj-h!_2T#(4j$4xrL*%<+4k7XEqKtoU65!4x`6CZ^OBi+p^cXUTvUX;%dB zh!JBlYj`A~vf^g7(0{azjAZ>8NPTs>-!^x1b}5Tio9h3=YeV9P1%mJRt)-?XAB7KH ze>ubC6&l32{HW=7W+MHp+>`0{Qj5HmbreWOFj$YE%Acd8{8?Q5jJ1&+pdm=X$;z9_ zO&m4eA{CJF#pnb=#I&LNw2e-D4@;EY}60b&=bD3k=RnI{erMajV3E7N!m=gD% zmlMviQC*+^2r$ICCsqw2TWoJ+T>0I081WA4Sgy7s^w*be4U&)tffJ2FiKdP82pYCE zU8)Q5LY+Q+N@8U^%O^neBdt01izC^#G_Od?S2=K#pYzFO9cmR7(tF02Dm#@38Rc zG!9P-h{r!MSG&FirlmSg0UzoU6+EII?`Q-=TjHwn8702Bd>5m}xACq~o$d3`)4QT{ z)8VOJ*<0Sqc>@Q)pEPgs#-T+8&AFo#d1E>xTw{~s5bKT+q(?WW1Xr?f@~2TlQr|a} z-3#gUUV-Qm#?AQlvei@Hg6J~GGo2x|8w;`#Xqtlb?g$O66hrKWrVF=7kLE+okn2z+ zgaHZj1aFB6RoL9~XI7U*)w@L3z`npN)oU(3S=}V5fFSSGn*~Ms#29a?m?V6b-{8Ln zkhW@<>2BnX(a#XU;ClsL*h|~*%H=pG$Ncd%@J3C(x;4^-p^~NyK=W;b)Mm;g{?W#l z_n|WG8wtdjkYjzz7d$)_p3`&q7`nk+rShs&b%?1Nehq`a&pSn$WKmeTx~?g-U_%r7 z;rd$;4OP-lLfJ61=+>v!YtE+;ZFdJ~YCl-IN|$$>MGb5||I<5FecZb~m}Yv45v8fU zertH-);l3xQJQ;bZZQSi4nvC{%TS>^Cck5KdEe5(H^p2V+`THD#HZ0s@^Pf^B3O|? z5P{p|Ey((CvGVHBbW6jgvv_tolUPS{AH$w${oQM}0AELa8}mQ1h?kQ-93k$d*nqty zJ}S3`;5x9+yE*vYCu+kK4eE5rO50nuG?dC_>ahO$dJh|=ruOt*BZ9e!JgtiScp2yy z_ycpIqu!qyb&lXXZ;z$0_DeVHi<`}fB2}##^QrwwdM;1w0f{;8<9e@&h4;wzH7ysi zrJ=$0qBr-adA07sqQXOX$a&R(=%#-Y7}D#+PJ^7+1zdioNu8;HT}#q&N`4Q()Xd>3 zBusx50PUtsdNoPobmSH6p6G%az`j5~AH$~mq?O8e6$aJBUWEF^x-I?pbS&-tYKXW+ zzK)O5B`Lu;{Eh~)L(vloPjbZ8dBN#HMs9`aNZefo5@1cqFsD=rT67P=P&zK0t60y24Q5P>w+o8vX3+DU={G*)wsam<3ebnX7sXL$o zP%;eneI9hBhdA{+dNlBfcP!KJJ)$Vjb85GEs{$+A8}beoHJK(I=>5KNbXU-|W0Lw| zEmxI#t>LfxJ1?6;p2E4E29S~Jr8^V~Zr=`PLCXP#NlNw$3rxJON{9;}37C_NUr+qtNy;1qO{`n9qP# zgp-|J0&8``+|CyXWXl*DBB7sI=)@2WOGe+DcLKSA)1T8X9$fFl_wODq!b|M2?<>*n zo4&Y>oV<`%U}!H+B20^OLfo@eQ`zJd1B2`5m+Nzk#U1D0(J1pre4PHf18H$smfkAx zHr_BsTixaUJ@;r1%85LD<$+gh`p31digyIXg3%3aC$Wi>nB{Nb{x& zOldY~^?X)8xM>y{qFCgG*!s%Cl~9gyXC`8_*;d^D8qy+Q@Uc}dhn#*qlwfoX$A|2Y z12MuP^BGBrCVg!-#KfhqHn8OqAUJT$>^zOS#9|M(MsNO-;BXYm_rscG*ZG}ypyk?{ z&&MrGa#-y}#Z*A{nlpTJHe(#fMUaDrusv`=|_JHiYs>`CF$ zDy{b7R{u$JLtaF(`P)Twb+%tkTpaTI;^U)xV%pZ{9W_RNulZMlnRVJ@q$H1qQSzlQ zOS^pEQM6B2%i&_t91P8NE(s@c7idAdOH0QiNh6BtSOw0uZ;XCk!9l)oTcr~#_~vlh z=vOZ^X_}^<#-E`;?ND@s)j;8hBe7y&{YH5y^`sTquCrPiZ<@h4?)wY)`BlB!J`NKL zF#VYkSFmx_armSXpgNDfyzC}KL5~pIhM|Th7^%MWQQwmn+OkIjT;y{`Q< zh+7`+53_x_cq1=*U9D?k0P_n6w=z@no$yYOwgCb=Pko@>e_EfTS}@=3pCICyYdxRd z^&8orJ92Wy^d(-)aEs+xTr1v;n4Hm>7p&q846sx2m4M0*XR%ZSlBl|qwXMy;hC8mrtj?zMX=f2%=2#j4O@TD`4!>u=$lp(n~nL&eK1A{USHwtyBv2+@6fK>WZ+M$51 z9Ah_PzT!&Q$l5xWmR~>vy7MJCWT95(3b(u$HEFaZ{|~^&w4LgA#_QGMe~xlb0={=# zBpY4h7HBS`m}C!Xra?PyAuOQXT&#R2JRKzNj}Za&>WX}%mfZ7PKK_nwZ^K+2#k}`P1?;k8?N09t zNO^B5VqfT^PiR(cevG%s5k%-=_Xwy~Oi{>@e9m8~!mBWS5OcfJp#H6iRci~1KA%RR zpQLLyU*>w8^gU(G2qWF#oCTTf`a42Ss@LH*bJ%iGcb}WTUg*#hD_=YkhJr{{PsD)xw5an>Q#|u^4^^WJ>yvnuETpJOPx7PE&Mh07oFg zrR(?~dOoIxv(xsX3*|t>?Y-4Hfg5vnc?TVo;8;>`x*V*d#7?#JhNJya>G*o9;AekS z;J0bn-zt6qqx^rMS?uc1{`@*YX?*Xhm@ASTn|H%>NcPPWJ`!0`&eE<1^mkng-yO(rfpLI$2FqgWb#i z7gijOv~=K9#>R83b#U9aM_Q7#!wD~VxNEXpPzBO48~aIc^)_kjocamhRp*Mi-KPEM z|4Ox-^11okeDdc3cGd^oMIVA-=G#YrqTSVhZJK=zDK3WHS0CYkKTBKjqb?O`_Sye^ z0{6)ah_>8`&ZMdhIOo}3&d2|`PyK{0d-2)A6(x0PKqW^i|vB+@&Rpb z0eQo+lPNv`zGZ&(-b-NY$FXqxemi_MM}pa28}UycZ?TZ&D}?L58WPCPGX->G;M0$7 zm#Pua15}>aEnTgh@aMUndAQZm!)zF=5TOL#(JI@#pXvN{dHk-iG4OV?KeE5ZBgDYA zy5{?wt|(}!%S29Mk(cT|!%)r1zTb^Puw{{3!AbY+?){Q~N;O{d>sH1mbd^o9*m-JF zPRL#=#p~h3N-x7LS<3`ih!&`Kuje1Ge}m$8VD(Dcu^xw%uV@k6$WeT}B*XoWDCqSa z0Y>k5CitP-w>NMyMoA7uNd{%S8PPJZI=OB_1bSgV{P2IG`r#=3n~jo^l29b6Y7k3H zf@KllS?)hxfDiX^XUZxtQ4CrAHPL8%o3L`v>` z@u*Of@RsvnF_Nh?&vUfxo}g%3a%)%>1B z=`hS@-Ia5$Wn-|Oq9@Y}S`MgzB&3P8w7JnmAg3SYCv|&$ZM+OZn>hpu01*+~@$tYkWR&2b zXzyp-L;HCQeKmN+kvwEWoShjY9g}ZC&+pxXpG|)$Sm9o_z|wn_pmk<5z_q@Ym@mCkj56&j zCrb?pi`X{{3Bqd24RdRnU^sV$*WuRUrHzMM9#{b4#$|hul@?1RilS~GrEU61kdSGv z%V?CQ=yG{q6t)=9LR#n>c9+eC*P^YiMg!N6LM6{+iSQJad&S@(Mvv}ShDdBM0%WGb znWelRkCHKne+#_1hDU2t`BJucVXv)3f~H~stDRvlW#0sAlP>IC_x)AnoL)JZosslf zu0Z@TpA@&j7#x+kpp?vaBGGee7wJ#Pxy1tlR2TqVB2xvlim`q z$mp^9lG(hG<PgbbE=7ct=7NC&}Fc1I%iEY53JZAHsgo`1uv_Y@K3#+INYZF^S zV*NI3L=!g|2R@BMYsCs+&0@xCH}pe?Fvo)|y0-SmV32`bS2d{$ZY`Y4^c{fchgf!- z|Lc%@a2nP=&p2cojs@M}o*URV?0X zLY~2IUhBg-B}=7RIR(w9G;TU4tG9S+0CC?GJ=nXPL{##W9|2J7i&gI(w-^oKsiFnq z=X!>R`0HvNRpka_GdNB=t<^rD_;E>MfC|>)z4P9X7clewZW%nN{mU#t|HtqAH?rXhM(YYZ-C8l zxwON5e8RbkdRQU){i|sv^uTi#huC{du1sEFbWW7yvJ{RYbDlL(*UcFTRDQ@vF*7|dG8W1 z!STiN_CQqzKLq{?^m%jAhW4)sRd*zM;FYIZCG`iZWFlmFD@&tt%i%OV8GW8V ztGn^T*bT$$QNCtUhFJZWr|1l)dHIe7M}6DIf(W;o$%7ALtV)&)`tQH>3gbI?_DkOL z{s(jK{x4MzL|C|Bn{SkFo#NFbRJO3-ca1$1{3LN3UEgF~X0V>qJb2xH-Ov3u)(mUm z_0=R51&&g{l_1nEzp8$#W6kdiXx!_B&0_ku1m`}*>4Pdm+R(Qjg7-U{{c51&lUi4s zQcqOex)Z7;h}=~4N8O1Z4fY&TX2v<_$)v9ND1*%BQ|vzlkK|!T25}HQtOmrS z(o4>YLo3GttUF3dU#@L4pKE~q_0D`&6#SvdhFQM`-_24?^5>vV@%*&JJsdYY&u1+& zjEF`7#6h9dAemu?6$xi12@IMs4U&s~|5GGfmD%`UWP(ru{I!P@2JOsapxb1*i$|`g zkeqL~)(y~w`yBbLNw?srj6~Eo4VvfUcdCQT0c!dV8l!7!O*9n3{LZ1{DG^@>SUB!YlNQ2;~nqdhhnDjDA9L- zCX4o;l&x;-!;FO?v$L~V3A?OwO^)O7NAt#Ew>vcWY9iBNqjGudkGGYlxn#H+*5Oxu zrm$@iy6mZHCvzP+X$flXlep}-&1=%V50>ITKTq+|$y$_SFqrYe5Z&n9gdwuS=k7oc zeAlx?LK!f}Vzc*i;D?vE@GYZf@f=42e{cdwdJxfSmgwin<(?SX>r=~(xKaZGVK7aP za~o-u#|dVE_8Y6$QI3Y(&Y*R0%A?siT@6=KEDH@&9m|V7*P?O3Hzk~Uu9;I^U&g!S zKpbSPXb=%DLDiO<;o0s-Iwjeq!Enb>>eNRaDb<9{(7QR^` z)zU*jUhy|Y!fx*G01ozTl(NNrK_6F}Ch0v=aAJ%pU=tFW+e5Nl8$r^$b^8x7&8M-& zGf`?&jO+~O@9NkU!GCBS!#-*ek8mf{CUa@$%J`pa+_!edOO+66p_Mx5W3T7tUqx6e zwt4@(6{>9VxsUOdcBIZa>mHn+gR5Q zHH*VrJ`!UaUulI~;>-;VBN&^m6RXQ6>=Ox>Y3=v4lOJrQuoCXMD?lbECz+(Y6EMf* zeRFnWq~z!2CMooc)fI_81$D)1~}yy z$*fq)03S(?G>)Jp4Tw2P?TKs?OT{alzhfOj7M%zKqB7bYudUmgcd{xz z2h^R@@b7vPK4JR9O(&>+Y$F@MH_kTj>(?Dg_8cvh??)`Vi zfuVCT8$x?a$`(@jB*UN5z9tFXqbgDjyu9yPtje(8XPK{iQ_?3Xsbk|!FR=8+l(^kb!+v|xD4Bj?+?nA!d) zu#4)?7bYOt@ut$G3!$Bnr>gSbCcC+&OsdqmLQV1}eS`VBs%K*pO_z}9Ov(pt$xDL; zZtlBtFJ2&cKd{^{A|!A2WjoLs|6 zGDRL0JxSt`-x*e4@;qVLSTM_2%84RPD~?5{{s;~sAiMPo<5228ZI8aX4Y>5^Or%)n zyTkH%(R&ypLeHnSZ4TEg@FDfzX5;zABa6~{zev>a*^5Xdb6Vgo znE(+ZQq!Hq%4S+la%sE6s8Ww6aWf?_*-w8ylO>K)P8c;o!9+Om&iQ;|a@v4+BT<#6isMqWZ!}Y3 z*Af4Fe%Vb*zZyA7)^e*{ZmYM5$EZ>};w1Efvg>0IW1#S$%%d{_MiYk#6l%0oVUNm` z0#ZXOY}2Cy{&6`hIB0UEI%oU9_;hHV$w=;ZZPi2Y`GlUz1qTf{!N{Q6|Kb2>O{QfX z$NbIJ#=0kG&|XpTTSvwq-KXxX7hS&(e1)bFWI~1-&C6%A>-%5J8wme`{jb1Mx!+tm z!?@MfNE1)Oa#&O`7`LV^z71A1btk)2>1bzDd&RVY82!%@BM_q0~yU-T5q9 z*hsPJ!Cq(J@5mHDPXvVGZmd=cVzHQykuk(*Yuc?-KrXmKXal~f5YN7-U-E+ zdDRAhZ=ffJLuKz;eFe9LzL0JpOspt4ItkW=b}7iuOx+)tU@--f&yR*h!Rf|#Nw-I` zCD;|nD5NZxSvnv!Wu|E31oXSm%^Zzbvgi!ZolJM5NHL@tGxc$K#&s-2_Ix?-#JgONf%c5Zz~V0_4dTjBx?P$VpJao z6GONP7Q-fCHw8_&yPV%*%O4);K`dc9IDaHF6h1K~9ft(s?V5hOyVv?LZG&ndYV|9C zy3sMd{d=8>koRTV@rm`5LCkyKlbJ(XAK<@21TqL_tIS0Q?n51-G2da;hvQsT zkL%sKy_mI7UYIBDf~R;xM8o%u?71S&jX}syn?it6sL~6M5NzxD+!S;p*g-{t)0)-` zEoe@3Bns!6V4qGT5rxtL%&u{Nr=-0Wrcsux!v9w+bX4Sg{g8riGqfnl$40Sahefy> z>_xL?ajV&JG&1H1Cp+zUYlycz?4XB>Ve=uuE7(cTr zWCXdrVD{xUUE{P82q{#JpPZWNrE-p7f2PLDK{58q<{f3`SH+%ZqtFCUP|&~pf$(X3 z(87Z&VycTG21vHOZo6%`d(u;Cwq#ek=1}mHgI$XZ(zOx*Yax#$5I8qCw<+`C_=5z4 z#Fy245ZHv@Yf!0`($p1BcsBW5dLWqv%3FEp}j4%G5G|!^;x%yjGMbV?bLwi-z*&k{E@}vp}%i9ap1$lbyc()m&pr7k)!<13Yb|jaPmNtR8-qQUK zcfuXD5I&D|Dhm9~AP$NA08*FJmIY}A9EOyUff61C*&CtyUfCWUOm=|GSDe;oc8>jc z`wIR!_xIzyUhPC4A>Z&9?8=~zkB=}0EsuGdyFMtuO8Q%$BE;dm?iI{_h2$-kDQ<7C zI`;)+!>A+1=a!xuWur+|`Ybn(zSOot+Vp9 { authorizations.forEach((authz) => { const d = authz.identifier.value; + log(`authorization:domain = ${d}, value = ${JSON.stringify(authz)}`); + + if (authz.status === 'valid') { + log(`[auto] [${d}] Authorization already has valid status, no need to complete challenges`); + return; + } let setd = false; // eslint-disable-next-line no-restricted-syntax for (const group of domainSets) { if (!group[d]) { group[d] = authz; setd = true; + break; } } if (!setd) { @@ -197,6 +204,8 @@ module.exports = async (client, userOpts) => { } }); + // log(`domainSets:${JSON.stringify(domainSets)}`); + const allChallengePromises = []; // eslint-disable-next-line no-restricted-syntax for (const domainSet of domainSets) { @@ -252,17 +261,34 @@ module.exports = async (client, userOpts) => { log(`证书申请失败${e.message}`); throw e; } + finally { + if (client.opts.sslProvider !== 'google') { + // letsencrypt 如果同时检出两个TXT记录,会以第一个为准,就会校验失败,所以需要提前删除 + log(`清理challenge痕迹,length:${clearTasks.length}`); + try { + // eslint-disable-next-line no-await-in-loop + await runAllPromise(clearTasks); + } + catch (e) { + log('清理challenge失败'); + log(e); + } + } + } } } finally { - log(`清理challenge痕迹,length:${clearTasks.length}`); - try { + if (client.opts.sslProvider === 'google') { + // google 相同的域名txt记录是一样的,不能提前删除,否则校验失败 + log(`清理challenge痕迹,length:${clearTasks.length}`); + try { // eslint-disable-next-line no-await-in-loop - await runAllPromise(clearTasks); - } - catch (e) { - log('清理challenge失败'); - log(e); + await runAllPromise(clearTasks); + } + catch (e) { + log('清理challenge失败'); + log(e); + } } } diff --git a/packages/core/acme-client/src/client.js b/packages/core/acme-client/src/client.js index f32cd17c..f96adc37 100644 --- a/packages/core/acme-client/src/client.js +++ b/packages/core/acme-client/src/client.js @@ -558,6 +558,7 @@ class AcmeClient { const verifyFn = async (abort) => { if (this.opts.signal && this.opts.signal.aborted) { + abort(); throw new Error('用户取消'); } diff --git a/packages/core/acme-client/src/logger.js b/packages/core/acme-client/src/logger.js index 3659c517..166a7a9c 100644 --- a/packages/core/acme-client/src/logger.js +++ b/packages/core/acme-client/src/logger.js @@ -22,7 +22,7 @@ exports.setLogger = (fn) => { * @param {string} msg Message */ -exports.log = (msg) => { - debug(msg); - logger(msg); +exports.log = (...msg) => { + debug(...msg); + logger(...msg); }; diff --git a/packages/core/acme-client/types/index.d.ts b/packages/core/acme-client/types/index.d.ts index 77a0122d..56e4cf11 100644 --- a/packages/core/acme-client/types/index.d.ts +++ b/packages/core/acme-client/types/index.d.ts @@ -37,6 +37,7 @@ export type UrlMapping={ */ export interface ClientOptions { + sslProvider:string; directoryUrl: string; accountKey: PrivateKeyBuffer | PrivateKeyString; accountUrl?: string; diff --git a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts index 0160094c..79784e04 100644 --- a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts +++ b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts @@ -89,12 +89,15 @@ export class AcmeService { } async getAcmeClient(email: string, isTest = false): Promise { + const mappings = {}; + if (this.sslProvider === "google") { + mappings["acme-v02.api.letsencrypt.org"] = this.options.reverseProxy || "le.px.certd.handfree.work"; + } else if (this.sslProvider === "letsencrypt") { + mappings["dv.acme-v02.api.pki.goog"] = this.options.reverseProxy || "gg.px.certd.handfree.work"; + } const urlMapping: UrlMapping = { enabled: false, - mappings: { - "acme-v02.api.letsencrypt.org": this.options.reverseProxy || "le.px.certd.handfree.work", - "dv.acme-v02.api.pki.goog": this.options.reverseProxy || "gg.px.certd.handfree.work", - }, + mappings, }; const conf = await this.getAccountConfig(email, urlMapping); if (conf.key == null) { @@ -119,6 +122,7 @@ export class AcmeService { } } const client = new acme.Client({ + sslProvider: this.sslProvider, directoryUrl: directoryUrl, accountKey: conf.key, accountUrl: conf.accountUrl, @@ -172,7 +176,7 @@ export class AcmeService { this.logger.info(`Would create TXT record "${fullRecord}" with value "${recordValue}"`); let domain = parseDomain(fullDomain); - this.logger.info("解析到域名domain=", domain); + this.logger.info("解析到域名domain=" + domain); if (domainsVerifyPlan) { //按照计划执行 diff --git a/packages/ui/certd-client/src/router/source/header.ts b/packages/ui/certd-client/src/router/source/header.ts index 7467caef..5a074857 100644 --- a/packages/ui/certd-client/src/router/source/header.ts +++ b/packages/ui/certd-client/src/router/source/header.ts @@ -1,7 +1,10 @@ export const headerResource = [ { title: "文档", - path: "https://certd.docmirror.cn" + path: "https://certd.docmirror.cn", + meta: { + icon: "ion:document-text-outline" + }, }, { title: "源码", diff --git a/packages/ui/certd-client/src/style/common.less b/packages/ui/certd-client/src/style/common.less index 13d8b97c..361011c2 100644 --- a/packages/ui/certd-client/src/style/common.less +++ b/packages/ui/certd-client/src/style/common.less @@ -170,6 +170,9 @@ h1, h2, h3, h4, h5, h6 { color: #1890ff; } +.iconify{ + //font-size: 16px; +} .icon-box { display: inline-flex; diff --git a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue index 3f5ec18c..70e69d7c 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue @@ -101,8 +101,9 @@ diff --git a/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts index f4b1ce1f..fe67282a 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts @@ -37,8 +37,12 @@ export class CloudflareDnsProvider extends AbstractDnsProvider } async getZoneId(domain: string) { + this.logger.info('获取zoneId:', domain); const url = `https://api.cloudflare.com/client/v4/zones?name=${domain}`; const res = await this.doRequestApi(url, null, 'get'); + if (res.result.length === 0) { + throw new Error(`未找到域名${domain}的zoneId`); + } return res.result[0].id; }