修复 nginx 转发stream接口失效,停止运行命令支持 pid 参数

This commit is contained in:
whyour
2023-05-04 21:28:14 +08:00
parent 01b404765e
commit 8b8bd279c6
4 changed files with 23 additions and 6 deletions
+5 -1
View File
@@ -170,6 +170,9 @@ export default (app: Router) => {
await systemService.run(
{ ...req.body, logPath },
{
onStart: async (cp, startTime) => {
res.setHeader('QL-Task-Pid', `${cp.pid}`);
},
onEnd: async (cp, endTime, diff) => {
res.end();
},
@@ -195,7 +198,8 @@ export default (app: Router) => {
'/command-stop',
celebrate({
body: Joi.object({
command: Joi.string().required(),
command: Joi.string().optional(),
pid: Joi.number().optional(),
}),
}),
async (req: Request, res: Response, next: NextFunction) => {
+2 -1
View File
@@ -14,6 +14,7 @@ import handler from 'serve-handler';
import * as Sentry from '@sentry/node';
import { EnvModel } from '../data/env';
import { errors } from 'celebrate';
import path from 'path';
export default ({ app }: { app: Application }) => {
app.enable('trust proxy');
@@ -25,7 +26,7 @@ export default ({ app }: { app: Application }) => {
next();
} else {
return handler(req, res, {
public: 'static/dist',
public: path.join(config.rootPath, 'static/dist'),
rewrites: [{ source: '**', destination: '/index.html' }],
});
}
+13 -4
View File
@@ -190,13 +190,22 @@ export default class SystemService {
);
}
public async stop({ command }: { command: string }) {
public async stop({ command, pid }: { command: string; pid: number }) {
if (!pid && !command) {
return { code: 400, message: '参数错误' };
}
if (pid) {
await killTask(pid);
return { code: 200 };
}
if (!command.startsWith(TASK_COMMAND)) {
command = `${TASK_COMMAND} ${command}`;
}
const pid = await getPid(command);
if (pid) {
await killTask(pid);
const _pid = await getPid(command);
if (_pid) {
await killTask(_pid);
return { code: 200 };
} else {
return { code: 400, message: '任务未找到' };