mirror of
https://github.com/certd/certd.git
synced 2026-05-15 12:37:30 +08:00
4755216505
refactor(ui): 将分散的auto-*模块整合为统一命名的auto-register模块 perf(plugin-cert): 增强EAB授权功能,支持账号私钥刷新和类型选择 test: 添加EAB授权服务和ACME账号配置的单元测试 docs: 更新AGENTS.md补充ACME/EAB使用注意事项 chore: 统一各package.json中的测试脚本配置
106 lines
3.5 KiB
TypeScript
106 lines
3.5 KiB
TypeScript
import { App, Config, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
|
|
import { getPlusInfo, isPlus } from '@certd/plus-core';
|
|
import { isDev, logger } from '@certd/basic';
|
|
|
|
import { SysInstallInfo, SysSettingsService } from '@certd/lib-server';
|
|
import { getVersion } from '../../utils/version.js';
|
|
import dayjs from 'dayjs';
|
|
import { Application } from '@midwayjs/koa';
|
|
import { httpsServer, HttpsServerOptions } from './https/server.js';
|
|
import { UserService } from '../sys/authority/service/user-service.js';
|
|
import { UserSettingsService } from '../mine/service/user-settings-service.js';
|
|
import { startProxyServer } from './proxy/server.js';
|
|
|
|
@Provide()
|
|
@Scope(ScopeEnum.Request, { allowDowngrade: true })
|
|
export class AutoPrint {
|
|
@Inject()
|
|
sysSettingsService: SysSettingsService;
|
|
|
|
@App()
|
|
app: Application;
|
|
|
|
@Config('https')
|
|
httpsConfig: HttpsServerOptions;
|
|
@Config('koa')
|
|
koaConfig: any;
|
|
|
|
@Inject()
|
|
userService: UserService;
|
|
|
|
@Inject()
|
|
userSettingsService: UserSettingsService;
|
|
|
|
@Config('system.resetAdminPasswd')
|
|
private resetAdminPasswd: boolean;
|
|
|
|
async init() {
|
|
//监听https
|
|
this.startHttpsServer();
|
|
// this.startProxyServer();
|
|
logger.info("ENV:", process.env.NODE_ENV);
|
|
if (isDev()) {
|
|
this.startHeapLog();
|
|
}
|
|
const installInfo: SysInstallInfo = await this.sysSettingsService.getSetting(SysInstallInfo);
|
|
logger.info('=========================================');
|
|
logger.info('当前站点ID:', installInfo.siteId);
|
|
const version = await getVersion();
|
|
logger.info(`当前版本:${version}`);
|
|
const plusInfo = getPlusInfo();
|
|
if (isPlus()) {
|
|
logger.info(`授权信息:${plusInfo.vipType},${plusInfo.expireTime === -1 ? '永久' : dayjs(plusInfo.expireTime).format('YYYY-MM-DD')}`);
|
|
}
|
|
logger.info('Certd已启动');
|
|
logger.info('=========================================');
|
|
await this.resetPasswd();
|
|
}
|
|
|
|
async resetPasswd(){
|
|
if (this.resetAdminPasswd === true) {
|
|
logger.info('开始重置1号管理员用户的密码');
|
|
const newPasswd = '123456';
|
|
await this.userService.resetPassword(1, newPasswd);
|
|
await this.userService.updateStatus(1, 1);
|
|
await this.userSettingsService.deleteWhere({
|
|
userId: 1,
|
|
key:"user.two.factor"
|
|
})
|
|
const publicSettings = await this.sysSettingsService.getPublicSettings()
|
|
publicSettings.captchaEnabled = false
|
|
await this.sysSettingsService.savePublicSettings(publicSettings);
|
|
|
|
const user = await this.userService.info(1);
|
|
logger.info(`重置1号管理员用户的密码完成,2FA设置已删除,验证码登录已禁用,用户名:${user.username},新密码:${newPasswd},请在登录进去之后尽快修改密码`);
|
|
}
|
|
}
|
|
|
|
startHeapLog() {
|
|
function format(bytes: any) {
|
|
return (bytes / 1024 / 1024).toFixed(2) + ' MB';
|
|
}
|
|
function printHeapLog() {
|
|
const mu = process.memoryUsage();
|
|
logger.info(`rss:${format(mu.rss)},heapUsed: ${format(mu.heapUsed)},heapTotal: ${format(mu.heapTotal)},external: ${format(mu.external)},arrayBuffers: ${format(mu.arrayBuffers)}`);
|
|
}
|
|
setInterval(printHeapLog, 20000);
|
|
printHeapLog();
|
|
}
|
|
|
|
startHttpsServer() {
|
|
if (!this.httpsConfig.enabled) {
|
|
logger.info('Https server is not enabled');
|
|
return;
|
|
}
|
|
httpsServer.start({
|
|
...this.httpsConfig,
|
|
app: this.app,
|
|
hostname: this.httpsConfig.hostname || this.koaConfig.hostname,
|
|
});
|
|
}
|
|
|
|
startProxyServer() {
|
|
startProxyServer({port: 7003});
|
|
}
|
|
}
|