diff --git a/back/api/log.ts b/back/api/log.ts index e6e1af94..3839dfe0 100644 --- a/back/api/log.ts +++ b/back/api/log.ts @@ -3,7 +3,8 @@ import { Container } from 'typedi'; import { Logger } from 'winston'; import * as fs from 'fs'; import config from '../config'; -import { getFileContentByName } from '../config/util'; +import { getFileContentByName, readDirs } from '../config/util'; +import { join } from 'path'; const route = Router(); export default (app: Router) => { @@ -12,59 +13,28 @@ export default (app: Router) => { route.get('/', async (req: Request, res: Response, next: NextFunction) => { const logger: Logger = Container.get('logger'); try { - const fileList = fs.readdirSync(config.logPath, 'utf-8'); - const dirs = []; - for (let i = 0; i < fileList.length; i++) { - const stat = fs.lstatSync(config.logPath + fileList[i]); - if (stat.isDirectory()) { - const fileListTmp = fs.readdirSync( - `${config.logPath}/${fileList[i]}`, - 'utf-8', - ); - dirs.push({ - name: fileList[i], - isDir: true, - files: fileListTmp.reverse(), - }); - } else { - dirs.push({ - name: fileList[i], - isDir: false, - files: [], - }); - } - } - res.send({ code: 200, dirs }); + const result = readDirs(config.logPath, config.logPath); + res.send({ + code: 200, + data: result, + }); } catch (e) { logger.error('πŸ”₯ error: %o', e); return next(e); } }); - route.get( - '/:dir/:file', - async (req: Request, res: Response, next: NextFunction) => { - const logger: Logger = Container.get('logger'); - try { - const { dir, file } = req.params; - const content = getFileContentByName( - `${config.logPath}/${dir}/${file}`, - ); - res.send({ code: 200, data: content }); - } catch (e) { - logger.error('πŸ”₯ error: %o', e); - return next(e); - } - }, - ); - route.get( '/:file', async (req: Request, res: Response, next: NextFunction) => { const logger: Logger = Container.get('logger'); try { - const { file } = req.params; - const content = getFileContentByName(`${config.logPath}/${file}`); + const filePath = join( + config.logPath, + req.query.path as string, + req.params.file, + ); + const content = getFileContentByName(filePath); res.send({ code: 200, data: content }); } catch (e) { logger.error('πŸ”₯ error: %o', e); diff --git a/back/api/script.ts b/back/api/script.ts index e86891c9..d6096c8f 100644 --- a/back/api/script.ts +++ b/back/api/script.ts @@ -17,22 +17,19 @@ const route = Router(); export default (app: Router) => { app.use('/scripts', route); - route.get( - '/files', - async (req: Request, res: Response, next: NextFunction) => { - const logger: Logger = Container.get('logger'); - try { - const result = readDirs(config.scriptPath, config.scriptPath); - res.send({ - code: 200, - data: result, - }); - } catch (e) { - logger.error('πŸ”₯ error: %o', e); - return next(e); - } - }, - ); + route.get('/', async (req: Request, res: Response, next: NextFunction) => { + const logger: Logger = Container.get('logger'); + try { + const result = readDirs(config.scriptPath, config.scriptPath); + res.send({ + code: 200, + data: result, + }); + } catch (e) { + logger.error('πŸ”₯ error: %o', e); + return next(e); + } + }); route.get( '/:file', diff --git a/src/pages/log/index.tsx b/src/pages/log/index.tsx index bd069024..6dad7fb2 100644 --- a/src/pages/log/index.tsx +++ b/src/pages/log/index.tsx @@ -52,34 +52,18 @@ const Log = ({ headerStyle, isPhone, theme }: any) => { request .get(`${config.apiPrefix}logs`) .then((data) => { - const result = formatData(data.dirs) as any; - setData(result); - setFilterData(result); + setData(data.data); + setFilterData(data.data); }) .finally(() => setLoading(false)); }; - const formatData = (tree: any[]) => { - return tree.map((x) => { - x.title = x.name; - x.value = x.name; - x.disabled = x.isDir; - x.key = x.name; - x.children = x.files.map((y: string) => ({ - title: y, - value: `${x.name}/${y}`, - key: `${x.name}/${y}`, - parent: x.name, - isLeaf: true, - })); - return x; - }); - }; - const getLog = (node: any) => { - request.get(`${config.apiPrefix}logs/${node.value}`).then((data) => { - setValue(data.data); - }); + request + .get(`${config.apiPrefix}logs/${node.value}?path=${node.parent || ''}`) + .then((data) => { + setValue(data.data); + }); }; const onSelect = (value: any, node: any) => { @@ -88,7 +72,7 @@ const Log = ({ headerStyle, isPhone, theme }: any) => { } setValue('加载中...'); setSelect(value); - setTitle(node.parent || node.value); + setTitle(node.key); getLog(node); }; diff --git a/src/pages/script/index.tsx b/src/pages/script/index.tsx index 4b96b970..27ce8c13 100644 --- a/src/pages/script/index.tsx +++ b/src/pages/script/index.tsx @@ -93,7 +93,7 @@ const Script = ({ headerStyle, isPhone, theme, socketMessage }: any) => { const getScripts = () => { setLoading(true); request - .get(`${config.apiPrefix}scripts/files`) + .get(`${config.apiPrefix}scripts`) .then((data) => { setData(data.data); setFilterData(data.data); @@ -135,7 +135,7 @@ const Script = ({ headerStyle, isPhone, theme, socketMessage }: any) => { const newMode = value ? LangMap[value.slice(-3)] : ''; setMode(isPhone && newMode === 'typescript' ? 'javascript' : newMode); setSelect(node.key); - setTitle(node.parent || node.value); + setTitle(node.key); setCurrentNode(node); getDetail(node); };