mirror of https://github.com/certd/certd
chore: agent
parent
0e4b72c65d
commit
68e5ea1cad
|
@ -87,3 +87,15 @@ jobs:
|
|||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}-armv7
|
||||
greper/certd:armv7
|
||||
greper/certd:${{steps.get_certd_version.outputs.result}}-armv7
|
||||
|
||||
- name: Build agent
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
context: ./packages/ui/agent/
|
||||
tags: |
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:latest
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:${{steps.get_certd_version.outputs.result}}
|
||||
greper/certd-agent:latest
|
||||
greper/certd-agent:${{steps.get_certd_version.outputs.result}}
|
||||
|
|
|
@ -54,3 +54,11 @@ export class SysSiteInfo extends BaseSettings {
|
|||
logo?: string;
|
||||
loginLogo?: string;
|
||||
}
|
||||
|
||||
export class SysSiteEnv {
|
||||
agent?: {
|
||||
enabled?: boolean;
|
||||
contactText?: string;
|
||||
contactLink?: string;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
FROM greper/certd:latest
|
||||
ENV certd_agent_enabled=true
|
||||
CMD ["npm", "run","start"]
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
import { request } from "../service";
|
||||
import { SiteEnv, SiteInfo } from "/@/store/modules/settings";
|
||||
|
||||
export type SysPublicSetting = {
|
||||
registerEnabled: boolean;
|
||||
|
@ -24,14 +25,20 @@ export async function getInstallInfo(): Promise<SysInstallInfo> {
|
|||
});
|
||||
}
|
||||
|
||||
export async function getSiteInfo(): Promise<SysInstallInfo> {
|
||||
export async function getSiteInfo(): Promise<SiteInfo> {
|
||||
return await request({
|
||||
url: "/basic/settings/siteInfo",
|
||||
method: "get"
|
||||
});
|
||||
}
|
||||
export async function getSiteEnv(): Promise<SiteEnv> {
|
||||
return await request({
|
||||
url: "/basic/settings/siteEnv",
|
||||
method: "get"
|
||||
});
|
||||
}
|
||||
|
||||
export async function bindUrl(data): Promise<SysInstallInfo> {
|
||||
export async function bindUrl(data: any): Promise<any> {
|
||||
return await request({
|
||||
url: "/sys/plus/bindUrl",
|
||||
method: "post",
|
||||
|
|
|
@ -164,9 +164,27 @@ function openUpgrade() {
|
|||
okText: "激活",
|
||||
width: 900,
|
||||
content: () => {
|
||||
let activationCodeGetWay: any = null;
|
||||
if (settingStore.siteEnv.agent.enabled != null) {
|
||||
const agent = settingStore.siteEnv.agent;
|
||||
if (agent.enabled === false) {
|
||||
activationCodeGetWay = (
|
||||
<a href="https://afdian.com/a/greper" target="_blank">
|
||||
爱发电赞助“VIP会员”后获取
|
||||
</a>
|
||||
);
|
||||
} else {
|
||||
activationCodeGetWay = (
|
||||
<a href={agent.contactLink} target="_blank">
|
||||
{agent.contactText}
|
||||
</a>
|
||||
);
|
||||
}
|
||||
}
|
||||
const vipLabel = settingStore.vipLabel;
|
||||
const slots = [];
|
||||
for (const key in vipTypeDefine) {
|
||||
// @ts-ignore
|
||||
const item = vipTypeDefine[key];
|
||||
const vipBlockClass = `vip-block ${key === settingStore.plusInfo.vipType ? "current" : ""}`;
|
||||
slots.push(
|
||||
|
@ -174,7 +192,7 @@ function openUpgrade() {
|
|||
<div class={vipBlockClass}>
|
||||
<h3 class="block-header">{item.title}</h3>
|
||||
<ul>
|
||||
{item.privilege.map((p) => (
|
||||
{item.privilege.map((p: string) => (
|
||||
<li>
|
||||
<fs-icon class="color-green" icon="ion:checkmark-sharp" />
|
||||
{p}
|
||||
|
@ -203,9 +221,7 @@ function openUpgrade() {
|
|||
|
||||
<div class="mt-10">
|
||||
没有激活码?
|
||||
<a href="https://afdian.com/a/greper" target="_blank">
|
||||
爱发电赞助“VIP会员”后获取
|
||||
</a>
|
||||
{activationCodeGetWay}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -35,8 +35,16 @@ export interface SettingState {
|
|||
};
|
||||
siteInfo: SiteInfo;
|
||||
plusInfo?: PlusInfo;
|
||||
siteEnv?: SiteEnv;
|
||||
}
|
||||
|
||||
export type SiteEnv = {
|
||||
agent?: {
|
||||
enabled?: boolean;
|
||||
contactText?: string;
|
||||
contactLink?: string;
|
||||
};
|
||||
};
|
||||
export type SiteInfo = {
|
||||
title: string;
|
||||
slogan: string;
|
||||
|
@ -94,7 +102,14 @@ export const useSettingStore = defineStore({
|
|||
accountServerBaseUrl: "",
|
||||
appKey: ""
|
||||
},
|
||||
siteInfo: defaultSiteInfo
|
||||
siteInfo: defaultSiteInfo,
|
||||
siteEnv: {
|
||||
agent: {
|
||||
enabled: undefined,
|
||||
contactText: "",
|
||||
contactLink: ""
|
||||
}
|
||||
}
|
||||
}),
|
||||
getters: {
|
||||
getThemeConfig(): any {
|
||||
|
@ -132,6 +147,7 @@ export const useSettingStore = defineStore({
|
|||
},
|
||||
async loadSysSettings() {
|
||||
await this.loadSysPublicSettings();
|
||||
await this.loadSiteEnv();
|
||||
await this.loadInstallInfo();
|
||||
await this.loadPlusInfo();
|
||||
await this.loadSiteInfo();
|
||||
|
@ -145,12 +161,16 @@ export const useSettingStore = defineStore({
|
|||
const installInfo = await basicApi.getInstallInfo();
|
||||
_.merge(this.installInfo, installInfo);
|
||||
},
|
||||
async loadSiteEnv() {
|
||||
const siteEnv = await basicApi.getSiteEnv();
|
||||
_.merge(this.siteEnv, siteEnv);
|
||||
},
|
||||
async loadPlusInfo() {
|
||||
this.plusInfo = await basicApi.getPlusInfo();
|
||||
},
|
||||
async loadSiteInfo() {
|
||||
const isComm = this.isComm;
|
||||
let siteInfo = {};
|
||||
let siteInfo: SiteInfo;
|
||||
if (isComm) {
|
||||
siteInfo = await basicApi.getSiteInfo();
|
||||
if (siteInfo.logo) {
|
||||
|
|
|
@ -115,6 +115,11 @@ const development = {
|
|||
// 仅在匹配路径到 /api/upload 的时候去解析 body 中的文件信息
|
||||
match: /\/api\/basic\/file\/upload/,
|
||||
},
|
||||
agent: {
|
||||
enabled: false,
|
||||
contactText: '',
|
||||
contactLink: '',
|
||||
},
|
||||
} as MidwayConfig;
|
||||
mergeConfig(development, 'development');
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { ALL, Body, Config, Controller, Get, Inject, Provide } from '@midwayjs/core';
|
||||
import { BaseController, Constants, SysInstallInfo, SysPublicSettings, SysSettingsService, SysSiteInfo } from '@certd/lib-server';
|
||||
import { BaseController, Constants, SysInstallInfo, SysPublicSettings, SysSettingsService, SysSiteEnv, SysSiteInfo } from '@certd/lib-server';
|
||||
import { AppKey, getPlusInfo } from '@certd/pipeline';
|
||||
|
||||
/**
|
||||
|
@ -12,6 +12,9 @@ export class BasicSettingsController extends BaseController {
|
|||
@Config('account.server.baseUrl')
|
||||
accountServerBaseUrl: any;
|
||||
|
||||
@Config('agent')
|
||||
agentConfig: SysSiteEnv['agent'];
|
||||
|
||||
@Get('/public', { summary: Constants.per.guest })
|
||||
public async getSysPublic() {
|
||||
const settings = await this.sysSettingsService.getSetting(SysPublicSettings);
|
||||
|
@ -32,6 +35,14 @@ export class BasicSettingsController extends BaseController {
|
|||
return this.ok(settings);
|
||||
}
|
||||
|
||||
@Get('/siteEnv', { summary: Constants.per.guest })
|
||||
public async getSiteEnv() {
|
||||
const env: SysSiteEnv = {
|
||||
agent: this.agentConfig,
|
||||
};
|
||||
return this.ok(env);
|
||||
}
|
||||
|
||||
@Get('/plusInfo', { summary: Constants.per.guest })
|
||||
async plusInfo(@Body(ALL) body: any) {
|
||||
const info = getPlusInfo();
|
||||
|
|
Loading…
Reference in New Issue