chore: 优化站点ip检查

pull/409/head
xiaojunnuo 2025-05-28 15:49:48 +08:00
parent 41f4617e66
commit 45814ceb49
9 changed files with 71 additions and 11 deletions

View File

@ -16,6 +16,7 @@
"pub": "npm publish"
},
"dependencies": {
"@alicloud/credentials": "^2.4.3",
"@alicloud/openapi-client": "^0.4.14",
"@alicloud/pop-core": "^1.7.10",
"@alicloud/tea-util": "^1.4.10",

View File

@ -32,9 +32,15 @@ export class AliyunClientV2 {
return this.client;
}
const $OpenApi = await import("@alicloud/openapi-client");
const config = new $OpenApi.Config({
const Credential = await import("@alicloud/credentials");
//@ts-ignore
const credential = new Credential.default.default({
accessKeyId: this.access.accessKeyId,
accessKeySecret: this.access.accessKeySecret,
type: "access_key",
});
const config = new $OpenApi.Config({
credential,
});
// Endpoint 请参考 https://api.aliyun.com/product/FC
// config.endpoint = `esa.${this.regionId}.aliyuncs.com`;

View File

@ -56,6 +56,16 @@ export const siteInfoApi = {
});
},
async DisabledChange(id: number, disabled: boolean) {
return await request({
url: apiPrefix + "/disabledChange",
method: "post",
data: {
id,
disabled,
},
});
},
async IpCheckChange(id: number, ipCheck: boolean) {
return await request({
url: apiPrefix + "/ipCheckChange",

View File

@ -360,6 +360,16 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
width: 100,
sorter: true,
align: "center",
component: {
name: "fs-dict-switch",
vModel: "checked",
on: {
async change({ row, $event }) {
await api.DisabledChange(row.id, $event);
await crudExpose.doRefresh();
},
},
},
},
},
ipCheck: {
@ -367,8 +377,8 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
type: "dict-switch",
dict: dict({
data: [
{ label: "启用", value: false, color: "green" },
{ label: "禁用", value: true, color: "gray" },
{ label: "启用", value: true, color: "green" },
{ label: "禁用", value: false, color: "gray" },
],
}),
form: {
@ -380,7 +390,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
width: 100,
conditionalRender: false,
component: {
name: "a-switch",
name: "fs-dict-switch",
vModel: "checked",
on: {
change({ row, $event }) {

View File

@ -9,7 +9,7 @@ import { onActivated, onMounted, ref, Ref } from "vue";
import { useFs } from "@fast-crud/fast-crud";
import createCrudOptions from "./crud";
import { siteIpApi } from "./api";
import { Modal, notification } from "ant-design-vue";
defineOptions({
name: "SiteIpCertMonitor",
});

View File

@ -62,7 +62,10 @@ export class SiteInfoController extends CrudController<SiteInfoService> {
async add(@Body(ALL) bean: any) {
bean.userId = this.getUserId();
const res = await this.service.add(bean);
this.service.check(res.id, true, 0);
const entity = await this.service.info(res.id);
if (entity.disabled) {
this.service.check(entity.id, true, 0);
}
return this.ok(res);
}
@ -71,7 +74,10 @@ export class SiteInfoController extends CrudController<SiteInfoService> {
await this.service.checkUserId(bean.id, this.getUserId());
delete bean.userId;
await this.service.update(bean);
this.service.check(bean.id, true, 0);
const entity = await this.service.info(bean.id);
if (entity.disabled) {
this.service.check(entity.id, true, 0);
}
return this.ok();
}
@Post('/info', { summary: Constants.per.authOnly })
@ -110,6 +116,16 @@ export class SiteInfoController extends CrudController<SiteInfoService> {
return this.ok();
}
@Post('/disabledChange', { summary: Constants.per.authOnly })
async disabledChange(@Body(ALL) bean: any) {
const userId = this.getUserId();
await this.service.checkUserId(bean.id, userId)
await this.service.disabledChange({
id: bean.id,
disabled: bean.disabled
});
return this.ok();
}
@Post("/setting/get", { summary: Constants.per.authOnly })
async get() {

View File

@ -45,8 +45,10 @@ export class SiteInfoController extends CrudController<SiteIpService> {
bean.from = "manual"
const res = await this.service.add(bean);
const siteEntity = await this.siteInfoService.info(bean.siteId);
const {domain, httpsPort} = siteEntity;
this.service.check(res.id,domain, httpsPort);
if(!siteEntity.disabled){
const {domain, httpsPort} = siteEntity;
this.service.check(res.id,domain, httpsPort);
}
return this.ok(res);
}
@ -56,8 +58,10 @@ export class SiteInfoController extends CrudController<SiteIpService> {
delete bean.userId;
await this.service.update(bean);
const siteEntity = await this.siteInfoService.info(bean.siteId);
const {domain, httpsPort} = siteEntity;
this.service.check(bean.id,domain, httpsPort);
if(!siteEntity.disabled){
const {domain, httpsPort} = siteEntity;
this.service.check(siteEntity.id,domain, httpsPort);
}
return this.ok();
}
@Post('/info', { summary: Constants.per.authOnly })

View File

@ -311,4 +311,14 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
}
}
async disabledChange(req: { disabled: any; id: any }) {
await this.update({
id: req.id,
disabled: req.disabled,
});
if(!req.disabled){
const site = await this.info(req.id);
await this.doCheck(site)
}
}
}

View File

@ -682,6 +682,9 @@ importers:
packages/plugins/plugin-lib:
dependencies:
'@alicloud/credentials':
specifier: ^2.4.3
version: 2.4.3
'@alicloud/openapi-client':
specifier: ^0.4.14
version: 0.4.14