1 Star 0 Fork 0

狮偶 / testServer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
index.js 3.60 KB
一键复制 编辑 原始数据 按行查看 历史
杜天微 提交于 2022-04-30 02:33 . catch err
/**
* @license
* Copyright 2022 Du Tian Wei
* SPDX-License-Identifier: Apache-2.0
*/
const fs = require('fs');
const express = require('express');
var session = require('express-session')
const app = express();
var verbose = process.env.NODE_ENV !== 'test'
const { execSync } = require('child_process');
let config = {
port: 8181,
icp: null
};
try {
let s = fs.readFileSync('../config.json', { encoding: 'utf8' });
if (s) {
Object.assign(config, JSON.parse(s));
}
} catch (e) {
console.log(e);
}
console.log(config);
let userMap = {};
try {
let s = fs.readFileSync('../usermap.json', { encoding: 'utf8' });
if (s) {
userMap = JSON.parse(s);
}
} catch (e) {
console.log(e);
}
console.log(userMap);
app.map = function (a, route) {
route = route || '';
for (var key in a) {
switch (typeof a[key]) {
// { '/path': { ... }}
case 'object':
app.map(a[key], route + key);
break;
// get: function(){ ... }
case 'function':
if (verbose) console.log('%s %s', key, route);
app[key](route, a[key]);
break;
}
}
};
var sess = {
secret: 'nif4n329349h2f8g',
// cookie: {},
resave: true,
saveUninitialized: true
}
// if (app.get('env') === 'production') {
// app.set('trust proxy', 1) // trust first proxy
// sess.cookie.secure = true // serve secure cookies
// }
app.use((req, res, next) => {
// console.log(req.url);
next();
});
app.use(session(sess));
app.use('/static', express.static('static'));
app.use('/openblock/static', express.static('static'));
app.use('/openblock', express.static('../openblock'));
app.use('/testing', express.static('../testing'));
app.use('/docs', express.static('../docs'));
app.use('/runxe', express.raw({ limit: '100mb' }));
function putOpenBlockXE(req, res) {
console.log(req.body.length);
fs.writeFileSync('./static/ob.xe', req.body);
res.send(JSON.stringify({ "result": 'successed' }));
}
function putUserXE(req, res) {
console.log(req.url);
console.log(req.body.length);
let idx = req.url.indexOf('?u=');
if (idx < 0) {
res.sendStatus(403);
return;
}
let userKey = req.url.substring(idx + 3);
let fileName = userMap[userKey];
if (!fileName) {
res.sendStatus(403);
return;
}
console.log(fileName);
fs.mkdirSync('./static/userxe/', { recursive: true });
fs.writeFileSync('./static/userxe/' + fileName + '.xe', req.body);
res.send(JSON.stringify({
"result": 'successed',
'appId': fileName,
'url': '/static/userxe/' + fileName + '.xe'
}));
}
function pushOpenBlockXEToOpenHarmony(req, res) {
console.log(req.body.length);
try {
fs.writeFileSync('./static/openblock.xe', req.body);
execSync('sshpass -p "openharmony" scp ./static/openblock.xe root@192.168.0.20:/data/');
res.send(JSON.stringify({ "result": 'successed' }));
} catch (e) {
console.error(e);
res.send(JSON.stringify({ "result": '环境错误' }));
}
}
app.map({
'/runxe/putOpenBlockXE': {
post: putOpenBlockXE,
},
'/runxe/putUserXE': {
post: putUserXE,
},
'/runxe/pushOpenBlockXEToOpenHarmony': {
post: pushOpenBlockXEToOpenHarmony,
},
'/icp': {
get(req, res) {
res.send(config.icp);
}
}
});
const port = config.port;
app.get('/', function (req, res) {
res.redirect('/testing/');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
JavaScript
1
https://gitee.com/openblock/test-server.git
git@gitee.com:openblock/test-server.git
openblock
test-server
testServer
master

搜索帮助