Lots of bugfixes, improvements: Dinamyc QA, file uploading refactoring, file managing logging improvements ...

This commit is contained in:
YourFriendlyNeighborhoodDealer 2019-02-24 10:27:47 +01:00
parent 3250139c82
commit b8c1a6ca97
14 changed files with 662 additions and 533 deletions

0
README.md Normal file → Executable file
View file

View file

@ -22,7 +22,8 @@ module.exports = {
ProcessIncomingRequest: ProcessIncomingRequest, ProcessIncomingRequest: ProcessIncomingRequest,
CheckData: CheckData, CheckData: CheckData,
NLoad: NLoad, NLoad: NLoad,
LoadJSON: LoadJSON LoadJSON: LoadJSON,
ProcessQA: ProcessQA
}; };
var recievedFile = "stats/recieved"; var recievedFile = "stats/recieved";
@ -31,6 +32,7 @@ var manFile = "public/man.html";
var dataFile = "public/data.json"; var dataFile = "public/data.json";
var motdFile = "public/motd"; var motdFile = "public/motd";
var versionFile = "public/currVersion"; var versionFile = "public/currVersion";
const qaFile = "public/qa";
var logger = require('./logger.js'); var logger = require('./logger.js');
var utils = require('./utils.js'); var utils = require('./utils.js');
@ -490,3 +492,31 @@ function LoadJSON(resource) {
logger.Log("[LOAD]:Error loading sutff", logger.GetColor("redbg"), true); logger.Log("[LOAD]:Error loading sutff", logger.GetColor("redbg"), true);
} }
} }
function ProcessQA() {
if (!utils.FileExists(qaFile))
utils.WriteFile("", qaFile);
let a = utils.ReadFile(qaFile).split("\n");
let r = [];
let ind = 0;
for (let i = 0; i < a.length; i++) {
if ( a[i] == "#")
ind ++;
else {
if (r[ind] == undefined)
r[ind] = {};
if (r[ind].q == undefined) {
r[ind].q = a[i];
} else {
if (r[ind].a == undefined)
r[ind].a = [];
r[ind].a.push(a[i]);
}
}
}
return r;
}

0
license Normal file → Executable file
View file

0
logger.js Normal file → Executable file
View file

0
merger.js Normal file → Executable file
View file

0
public/currVersion Normal file → Executable file
View file

0
public/favicon.ico Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Before After
Before After

990
public/man.html Normal file → Executable file
View file

@ -1,494 +1,496 @@
<html> <html>
<meta charset="UTF-8"> <meta charset="UTF-8">
<body bgcolor="#212127"> <body bgcolor="#212127">
<head> <head>
<title>Moodle/Elearning/KMOOC manual</title> <title>Moodle/Elearning/KMOOC manual</title>
<style> <style>
body { body {
font: normal 17px Verdana; font: normal 17px Verdana;
color: #999999; color: #999999;
} }
a { a {
color: #9999ff; color: #9999ff;
} }
textarea { textarea {
font: normal 17px Verdana; font: normal 17px Verdana;
color: white; color: white;
background-color: #212127; background-color: #212127;
width: 90%; width: 90%;
height: 250px; height: 250px;
} }
</style> </style>
</head> </head>
<center> <center>
<h1>Moodle/Elearnig/KMOOC manual</h1> <h1>Moodle/Elearnig/KMOOC manual</h1>
</center> </center>
<center> <center>
Ez a userscript Moodle/Elearnig/KMOOC tesztek megoldása során segítséget jelenít meg. Ez a userscript Moodle/Elearnig/KMOOC tesztek megoldása során segítséget jelenít meg.
</center> </center>
</p> </p>
<b>A válasz ablakban jobb felül lévő százalék jelzi, hogy mekkora eséllyel jó a megoldás. Ez <b>A válasz ablakban jobb felül lévő százalék jelzi, hogy mekkora eséllyel jó a megoldás. Ez
sokszor jó viszonyítás, de semmi sem biztos! Bármikor előfordulhat, hogy nem jó a sokszor jó viszonyítás, de semmi sem biztos! Bármikor előfordulhat, hogy nem jó a
megjelenített válasz! Ezért csak saját felelőségedre használd!</b> Sok kikerülhetetlen megjelenített válasz! Ezért csak saját felelőségedre használd!</b> Sok kikerülhetetlen
hibalehetőség van, amit egyszerű nem lehet scriptben lekezelni (Pl rosszul megadott kérdés hibalehetőség van, amit egyszerű nem lehet scriptben lekezelni (Pl rosszul megadott kérdés
tanár részéről). Kézzel is lehet keresni a elmentett kérdések között. Ezért mindég tanár részéről). Kézzel is lehet keresni a elmentett kérdések között. Ezért mindég
legyen egy letöltött verziód a kérdésekről, mert nem 100% hogy mindég elérhető a szerver! legyen egy letöltött verziód a kérdésekről, mert nem 100% hogy mindég elérhető a szerver!
Továbbá ha a moodle oldalán a layout megváltozik, a script nem fog működni! Ez nem annyira Továbbá ha a moodle oldalán a layout megváltozik, a script nem fog működni! Ez nem annyira
gyakori, de bármikor megtörténhet! Érdemes nem kikapcsolni a tampermonkey-ban a userscript gyakori, de bármikor megtörténhet! Érdemes nem kikapcsolni a tampermonkey-ban a userscript
frissítést. Ez nem windows update, itt tényleg hibajavítások jönnek ki. Hiba, észrevétel frissítést. Ez nem windows update, itt tényleg hibajavítások jönnek ki. Hiba, észrevétel
esetén : <a target="_blank" href="https://questionmining.tk">Script Feedback</a> (ezt esetén : <a target="_blank" href="https://qmining.tk">Script Feedback</a> (ezt
gyakran még aznap megnézem. gyakran még aznap megnézem.
</p> </p>
</p> </p>
<b>Továbbá ez a userscript HTTP requestekket küldhet egy szerver felé (ha ezt engedélyezed), <b>Továbbá ez a userscript HTTP requestekket küldhet egy szerver felé (ha ezt engedélyezed),
ahova az összes megoldott teszteid kérdéseit és (helyes)válaszait feltölti! Ezzel garantálja, ahova az összes megoldott teszteid kérdéseit és (helyes)válaszait feltölti! Ezzel garantálja,
hogy neked, és mindenki másnak a legfrissebb adatok állnak rendelkezésre. Ezt letilthatod, ha a hogy neked, és mindenki másnak a legfrissebb adatok állnak rendelkezésre. Ezt letilthatod, ha a
menüben a helyi fájl használatát választod, vagy a userscript kiegészitődnél nem engeded meg menüben a helyi fájl használatát választod, vagy a userscript kiegészitődnél nem engeded meg
ezeket a kéréseket továbbítani. Ez alapból engedélyezve van,</b> ezeket a kéréseket továbbítani. Ez alapból engedélyezve van,</b>
<center> <center>
<h3>Tartalomjegyzék</h3> <h3>Tartalomjegyzék</h3>
</center> </center>
<hr> <hr>
<ul> <ul>
<li> <li>
<b>Használat</b> - Ez szuper fontos, elsőnek olvasd el <b>Használat</b> - Ez szuper fontos, elsőnek olvasd el
</li> </li>
<li> <li>
<b>Eddigi teszt kérdések</b> - Itt elérhető az eddigi összes ismert teszt <b>Eddigi teszt kérdések</b> - Itt elérhető az eddigi összes ismert teszt
kérdés-válaszai kérdés-válaszai
</li> </li>
<li> <li>
<b>Beüzemelés (online)</b> - Beüzemelés, online verzió <b>Beüzemelés (online)</b> - Beüzemelés, online verzió
</li> </li>
<li> <li>
<b>Beüzemelés (helyi)</b> - Beüzemelés, helyi fájlos verizó <b>Beüzemelés (helyi)</b> - Beüzemelés, helyi fájlos verizó
</li> </li>
<li> <li>
<b>Több tárgy hozzáadása</b> - Ez csak helyi fájlos verziónál kell, de akkor <b>Több tárgy hozzáadása</b> - Ez csak helyi fájlos verziónál kell, de akkor
fontos fontos
</li> </li>
<li> <li>
<b>Beolvasott kérdések struktúrája</b> - Ha bármikor (neten, vagy helyi fájlon) <b>Beolvasott kérdések struktúrája</b> - Ha bármikor (neten, vagy helyi fájlon)
változtatni akarsz, akkor illik tudni változtatni akarsz, akkor illik tudni
</li> </li>
<li> <li>
<b>Gyakran előforduló kérdések</b> - Ha itt nincs kérdésed, akkor <a <b>Gyakran előforduló kérdések</b> - Ha itt nincs kérdésed, akkor <a
href="http://questionmining.tk">itt alul</a> tedd fel! href="http://qmining.tk">itt alul</a> tedd fel!
</li> </li>
<li> <li>
<b>Adat egyszerűsítés</b> - Ha túl sok egyforma kérdésed van ;) <b>Adat egyszerűsítés</b> - Ha túl sok egyforma kérdésed van ;)
</li> </li>
<li> <li>
<b>Other stuff</b> <b>Other stuff</b>
</li> </li>
</ul> </ul>
<center> <center>
<h3>Használat</h3> <h3>Használat</h3>
</center> </center>
<hr> <hr>
<table style="table-layout:fixed;vertical-align:top;width:100%"> <table style="table-layout:fixed;vertical-align:top;width:100%">
<td> <td>
</p> Ha először használod, olvasd el a lenti beüzemelés részt. </p> Ha először használod, olvasd el a lenti beüzemelés részt.
</p> Ha másodszor, és tesztet akarsz megoldani, akkor először nézd meg a menüben, hogy aktív-e a </p> Ha másodszor, és tesztet akarsz megoldani, akkor először nézd meg a menüben, hogy aktív-e a
tárgyad. Teszt közben a script a megadott tárgy már lementett kérdéseiből próbál segíteni. tárgyad. Teszt közben a script a megadott tárgy már lementett kérdéseiből próbál segíteni.
</p> </p>
<b>Teszt végén teendők ha helyi fájlban vannak az adatjaid:</b> Ha egy teszt végére <b>Teszt végén teendők ha helyi fájlban vannak az adatjaid:</b> Ha egy teszt végére
értél, akkor megjelenik a megoldásos oldal, ahol minden kérdés fel van sorolva. Itt a értél, akkor megjelenik a megoldásos oldal, ahol minden kérdés fel van sorolva. Itt a
script szépen öszegyűjti a kérdés/válasz kombókat, aztán feldob egy ablakot, amire script szépen öszegyűjti a kérdés/válasz kombókat, aztán feldob egy ablakot, amire
kattintva ezt megjeleníti. Az ott megjelenített kérdéseket be kell másolnod a .txt-be, a kattintva ezt megjeleníti. Az ott megjelenített kérdéseket be kell másolnod a .txt-be, a
megfelelő tárgy után (+tárgynév...). Userscript nem tud fájlba írni. megfelelő tárgy után (+tárgynév...). Userscript nem tud fájlba írni.
</p> </p>
</p> Teszt közben még több dolog történhet: </p> Teszt közben még több dolog történhet:
</p> </p>
<ul> <ul>
<li><b>Nem jó kérdésre ad választ a script:</b> Ilyenkor az van, hogy nincs meg a kérdés a <li><b>Nem jó kérdésre ad választ a script:</b> Ilyenkor az van, hogy nincs meg a kérdés a
txt-ben, vagy több hasonló kéréds/válasz van. Ilyenkor a jobbra/balra gombal váltogathatsz txt-ben, vagy több hasonló kéréds/válasz van. Ilyenkor a jobbra/balra gombal váltogathatsz
azok a kérdés/válasz kombók közül, amit talált a script</li> azok a kérdés/válasz kombók közül, amit talált a script</li>
<li><b>Több teszt kérdés van egy odalon:</b> Fel le gombal váltogathatsz a kérdések között. <li><b>Több teszt kérdés van egy odalon:</b> Fel le gombal váltogathatsz a kérdések között.
Ilyenkor is működik az előbb említett funkció. Az indexek, amit kiír a bal felső sarokban: Ilyenkor is működik az előbb említett funkció. Az indexek, amit kiír a bal felső sarokban:
aktuális kérdés száma / aktuális találat száma.</li> aktuális kérdés száma / aktuális találat száma.</li>
<li><b>Nem jelenik meg semmi, vagy nem működik a script:</b> Megesik az ilyesmi. Ekkor <li><b>Nem jelenik meg semmi, vagy nem működik a script:</b> Megesik az ilyesmi. Ekkor
megnyithatd a kérdések filet, és oldschool CTRL-F el keresgethetsz. Na, azért még mindég megnyithatd a kérdések filet, és oldschool CTRL-F el keresgethetsz. Na, azért még mindég
jobb mint a semmi!</li> jobb mint a semmi!</li>
</ul> </ul>
</p> A script radiobuttonos, tickboxos, képes és szöveges kérdéseknél is jól működik. Egyéb </p> A script radiobuttonos, tickboxos, képes és szöveges kérdéseknél is jól működik. Egyéb
típusú kérdésekre nincsen (nagyon) felkészítve. típusú kérdésekre nincsen (nagyon) felkészítve.
</p> Érdemes az éppen nem használt tárgyakat nem-bepipálni, mert akkor baromi sok kérdés </p> Érdemes az éppen nem használt tárgyakat nem-bepipálni, mert akkor baromi sok kérdés
közül kell keresni, és az előfordulhat, hogy lassú. közül kell keresni, és az előfordulhat, hogy lassú.
</p> Egyéb funkciók: </p> Egyéb funkciók:
<ul> <ul>
<li> <li>
Ha esetleg videókat nézel, akkor spacel lehet play/pausolni, és jobra/balra Ha esetleg videókat nézel, akkor spacel lehet play/pausolni, és jobra/balra
gombbal ugrani a videóban. gombbal ugrani a videóban.
</li> </li>
<li> <li>
Menüben el lehet rejteni a kérdéseket a felugró ablakról, így az Menüben el lehet rejteni a kérdéseket a felugró ablakról, így az
kisebb helyet foglal, de így nem bírod ellenőrizni, hogy tényleg jó kérdés/választ talált-e. kisebb helyet foglal, de így nem bírod ellenőrizni, hogy tényleg jó kérdés/választ talált-e.
</li> </li>
<li> <li>
Ugyanitt az üdvözlő üzenetet is el lehet rejteni. Ez frissítésnél vagy hibánál ígyis Ugyanitt az üdvözlő üzenetet is el lehet rejteni. Ez frissítésnél vagy hibánál ígyis
úgyis megjelenik, mert azok nagyából fontosak. úgyis megjelenik, mert azok nagyából fontosak.
</li> </li>
<li> <li>
Ha bármikor nem kell a scirpt, simán kapcsold ki tampermonkeyban. Ha Ha bármikor nem kell a scirpt, simán kapcsold ki tampermonkeyban. Ha
bármiért is el akarod tüntetni a következő oldalig az éppen megjelenő script ablakot, akkor bármiért is el akarod tüntetni a következő oldalig az éppen megjelenő script ablakot, akkor
középső egérgombal kattintva rajta ezt megteheted. középső egérgombal kattintva rajta ezt megteheted.
</li> </li>
</ul> </ul>
<h3>TL; DR:</h3> <h3>TL; DR:</h3>
Olvasd csak el. Az öszes bonyodalom abból adódik, hogy a tampermonkey API-je korlátozott, és Olvasd csak el. Az öszes bonyodalom abból adódik, hogy a tampermonkey API-je korlátozott, és
néhány dolgot neked kell megcsinálni, megérteni. Ha az online kérdéseket használod, akkor nagy néhány dolgot neked kell megcsinálni, megérteni. Ha az online kérdéseket használod, akkor nagy
eséllyel semmi teendőd, de azért jó ha tudod hogy működik, ha esetleg valami elromlik teszt eséllyel semmi teendőd, de azért jó ha tudod hogy működik, ha esetleg valami elromlik teszt
közben, tudd hogy lehet megcsinálni gyorsan. <b> Legyen mindég nálad egy másolat az online közben, tudd hogy lehet megcsinálni gyorsan. <b> Legyen mindég nálad egy másolat az online
kérdésekről, mert bármikor eltűnhet!</b> kérdésekről, mert bármikor eltűnhet!</b>
</td> </td>
<td width=20%> <td width=20%>
<img src="img/rtfm.jpg" alt="img"/> <img src="img/rtfm.jpg" alt="img"/>
</td> </td>
</table> </table>
<center> <center>
<h3>Eddigi teszt kérdések:</h3> <h3>Eddigi teszt kérdések:</h3>
</center> </center>
<hr> <hr>
<a target="_blank" href="http://questionmining.tk/"><b>Eddigi összes kérdés</b></a> Használat: <a target="_blank" href="http://qmining.tk/legacy"><b>Eddigi összes kérdés</b></a> Használat: Ha
Másold be a saját fájlodba. Ha csak egy tárgyé kell, akkor vedd ki a pipát a scirpt UI-nál, vagy régi módszerrel fájlból olvasod be a kérdéseket, akkor abba kell bemásolni az egészet. Továbbá
töröld ki a fájlból azt a részt. Csak akkor kell, ha helyi adatokat akarsz használni <b>Viszont ez még arra jó, hogy ha valamiért bug-os a script, akkor itt tudsz ctrl-f ezgetni, vagy ha
kifejezetten ajánlott ezeket még ekkor is lementeni, mivel nincs garancia a szerver folyamatos lemented az összes kérdést, akkor még akkor is biztonságban vagy, ha netán leáll a szerver, vagy
működésére!</b> elmegy a neted.
<table style="table-layout:fixed;width:100%"> <table style="table-layout:fixed;width:100%">
<td style="vertical-align:top"> <td style="vertical-align:top">
<center> <center>
<h3>Beüzemelés (online)</h3> <h3>Beüzemelés (online)</h3>
</center> </center>
<hr> <hr>
</p> 1.5-ben bekerült egy új feature, ez pedig az, hogy szervertől szedi a kérdéseket a script. </p> 1.5-ben bekerült egy új feature, ez pedig az, hogy szervertől szedi a kérdéseket a script.
Elküldött, és letöltött adatokról lentebb tudsz olvasni. 3 opció elérhető, amit a menüben lehet Elküldött, és letöltött adatokról lentebb tudsz olvasni. 3 opció elérhető, amit a menüben lehet
álligatni: álligatni:
<ul> <ul>
<li> <li>
</p> Helyi fájlból: a script a forráskódban általad megatodd útvonalon </p> Helyi fájlból: a script a forráskódban általad megatodd útvonalon
található fájlból olvassa be a kérdéseket, és ott keres. A tesztek végén mindég be kell található fájlból olvassa be a kérdéseket, és ott keres. A tesztek végén mindég be kell
másolnod az új kérdéseket. Erről a következő szekció mesél többet másolnod az új kérdéseket. Erről a következő szekció mesél többet
</li> </li>
<li> <li>
Neteről: interneten hostolt adatbázis letöltése, és használata. Mindkét verzióhoz Neteről: interneten hostolt adatbázis letöltése, és használata. Mindkét verzióhoz
azonnal feltölti az éppen megoldott tesztek kérdés-válaszait, ezért azonnal látnod azonnal feltölti az éppen megoldott tesztek kérdés-válaszait, ezért azonnal látnod
kell(ene) azokat. kell(ene) azokat.
<ul> <ul>
<li> <li>
Karbantartott: Ez garantáltan működik, válogatott kérdések vannak benne. Viszont Karbantartott: Ez garantáltan működik, válogatott kérdések vannak benne. Viszont
nem a legfrissebb. nem a legfrissebb.
</li> </li>
<li> <li>
Szabadon szerkeszthető: Legfrisebb kérdések. Ezt bárki szerkesztheti, nem csak Szabadon szerkeszthető: Legfrisebb kérdések. Ezt bárki szerkesztheti, nem csak
jó szándékból! jó szándékból!
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
<h5>A weboldal működése: </h5> <h5>A weboldal működése: </h5>
Egyik oldalon egy szerkeszthető textbox található (bal). Ez a nem karbantartott adat. Ezt bárki Egyik oldalon egy szerkeszthető textbox található (bal). Ez a nem karbantartott adat. Ezt bárki
szerkesztheti, és azonnal életbe lép minden változtatás, szóval óvatosan. Elvileg ellenőrzi, szerkesztheti, és azonnal életbe lép minden változtatás, szóval óvatosan. Elvileg ellenőrzi,
hogy helyes-e a bevitt adat, de ez nem bomba biztos. Másik oldaloni (jobb) egy read-only, stabil hogy helyes-e a bevitt adat, de ez nem bomba biztos. Másik oldaloni (jobb) egy read-only, stabil
adatbázis van, ami manuálisan van karban tartva, és biztosan működik. </p> Ha online adatokat adatbázis van, ami manuálisan van karban tartva, és biztosan működik. </p> Ha online adatokat
használsz, akkor a tesztek végén automatikusan el lesznek küldve az új kérdések, és hozzá használsz, akkor a tesztek végén automatikusan el lesznek küldve az új kérdések, és hozzá
lesznek adva a nyílt végére. Így azonnal frissül neked, és másoknak is az adatbázis. Ezért nem lesznek adva a nyílt végére. Így azonnal frissül neked, és másoknak is az adatbázis. Ezért nem
válalok felelősséget, és hibák is lehetnek benne. Ezeket nyugodtan kijavíthatod. Időnként ezek válalok felelősséget, és hibák is lehetnek benne. Ezeket nyugodtan kijavíthatod. Időnként ezek
bekerülnek a stabilba. <b>Ajánlott ezeket lementeni, mivel nincs garancia a szerver folyamatos bekerülnek a stabilba. <b>Ajánlott ezeket lementeni, mivel nincs garancia a szerver folyamatos
működésére!</b> Legalul egy textbox van, ahol minden lelki működésére!</b> Legalul egy textbox van, ahol minden lelki
bánatodat elküldheted. bánatodat elküldheted.
</td> </td>
<td style="vertical-align:top"> <td style="vertical-align:top">
<center> <center>
<h3>Beüzemelés (helyi adatokkal)</h3> <h3>Beüzemelés (helyi adatokkal)</h3>
</center> </center>
<hr> <hr>
</p> </p>
<b>Ha netről használod a kérdéseket, akkor ezt a részt kiskippelheted. De csak ezt</b> <b>Ha netről használod a kérdéseket, akkor ezt a részt kiskippelheted. De csak ezt</b>
</p>Ezt minden frissítésnél el kell játszanod, mert az egész script (beleértve az elérési </p>Ezt minden frissítésnél el kell játszanod, mert az egész script (beleértve az elérési
utadat) felülíródik. Frissítés után a 3. pontot ismételd. utadat) felülíródik. Frissítés után a 3. pontot ismételd.
<ul> <ul>
<li> <li>
<b>1. :</b> <b>1. :</b>
<a target="_blank" <a target="_blank"
href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help">Greasyfork</a>-ról href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help">Greasyfork</a>-ról
telepítsd a scriptet. Ha ezt látod, akkor ez nagy esélyel sikerült. telepítsd a scriptet. Ha ezt látod, akkor ez nagy esélyel sikerült.
</p> </p>
<b>2. :</b> <b>2. :</b>
<ul> <ul>
<li><b>a/</b> Ha van kérdés adatbázisod. Ugorj a 3.-as pontra. <li><b>a/</b> Ha van kérdés adatbázisod. Ugorj a 3.-as pontra.
</li> </li>
</p> </p>
<li><b>b/</b> Ha nincs kérdés adatbázisod. Hozz létre egy üres .txt-filet, vagy <li><b>b/</b> Ha nincs kérdés adatbázisod. Hozz létre egy üres .txt-filet, vagy
fentebb az Eddigi kérdések pontnál tölts le párat. Inditásnál ha üres a file, akkor fentebb az Eddigi kérdések pontnál tölts le párat. Inditásnál ha üres a file, akkor
hibát jelez, de miután feltöltöd nem kellene. Ha több tárgyat szeretnél használni, hibát jelez, de miután feltöltöd nem kellene. Ha több tárgyat szeretnél használni,
akkor feltétlen olvasd el az ez alatti útmutatót! akkor feltétlen olvasd el az ez alatti útmutatót!
</li> </li>
</ul> </ul>
</li> </li>
<li> <li>
<b>3. :</b> Nyisd meg a tampermonkey-d. Böngésző jobbfelsősarkánál nagy esélyel van <b>3. :</b> Nyisd meg a tampermonkey-d. Böngésző jobbfelsősarkánál nagy esélyel van
tampermonkey ikon. Katt, majd dashboard. Ott fel lesz sorolva egy pár script. Válaszd ki tampermonkey ikon. Katt, majd dashboard. Ott fel lesz sorolva egy pár script. Válaszd ki
az Elektro help-et. az Elektro help-et.
</br> Rögtön az elején látsz csomó cuccot.// ==UserScript== meg @name meg ilyesmi. </br> Rögtön az elején látsz csomó cuccot.// ==UserScript== meg @name meg ilyesmi.
Keresd meg a @resource taget. Keresd meg a @resource taget.
</br> Most jön a .txt-d. Az elérési útját másold be, hogy nagyából hasonló legyen: </br> Most jön a .txt-d. Az elérési útját másold be, hogy nagyából hasonló legyen:
</br> </br>
</p> // @resource data file:///D:/OE/Elektronika/Elektro%20All%20ELearning.txt </p> // @resource data file:///D:/OE/Elektronika/Elektro%20All%20ELearning.txt
</p> Ide másold be a sima elérési utat, majd convert! Ezután az eredményt </p> Ide másold be a sima elérési utat, majd convert! Ezután az eredményt
bemásolhatod a @resouce taghoz. kiterjesztésről (.txt) ne feledkezz meg ;) bemásolhatod a @resouce taghoz. kiterjesztésről (.txt) ne feledkezz meg ;)
<input style="width:60%;" type="text" id="tex" /><button onclick="conv()"> Convert! <input style="width:60%;" type="text" id="tex" /><button onclick="conv()"> Convert!
</button><br> Másik jó megoldás, hogy a fájlodat megnyitod böngészöben, és az url-jét </button><br> Másik jó megoldás, hogy a fájlodat megnyitod böngészöben, és az url-jét
másolod be a script fejlécébe. másolod be a script fejlécébe.
</li> </br> Ez csak windowson jó, ha netán Mac-et vagy GNU/Linux-ot használsz akkor írj
</p> feedback-et az oldalon, és leírom hogy kell.
<li> </li>
<b>4. :</b> Kész! Mentsd el, és hf. Nagy esélyel először hibával fogsz találkozni. </p>
Dont worry! A Hibák részben pont ezt fogom leírni. <li>
</li> <b>4. :</b> Kész! Mentsd el, és hf. Nagy esélyel először hibával fogsz találkozni.
</ul> Dont worry! A Hibák részben pont ezt fogom leírni.
<center> </li>
<h3>Több tárgy kérdéseinek használata helyi adatokkal: (1.2)</h3> </ul>
</center> <center>
<hr> <h3>Több tárgy kérdéseinek használata helyi adatokkal: (1.2)</h3>
</br> Röviden: Kérdések +tárgynév sorral elválasztva külön tárgynak számítanak </center>
</p> Hosszabban: Vegyük például, hogy Elektornika, és Jazz kérdésekre szeretnéd használni a <hr>
scriptet. Ekkor a .txt-d két részre lesz fel osztva a következő módon: Első sora: "+Elektró </br> Röviden: Kérdések +tárgynév sorral elválasztva külön tárgynak számítanak
(moodle)". Ez a neve annak a tárgynak, amihez a sor után következő kérdések tartoznak, </p> Hosszabban: Vegyük például, hogy Elektornika, és Jazz kérdésekre szeretnéd használni a
mindaddíg, amíg egy másik "+" kezdetű sor nem következik. Ha ez történik, akkor meg kell adnod a scriptet. Ekkor a .txt-d két részre lesz fel osztva a következő módon: Első sora: "+Elektró
következő tárgy nevét, ez esetben: "+Jazz (kmooc). Ebből tudja a script, hogy ez egy másik (moodle)". Ez a neve annak a tárgynak, amihez a sor után következő kérdések tartoznak,
tárgy. Minden kmooc és moodle oldalon megjelenik egy Menü a jobb alsó sarokban, amire kattintva mindaddíg, amíg egy másik "+" kezdetű sor nem következik. Ha ez történik, akkor meg kell adnod a
ki bírod választani, hogy mely tárgy legyen aktív. Ha valamely tárgy aktív, akkor a script a következő tárgy nevét, ez esetben: "+Jazz (kmooc). Ebből tudja a script, hogy ez egy másik
tárgy kérdései közül fogja keresni a választ az aktuális kérdésre. Ha egy sincs bejelölve, akkor tárgy. Minden kmooc és moodle oldalon megjelenik egy Menü a jobb alsó sarokban, amire kattintva
nem lesz találta soha. ki bírod választani, hogy mely tárgy legyen aktív. Ha valamely tárgy aktív, akkor a script a
</p> tárgy kérdései közül fogja keresni a választ az aktuális kérdésre. Ha egy sincs bejelölve, akkor
A jobb alsó sarokban 1.2 óta található egy menü gomb. Ha rákattintasz, akkor megjelenik egy nem lesz találta soha.
új ablak az oldal közepefele. Ezt be tudod zárni, vagy a listázott tárgyakat tudod </p>
aktiválni/inaktiválni. Ha egy tárgy aktív, akkor annak a kérdés-válaszai között keres a A jobb alsó sarokban 1.2 óta található egy menü gomb. Ha rákattintasz, akkor megjelenik egy
script választ az aktuális kérdésre. új ablak az oldal közepefele. Ezt be tudod zárni, vagy a listázott tárgyakat tudod
</td> aktiválni/inaktiválni. Ha egy tárgy aktív, akkor annak a kérdés-válaszai között keres a
</table> script választ az aktuális kérdésre.
<center> </td>
<h3>Beolvasott kérdések struktúrája</h3> </table>
</center> <center>
<hr> <h3>Beolvasott kérdések struktúrája</h3>
</p> A .txt-ben "?" jelöli a kérdést, "!" a választ, ">" a kérdéshez tartozó képneveket (ez </center>
optimális) és "+" a tárgy nevét. Ami más karakterrel kezdődik, és kérdés előtt van, az <hr>
figyelmen kívül van hagyva, <b>egyéb helyen hibát eredményezhet egy ismeretlen sor!</b> Ha új </p> A .txt-ben "?" jelöli a kérdést, "!" a választ, ">" a kérdéshez tartozó képneveket (ez
tárgyat szeretnél hozzáadni, egyszerűen másold be az aljára a kérdéseket sorban, egy új optimális) és "+" a tárgy nevét. Ami más karakterrel kezdődik, és kérdés előtt van, az
+[tárgynév]-el kezdődő sor után. <b>Ha online adatokat szerkesztesz, akkor ezt érdemes tudni, figyelmen kívül van hagyva, <b>egyéb helyen hibát eredményezhet egy ismeretlen sor!</b> Ha új
küldönben elronthatod!</b> tárgyat szeretnél hozzáadni, egyszerűen másold be az aljára a kérdéseket sorban, egy új
<center> +[tárgynév]-el kezdődő sor után. <b>Ha online adatokat szerkesztesz, akkor ezt érdemes tudni,
<h3>Gyakran előforduló kérdések</h3> küldönben elronthatod!</b>
</center> <center>
<hr> <h3>Gyakran előforduló kérdések</h3>
<ul> </center>
<li> <hr>
<b>1. Mindent megcsináltam, mégsem hajlandó beolvasni a fájlt</b> <ul>
</br> Ha netről szeded a kérdéseket, akkor nem online a webszerver, vagy éppen nem aktív <li>
a tárgyad a menüben. Jobb alsó sarokban lévő 'M' gombra kattintva fel kell ugorjon egy <b>1. Mindent megcsináltam, mégsem hajlandó beolvasni a fájlt</b>
menü, és ott az éppen megoldani kívánt tárgy melett ki kell hogy legyen pipálva a </br> Ha netről szeded a kérdéseket, akkor nem online a webszerver, vagy éppen nem aktív
tickbox. a tárgyad a menüben. Jobb alsó sarokban lévő 'M' gombra kattintva fel kell ugorjon egy
</br> Helyi fájl használata: Ha (tényleg) rendesen bemásoltad a @resource-hoz az elérési menü, és ott az éppen megoldani kívánt tárgy melett ki kell hogy legyen pipálva a
utat, és még mindég nem működik: A böngésződ nem éri el a file-t. Chrome/Opera: tickbox.
bővítményeknél engedélyezni kell a fájlelérést. (Allow acces to file URLs </br> Helyi fájl használata: Ha (tényleg) rendesen bemásoltad a @resource-hoz az elérési
bővítményeknél) Firefoxnál csak a tampermonkey-nél kell álligatni más böngészőt utat, és még mindég nem működik: A böngésződ nem éri el a file-t. Chrome/Opera:
meg nem ismerek. Ezután Tampermonkey beállítása, hogy használja a @resource-ot: Klikk az bővítményeknél engedélyezni kell a fájlelérést. (Allow acces to file URLs
ikonra böngésződnél, majd dashboard -> Settings tab -> "Config mode: " Advanced. Ezután bővítményeknél) Firefoxnál csak a tampermonkey-nél kell álligatni más böngészőt
meg kell jelennie egy olyan részlegnek, hogy "Security" (ha nem frissítsd az oldalt). meg nem ismerek. Ezután Tampermonkey beállítása, hogy használja a @resource-ot: Klikk az
Ott : "Allow scripts to access local files" -> "Externals (@require and @resource) Ha ikonra böngésződnél, majd dashboard -> Settings tab -> "Config mode: " Advanced. Ezután
üres a txt-d, akkor még hibát fog jelezni, de amint első kérdésekkel feltöltöd jónak meg kell jelennie egy olyan részlegnek, hogy "Security" (ha nem frissítsd az oldalt).
kellene lennie. Ha mégsem, akkor F12-> console -> és ott van egy pár log, ami hátha Ott : "Allow scripts to access local files" -> "Externals (@require and @resource) Ha
segít. üres a txt-d, akkor még hibát fog jelezni, de amint első kérdésekkel feltöltöd jónak
</li> kellene lennie. Ha mégsem, akkor F12-> console -> és ott van egy pár log, ami hátha
</p> segít.
<li> </li>
<b>2. Egyik kérdésre sincs válasz / előző fix után sem olvassa be a fájlt</b> </p>
</br> UTF-8-as kódolással mentsd a txt-det! Ha frissítés volt, akkor újra be kell írnod <li>
a txt elérési útját. Ha a beírt elérési utat a böngésző címsorába bemáslva nem nyílik <b>2. Egyik kérdésre sincs válasz / előző fix után sem olvassa be a fájlt</b>
meg, akkor elírtad, ha igen, akkor próbálkozz másik böngészővel </br> UTF-8-as kódolással mentsd a txt-det! Ha frissítés volt, akkor újra be kell írnod
</li> a txt elérési útját. Ha a beírt elérési utat a böngésző címsorába bemáslva nem nyílik
</p> meg, akkor elírtad, ha igen, akkor próbálkozz másik böngészővel
<li> </li>
<b>3. Az első tárgy nevét NONAME-nek írja, pedig megadtam +-al a nevét</b> </p>
</br> A szöveges fájlod első sorába írj be valamit. Vagy csak rakj egy entert. Script <li>
minden sort figyelmen kívül hagy, ami nem a következő karakterekkel kezdődik: + ? ! >. <b>3. Az első tárgy nevét NONAME-nek írja, pedig megadtam +-al a nevét</b>
Néha ha olyan kedve van nem sokszor olvassa be az első sort. </br> A szöveges fájlod első sorába írj be valamit. Vagy csak rakj egy entert. Script
</li> minden sort figyelmen kívül hagy, ami nem a következő karakterekkel kezdődik: + ? ! >.
</p> Néha ha olyan kedve van nem sokszor olvassa be az első sort.
<li> </li>
<b>4. Olyan helyeken fut le a script, ahol nem kellene, vagy zavar</b> </p>
</br> Tampermonkey bővitmény ikon -> click -> scriptet kapcsold ki. Csak ne felejtsd <li>
visszakapcsolni ;) <b>4. Olyan helyeken fut le a script, ahol nem kellene, vagy zavar</b>
</li> </br> Tampermonkey bővitmény ikon -> click -> scriptet kapcsold ki. Csak ne felejtsd
</p> visszakapcsolni ;)
<li> </li>
<b>5. Túl nagy a kérdést és a választ megjelenítő ablak, nem tudok a válaszra kattintani</b> </p>
</br> Zommolj ki egy kicsit, vagy kapcsold ki addig a scriptet. Továbbá középső <li>
egérgombra kattintva rá el bírod tüntetni az ablakot, amíg újra nem töltöd az oldalt, <b>5. Túl nagy a kérdést és a választ megjelenítő ablak, nem tudok a válaszra kattintani</b>
vagy másikra ugrasz. </br> Zommolj ki egy kicsit, vagy kapcsold ki addig a scriptet. Továbbá középső
</li> egérgombra kattintva rá el bírod tüntetni az ablakot, amíg újra nem töltöd az oldalt,
</p> vagy másikra ugrasz.
<li> </li>
<b>6. Online adatokat használok, de a script hibát jelez</b> </p>
</br> Ennek több oka is lehet: <li>
<ul> <b>6. Online adatokat használok, de a script hibát jelez</b>
<li>Nem engedélyezted az http requestek küldését a usercript menedzselő </br> Ennek több oka is lehet:
programodnál. Ez nélkül nem működik.</li> <ul>
<li>Nem elérhető a szerver. Ezt ellenőrizheted: <a <li>Nem engedélyezted az http requestek küldését a usercript menedzselő
href="http://questionmining.tk/">link</a></li> programodnál. Ez nélkül nem működik.</li>
<li>Nincs kiválasztva a megoldani kívánt tárgy a menüben.</li> <li>Nem elérhető a szerver. Ezt ellenőrizheted: <a
</ul> href="http://qmining.tk/">link</a></li>
</li> <li>Nincs kiválasztva a megoldani kívánt tárgy a menüben.</li>
</p> </ul>
<li> </li>
Egyéb:<br><a target="_blank" </p>
href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help/feedback">Script <li>
Feedback</a> vagy <a target="_blank" href="http://questionmining.tk/">észrevétel.</a> Egyéb:<br><a target="_blank"
</li> href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help/feedback">Script
</p> Ha végleg nem akar működni egy újfajta kérdésnél, vagy tetsz felénél meghal, akkor még Feedback</a> vagy <a target="_blank" href="http://qmining.tk/">észrevétel.</a>
mindég használhatod a txt-t, amiben az addig lementett kérdések vannak. (CTRL + F) A kritikus hibák </li>
consolra ki vannak írva, amit f12 megnyitásával tudsz előhozni (chrome/firefox (dev console)) </p> Ha végleg nem akar működni egy újfajta kérdésnél, vagy tetsz felénél meghal, akkor még
</ul> mindég használhatod a txt-t, amiben az addig lementett kérdések vannak. (CTRL + F) A kritikus hibák
<center> consolra ki vannak írva, amit f12 megnyitásával tudsz előhozni (chrome/firefox (dev console))
<h3>Adat egyszerűsítés</h3> </ul>
</center> <center>
<hr> Másold be ide az egész txt-d, és ez kiszedi belőle az ugyanolyan kérdéseket, illetve ha <h3>Adat egyszerűsítés</h3>
hibás részeket talál, akkor kikommenteli. Érdemes megnézni, hogy történt-e ilyen, keress rá a </center>
kész szövegben a "#"-karakterre. Ezzel azért óvatosan, ez kipusztithatja a szobanövényed. <hr> Másold be ide az egész txt-d, és ez kiszedi belőle az ugyanolyan kérdéseket, illetve ha
<textarea id="converter"></textarea> hibás részeket talál, akkor kikommenteli. Érdemes megnézni, hogy történt-e ilyen, keress rá a
<button onclick="simplify()">Egyszerűsítés</button> kész szövegben a "#"-karakterre. Ezzel azért óvatosan, ez kipusztithatja a szobanövényed.
<hr> Jogosultságok: <textarea id="converter"></textarea>
</br>GM_openInTab: help megnyitása új lapon, GM_xmlhttpRequest: online adatbázishoz. <button onclick="simplify()">Egyszerűsítés</button>
GM_getResourceText: a txt beolvasáshoz. Mást nem bír beolvasni, csak amit megadsz a @resouces <hr> Jogosultságok:
tagnál. GM_info: a scriptről információ, a verzióváltozás érzékeléséhez. GM_getValue/ </br>GM_openInTab: help megnyitása új lapon, GM_xmlhttpRequest: online adatbázishoz.
GM_setValue: oldal bezárásakor megmaradó változók kezelése. Előző verzió tárolására, ugyanúgy GM_getResourceText: a txt beolvasáshoz. Mást nem bír beolvasni, csak amit megadsz a @resouces
verzióváltozás érzékeléséhez, néhány beállítás, illetve hogy melyik tárgyakból keressen tagnál. GM_info: a scriptről információ, a verzióváltozás érzékeléséhez. GM_getValue/
kérdéseket. Ezek függvények, és a sciptben néhol meg vannak hívva, keresd meg. GM_setValue: oldal bezárásakor megmaradó változók kezelése. Előző verzió tárolására, ugyanúgy
</p> Elküldött adatok online módban: Minden teszt végén az összes kérdés, és rá a moodle szerint verzióváltozás érzékeléséhez, néhány beállítás, illetve hogy melyik tárgyakból keressen
helyesnek vélt válaszok. Fogadott adatok: az összes eddig ismert moodle kérdés kérdéseket. Ezek függvények, és a sciptben néhol meg vannak hívva, keresd meg.
<hr> </p> Elküldött adatok online módban: Minden teszt végén az összes kérdés, és rá a moodle szerint
<center> helyesnek vélt válaszok. Fogadott adatok: az összes eddig ismert moodle kérdés
<h1> <hr>
<a target="_blank" <center>
href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help">Script <h1>
Greasyforkon</a> <a target="_blank"
| href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help">Script
<a target="_blank" Greasyforkon</a>
href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help/feedback">Script |
Feedback</a> <a target="_blank"
| href="https://greasyfork.org/en/scripts/38999-moodle-elearning-kmooc-test-help/feedback">Script
<a target="_blank" href="http://questionmining.tk/">Weboldal</a> Feedback</a>
</h1> |
</center> <a target="_blank" href="http://qmining.tk/">Weboldal</a>
<script> </h1>
function conv() { </center>
var a = document.getElementById("tex").value; <script>
a = a.replace(/ /g, "%20"); function conv() {
a = a.replace(/\\/g, ""); var a = document.getElementById("tex").value;
if (!a.includes(".txt")) { a = a.replace(/ /g, "%20");
a += ".txt"; a = a.replace(/\\/g, "");
} if (!a.includes(".txt")) {
document.getElementById("tex").value = "// @resource data file:///" + a; a += ".txt";
} }
document.getElementById("tex").value = "// @resource data file:///" + a;
function simplify() { }
var splitData = document.getElementById("converter").value.split("\n");
var result = []; function simplify() {
var jumped = 0; var splitData = document.getElementById("converter").value.split("\n");
var doubles = 0; var result = [];
for (var i = 0; i < splitData.length; i += jumped) { var jumped = 0;
splitData[i] = splitData[i].trim(); var doubles = 0;
jumped = 0; for (var i = 0; i < splitData.length; i += jumped) {
var currQuestion = { splitData[i] = splitData[i].trim();
q: splitData[i], jumped = 0;
a: splitData[i + 1], var currQuestion = {
i: splitData[i + 2] q: splitData[i],
}; a: splitData[i + 1],
i: splitData[i + 2]
if (currQuestion.q != undefined && currQuestion.q[0] == "?" && currQuestion.a != undefined && };
currQuestion.a[0] == "!") {
jumped += 2; if (currQuestion.q != undefined && currQuestion.q[0] == "?" && currQuestion.a != undefined &&
} currQuestion.a[0] == "!") {
if (currQuestion.i != undefined && currQuestion.i[0] == ">" && jumped == 2) { jumped += 2;
jumped++; }
} else { if (currQuestion.i != undefined && currQuestion.i[0] == ">" && jumped == 2) {
delete currQuestion.i; jumped++;
} } else {
if (jumped > 1) { delete currQuestion.i;
for (var j = 0; j < result.length; j++) { }
if (result[j].q) { if (jumped > 1) {
if (result[j].q == currQuestion.q && result[j].a == currQuestion.a) { for (var j = 0; j < result.length; j++) {
if (result[j].i && currQuestion.i) { if (result[j].q) {
if (result[j].i == currQuestion.i) { if (result[j].q == currQuestion.q && result[j].a == currQuestion.a) {
break; if (result[j].i && currQuestion.i) {
} if (result[j].i == currQuestion.i) {
} else { break;
break; }
} } else {
} break;
} }
} }
if (j >= result.length) { }
result.push(currQuestion); }
} else { if (j >= result.length) {
doubles++; result.push(currQuestion);
} } else {
} doubles++;
if (currQuestion.q[0] == "+") { }
result.push({ }
n: currQuestion.q if (currQuestion.q[0] == "+") {
}); result.push({
jumped++; n: currQuestion.q
} else if (jumped < 1) { });
var comment = currQuestion.q; jumped++;
if (comment[0] != "#") { } else if (jumped < 1) {
comment = "#" + comment; var comment = currQuestion.q;
} if (comment[0] != "#") {
result.push({ comment = "#" + comment;
c: comment }
}); result.push({
jumped++; c: comment
} });
} jumped++;
var textResult = ""; }
for (var i = 0; i < result.length; i++) { }
if (result[i].q != undefined && result[i].a != undefined) { var textResult = "";
textResult += result[i].q + "\n"; for (var i = 0; i < result.length; i++) {
textResult += result[i].a + "\n"; if (result[i].q != undefined && result[i].a != undefined) {
} textResult += result[i].q + "\n";
if (result[i].i != undefined) { textResult += result[i].a + "\n";
textResult += result[i].i + "\n"; }
} if (result[i].i != undefined) {
if (result[i].c != undefined) { textResult += result[i].i + "\n";
textResult += result[i].c + "\n"; }
} if (result[i].c != undefined) {
if (result[i].n != undefined) { textResult += result[i].c + "\n";
textResult += result[i].n + "\n"; }
} if (result[i].n != undefined) {
} textResult += result[i].n + "\n";
alert(doubles + " duplikáció eltávolítva, és hibás kérdések kikommentelve."); }
document.getElementById("converter").value = textResult; }
} alert(doubles + " duplikáció eltávolítva, és hibás kérdések kikommentelve.");
</script> document.getElementById("converter").value = textResult;
}
</html> </script>
</body>
</html>
</body>

8
public/qa Normal file
View file

@ -0,0 +1,8 @@
How does this work?
first line is always answer.
every new line is displayed as new line
#
Is this a new question?
yes.
dont put # after the last qa!

View file

@ -18,6 +18,9 @@
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
const startHTTPS = false;
const siteUrl = "https://qmining.tk"; // http(s)//asd.basd
const express = require('express'); const express = require('express');
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
const busboy = require('connect-busboy'); const busboy = require('connect-busboy');
@ -31,8 +34,8 @@ const utils = require('./utils.js');
const actions = require('./actions.js'); const actions = require('./actions.js');
const stat = require('./stat.js'); const stat = require('./stat.js');
const siteUrl = "https://questionmining.tk"; // http(s)//asd.basd
const recivedFiles = "public/recivedfiles"; const recivedFiles = "public/recivedfiles";
const uloadFiles = "public/f";
const motdFile = "public/motd"; const motdFile = "public/motd";
const staticFile = "public/data/static"; const staticFile = "public/data/static";
const dataFile = "public/data.json"; const dataFile = "public/data.json";
@ -49,7 +52,7 @@ const fullchainFile = "/etc/letsencrypt/live/questionmining.tk/fullchain.pem";
const chainFile = "/etc/letsencrypt/live/questionmining.tk/chain.pem"; const chainFile = "/etc/letsencrypt/live/questionmining.tk/chain.pem";
var certsLoaded = false; var certsLoaded = false;
if (utils.FileExists(privkeyFile) && utils.FileExists(fullchainFile) && utils.FileExists(chainFile)) { if (startHTTPS && utils.FileExists(privkeyFile) && utils.FileExists(fullchainFile) && utils.FileExists(chainFile)) {
const key = fs.readFileSync(privkeyFile, "utf8"); const key = fs.readFileSync(privkeyFile, "utf8");
const cert = fs.readFileSync(fullchainFile, "utf8"); const cert = fs.readFileSync(fullchainFile, "utf8");
const ca = fs.readFileSync(chainFile, "utf8"); const ca = fs.readFileSync(chainFile, "utf8");
@ -101,11 +104,17 @@ app.use(bodyParser.json({
app.get('/', function(req, res) { app.get('/', function(req, res) {
res.render('main', { res.render('main', {
siteurl: siteUrl siteurl: siteUrl,
qa: actions.ProcessQA()
}); });
res.end(); res.end();
}); });
app.get('/sio', function(req, res) {
res.render('uload');
res.end();
});
app.get('/manual', function(req, res) { app.get('/manual', function(req, res) {
res.write(utils.ReadFile(manFile)); res.write(utils.ReadFile(manFile));
res.end(); res.end();
@ -141,11 +150,13 @@ app.get('/legacy', function(req, res) {
app.post('/postfeedback', function(req, res) { app.post('/postfeedback', function(req, res) {
res.redirect('back'); res.redirect('back');
logger.Log("[UMSG]: " + req.body.message_field, logger.GetColor("bluebg"), true); logger.Log("[UMSG]: New feedback message", logger.GetColor("bluebg"), true);
utils.AppendToFile(logger.GetDateString() + ": " + req.body.message_field, msgFile); utils.AppendToFile("\n\n" + logger.GetDateString() + ": " + req.body.message_field, msgFile);
}); });
app.get('/postfeedback', function(req, res) { app.get('/postfeedback', function(req, res) {
// TODO: res.redirect("/"); or if needs this anyways, becouse /postfeedback post handler already
// redirects
res.render('main', { res.render('main', {
sdata: utils.ReadFile(staticFile) sdata: utils.ReadFile(staticFile)
}); });
@ -158,10 +169,6 @@ app.post('/isAdding', function(req, res) {
utils.WriteBackup(); utils.WriteBackup();
}); });
app.get('/sanityCheck', function(req, res) {
res.end('Hello guys');
});
app.get('/menuClick', function(req, res) { app.get('/menuClick', function(req, res) {
res.redirect("/"); res.redirect("/");
res.end(); res.end();
@ -177,6 +184,43 @@ app.get('/servergit', function(req, res) {
res.end(); res.end();
}); });
function UploadFile(req, res, path, next) {
var fstream;
req.pipe(req.busboy);
req.busboy.on('file', function(fieldname, file, filename) {
logger.Log("[UPL]: Uploading: " + filename, logger.GetColor("blue"));
utils.CreatePath(path, true);
let d = new Date();
let fsplit = filename.split('.');
let fn = d.getHours() + "" + d.getMinutes() + "" + d.getSeconds() + "." + fsplit[fsplit.length
- 1];
fstream = fs.createWriteStream(path + "/" + fn);
file.pipe(fstream);
fstream.on('close', function() {
logger.Log("[UPL]: Upload Finished of " + path + "/" + fn, logger.GetColor("blue"));
next(fn);
});
fstream.on('error', function(err) {
console.log(err);
res.end("something bad happened :s");
});
});
}
app.route('/fosuploader').post(function(req, res, next) {
UploadFile(req, res, uloadFiles, (fn) => {
res.redirect("/f/" + fn);
});
});
app.route('/badtestsender').post(function(req, res, next) {
UploadFile(req, res, recivedFiles, (fn) => {
res.render("uploaded");
});
});
app.get('*', function(req, res) { app.get('*', function(req, res) {
res.render('404'); res.render('404');
res.status(404); res.status(404);
@ -188,26 +232,6 @@ app.post('*', function(req, res) {
// utils.AppendToFile(logger.GetDateString() + ": " + "404 POST", logFile); // utils.AppendToFile(logger.GetDateString() + ": " + "404 POST", logFile);
}); });
app.route('/badtestsender').post(function(req, res, next) {
var fstream;
req.pipe(req.busboy);
req.busboy.on('file', function(fieldname, file, filename) {
logger.Log("[UPL]: Uploading: " + filename, logger.GetColor("blue"));
utils.CreatePath(recivedFiles, true);
fstream = fs.createWriteStream(recivedFiles + "/" + filename + " | " + Date().toString());
file.pipe(fstream);
fstream.on('close', function() {
logger.Log("[UPL]: Upload Finished of " + filename, logger.GetColor("blue"));
res.render("uploaded");
});
fstream.on('error', function(err) {
console.log("ERROR:" + err);
res.end("file uploaded");
});
});
});
var msg = "[STRT]: "; var msg = "[STRT]: ";
stat.Load(); stat.Load();
@ -215,7 +239,7 @@ const httpServer = http.createServer(app);
httpServer.listen(port); httpServer.listen(port);
msg += "Server listening on port " + port + " (http)"; msg += "Server listening on port " + port + " (http)";
if (certsLoaded) { if (startHTTPS && certsLoaded) {
const httpsServer = https.createServer(certs, app); const httpsServer = https.createServer(certs, app);
httpsServer.listen(httpsPort); httpsServer.listen(httpsPort);
msg += ", and " + httpsPort + " (https)..."; msg += ", and " + httpsPort + " (https)...";

22
utils.js Normal file → Executable file
View file

@ -6,7 +6,8 @@ module.exports = {
Beep: Beep, Beep: Beep,
WriteBackup: WriteBackup, WriteBackup: WriteBackup,
FileExists: FileExists, FileExists: FileExists,
CreatePath: CreatePath CreatePath: CreatePath,
GetAllFilesFromFolder: GetAllFilesFromFolder
}; };
var fs = require('fs'); var fs = require('fs');
@ -86,3 +87,22 @@ function WriteBackup() {
console.log(e); console.log(e);
} }
} }
function GetAllFilesFromFolder(dir) {
var results = [];
fs.readdirSync(dir).forEach(function(file) {
file = dir + '/' + file;
var stat = fs.statSync(file);
if (stat && stat.isDirectory()) {
results = results.concat(_getAllFilesFromFolder(file));
} else results.push(file);
});
return results;
}

0
views/404.ejs Normal file → Executable file
View file

View file

@ -39,20 +39,18 @@ greasyforkon</a>
nyomja a lelked)</div> nyomja a lelked)</div>
<textarea id="msg" type="text" name="message_field" style="width: 100%;box-sizing:border-box;height: 100;"></textarea> <textarea type="text" name="message_field" style="width: 100%;box-sizing:border-box;height: 100;"></textarea>
<button>Küldés</button> <button>Küldés</button>
</p>
Weboldal aljára rakom ki a választ általában.
</form> </form>
</td> </td>
<td width=40%> <td width=50%>
Hibát kiváltó teszt feltöltése Hibát kiváltó teszt feltöltése
</br> </br>
<form action="/badtestsender" enctype=multipart/form-data method="post"> <form action="/badtestsender" enctype=multipart/form-data method="post">
<input type="file" name="dasfile" /> <input type="file" name="dasfile" />
<input type="submit" value="Upload" /> <input type="submit" value="Upload" />
</form> </form>
</p> </p>
@ -60,8 +58,20 @@ Ha egy kérdésre mindig helytelenül talál választ a userscript (vagy egyéb
azon az oldalon nyomj egy ctrl-s -t. Ez lementi a weboldalt úgy ahogy van egy mappába, és egy html 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 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! kijavítom. <b> Max 10 MB!
</b> Ha több, elég a .html. </b> Ha több, elég a .html. Bónusz ha mellékelsz egy readme-t, hogy mit csináljak.
</td> </td>
</table> </table>
<table>
<td>
<!-- Kommentek / válaszok -->
<% include qa.ejs %>
</td>
</table>
<center> ... </center>
</body> </body>
</html> </html>

35
views/qa.ejs Normal file
View file

@ -0,0 +1,35 @@
<center><h2> Q&A: </h3></center>
<% for (var i = 0; i < qa.length; i++) { %>
<hr>
<table>
<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>
<% } %>