chore: 整理依赖

This commit is contained in:
xiaojunnuo
2024-11-06 01:17:36 +08:00
parent 77c9a7e2fa
commit 80f8fd49f1
70 changed files with 119 additions and 5990 deletions
@@ -1,28 +0,0 @@
import { AccessInput, BaseAccess, IsAccess } from '@certd/pipeline';
/**
* 这个注解将注册一个授权配置
* 在certd的后台管理系统中,用户可以选择添加此类型的授权
*/
@IsAccess({
name: 'dynadot',
title: 'dynadot授权',
desc: '************\n注意:申请证书时会覆盖已有的域名解析配置,慎用\n************\n待优化,主要是dynadot的接口一言难尽',
})
export class DynadotAccess extends BaseAccess {
/**
* 授权属性配置
*/
@AccessInput({
title: 'API Production Key',
component: {
placeholder: '授权key',
},
helper: '前往 [Dynadot API](https://www.dynadot.com/account/domain/setting/api.html) 获取 API Production Key',
required: true,
encrypt: true,
})
apiProductionKey = '';
}
new DynadotAccess();
@@ -1,96 +0,0 @@
import { AbstractDnsProvider, CreateRecordOptions, IsDnsProvider, RemoveRecordOptions } from '@certd/plugin-cert';
import { Autowire } from '@certd/pipeline';
import { ILogger } from '@certd/basic';
import { DynadotAccess } from './access.js';
import querystring from 'querystring';
// 这里通过IsDnsProvider注册一个dnsProvider
@IsDnsProvider({
name: 'dynadot',
title: 'dynadot',
desc: 'dynadot dns provider',
// 这里是对应的 cloudflare的access类型名称
accessType: 'dynadot',
deprecated: '暂不支持',
})
export class DynadotDnsProvider extends AbstractDnsProvider {
// 通过Autowire传递context
@Autowire()
logger!: ILogger;
access!: DynadotAccess;
async onInstance() {
this.access = this.ctx.access as DynadotAccess;
}
private async doRequest(command: string, query: any) {
const baseUrl = 'https://api.dynadot.com/api3.json?key=' + this.access.apiProductionKey;
const qs = querystring.stringify(query);
const url = `${baseUrl}&command=${command}&${qs}`;
const res = await this.ctx.http.request<any, any>({
url,
method: 'get',
headers: {
'Content-Type': 'application/json',
},
});
/*
"SetDnsResponse": {
"ResponseCode": 0,
"Status": "success"
}
*/
for (const resKey in res) {
if (res[resKey].ResponseCode != null && res[resKey].ResponseCode !== 0) {
throw new Error(`请求失败:${res[resKey].Status}`);
}
}
return res;
}
/**
* 创建dns解析记录,用于验证域名所有权
*/
async createRecord(options: CreateRecordOptions) {
/**
* fullRecord: '_acme-challenge.test.example.com',
* value: 一串uuid
* type: 'TXT',
* domain: 'example.com'
*/
const { fullRecord, value, type, domain } = options;
this.logger.info('添加域名解析:', fullRecord, value, type, domain);
//先获取域名原始解析记录
//https://api.dynadot.com/api3.xml?key=[API Key]&command=domain_info&domain=domain1.com
const res1 = await this.doRequest('domain_info', {
domain: domain,
});
// this.logger.info(`域名信息:${JSON.stringify(res1)}`);
// "DomainInfoResponse.NameServerSettings":{"Type":"Dynadot DNS","SubDomains":[{"Subhost":"_acme-challenge","RecordType":"TXT","Value":"43XrhFA6pJpE7a-20y7BmC6CsN20TMt5l-Zl-CL_-4I"}],"TTL":"300"}
this.logger.info('原始域名解析记录:', JSON.stringify(res1.DomainInfoResponse?.DomainInfo?.NameServerSettings));
const prefix = fullRecord.replace(`.${domain}`, '');
// 给domain下创建txt类型的dns解析记录,fullRecord
const res = await this.doRequest('set_dns2', {
domain: domain,
subdomain0: prefix,
sub_record_type0: 'TXT',
sub_record0: value,
});
this.logger.info(`添加域名解析成功:fullRecord=${fullRecord},value=${value}`);
this.logger.info(`请求结果:${JSON.stringify(res)}`);
//本接口需要返回本次创建的dns解析记录,这个记录会在删除的时候用到
return {};
}
/**
* 删除dns解析记录,清理申请痕迹
* @param options
*/
async removeRecord(options: RemoveRecordOptions<any>): Promise<void> {}
}
//实例化这个provider,将其自动注册到系统中
new DynadotDnsProvider();
@@ -1,3 +0,0 @@
export * from './dns-provider.js';
export * from './plugins/index.js';
export * from './access.js';