yunzai-micro-plugin
Version:
Yunzai开发管理面板
105 lines (102 loc) • 3.56 kB
JavaScript
import { createHash } from 'node:crypto';
import '../../../utils/index.js';
import { join, extname } from 'path';
import { botInfo, pluginInfo } from '../../../env.js';
import { readFile, rename, writeFile } from 'fs/promises';
import { existsSync, mkdirSync, unlinkSync } from 'node:fs';
import '../../../config/index.js';
import { getLoader } from '../../../utils/getLoader.js';
import Cfg from '../../../config/config.js';
import { getAllWebAddress } from '../../../utils/ipAddress.js';
class SandboxController {
async getPluginsLoader(ctx) {
const pkgs = await getLoader();
ctx.body = {
code: 200,
message: 'success',
data: pkgs
};
}
async uploadFile(ctx) {
const { filepath, originalFilename } = ctx.request.files.file;
const fileHostPath = join(botInfo.WORK_PATH, 'temp', 'fileHost');
const fileBuffer = await readFile(filepath);
const hash = createHash('md5');
hash.update(fileBuffer);
const md5Hash = hash.digest('hex');
const fileExt = extname(originalFilename);
const newFilename = `${md5Hash}${fileExt}`;
const newPath = join(fileHostPath, newFilename);
console.log('【micro-plugin】上传文件:');
console.log(ctx.request.body);
await rename(filepath, newPath);
let address = '';
const { port, host } = Cfg.getConfig('server').server;
if (host === 'auto') {
const { remote } = await getAllWebAddress();
address = `http://${remote[0]}:${port}/api/File/${newFilename}`;
}
else {
address = `http://${host}:${port}/api/File/${newFilename}`;
}
ctx.body = {
code: 200,
message: 'ok',
data: address
};
}
async getOnebot11Data(ctx) {
const sandboxPath = join(pluginInfo.DATA_PATH, 'sandbox');
if (!existsSync(sandboxPath)) {
mkdirSync(sandboxPath, { recursive: true });
}
const onebotv11Json = join(sandboxPath, 'onebotv11.json');
if (!existsSync(onebotv11Json)) {
ctx.body = {
code: 200,
message: 'onebotv11.json not existed!',
data: null
};
}
else {
ctx.body = {
code: 200,
message: 'ok',
data: JSON.parse(await readFile(onebotv11Json, 'utf-8'))
};
}
}
async setOnebot11Data(ctx) {
const sandboxPath = join(pluginInfo.DATA_PATH, 'sandbox');
if (!existsSync(sandboxPath)) {
mkdirSync(sandboxPath, { recursive: true });
}
const onebotv11Json = join(sandboxPath, 'onebotv11.json');
await writeFile(onebotv11Json, JSON.stringify(ctx.request.body));
ctx.body = {
code: 200,
message: 'ok',
data: {}
};
}
async reSetOnebot11Data(ctx) {
const onebotv11Json = join(pluginInfo.DATA_PATH, 'sandbox', 'onebotv11.json');
if (existsSync(onebotv11Json)) {
unlinkSync(onebotv11Json);
ctx.body = {
code: 200,
message: 'ok',
data: {}
};
}
else {
ctx.body = {
code: 500,
message: '数据已删除',
data: {}
};
}
}
}
var SandboxController$1 = new SandboxController();
export { SandboxController$1 as default };