perf: 抽取api

master
xiaojunnuo 2021-01-06 23:52:10 +08:00
parent 5312c11472
commit 8cc80deff8
10 changed files with 766 additions and 592 deletions

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ const logger = util.logger
export class FileStore extends Store { export class FileStore extends Store {
constructor (opts) { constructor (opts) {
super() super()
this.rootDir = util.getUserBasePath() this.rootDir = util.path.getUserBasePath()
if (opts.rootDir != null) { if (opts.rootDir != null) {
this.rootDir = opts.rootDir this.rootDir = opts.rootDir
} }

View File

@ -9,12 +9,11 @@
"type": "module", "type": "module",
"dependencies": { "dependencies": {
"@alicloud/pop-core": "^1.7.10", "@alicloud/pop-core": "^1.7.10",
"tencentcloud-sdk-nodejs": "^4.0.44",
"@certd/certd": "^0.1.1", "@certd/certd": "^0.1.1",
"@types/node": "^14.14.13",
"kubernetes-client": "^9.0.0", "kubernetes-client": "^9.0.0",
"lodash-es": "^4.17.20", "lodash-es": "^4.17.20",
"ssh2": "^0.8.9", "ssh2": "^0.8.9"
"tencentcloud-sdk-nodejs": "^4.0.44"
}, },
"devDependencies": { "devDependencies": {
"chai": "^4.2.0", "chai": "^4.2.0",

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,9 @@
"author": "Greper", "author": "Greper",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@certd/api": "^0.1.2" "@certd/api": "^0.1.2",
"@alicloud/pop-core": "^1.7.10",
"tencentcloud-sdk-nodejs": "^4.0.44"
}, },
"devDependencies": { "devDependencies": {
"chai": "^4.2.0", "chai": "^4.2.0",

View File

@ -1,8 +1,9 @@
import dnsProviders from './index.js'
export class DnsProviderFactory { export class DnsProviderFactory {
static async createByType (type, options) { static async createByType (type, options) {
try { try {
const ProviderModule = await import('./impl/' + type + '.js') const Provider = dnsProviders[type]
const Provider = ProviderModule.default
return new Provider(options) return new Provider(options)
} catch (e) { } catch (e) {
throw new Error('暂不支持此dnsProvider' + type, e) throw new Error('暂不支持此dnsProvider' + type, e)

View File

@ -1,8 +1,7 @@
import { DnsProvider } from '../dns-provider.js' import { AbstractDnsProvider } from '@certd/api'
import Core from '@alicloud/pop-core' import Core from '@alicloud/pop-core'
import _ from 'lodash' import _ from 'lodash-es'
import log from '../../utils/util.log.js' export class AliyunDnsProvider extends AbstractDnsProvider {
export default class AliyunDnsProvider extends DnsProvider {
constructor (dnsProviderConfig) { constructor (dnsProviderConfig) {
super() super()
this.client = new Core({ this.client = new Core({
@ -13,6 +12,10 @@ export default class AliyunDnsProvider extends DnsProvider {
}) })
} }
static name () {
return 'aliyun'
}
async getDomainList () { async getDomainList () {
const params = { const params = {
RegionId: 'cn-hangzhou' RegionId: 'cn-hangzhou'
@ -60,7 +63,7 @@ export default class AliyunDnsProvider extends DnsProvider {
} }
async createRecord ({ fullRecord, type, value }) { async createRecord ({ fullRecord, type, value }) {
log.info('添加域名解析:', fullRecord, value) this.logger.info('添加域名解析:', fullRecord, value)
const domain = await this.matchDomain(fullRecord) const domain = await this.matchDomain(fullRecord)
const rr = fullRecord.replace('.' + domain, '') const rr = fullRecord.replace('.' + domain, '')
@ -79,11 +82,11 @@ export default class AliyunDnsProvider extends DnsProvider {
try { try {
const ret = await this.client.request('AddDomainRecord', params, requestOption) const ret = await this.client.request('AddDomainRecord', params, requestOption)
console.log('添加域名解析成功:', value, value, ret.RecordId) this.logger.info('添加域名解析成功:', value, value, ret.RecordId)
return ret.RecordId return ret.RecordId
} catch (e) { } catch (e) {
// e.code === 'DomainRecordDuplicate' // e.code === 'DomainRecordDuplicate'
console.log('添加域名解析出错', e) this.logger.info('添加域名解析出错', e)
throw e throw e
} }
} }
@ -99,7 +102,7 @@ export default class AliyunDnsProvider extends DnsProvider {
} }
const ret = await this.client.request('DeleteDomainRecord', params, requestOption) const ret = await this.client.request('DeleteDomainRecord', params, requestOption)
log.info('删除域名解析成功:', fullRecord, value, ret.RecordId) this.logger.info('删除域名解析成功:', fullRecord, value, ret.RecordId)
return ret.RecordId return ret.RecordId
} }
} }

View File

@ -1,7 +1,11 @@
import { AbstractDnsProvider, util } from '@certd/api' import { AbstractDnsProvider, util } from '@certd/api'
import _ from 'lodash-es' import _ from 'lodash-es'
const request = util.request const request = util.request
export default class DnspodDnsProvider extends AbstractDnsProvider { export class DnspodDnsProvider extends AbstractDnsProvider {
static name () {
return 'dnspod'
}
constructor (dnsProviderConfig) { constructor (dnsProviderConfig) {
super() super()
if (!dnsProviderConfig.id || !dnsProviderConfig.token) { if (!dnsProviderConfig.id || !dnsProviderConfig.token) {

View File

@ -0,0 +1,6 @@
import { AliyunDnsProvider } from './impl/aliyun.js'
import { DnspodDnsProvider } from './impl/dnspod.js'
export default {
[AliyunDnsProvider.name()]: AliyunDnsProvider,
[DnspodDnsProvider.name()]: DnspodDnsProvider
}

View File

@ -1 +1 @@
export { DnsProviderFactory } from './dns-provider/dns-provider-factory' export { DnsProviderFactory } from './dns-provider/dns-provider-factory.js'