perf: 优化证书申请速度和成功率,反代地址优化,google基本可以稳定请求。增加请求重试。

This commit is contained in:
xiaojunnuo
2024-10-22 16:21:35 +08:00
parent a705182b85
commit 41d9c3ac83
11 changed files with 66 additions and 18 deletions
+33 -7
View File
@@ -182,12 +182,19 @@ module.exports = async (client, userOpts) => {
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);
}
}
}
+1
View File
@@ -558,6 +558,7 @@ class AcmeClient {
const verifyFn = async (abort) => {
if (this.opts.signal && this.opts.signal.aborted) {
abort();
throw new Error('用户取消');
}
+3 -3
View File
@@ -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);
};
+1
View File
@@ -37,6 +37,7 @@ export type UrlMapping={
*/
export interface ClientOptions {
sslProvider:string;
directoryUrl: string;
accountKey: PrivateKeyBuffer | PrivateKeyString;
accountUrl?: string;