gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
113 lines • 9.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.initServer = void 0;
const express_1 = __importDefault(require("express"));
const http_1 = __importDefault(require("http"));
const socket_io_1 = __importDefault(require("socket.io"));
const cors_1 = __importDefault(require("cors"));
const UserManager_1 = require("./managers/UserManager");
const Database_1 = require("./managers/Database");
const MonitorManager_1 = require("./managers/MonitorManager");
//
let app = express_1.default();
let packageRoot = __dirname + '/../../..';
let res = packageRoot + '/assets/server';
app.use(express_1.default.static(res + '/static'));
app.use(express_1.default.json());
app.use(express_1.default.urlencoded({ extended: true }));
app.set('views', res + '/views');
app.set('view engine', 'twig');
app.set('twig options', {
strict_variables: false
});
app.get('/', (_req, res) => {
res.render('index.twig');
});
app.get('/monitor', (_req, res) => {
res.render('monitor.twig');
});
function getServerTimeCode(add = 0) {
return Math.floor((Date.now() + add) / 1000).toString(36);
}
function createServer(clientCode, port) {
app.get('/client', cors_1.default(), (_req, res) => {
res.json({
client: {
code: clientCode,
},
time: Math.floor(Date.now() / 1000),
});
});
app.get('/login', cors_1.default(), (_req, res) => {
let user = UserManager_1.userManager.login(clientCode, false);
res.json({
user: user,
});
});
app.get('/timecode', cors_1.default(), (_req, res) => {
res.send(Math.floor(Date.now() / 1000).toString(36));
});
app.get('/requestGuestToken', cors_1.default(), (_req, res) => {
let user = UserManager_1.userManager.login(clientCode, true);
res.json({
user: user,
ip: user.ip,
token: user.token,
});
});
app.post('/jsonrpc/cmd', cors_1.default(), (_req, res) => {
let command = _req.body.command;
let user = UserManager_1.userManager.getByToken(_req.body.token);
Database_1.database.executeCommand(user, command)
.then(result => {
res.json({
result: result,
time: getServerTimeCode(),
});
})
.catch(err => {
res.status(400);
res.send(err);
MonitorManager_1.monitorManager.error(clientCode, 'jsonrpc/cmd', err);
});
});
app.post('/jsonrpc/cmds', cors_1.default(), (_req, res) => {
let commands = _req.body.commands;
let user = UserManager_1.userManager.getByToken(_req.body.token);
return Promise.all(commands.map(command => Database_1.database.executeCommand(user, command)))
.then(results => {
res.json({
results: results,
time: getServerTimeCode(),
});
})
.catch(err => {
res.status(400);
res.send(err);
MonitorManager_1.monitorManager.error(clientCode, 'jsonrpc/cmd', err);
});
});
return new Promise(resolve => {
let server = http_1.default.createServer(app);
server.listen(port, () => resolve(server));
});
}
function initServer(clientCode, port) {
return createServer(clientCode, port)
.then(server => {
const io = socket_io_1.default(server);
const gameIO = io.of('/game');
return {
app: app,
server: server,
io: io,
gameIO: gameIO,
port: port,
};
});
}
exports.initServer = initServer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0RBQThCO0FBQzlCLGdEQUF3QjtBQUN4QiwwREFBaUM7QUFDakMsZ0RBQXdCO0FBQ3hCLHdEQUFxRDtBQUNyRCxrREFBK0M7QUFDL0MsOERBQTJEO0FBUzNELEVBQUU7QUFDRixJQUFJLEdBQUcsR0FBRyxpQkFBTyxFQUFFLENBQUM7QUFDcEIsSUFBSSxXQUFXLEdBQUcsU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUMxQyxJQUFJLEdBQUcsR0FBRyxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7QUFFekMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUN6QyxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN4QixHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRCxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDakMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUU7SUFDcEIsZ0JBQWdCLEVBQUUsS0FBSztDQUMxQixDQUFDLENBQUM7QUFFSCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtJQUN2QixHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFDO0FBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FB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