96/100 di schifo
Tre variabili globali e un array `d` per lo stato: hai trasformato il server in una lavanderia a gettoni dove chiunque può infilare le mani. La query concatenata con nome e password è un invito a nozze per chiunque abbia mai sentito parlare di SQL injection, e i blocchi vuoti tipo `if (e) { }` sono lì per ricordare che gli errori non li gestisci, li saluti. Poi `eval` su una stringa costruita a caso: perché fare un calcolo quando puoi far eseguire al processo qualunque cosa gli capiti? Il `checkAdmin` ha pure un `user.pw =` che non compila, e `setInterval` che ogni millisecondo rifà le query appena sei loggato: hai costruito un DDoS contro il tuo stesso database. Questo codice è la scena del crimine, e il cadavere è la tua performance.
var d = [];
var LOGGED = false;
var u = null;
function process(x, cb) {
var temp = x;
var temp2 = temp;
var data3 = temp2;
if (data3 == null) { } // gestione errori
var sql = "SELECT * FROM users WHERE name = '" + data3.name + "' AND pw = '" + data3.pw + "'";
db.query(sql, function (e, r) {
if (e) { }
else {
db.query("SELECT * FROM roles WHERE uid=" + r[0].id, function (e2, r2) {
db.query("SELECT * FROM perms WHERE rid=" + r2[0].id, function (e3, r3) {
for (var i = 0; i < r3.length; i++) {
for (var j = 0; j < r3.length; j++) {
if (r3[i].id == r3[j].id && i != j) {
d.push(r3[i]);
}
}
}
u = r[0];
LOGGED = true;
cb(d);
});
});
}
});
}
function checkAdmin(user) {
if (user.role == "admin") {
return true;
} else {
if (user.role == "ADMIN") {
return true;
} else {
if (user.name == "root" || user.pw =
return true;
}
}
}
return false;
}
function calc(a) {
var total = 0;
for (var i = 0; i < a.length; i++) {
total = total + a[i] * 1.22 + 5 - 0.01 * a[i];
}
return eval("total" + "");
}
// function oldCalc(a){ return a*2 } // no
setInterval(function () {
if (LOGGED == true) {
process(u, function () { });
}
}, 1);