修改获取配置文件接口,初始化系统配置

This commit is contained in:
whyour 2024-01-18 13:51:06 +08:00
parent 1a94a660a5
commit 8283f62db2
9 changed files with 30 additions and 21 deletions

View File

@ -48,27 +48,24 @@ export default (app: Router) => {
); );
route.get( route.get(
'/:file', '/detail',
async (req: Request, res: Response, next: NextFunction) => { async (req: Request, res: Response, next: NextFunction) => {
const logger: Logger = Container.get('logger'); const logger: Logger = Container.get('logger');
try { try {
let content = ''; let content = '';
if (config.blackFileList.includes(req.params.file)) { const _path = req.query.path as string;
if (config.blackFileList.includes(_path) || !_path) {
res.send({ code: 403, message: '文件无法访问' }); res.send({ code: 403, message: '文件无法访问' });
} }
if (req.params.file.startsWith('sample/')) { if (_path.startsWith('sample/')) {
const res = await got.get( const res = await got.get(
`https://gitlab.com/whyour/qinglong/-/raw/master/${req.params.file}`, `https://gitlab.com/whyour/qinglong/-/raw/master/${_path}`,
); );
content = res.body; content = res.body;
} else if (req.params.file.startsWith('data/scripts/')) { } else if (_path.startsWith('data/scripts/')) {
content = await getFileContentByName( content = await getFileContentByName(join(config.rootPath, _path));
join(config.rootPath, req.params.file),
);
} else { } else {
content = await getFileContentByName( content = await getFileContentByName(join(config.configPath, _path));
join(config.configPath, req.params.file),
);
} }
res.send({ code: 200, data: content }); res.send({ code: 200, data: content });
} catch (e) { } catch (e) {

View File

@ -9,6 +9,7 @@ import { Op } from 'sequelize';
import config from '../config'; import config from '../config';
import { CrontabViewModel, CronViewType } from '../data/cronView'; import { CrontabViewModel, CronViewType } from '../data/cronView';
import { initPosition } from '../data/env'; import { initPosition } from '../data/env';
import { AuthDataType, SystemModel } from '../data/system';
export default async () => { export default async () => {
const cronService = Container.get(CronService); const cronService = Container.get(CronService);
@ -127,4 +128,7 @@ export default async () => {
// 初始化保存一次ck和定时任务数据 // 初始化保存一次ck和定时任务数据
await cronService.autosave_crontab(); await cronService.autosave_crontab();
await envService.set_envs(); await envService.set_envs();
// 初始化增加系统配置
await SystemModel.upsert({ type: AuthDataType.systemConfig });
}; };

View File

@ -284,7 +284,7 @@ export default class SystemService {
} }
public async updateSystem() { public async updateSystem() {
const cp = spawn('no_tee=true ql update false', { shell: '/bin/bash' }); const cp = spawn('real_time=true ql update false', { shell: '/bin/bash' });
cp.stdout.on('data', (data) => { cp.stdout.on('data', (data) => {
this.sockService.sendMessage({ this.sockService.sendMessage({
@ -311,7 +311,7 @@ export default class SystemService {
} }
public async reloadSystem(target: 'system' | 'data') { public async reloadSystem(target: 'system' | 'data') {
const cmd = `no_tee=true ql reload ${target || ''}`; const cmd = `real_time=true ql reload ${target || ''}`;
const cp = spawn(cmd, { shell: '/bin/bash' }); const cp = spawn(cmd, { shell: '/bin/bash' });
cp.stdout.on('data', (data) => { cp.stdout.on('data', (data) => {

View File

@ -40,6 +40,7 @@ RUN set -x \
openssh \ openssh \
procps \ procps \
netcat-openbsd \ netcat-openbsd \
unzip \
npm \ npm \
&& rm -rf /var/cache/apk/* \ && rm -rf /var/cache/apk/* \
&& apk update \ && apk update \

View File

@ -476,6 +476,9 @@ main() {
if [[ "$no_tee" == "true" ]]; then if [[ "$no_tee" == "true" ]]; then
cmd=">> $file_path 2>&1" cmd=">> $file_path 2>&1"
fi fi
if [[ "$real_time" == "true" ]]; then
cmd=""
fi
local time_format="%Y-%m-%d %H:%M:%S" local time_format="%Y-%m-%d %H:%M:%S"
local time=$(date "+$time_format") local time=$(date "+$time_format")

View File

@ -30,11 +30,13 @@ const Config = () => {
const [language, setLanguage] = useState<string>('shell'); const [language, setLanguage] = useState<string>('shell');
const getConfig = (name: string) => { const getConfig = (name: string) => {
request.get(`${config.apiPrefix}configs/${name}`).then(({ code, data }) => { request
if (code === 200) { .get(`${config.apiPrefix}configs/detail?path=${encodeURIComponent(name)}`)
setValue(data); .then(({ code, data }) => {
} if (code === 200) {
}); setValue(data);
}
});
}; };
const getFiles = () => { const getFiles = () => {

View File

@ -26,7 +26,7 @@ const Diff = () => {
const getConfig = () => { const getConfig = () => {
request request
.get(`${config.apiPrefix}configs/${encodeURIComponent(current)}`) .get(`${config.apiPrefix}configs/detail?path=${encodeURIComponent(current)}`)
.then(({ code, data }) => { .then(({ code, data }) => {
if (code === 200) { if (code === 200) {
setCurrentValue(data); setCurrentValue(data);
@ -36,7 +36,7 @@ const Diff = () => {
const getSample = () => { const getSample = () => {
request request
.get(`${config.apiPrefix}configs/${encodeURIComponent(origin)}`) .get(`${config.apiPrefix}configs/detail?path=${encodeURIComponent(origin)}`)
.then(({ code, data }) => { .then(({ code, data }) => {
if (code === 200) { if (code === 200) {
setOriginValue(data); setOriginValue(data);

View File

@ -3,6 +3,7 @@ const baseUrl = window.__ENV__QlBaseUrl || '/';
export default { export default {
siteName: intl.get('青龙'), siteName: intl.get('青龙'),
baseUrl,
apiPrefix: `${baseUrl}api/`, apiPrefix: `${baseUrl}api/`,
authKey: 'token', authKey: 'token',

View File

@ -1,5 +1,6 @@
import * as Sentry from '@sentry/react'; import * as Sentry from '@sentry/react';
import { loader } from '@monaco-editor/react'; import { loader } from '@monaco-editor/react';
import config from './config';
export function init(version: string) { export function init(version: string) {
// sentry监控 init // sentry监控 init
@ -26,7 +27,7 @@ export function init(version: string) {
// monaco 编辑器配置cdn和locale // monaco 编辑器配置cdn和locale
loader.config({ loader.config({
paths: { paths: {
vs: '/monaco-editor/min/vs', vs: `${config.baseUrl}monaco-editor/min/vs`,
}, },
'vs/nls': { 'vs/nls': {
availableLanguages: { availableLanguages: {