mirror of
https://github.com/certd/certd.git
synced 2026-06-10 18:57:33 +08:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f3f8519e0 | |||
| 61e3f5761c | |||
| 2908569841 | |||
| 775226b49f | |||
| e3dacb5b3f |
@@ -1,9 +1,18 @@
|
|||||||
|
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [1.41.1](https://github.com/certd/certd/compare/v1.41.0...v1.41.1) (2026-06-05)
|
||||||
|
|
||||||
|
### Performance Improvements
|
||||||
|
|
||||||
|
* 流水线、监控站点支持导出 ([99fd308](https://github.com/certd/certd/commit/99fd3083f259cdb96fd656f04858dd708d1251c7))
|
||||||
|
* 优化列表页面请求两次的问题 ([5546af5](https://github.com/certd/certd/commit/5546af518e92c765513787ccaf8e856be789bcf9))
|
||||||
|
* 优化邀请注册流程 ([7a71e45](https://github.com/certd/certd/commit/7a71e45799d782d0691606fb42b4236f1d3009b0))
|
||||||
|
* **settings:** 新增NO_PROXY代理排除配置 ([c0df8be](https://github.com/certd/certd/commit/c0df8be83237e323c2c9a5bd02507430a86a00cc))
|
||||||
|
* **volcengine-vke:** 火山VKE集群证书支持两种类型的证书保密字典 ([77b8024](https://github.com/certd/certd/commit/77b802445322d576d54d194f7c505da49e0e824c))
|
||||||
|
|
||||||
# [1.41.0](https://github.com/certd/certd/compare/v1.40.5...v1.41.0) (2026-06-04)
|
# [1.41.0](https://github.com/certd/certd/compare/v1.40.5...v1.41.0) (2026-06-04)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@@ -76,5 +76,5 @@
|
|||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/publishlab/node-acme-client/issues"
|
"url": "https://github.com/publishlab/node-acme-client/issues"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,5 +52,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,5 +49,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,5 +27,5 @@
|
|||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"tslib": "^2.8.1"
|
"tslib": "^2.8.1"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,5 +34,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,5 +59,5 @@
|
|||||||
"fetch"
|
"fetch"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,5 +36,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,5 +69,5 @@
|
|||||||
"typeorm": "^0.3.11",
|
"typeorm": "^0.3.11",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,5 +49,5 @@
|
|||||||
"typeorm": "^0.3.11",
|
"typeorm": "^0.3.11",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,5 +41,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,5 +61,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "d368f9666abf71d7f56891b6cbedeb618b82701c"
|
"gitHead": "cdea411136fdf56352699a6e278a403e0f53a94f"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
|||||||
},
|
},
|
||||||
rowHandle: {
|
rowHandle: {
|
||||||
fixed: "right",
|
fixed: "right",
|
||||||
width: 120,
|
width: 200,
|
||||||
buttons: {
|
buttons: {
|
||||||
edit: {
|
edit: {
|
||||||
click: ({ row }) => openForm(row),
|
click: ({ row }) => openForm(row),
|
||||||
|
|||||||
@@ -11,14 +11,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, onActivated, onMounted, ref } from "vue";
|
|
||||||
import { useFs } from "@fast-crud/fast-crud";
|
import { useFs } from "@fast-crud/fast-crud";
|
||||||
import createCrudOptions from "./crud";
|
|
||||||
import * as permissionApi from "../permission/api";
|
|
||||||
import * as api from "./api";
|
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
|
import { defineComponent, ref } from "vue";
|
||||||
|
import * as permissionApi from "../permission/api";
|
||||||
import FsPermissionTree from "../permission/fs-permission-tree.vue";
|
import FsPermissionTree from "../permission/fs-permission-tree.vue";
|
||||||
|
import * as api from "./api";
|
||||||
|
import createCrudOptions from "./crud";
|
||||||
import { UseCrudPermissionCompProps, UseCrudPermissionExtraProps } from "/@/plugin/permission";
|
import { UseCrudPermissionCompProps, UseCrudPermissionExtraProps } from "/@/plugin/permission";
|
||||||
|
import { useMounted } from "/@/use/use-mounted";
|
||||||
import { useI18n } from "/src/locales";
|
import { useI18n } from "/src/locales";
|
||||||
|
|
||||||
function useAuthz() {
|
function useAuthz() {
|
||||||
|
|||||||
@@ -8,9 +8,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, ref, onMounted, onActivated } from "vue";
|
import { useFs } from "@fast-crud/fast-crud";
|
||||||
import { useCrud, useExpose, useFs } from "@fast-crud/fast-crud";
|
import { defineComponent } from "vue";
|
||||||
import createCrudOptions from "./crud";
|
import createCrudOptions from "./crud";
|
||||||
|
import { useMounted } from "/@/use/use-mounted";
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "UserManager",
|
name: "UserManager",
|
||||||
setup() {
|
setup() {
|
||||||
|
|||||||
@@ -47,7 +47,53 @@ export class HipmDnsmgrAccess extends BaseAccess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取域名列表
|
* 获取域名 ID(双层查询策略)
|
||||||
|
* 方案1: 使用 keyword 参数直接查询(高效)
|
||||||
|
* 方案2: 列表匹配作为冗余(兼容旧版本 API)
|
||||||
|
*/
|
||||||
|
async getDomainId(domainName: string): Promise<string> {
|
||||||
|
this.ctx.logger.info(`[HiPM DNSMgr] 尝试通过keyword查询域名: ${domainName}`);
|
||||||
|
|
||||||
|
// 方案1: 使用 keyword 参数直接查询
|
||||||
|
try {
|
||||||
|
const resp = await this.doRequest({
|
||||||
|
method: 'GET',
|
||||||
|
path: '/domains',
|
||||||
|
params: {
|
||||||
|
page: 1,
|
||||||
|
pageSize: 1,
|
||||||
|
keyword: domainName,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查是否找到精确匹配的域名
|
||||||
|
if (resp && Array.isArray(resp) && resp.length > 0) {
|
||||||
|
const domain = resp.find((item: any) => item.name === domainName);
|
||||||
|
if (domain) {
|
||||||
|
this.ctx.logger.info(`[HiPM DNSMgr] 通过keyword查询成功: domain=${domainName}, id=${domain.id}`);
|
||||||
|
return String(domain.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error: any) {
|
||||||
|
this.ctx.logger.warn(`[HiPM DNSMgr] keyword查询失败,尝试列表匹配: ${error.message}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 方案2: 如果 keyword 查询未找到,使用列表匹配作为冗余
|
||||||
|
this.ctx.logger.info(`[HiPM DNSMgr] keyword查询未找到,尝试列表匹配: ${domainName}`);
|
||||||
|
|
||||||
|
const domainList = await this.getDomainList();
|
||||||
|
const domainInfo = domainList.find((item: any) => item.domain === domainName);
|
||||||
|
|
||||||
|
if (!domainInfo) {
|
||||||
|
throw new Error(`[HiPM DNSMgr] 未找到域名:${domainName}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.ctx.logger.info(`[HiPM DNSMgr] 通过列表匹配成功: domain=${domainName}, id=${domainInfo.id}`);
|
||||||
|
return String(domainInfo.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取域名列表(保留用于向后兼容)
|
||||||
*/
|
*/
|
||||||
async getDomainList() {
|
async getDomainList() {
|
||||||
this.ctx.logger.info(`[HiPM DNSMgr] 获取域名列表`);
|
this.ctx.logger.info(`[HiPM DNSMgr] 获取域名列表`);
|
||||||
|
|||||||
+3
@@ -27,6 +27,9 @@ export class HipmDnsmgrDnsProvider extends AbstractDnsProvider<{ domainId: strin
|
|||||||
const { fullRecord, hostRecord, value, type, domain } = options;
|
const { fullRecord, hostRecord, value, type, domain } = options;
|
||||||
this.logger.info("[HiPM DNSMgr] 添加域名解析:", fullRecord, value, type, domain);
|
this.logger.info("[HiPM DNSMgr] 添加域名解析:", fullRecord, value, type, domain);
|
||||||
|
|
||||||
|
// 1. 获取域名 ID(双层查询策略)
|
||||||
|
const domainId = await this.access.getDomainId(domain);
|
||||||
|
this.logger.debug('[HiPM DNSMgr] 找到域名:', domain, 'ID:', domainId);
|
||||||
// 1. 获取域名列表,找到对应的域名 ID
|
// 1. 获取域名列表,找到对应的域名 ID
|
||||||
const domainList = await this.access.getDomainList();
|
const domainList = await this.access.getDomainList();
|
||||||
const domainInfo = domainList.find((item: any) => item.domain === domain);
|
const domainInfo = domainList.find((item: any) => item.domain === domain);
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
12:32
|
02:38
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
15:40
|
03:06
|
||||||
|
|||||||
Reference in New Issue
Block a user