require('../connections/mysql-server'); require('../helpers/CheckToken'); require('../helpers/config'); const express = require('express'); const router = express.Router(); const bodyParser = require('body-parser'); const formidable = require('formidable'); router.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); router.use(bodyParser.json({ limit: '50mb', extended: true })); var routes = function () { router.get('/getAll', verifyJWT, (req, res) => { execSQLQuery(`SELECT * FROM texts;`, res, req.originalUrl); }); router.get('/getText/:idtexts', verifyJWT, (req, res) => { const idtexts = parseInt(req.params.idtexts); execSQLQuery(`SELECT DISTINCT * FROM texts WHERE idtexts = ${idtexts};`, res, req.originalUrl); }); router.post('/insert', verifyJWT, (req, res) => { const text = req.body.text; const enabled = req.body.enabled ? 1 : 0; const description = req.body.description; const game = req.body.game ? 1 : 0; execSQLQuery(`INSERT INTO texts(text, enabled, description, game) VALUES (?, ?, ?, ?);`, res, req.originalUrl, [text, enabled, description, game]); }); router.patch('/update', verifyJWT, (req, res) => { const idtexts = parseInt(req.body.idtexts); const text = req.body.text; const enabled = req.body.enabled ? 1 : 0; const description = req.body.description; const game = req.body.game ? 1 : 0; execSQLQuery(`UPDATE texts SET text = ?, enabled = ?, description = ?, game = ? WHERE idtexts = ?;`, res, req.originalUrl, [text, enabled, description, game, idtexts]); }); router.post('/copy', verifyJWT, (req, res) => { let form = new formidable.IncomingForm(); form.maxFileSize = 600 * 1024 * 1024; form.parse(req, function(err,fields,files){ const fs = require('fs'); var name = fields.name; var dir = Variables('src_media') + 'games/' + name; var oldpath = files.file.path; if (fs.existsSync(dir)) { const rimraf = require('rimraf'); rimraf(dir, function(){ console.log("Apagado"); copiaJogo(dir, name, res, fs, oldpath); }); } else { copiaJogo(dir, name, res, fs, oldpath); } }); }); router.get('/CarregarJogo/:idgames', (req, res) => { const Protocolo = req.headers.referer.split('/')[0] + "//"; const fs = require('fs'); const idgames = parseInt(req.params.idgames); const DirLocal = `${Variables('src_media')}games/${idgames}/`; const DirWeb = `${Protocolo}${req.headers.host.split(':')[0]}/games/${idgames}/`; if (fs.existsSync(DirLocal)) { res.redirect(DirWeb + 'index.html') } else { const shell = require('shelljs'); shell.exec('wget -c -P /var/www/html/ -N -m -np -nH -l3 "http://18.228.91.135/games/' + idgames + '/"', function (arquivosbaixados) { shell.exec('wget -c -P /var/www/html/ -nH -r -k -np "http://18.228.91.135/games/' + idgames + '/Build/" -R index.html?*', function (Sucesso) { shell.exec('chmod -R 777 /var/www/html/games/' + idgames + '/', function (Sucesso) { console.log(DirWeb + 'index.html'); res.redirect(DirWeb + 'index.html'); }) }) }) } }) router.get('/SolucaoProblemas/:idgames', verifyJWT, (req, res) => { const idgames = req.params.idgames; const shell = require('shelljs'); shell.exec('rm -rf ' + Variables('src_media') + 'games/' + idgames + '/', function(Sucesso) { console.log("Jogo " + idgames + " excluido com sucesso!"); res.send(true); }); }); router.post('/InsertGamesExercise', verifyJWT, (req, res) => { const idgames = parseInt(req.body.idgames); const idexercises = req.body.idexercises; const idzoechattime = req.body.idzoechattime; execSQLQuery(`INSERT INTO gamesexercises(idgames, idexercises, idzoechattime) VALUES (?, ?, ?);`, res, req.originalUrl, [idgames, idexercises, idzoechattime]); }); router.get('/getInteracoes/:idgames', verifyJWT, (req, res) => { const idgames = parseInt(req.params.idgames); execSQLQuery(`select ge.*, CASE WHEN ge.idexercises IS NOT NULL THEN (SELECT e.description FROM exercises e WHERE e.idexercises = ge.idexercises) WHEN ge.idzoechattime IS NOT NULL THEN (SELECT z.description FROM zoechattime z WHERE z.idzoechattime = ge.idzoechattime) END AS 'description', CASE WHEN ge.idexercises IS NOT NULL THEN 'Exercício' WHEN ge.idzoechattime IS NOT NULL THEN 'ChatTime' END AS 'type' from gamesexercises ge where ge.idgames = ${idgames};`, res, req.originalUrl); }); router.delete('/deleteInteracao/:idgamesexercises', verifyJWT, (req, res) => { const idgamesexercises = parseInt(req.params.idgamesexercises); execSQLQuery(`delete from gamesexercises where idgamesexercises = ${idgamesexercises};`, res, req.originalUrl); }); return router; }; function copiaJogo(dir, name, res, fs, oldpath) { fs.mkdirSync(dir); fs.rename(oldpath, dir + ".zip", function (err) { console.log('Copiado com sucesso!'); require('all-unpacker').unpackZip(dir + ".zip", { targetDir: dir, forceDirectory: true }, function(err, files, text) { if (err) return console.error(err); if (files) console.log('files', files); if (text) { console.log('text', text) fs.readFile(dir, (err, data) => { //if (err) throw err; console.log("Extraído com sucesso!"); fs.unlink(dir + '.zip', function() { console.log("Apagado com sucesso!"); res.send(true); }) }); }; }) }) } module.exports = routes;