diff --git a/modules/qmining/qmining.js b/modules/qmining/qmining.js index 7c70ca0..f114b0c 100644 --- a/modules/qmining/qmining.js +++ b/modules/qmining/qmining.js @@ -96,20 +96,7 @@ Load() // -------------------------------------------------------------- app.get('/', function (req, res) { - // req.hostname - - let motd = '' - try { - motd = utils.ReadFile(motdFile) - } catch (e) { - - } - res.render('main', { - siteurl: url, - qa: actions.ProcessQA(), - motd: motd - }) - res.end() + res.end('hai') }) app.get('/manual', function (req, res) { @@ -118,76 +105,19 @@ app.get('/manual', function (req, res) { logger.LogReq(req) }) -app.get('/legacy', function (req, res) { - let qcount = data.Subjects.reduce((acc, currItem) => { - acc += currItem.length - return acc - }, 0) - let scount = data.length - - let grouped = data.Subjects.reduce((res, s) => { - let sName = s.getSubjNameWithoutYear() - if (sName) { - if (!res[sName]) { - res[sName] = [] - } - res[sName].push(s) - } else { - res.others.push(s) - } - return res - }, { - others: [] - }) - - const ordered = {} - Object.keys(grouped).sort().forEach((key) => { - ordered[key] = grouped[key] - }) - - res.render('alldata', { - data: data, - orderedData: ordered, - scount: scount, - qcount: qcount, - siteurl: url - }) - - logger.LogReq(req) -}) - app.post('/postfeedback', function (req, res) { - res.redirect('back') logger.Log('New feedback message', logger.GetColor('bluebg'), true) utils.AppendToFile('\n\n' + logger.GetDateString() + ': ' + req.body.message_field, msgFile) }) -app.get('/postfeedback', function (req, res) { - res.redirect('/') -}) - app.get('/lred', function (req, res) { - res.redirect('/legacy') + res.redirect('/legacy') // TODO: redirect to react legacy res.end() logger.LogReq(req) }) app.get('/menuClick', function (req, res) { - res.redirect('/') - res.end() - logger.LogReq(req) -}) - -// all questions readable -app.get('/allqr', function (req, res) { - res.render('allqr', { - d: data.toString().split('\n') - }) - logger.LogReq(req) -}) - -app.get('/greasy', function (req, res) { - res.redirect('https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help') + res.redirect('/') // TODO: redirect to react / res.end() logger.LogReq(req) }) @@ -205,7 +135,7 @@ app.get('/donate', function (req, res) { }) app.get('/thanks', function (req, res) { - res.render('thanks', { + res.render('thanks', { // TODO: redirect to react thanks siteurl: url }) res.end() diff --git a/modules/qmining/views/alldata.ejs b/modules/qmining/views/alldata.ejs deleted file mode 100755 index b19de9e..0000000 --- a/modules/qmining/views/alldata.ejs +++ /dev/null @@ -1,176 +0,0 @@ -<html> - -<body bgcolor="#212127"> - - <head> - <title>All questions</title> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=0.8" /> - <style> - body { - font: normal 14px Verdana; - color: #999999; - } - - td { - font: normal 16px Verdana; - } - - td { - font: normal 16px Verdana; - width: 100%; - } - - textarea { - font: normal 14px Verdana; - color: #999999; - background-color: #212127; - width: 100%; - height: 700 - } - - a { - color: #9999ff; - } - - .collapsible { - background-color: #232329; - color: #999999; - cursor: pointer; - width: 100%; - border: none; - text-align: left; - outline: none; - font-size: 13px; - } - - .openall { - background-color: #212127; - color: #999999; - cursor: pointer; - border: none; - outline: none; - font-size: 13px; - } - - .active, - .collapsible:hover { - background-color: #555; - } - - .content { - padding: 0 18px; - display: none; - overflow: hidden; - background-color: #232329; - } - .subjTitle { - text-align: center; - margin: 13px; - font-size: 23px; - } - </style> - </head> - <center> - <h2> - Ennek az oldalnak a tartalma dinamikusan frissül minden beküldött kérdés után - </br> - <%=scount%> tárgy és <%=qcount%> kérdés - </h2> - </p> - <a href="<%=siteurl%>/allqr"> Letöltés </a> - <button class="openall" onclick="openall()"> Összes kinyitása </button> - </center> - - <% include aludni.ejs %> - - <% Object.keys(orderedData).sort().forEach((key, i) => { %> - <table id=<%=i%>> - <td> - <div class="subjTitle"> - <%= key %> - </div> - </td> - <td style="vertical-align:middle;text-align:right"> - <%= orderedData[key].reduce((acc, item) => { - acc += item.Questions.length - return acc - }, 0)%> - </td> - </table> - </h2> - <div> - - - <% orderedData[key].forEach((subj, i) => { %> - <button - class="collapsible" - style='<%= i % 2 === 0 ? "background-color: #2f2f37" : "" %>' - onmouseenter='mouseEnter(this, <%= i %>)' - onmouseleave='mouseLeave(this, <%= i %>)' - > - <h2> - <table id=<%=i%>> - <td> - <%=subj.Name %> - </td> - <td style="vertical-align:middle;text-align:right"> - <%=subj.length %> - </td> - </table> - </h2> - </button> - <div class="content"> - <% var a = subj.toString().split('\n')%> - <% for (var j = 1; j < a.length; j++) { %> - <% if (a[j][0] == '?') { %> - </br> - <% } %> - <%=a[j] %> - </br> - <% } %> - </div> - <% }) %> - - - </div> - <% }) %> - - - - <script> - var coll = document.getElementsByClassName("collapsible"); - var i; - - for (i = 0; i < coll.length; i++) { - coll[i].addEventListener("click", function() { - this.classList.toggle("active"); - var content = this.nextElementSibling; - if (content.style.display === "block") { - content.style.display = "none"; - } else { - content.style.display = "block"; - } - }); - } - function openall () { - var coll = document.getElementsByClassName("content"); - var i; - for (i = 0; i < coll.length; i++) { - coll[i].style.display = "block"; - } - } - function mouseEnter (e, i) { - e.style.backgroundColor = "#555" - } - function mouseLeave (e, i) { - if (i % 2 == 0) { - e.style.backgroundColor = "#2f2f37" - } else { - e.style.backgroundColor = "#232329" - } - } - </script> - <% include b.ejs %> -</body> -</html> diff --git a/modules/qmining/views/allqr.ejs b/modules/qmining/views/allqr.ejs deleted file mode 100755 index 6e6b48d..0000000 --- a/modules/qmining/views/allqr.ejs +++ /dev/null @@ -1,23 +0,0 @@ -<html> - -<body bgcolor="#212127"> - - <head> - <title>All questions</title> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=0.8" /> - <style> - body { - font: normal 14px Verdana; - color: #999999; - } - </style> - </head> - - <% for (var i = 0; i < d.length; i++) { %> - <%= d[i] %> - </br> - <% } %> - -</body> -</html> diff --git a/modules/qmining/views/aludni.ejs b/modules/qmining/views/aludni.ejs deleted file mode 100755 index b90d50c..0000000 --- a/modules/qmining/views/aludni.ejs +++ /dev/null @@ -1,6 +0,0 @@ -<% var d = new Date().getHours(); -if (d < 6 || d > 22) { %> - <center> - <img src="img/aludni.jpeg" alt="img"/> - </center> -<% } %> diff --git a/modules/qmining/views/b.ejs b/modules/qmining/views/b.ejs deleted file mode 100755 index c0804d8..0000000 --- a/modules/qmining/views/b.ejs +++ /dev/null @@ -1,35 +0,0 @@ -<% function GetRandom(min, max) { - return Math.floor(Math.random() * (max - min + 1) + min); -} %> - - -<% if (GetRandom(0, 100) == 1) { %> - <div style="position:fixed;left:0;bottom:0;margin:0;padding:0;" > - <img onclick="playDeer()" width=30% src="img/tiszai.png" alt="img" style="cursor: - pointer"/> - </div> - - <script> - var deer = new Audio('sound/deer.mp3'); - var deer2 = new Audio('sound/deer2.mp3'); - var deer3 = new Audio('sound/deer3.mp3'); - var deer4 = new Audio('sound/deer4.mp3'); - function GetRandom(min, max) { - return Math.floor(Math.random() * (max - min + 1) + min); - } - function playDeer() { - var r = GetRandom(0, 3); - if (r == 0) { - deer.play(); - } else if (r == 1) { - deer2.play(); - } else if (r == 2) { - deer3.play(); - } else if (r == 3) { - deer4.play(); - } - } - </script> -<% } %> - - diff --git a/modules/qmining/views/main.ejs b/modules/qmining/views/main.ejs deleted file mode 100755 index 4a96f6d..0000000 --- a/modules/qmining/views/main.ejs +++ /dev/null @@ -1,112 +0,0 @@ -<html> - -<body bgcolor="#212127"> - - <head> - <title>Question mining</title> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=0.8" /> - <style> - body { - font: normal 14px Verdana; - color: #999999; - } - - td { - vertical-align: top - } - - textarea { - font: normal 14px Verdana; - color: #999999; - background-color: #212127; - width: 100%; - height: 700; - } - - a { - color: #9999ff; - } - .rainbow { - background: linear-gradient( 92deg, #ff0000, #00ffff); - background: -webkit-linear-gradient( 92deg, #ff0000, #00ffff); - background-size:600vw 600vw; - - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - animation: textAnimate 5s linear infinite alternate; - } - - @keyframes textAnimate { - from { - filter: hue-rotate(0deg); - background-position-x: 0%; - - } - to { - filter: hue-rotate(360deg); - background-position-x: 600vw; - - } - } - </style> - - - </head> - - </p> - <h2> - <a href="<%= siteurl %>/install">Script install</a> | - <a href="<%= siteurl %>/manual">Manual</a> | - <a href="<%= siteurl %>/legacy">Összes kérdés (Olvasható formátum)</a> | - <a href="<%= siteurl %>/data.json">Összes kérdés (JSON)</a> | - <a href="<%= siteurl %>/servergit">Szerver repó</a> | - <a href="<%= siteurl %>/scriptgit">Userscript repó</a> | - <a href="<%= siteurl %>/classesgit">Classes repó</a> | - <a href="<%= siteurl %>/donate">Donate</a> - </h2> - - <hr> - <h3> - <b>MOTD:</b> - <%- motd %> - </h2> - <hr> - - <form action="/postfeedback" , method="post"> - <div>Észrevételek: (közeledő teszt miatti kérdés-karbantartás, bug, feature vagy egyéb dolog, ami nyomja a lelked)</div> - <textarea type="text" name="message_field" style="width: 100%;box-sizing:border-box;height: 100;"></textarea> - <div>Rengeteg spam-et kapok, nyugodtan küldd el ezerszer, akkor hátha észreveszem a spam - között :)</div> - <button>Küldés</button> - </form> - - <hr> - - Hibát kiváltó teszt feltöltése - </br> - - <form action="/badtestsender" enctype=multipart/form-data method="post"> - <input type="file" name="dasfile" /> - <input type="submit" value="Upload" /> - </form> - - </p> - Ha egy kérdésre mindig helytelenül talál választ a userscript (vagy egyéb hibát észlelsz), akkor azon az oldalon nyomj egy ctrl-s -t. Ez lementi a weboldalt úgy ahogy van egy mappába, és egy html fájlba. Ezt a kettőt ha berakod egy .zip-be, és ide feltöltöd, akkor ránézek mi lehet a hiba, és kijavítom. <b> Max 10 MB! - </b> Ha több, elég a .html. Bónusz ha mellékelsz egy readme-t, hogy mit csináljak. - - <% include aludni.ejs %> - - <table> - <td> - <!-- Kommentek / válaszok --> - - <% include qa.ejs %> - - </td> - </table> - <center> ... </center> - - <% include b.ejs %> -</body> -</html> diff --git a/modules/qmining/views/man.ejs b/modules/qmining/views/man.ejs index 403b590..db1a489 100755 --- a/modules/qmining/views/man.ejs +++ b/modules/qmining/views/man.ejs @@ -23,8 +23,6 @@ tesztjeid kérdéseit és (helyes)válaszait feltölti! Ezzel garantálja, hogy másnak a legfrissebb adatok állnak rendelkezésre.</b> <center> -<% include aludni.ejs %> - <h3>Tartalomjegyzék</h3> </center> <hr> @@ -172,5 +170,3 @@ helyesnek vélt válaszok. Fogadott adatok: az összes eddig ismert moodle kérd document.getElementById("tex").value = "// @resource data file:///" + a; } </script> - -<% include b.ejs %> diff --git a/modules/qmining/views/qa.ejs b/modules/qmining/views/qa.ejs deleted file mode 100755 index f3315b3..0000000 --- a/modules/qmining/views/qa.ejs +++ /dev/null @@ -1,35 +0,0 @@ -<center><h2> Q & A: </h3></center> -<% for (var i = qa.length - 1; i >= 0 ; i--) { %> - <hr> - <table style="width:100%"> - <td style="vertical-align:middle;text-align:center;width:5%"> - <h2 > - <%= i %> - </h2> - </td> - - <td > - - <b> - <%= qa[i].q %> - </b> - - <p/> - <% if (qa[i].a) { %> - <% for (var j = 0; j < qa[i].a.length; j++) { %> - - <% if (j != 0) { %> - <p/> - <% } %> - - <%= qa[i].a[j] %> - - <% } %> - - <% } else { %> - <i> Válasz folyamatban... </i> - <% } %> - </td> - </table> - -<% } %> diff --git a/modules/qmining/views/thanks.ejs b/modules/qmining/views/thanks.ejs deleted file mode 100644 index a83885f..0000000 --- a/modules/qmining/views/thanks.ejs +++ /dev/null @@ -1,114 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="https://fonts.googleapis.com/css?family=Quicksand&display=swap" rel="stylesheet"> - <title>Thank you!</title> - <style> - :root{ - --size: 100px; - --bgcolor: #212127; - --color: #fcff4f; - --shadow: rgba(30,2,5,.2); - } - .surface { - position:absolute; - top: 50%; - left: 50%; - transform-style: preserve-3d; - transform: translate(-50%,-50%) rotateX(70deg) rotateZ(300deg); - width: 300px; - height: 300px; - animation: rotatingCoin 1s linear infinite; - } - .coin, - .shadow { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%,-50%) rotateX(30deg); - width: 100px; - height: 100px; - background-image: url('https://i.ya-webdesign.com/images/mario-coin-png-19.png'); - background-position: center; - background-size: cover; - background-color: var(--color); - border-radius: 50%; - } - .shadow { - width: 90px; - height: 90px; - transform: translate(-50%,-50%) translateZ(-25px); - background: linear-gradient(to bottom, rgba(255,255,255,.2) 0%,var(--bgcolor) 35%); - } - - - @keyframes rotatingCoin { - from {transform: translate(-50%,-50%) rotateX(70deg) rotateZ(0);} - to {transform: translate(-50%,-50%) rotateX(70deg) rotateZ(360deg);} - } - - - html,body{ - height:100vh; - overflow: hidden; - } - body { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - background-color: var(--bgcolor); - } - #text{ - font-family: 'Quicksand', sans-serif; - color: white; - font-size: 24px; - text-shadow: 1px 1px 2px rgba(0,0,0,0.6); - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding-top: 30px; - } - #backbutton{ - text-decoration: none; - color: white; - cursor: pointer; - margin: 10px; - background-color: #4bb9bd; - box-shadow: 0px 1px 3px rgba(0,0,0,0.6); - border-radius: 3px; - padding: 3px 10px; - } - #backbutton:hover{ - box-shadow: 0px 1px 2px rgba(0,0,0,0.6); - } - .coincontainer { - position: relative; - width: 200px; - height: 200px; - } - @media only screen and (max-width: 600px) { - body { - flex-direction: column; - } - } - </style> -</head> -<body> - <div class="coincontainer"><div class="surface"> - <div class="coin"></div> - <div class="shadow"></div> - </div></div> - <center> - <div id="text"><span>Thanks for the gold, kind question miner!</span><a id="backbutton" href="<%= siteurl %>">Return</a></div> - </center> - <div class="coincontainer"><div class="surface"> - <div class="coin"></div> - <div class="shadow"></div> - </div></div> - -</body> -</html> diff --git a/modules/qmining/views/uploaded.ejs b/modules/qmining/views/uploaded.ejs deleted file mode 100755 index 38c7812..0000000 --- a/modules/qmining/views/uploaded.ejs +++ /dev/null @@ -1,23 +0,0 @@ -<html> - -<body bgcolor="#212127"> - - <head> - <meta name="viewport" content="width=device-width, initial-scale=0.8" /> - <meta charset="UTF-8"> - <style> - body { - font: normal 14px Verdana; - color: #999999; - } - - a { - color: #9999ff; - } - </style> - </head> - fájl feltöltve! - <a href="/"> Vissza</a> -</body> - -</html> diff --git a/server.js b/server.js index 6307566..facbb30 100755 --- a/server.js +++ b/server.js @@ -20,7 +20,7 @@ const startHTTPS = true const port = 5000 -const httpsport = 8443 +const httpsport = 5001 const express = require('express') const vhost = require('vhost') @@ -29,6 +29,7 @@ logger.Load() const utils = require('./utils/utils.js') const http = require('http') const https = require('https') +const cors = require('cors') const extraModulesFile = './extraModules.json' const modulesFile = './modules.json' @@ -52,6 +53,7 @@ try { } const app = express() +app.use(cors()) app.use(function (req, res, next) { res.on('finish', function () {