代码拉取完成,页面将自动刷新
/**
* @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}`);
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。