feat: 支持open api接口,根据域名获取证书

This commit is contained in:
xiaojunnuo
2025-01-14 00:54:30 +08:00
parent c6c269f9e4
commit 52a4fd3318
13 changed files with 294 additions and 32 deletions
@@ -0,0 +1,15 @@
import { BaseController, Encryptor } from '@certd/lib-server';
import { OpenKey } from '../../modules/open/service/open-key-service.js';
export class BaseOpenController extends BaseController {
ok(res: any) {
const openKey: OpenKey = this.ctx.openKey;
if (openKey.encrypt) {
const data = JSON.stringify(res);
const encryptor = new Encryptor(openKey.keySecret);
const encrypted = encryptor.encrypt(data);
return this.ok(encrypted);
}
super.ok(res);
}
}
@@ -0,0 +1,42 @@
import { ALL, Body, Controller, Get, Inject, Post, Provide, Query } from '@midwayjs/core';
import { CodeException, Constants, EncryptService } from '@certd/lib-server';
import { CertInfoService } from '../../modules/monitor/service/cert-info-service.js';
import { CertInfo } from '@certd/plugin-cert';
import { OpenKey } from '../../modules/open/service/open-key-service.js';
import { BaseOpenController } from './base-open-controller.js';
export type CertGetReq = {
domains: string;
};
/**
*/
@Provide()
@Controller('/open/cert')
export class OpenCertController extends BaseOpenController {
@Inject()
certInfoService: CertInfoService;
@Inject()
encryptService: EncryptService;
@Get('/get', { summary: Constants.per.open })
@Post('/get', { summary: Constants.per.open })
async get(@Body(ALL) bean: CertGetReq, @Query(ALL) query: CertGetReq) {
const openKey: OpenKey = this.ctx.openKey;
const userId = openKey.userId;
if (!userId) {
return Constants.res.openKeyError;
}
const domains = bean.domains || query.domains;
if (!domains) {
throw new CodeException(Constants.res.openParamError);
}
const domainArr = domains.split(',');
const res: CertInfo = await this.certInfoService.getCertInfo({
userId,
domains: domainArr,
});
return this.ok(res);
}
}