mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-10-29 09:50:24 +00:00
397 lines
12 KiB
JavaScript
397 lines
12 KiB
JavaScript
var Functions = require(pathThumbnails + "/handlers/functions.js");
|
|
var crypto = require("crypto");
|
|
var Filter = require("bad-words");
|
|
var filter = new Filter({ placeHolder: "x" });
|
|
/*var filter = {
|
|
clean: function(str) {
|
|
return str;
|
|
}
|
|
}*/
|
|
var projects = require(pathThumbnails + "/handlers/aggregates.js");
|
|
var db = require(pathThumbnails + "/handlers/db.js");
|
|
|
|
function password(inp, coll, guid, offline, socket) {
|
|
var sessionId = Functions.getSession(socket);
|
|
if (sessionId == "") sessionId = "empty";
|
|
if (inp !== undefined && inp !== null && inp !== "") {
|
|
if (
|
|
!inp.hasOwnProperty("password") ||
|
|
!inp.hasOwnProperty("channel") ||
|
|
typeof inp.password != "string" ||
|
|
typeof inp.channel != "string"
|
|
) {
|
|
var result = {
|
|
channel: {
|
|
expected: "string",
|
|
got: inp.hasOwnProperty("channel") ? typeof inp.channel : undefined
|
|
},
|
|
password: {
|
|
expected: "password",
|
|
got: inp.hasOwnProperty("password") ? typeof inp.password : undefined
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
return;
|
|
}
|
|
pw = inp.password;
|
|
try {
|
|
coll = inp.channel;
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
//coll = coll.replace(/ /g,'');
|
|
uncrypted = pw;
|
|
pw = Functions.hash_pass(Functions.decrypt_string(pw), true);
|
|
Functions.check_inlist(coll, guid, socket, offline, undefined, "place 8");
|
|
Functions.getSessionAdminUser(sessionId, coll, function(
|
|
userpass,
|
|
adminpass
|
|
) {
|
|
adminpass = Functions.hash_pass(adminpass);
|
|
db.collection(coll + "_settings").find(function(err, docs) {
|
|
if (docs !== null && docs.length !== 0) {
|
|
if (
|
|
docs[0].adminpass === "" ||
|
|
docs[0].adminpass == Functions.hash_pass(pw)
|
|
) {
|
|
Functions.setSessionAdminPass(
|
|
sessionId,
|
|
inp.password,
|
|
coll,
|
|
function() {
|
|
db.collection(coll + "_settings").update(
|
|
{ id: "config" },
|
|
{ $set: { adminpass: Functions.hash_pass(pw) } },
|
|
function(err, docs) {
|
|
if (adminpass != pw && adminpass != "") {
|
|
socket.emit("toast", "changedpass");
|
|
} else {
|
|
socket.emit("toast", "correctpass");
|
|
}
|
|
socket.emit("pw", true);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
} else if (
|
|
docs[0].adminpass === "" ||
|
|
docs[0].adminpass == adminpass
|
|
) {
|
|
Functions.setSessionAdminPass(
|
|
sessionId,
|
|
inp.password,
|
|
coll,
|
|
function() {
|
|
db.collection(coll + "_settings").update(
|
|
{ id: "config" },
|
|
{ $set: { adminpass: Functions.hash_pass(pw) } },
|
|
function(err, docs) {
|
|
if (adminpass != pw) {
|
|
socket.emit("toast", "changedpass");
|
|
}
|
|
socket.emit("pw", true);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
} else {
|
|
Functions.setSessionAdminPass(
|
|
Functions.getSession(socket),
|
|
"",
|
|
coll,
|
|
function() {
|
|
socket.emit("toast", "wrongpass");
|
|
socket.emit("pw", false);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
} else {
|
|
var result = {
|
|
inp: {
|
|
expected: "string",
|
|
got: typeof inpt
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
}
|
|
}
|
|
|
|
function conf_function(params, coll, guid, offline, socket) {
|
|
if (params !== undefined && params !== null && params !== "") {
|
|
if (coll !== undefined) {
|
|
try {
|
|
coll = params.channel; //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (coll == "" || coll == undefined || coll == null) {
|
|
socket.emit("update_required");
|
|
return;
|
|
}
|
|
|
|
Functions.check_inlist(coll, guid, socket, offline, undefined, "place 9");
|
|
|
|
Functions.getSessionAdminUser(Functions.getSession(socket), coll, function(
|
|
userpass,
|
|
adminpass,
|
|
gotten
|
|
) {
|
|
if (gotten) {
|
|
params.adminpass = adminpass;
|
|
if (!params.userpass_changed) params.userpass = userpass;
|
|
}
|
|
if (
|
|
!params.hasOwnProperty("voting") ||
|
|
!params.hasOwnProperty("addsongs") ||
|
|
!params.hasOwnProperty("longsongs") ||
|
|
!params.hasOwnProperty("frontpage") ||
|
|
!params.hasOwnProperty("allvideos") ||
|
|
!params.hasOwnProperty("removeplay") ||
|
|
!params.hasOwnProperty("adminpass") ||
|
|
!params.hasOwnProperty("skipping") ||
|
|
!params.hasOwnProperty("shuffling") ||
|
|
!params.hasOwnProperty("channel") ||
|
|
typeof params.userpass != "string" ||
|
|
typeof params.adminpass != "string" ||
|
|
typeof params.voting != "boolean" ||
|
|
typeof params.addsongs != "boolean" ||
|
|
typeof params.longsongs != "boolean" ||
|
|
typeof params.frontpage != "boolean" ||
|
|
typeof params.allvideos != "boolean" ||
|
|
typeof params.removeplay != "boolean" ||
|
|
typeof params.skipping != "boolean" ||
|
|
typeof params.shuffling != "boolean" ||
|
|
typeof params.userpass_changed != "boolean"
|
|
) {
|
|
var result = {
|
|
adminpass: {
|
|
expected: "string",
|
|
got: params.hasOwnProperty("adminpass")
|
|
? typeof params.adminpass
|
|
: undefined
|
|
},
|
|
userpass: {
|
|
expected: "string",
|
|
got: params.hasOwnProperty("userpass")
|
|
? typeof params.userpass
|
|
: undefined
|
|
},
|
|
vote: {
|
|
expected: "boolean",
|
|
got: params.hasOwnProperty("vote") ? typeof params.vote : undefined
|
|
},
|
|
addsongs: {
|
|
expected: "boolean",
|
|
got: params.hasOwnProperty("addsongs")
|
|
? typeof params.addsongs
|
|
: undefined
|
|
},
|
|
longsongs: {
|
|
expected: "boolean",
|
|
got: params.hasOwnProperty("longsongs")
|
|
? typeof params.longsongs
|
|
: undefined
|
|
},
|
|
frontpage: {
|
|
expected: "boolean",
|
|
got: params.hasOwnProperty("frontpage")
|
|
? typeof params.frontpage
|
|
: undefined
|
|
},
|
|
skipping: {
|
|
expected: "boolean",
|
|
got: params.hasOwnProperty("skipping")
|
|
? typeof params.skipping
|
|
: undefined
|
|
},
|
|
shuffling: {
|
|
expected: "boolean",
|
|
got: params.hasOwnProperty("shuffling")
|
|
? typeof params.shuffling
|
|
: undefined
|
|
},
|
|
userpass_changed: {
|
|
expected: "boolean",
|
|
got: params.hasOwnProperty("userpass_changed")
|
|
? typeof params.userpass_changed
|
|
: undefined
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
return;
|
|
}
|
|
var voting = params.voting;
|
|
var addsongs = params.addsongs;
|
|
var longsongs = params.longsongs;
|
|
var frontpage = params.frontpage;
|
|
var allvideos = params.allvideos;
|
|
var removeplay = params.removeplay;
|
|
var adminpass = params.adminpass;
|
|
var skipping = params.skipping;
|
|
var shuffling = params.shuffling;
|
|
var userpass = Functions.decrypt_string(params.userpass);
|
|
if (
|
|
(!params.userpass_changed && frontpage) ||
|
|
(params.userpass_changed && userpass == "")
|
|
) {
|
|
userpass = "";
|
|
} else if (params.userpass_changed && userpass != "") {
|
|
frontpage = false;
|
|
}
|
|
var description = "";
|
|
var hash;
|
|
if (params.description) description = params.description;
|
|
if (adminpass !== "" && !gotten) {
|
|
hash = Functions.hash_pass(
|
|
Functions.hash_pass(Functions.decrypt_string(adminpass), true)
|
|
);
|
|
} else if (adminpass !== "" && gotten) {
|
|
hash = Functions.hash_pass(adminpass);
|
|
} else {
|
|
hash = adminpass;
|
|
}
|
|
if (userpass != "") {
|
|
if (!params.userpass_changed && gotten) {
|
|
} else {
|
|
userpass = crypto
|
|
.createHash("sha256")
|
|
.update(userpass)
|
|
.digest("base64");
|
|
}
|
|
}
|
|
db.collection(coll + "_settings").find({ id: "config" }, function(
|
|
err,
|
|
docs
|
|
) {
|
|
if (
|
|
docs !== null &&
|
|
docs.length !== 0 &&
|
|
(docs[0].adminpass === "" || docs[0].adminpass == hash)
|
|
) {
|
|
var obj = {
|
|
addsongs: addsongs,
|
|
allvideos: allvideos,
|
|
frontpage: frontpage,
|
|
skip: skipping,
|
|
vote: voting,
|
|
removeplay: removeplay,
|
|
shuffle: shuffling,
|
|
longsongs: longsongs,
|
|
adminpass: hash,
|
|
desc: description
|
|
};
|
|
if (
|
|
params.hasOwnProperty("toggleChat") &&
|
|
docs[0].adminpass != "" &&
|
|
docs[0].adminpass != undefined &&
|
|
docs[0].adminpass == hash
|
|
) {
|
|
obj.toggleChat = params.toggleChat;
|
|
}
|
|
if (
|
|
params.hasOwnProperty("strictSkip") &&
|
|
docs[0].adminpass != "" &&
|
|
docs[0].adminpass != undefined &&
|
|
docs[0].adminpass == hash
|
|
) {
|
|
obj.strictSkip = params.strictSkip;
|
|
}
|
|
if (
|
|
params.hasOwnProperty("strictSkipNumber") &&
|
|
docs[0].adminpass != "" &&
|
|
docs[0].adminpass != undefined &&
|
|
docs[0].adminpass == hash
|
|
) {
|
|
try {
|
|
obj.strictSkipNumber = parseInt(params.strictSkipNumber);
|
|
} catch (e) {}
|
|
}
|
|
if (params.userpass_changed) {
|
|
obj["userpass"] = userpass;
|
|
} else if (frontpage) {
|
|
obj["userpass"] = "";
|
|
}
|
|
db.collection(coll + "_settings").update(
|
|
{ id: "config" },
|
|
{
|
|
$set: obj
|
|
},
|
|
function(err, docs) {
|
|
Functions.setSessionUserPass(
|
|
Functions.getSession(socket),
|
|
obj["userpass"],
|
|
coll,
|
|
function() {
|
|
db.collection(coll + "_settings").aggregate(
|
|
[
|
|
{
|
|
$match: {
|
|
id: "config"
|
|
}
|
|
},
|
|
{
|
|
$project: projects.toShowConfig
|
|
}
|
|
],
|
|
function(err, docs) {
|
|
if (docs[0].adminpass !== "") docs[0].adminpass = true;
|
|
if (
|
|
docs[0].hasOwnProperty("userpass") &&
|
|
docs[0].userpass != ""
|
|
)
|
|
docs[0].userpass = true;
|
|
else docs[0].userpass = false;
|
|
io.to(coll).emit("conf", docs);
|
|
socket.emit("toast", "savedsettings");
|
|
|
|
db.collection("frontpage_lists").update(
|
|
{ _id: coll },
|
|
{
|
|
$set: {
|
|
frontpage: frontpage,
|
|
accessed: Functions.get_time()
|
|
}
|
|
},
|
|
{ upsert: true },
|
|
function(err, docs) {}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
} else {
|
|
socket.emit("toast", "wrongpass");
|
|
}
|
|
});
|
|
});
|
|
} else {
|
|
var result = {
|
|
params: {
|
|
expected: "object",
|
|
got: typeof params
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
}
|
|
}
|
|
|
|
module.exports.password = password;
|
|
module.exports.conf_function = conf_function;
|