mirror of
https://github.com/certd/certd.git
synced 2026-04-14 20:40:53 +08:00
chore: 支持dynadot,会覆盖原有的dns解析,京东云也有问题,没有测试通过,这两个目前都有缺陷
This commit is contained in:
@@ -3,7 +3,7 @@ import { ColumnCompositionProps, dict, compute } from "@fast-crud/fast-crud";
|
||||
import * as api from "./api";
|
||||
// @ts-ignore
|
||||
import _ from "lodash-es";
|
||||
import { toRef } from "vue";
|
||||
import { computed, ref, toRef } from "vue";
|
||||
import { useReference } from "/@/use/use-refrence";
|
||||
|
||||
export function getCommonColumnDefine(crudExpose: any, typeRef: any) {
|
||||
@@ -48,6 +48,8 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any) {
|
||||
});
|
||||
}
|
||||
|
||||
const currentDefine = ref();
|
||||
|
||||
return {
|
||||
type: {
|
||||
title: "类型",
|
||||
@@ -76,13 +78,21 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any) {
|
||||
return;
|
||||
}
|
||||
const define = await api.GetProviderDefine(value);
|
||||
currentDefine.value = define;
|
||||
console.log("define", define);
|
||||
if (!immediate) {
|
||||
form.access = {};
|
||||
}
|
||||
buildDefineFields(define, form);
|
||||
}
|
||||
}
|
||||
},
|
||||
helper: computed(() => {
|
||||
const define = currentDefine.value;
|
||||
if (define == null) {
|
||||
return "";
|
||||
}
|
||||
return define.desc;
|
||||
})
|
||||
},
|
||||
addForm: {
|
||||
value: typeRef
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
# key: ./data/ssl/cert.key
|
||||
# cert: ./data/ssl/cert.crt
|
||||
plus:
|
||||
server:
|
||||
baseUrl: 'http://127.0.0.1:11007'
|
||||
#plus:
|
||||
# server:
|
||||
# baseUrl: 'https://api.ai.handsfree.work'
|
||||
# baseUrl: 'http://127.0.0.1:11007'
|
||||
plus:
|
||||
server:
|
||||
baseUrl: 'https://api.ai.handsfree.work'
|
||||
#typeorm:
|
||||
# dataSource:
|
||||
# default:
|
||||
# database: './data/db1.sqlite'
|
||||
#account:
|
||||
# server:
|
||||
# baseUrl: 'http://127.0.0.1:1017/subject'
|
||||
|
||||
account:
|
||||
server:
|
||||
baseUrl: 'http://127.0.0.1:1017/subject'
|
||||
baseUrl: 'https://ai.handsfree.work/subject'
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"md5": "^2.3.0",
|
||||
"mwtsc": "^1.4.0",
|
||||
"nanoid": "^4.0.0",
|
||||
"node-fetch": "^3.3.2",
|
||||
"nodemailer": "^6.9.3",
|
||||
"pg": "^8.12.0",
|
||||
"qiniu": "^7.12.0",
|
||||
|
||||
@@ -7,7 +7,7 @@ import { AccessInput, IsAccess } from '@certd/pipeline';
|
||||
@IsAccess({
|
||||
name: 'dynadot',
|
||||
title: 'dynadot授权',
|
||||
desc: '目前设置dns解析会覆盖已有的解析配置,慎用',
|
||||
desc: '************\n注意:申请证书时会覆盖已有的域名解析配置,慎用\n************\n待优化,主要是dynadot的接口一言难尽',
|
||||
})
|
||||
export class DynadotAccess {
|
||||
/**
|
||||
|
||||
@@ -59,13 +59,21 @@ export class DynadotDnsProvider extends AbstractDnsProvider {
|
||||
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,
|
||||
sub_record0: value,
|
||||
});
|
||||
this.logger.info(`添加域名解析成功:fullRecord=${fullRecord},value=${value}`);
|
||||
this.logger.info(`请求结果:${JSON.stringify(res)}`);
|
||||
|
||||
@@ -4,13 +4,17 @@ import { JDCloudAccess } from './access.js';
|
||||
function promisfy(func: any) {
|
||||
return (params: any, regionId: string) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
func(params, regionId, (err, result) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
resolve(result);
|
||||
});
|
||||
try {
|
||||
func(params, regionId, (err, result) => {
|
||||
if (err) {
|
||||
reject(err.error || err);
|
||||
return;
|
||||
}
|
||||
resolve(result);
|
||||
});
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
@@ -57,17 +61,23 @@ export class JDCloudDnsProvider extends AbstractDnsProvider {
|
||||
const { fullRecord, value, type, domain } = options;
|
||||
this.logger.info('添加域名解析:', fullRecord, value, type, domain);
|
||||
|
||||
const describeDomains = promisfy(this.service.describeDomains);
|
||||
const describeDomains = promisfy((a, b, c) => {
|
||||
this.service.describeDomains(a, b, c);
|
||||
});
|
||||
|
||||
const res: any = await describeDomains({ domainName: domain, pageNumber: 1, pageSize: 10 }, this.regionId);
|
||||
|
||||
if (res.dataList.length === 0) {
|
||||
this.logger.info('请求成功:', JSON.stringify(res.result));
|
||||
const dataList = res.result.dataList;
|
||||
if (dataList.length === 0) {
|
||||
throw new Error('账号下找不到域名:' + domain);
|
||||
}
|
||||
const domainId = res.dataList[0].id;
|
||||
const domainId = dataList[0].id;
|
||||
this.logger.info('domainId:', domainId);
|
||||
|
||||
//开始创建解析记录
|
||||
const createResourceRecord = promisfy(this.service.createResourceRecord);
|
||||
const createResourceRecord = promisfy((a, b, c) => {
|
||||
this.service.createResourceRecord(a, b, c);
|
||||
});
|
||||
const res2: any = await createResourceRecord(
|
||||
{
|
||||
domainId,
|
||||
@@ -79,8 +89,9 @@ export class JDCloudDnsProvider extends AbstractDnsProvider {
|
||||
},
|
||||
this.regionId
|
||||
);
|
||||
|
||||
const recordId = res2.dataList[0].id;
|
||||
this.logger.info('请求成功:', JSON.stringify(res.result));
|
||||
const recordList = res2.result.dataList;
|
||||
const recordId = recordList[0].id;
|
||||
|
||||
this.logger.info(`添加域名解析成功:fullRecord=${fullRecord},value=${value}`);
|
||||
this.logger.info(`请求结果:recordId:${recordId}`);
|
||||
@@ -96,7 +107,7 @@ export class JDCloudDnsProvider extends AbstractDnsProvider {
|
||||
async removeRecord(opts: RemoveRecordOptions<any>): Promise<void> {
|
||||
const { record } = opts;
|
||||
const deleteResourceRecord = promisfy(this.service.deleteResourceRecord);
|
||||
const res = await deleteResourceRecord(
|
||||
const res: any = await deleteResourceRecord(
|
||||
{
|
||||
domainId: record.domainId,
|
||||
resourceRecordId: record.id,
|
||||
|
||||
Reference in New Issue
Block a user