mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-10-29 01:40:24 +00:00
947 lines
29 KiB
JavaScript
947 lines
29 KiB
JavaScript
var cookieParser = require("cookie-parser");
|
|
var cookie = require("cookie");
|
|
|
|
var Functions = require(pathThumbnails + "/handlers/functions.js");
|
|
var ListChange = require(pathThumbnails + "/handlers/list_change.js");
|
|
var Chat = require(pathThumbnails + "/handlers/chat.js");
|
|
var List = require(pathThumbnails + "/handlers/list.js");
|
|
var Suggestions = require(pathThumbnails + "/handlers/suggestions.js");
|
|
var ListSettings = require(pathThumbnails + "/handlers/list_settings.js");
|
|
var Frontpage = require(pathThumbnails + "/handlers/frontpage.js");
|
|
var Search = require(pathThumbnails + "/handlers/search.js");
|
|
var crypto = require("crypto");
|
|
var Filter = require("bad-words");
|
|
var filter = new Filter({ placeHolder: "x" });
|
|
/*var filter = {
|
|
clean: function(str) {
|
|
return str;
|
|
}
|
|
}*/
|
|
var db = require(pathThumbnails + "/handlers/db.js");
|
|
|
|
module.exports = function() {
|
|
io.on("connection", function(socket) {
|
|
try {
|
|
var parsedCookies = cookie.parse(socket.handshake.headers.cookie);
|
|
socket.cookie_id = parsedCookies["_uI"];
|
|
//return socket.guid;
|
|
} catch (e) {
|
|
socket.cookie_id = "empty";
|
|
}
|
|
socket.zoff_id = socket.id;
|
|
socket.emit("get_list");
|
|
var guid = socket.cookie_id;
|
|
if (guid == "empty" || guid == null || guid == undefined)
|
|
guid = Functions.hash_pass(
|
|
socket.handshake.headers["user-agent"] +
|
|
socket.handshake.address +
|
|
socket.handshake.headers["accept-language"]
|
|
);
|
|
|
|
socket.guid = guid;
|
|
socket.on("close", function() {});
|
|
|
|
socket.on("pinging", function() {
|
|
socket.emit("ok");
|
|
});
|
|
|
|
var ping_timeout;
|
|
var socketid = socket.zoff_id;
|
|
var coll;
|
|
var in_list = false;
|
|
var name = "";
|
|
var short_id;
|
|
Chat.get_name(guid, { announce: false, socket: socket });
|
|
var offline = false;
|
|
var chromecast_object = false;
|
|
|
|
socket.emit("guid", guid);
|
|
|
|
socket.on("self_ping", function(msg) {
|
|
var channel = msg.channel;
|
|
if (channel.indexOf("?") > -1) {
|
|
channel = channel.substring(0, channel.indexOf("?"));
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
//channel = channel.replace(/ /g,'');
|
|
if (offline) {
|
|
db.collection("connected_users").update(
|
|
{ _id: "offline_users" },
|
|
{ $addToSet: { users: guid } },
|
|
{ upsert: true },
|
|
function(err, docs) {}
|
|
);
|
|
} else {
|
|
db.collection("connected_users").update(
|
|
{ _id: channel },
|
|
{ $addToSet: { users: guid } },
|
|
{ upsert: true },
|
|
function(err, docs) {
|
|
db.collection("frontpage_lists").update(
|
|
{ _id: channel },
|
|
{ $inc: { viewers: 1 } },
|
|
{ upsert: true },
|
|
function() {}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
if (channel != "" && channel != undefined) {
|
|
db.collection("connected_users").update(
|
|
{ _id: "total_users" },
|
|
{ $addToSet: { total_users: guid + channel } },
|
|
{ upsert: true },
|
|
function(err, docs) {}
|
|
);
|
|
}
|
|
});
|
|
|
|
socket.on("logout", function() {
|
|
Functions.removeSessionAdminPass(
|
|
Functions.getSession(socket),
|
|
coll,
|
|
function() {}
|
|
);
|
|
});
|
|
|
|
socket.on("next_song", function(obj) {
|
|
if (obj == undefined || !obj.hasOwnProperty("channel")) return;
|
|
db.collection(obj.channel + "_settings").find(function(e, docs) {
|
|
if (docs.length == 0) return;
|
|
var pass = "";
|
|
if (obj.hasOwnProperty("pass")) {
|
|
pass = crypto
|
|
.createHash("sha256")
|
|
.update(Functions.decrypt_string(obj.pass))
|
|
.digest("base64");
|
|
}
|
|
if (
|
|
docs.length > 0 &&
|
|
(docs[0].userpass == undefined ||
|
|
docs[0].userpass == "" ||
|
|
docs[0].userpass == pass)
|
|
) {
|
|
List.getNextSong(obj.channel, socket);
|
|
}
|
|
});
|
|
});
|
|
|
|
socket.on("chromecast", function(msg) {
|
|
try {
|
|
if (
|
|
typeof msg == "object" &&
|
|
msg.hasOwnProperty("guid") &&
|
|
msg.hasOwnProperty("socket_id") &&
|
|
msg.hasOwnProperty("channel") &&
|
|
typeof msg.guid == "string" &&
|
|
typeof msg.channel == "string" &&
|
|
typeof msg.socket_id == "string" &&
|
|
msg.channel != ""
|
|
) {
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
db.collection("connected_users").find({ _id: msg.channel }, function(
|
|
err,
|
|
connected_users_channel
|
|
) {
|
|
if (
|
|
connected_users_channel.length > 0 &&
|
|
connected_users_channel[0].users.indexOf(msg.guid) > -1
|
|
) {
|
|
coll = msg.channel.toLowerCase(); //.replace(/ /g,'');
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = filter.clean(coll);
|
|
if (coll.indexOf("?") > -1) {
|
|
coll = coll.substring(0, coll.indexOf("?"));
|
|
}
|
|
Functions.setChromecastHost(
|
|
socket.cookie_id,
|
|
msg.socket_id,
|
|
msg.channel,
|
|
function(results) {}
|
|
);
|
|
//socket.cookie_id = msg.guid;
|
|
guid = msg.guid;
|
|
socketid = msg.socket_id;
|
|
socket.zoff_id = socketid;
|
|
|
|
in_list = true;
|
|
chromecast_object = true;
|
|
socket.join(coll);
|
|
}
|
|
});
|
|
}
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
});
|
|
|
|
socket.on("get_id", function() {
|
|
socket.emit("id_chromecast", {
|
|
cookie_id: Functions.getSession(socket),
|
|
guid: guid
|
|
});
|
|
});
|
|
|
|
socket.on("error_video", function(msg) {
|
|
try {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
var _list = msg.channel; //.replace(/ /g,'');
|
|
if (_list.length == 0) return;
|
|
if (_list.indexOf("?") > -1) {
|
|
_list = _list.substring(0, _list.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
coll = Functions.removeEmojis(_list).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
Search.check_error_video(msg, coll);
|
|
});
|
|
|
|
socket.on("get_spread", function() {
|
|
db.collection("connected_users").find({ _id: "total_users" }, function(
|
|
err,
|
|
tot
|
|
) {
|
|
db.collection("connected_users").find(
|
|
{ _id: "offline_users" },
|
|
function(err, off) {
|
|
db.collection("connected_users").find(
|
|
{ _id: { $ne: "total_users" }, _id: { $ne: "offline_users" } },
|
|
function(err, users_list) {
|
|
if (tot.length > 0 && off.length == 0) {
|
|
socket.emit("spread_listeners", {
|
|
offline: 0,
|
|
total: tot[0].total_users.length,
|
|
online_users: users_list
|
|
});
|
|
} else if (tot.length > 0 && off.length > 0) {
|
|
socket.emit("spread_listeners", {
|
|
offline: off[0].users.length,
|
|
total: tot[0].total_users.length,
|
|
online_users: users_list
|
|
});
|
|
}
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});
|
|
});
|
|
|
|
socket.on("suggest_thumbnail", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
Suggestions.thumbnail(msg, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("suggest_description", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
Suggestions.description(msg, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("suggest_rules", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
Suggestions.rules(msg, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("namechange", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
Chat.namechange(msg, guid, socket);
|
|
});
|
|
|
|
socket.on("removename", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
if (typeof msg != "object" || !msg.hasOwnProperty("channel")) {
|
|
var result = {
|
|
channel: {
|
|
expected: "string",
|
|
got: msg.hasOwnProperty("channel") ? typeof msg.channel : undefined
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
return;
|
|
}
|
|
Chat.removename(guid, msg.channel, socket);
|
|
});
|
|
|
|
socket.on("offline", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
if (
|
|
!msg.hasOwnProperty("status") ||
|
|
!msg.hasOwnProperty("channel") ||
|
|
typeof msg.status != "boolean" ||
|
|
typeof msg.channel != "string"
|
|
) {
|
|
var result = {
|
|
status: {
|
|
expected: "boolean",
|
|
got: msg.hasOwnProperty("status") ? typeof msg.status : undefined
|
|
},
|
|
channel: {
|
|
expected: "string",
|
|
got: msg.hasOwnProperty("channel") ? typeof msg.channel : undefined
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
return;
|
|
}
|
|
var status = msg.status;
|
|
var channel = msg.channel; //.replace(/ /g,'');
|
|
if (status) {
|
|
in_list = false;
|
|
offline = true;
|
|
if (channel != "") coll = channel;
|
|
if (coll !== undefined) {
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = filter.clean(coll);
|
|
db.collection("connected_users").findAndModify(
|
|
{
|
|
query: { _id: coll },
|
|
update: { $pull: { users: guid } },
|
|
upsert: true
|
|
},
|
|
function(err, updated, d) {
|
|
if (d.n == 1) {
|
|
var num = 0;
|
|
if (updated && updated.users) {
|
|
num = updated.users.length;
|
|
}
|
|
io.to(coll).emit("viewers", num);
|
|
db.collection("frontpage_lists").update(
|
|
{ _id: coll, viewers: { $gt: 0 } },
|
|
{ $inc: { viewers: -1 } },
|
|
function(err, docs) {}
|
|
);
|
|
db.collection("connected_users").update(
|
|
{ _id: "total_users" },
|
|
{ $pull: { total_users: guid + coll } },
|
|
function(err, docs) {
|
|
db.collection("connected_users").update(
|
|
{ _id: "offline_users" },
|
|
{ $addToSet: { users: guid } },
|
|
{ upsert: true },
|
|
function(err, docs) {
|
|
if (
|
|
docs.nModified == 1 &&
|
|
(coll != undefined && coll != "")
|
|
) {
|
|
db.collection("connected_users").update(
|
|
{ _id: "total_users" },
|
|
{ $addToSet: { total_users: guid + coll } },
|
|
function(err, docs) {}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
Functions.remove_name_from_db(guid, coll);
|
|
}
|
|
);
|
|
}
|
|
|
|
Functions.remove_unique_id(short_id);
|
|
} else {
|
|
offline = false;
|
|
db.collection("connected_users").update(
|
|
{ _id: "offline_users" },
|
|
{ $pull: { users: guid } },
|
|
function(err, docs) {
|
|
Functions.check_inlist(
|
|
coll,
|
|
guid,
|
|
socket,
|
|
offline,
|
|
undefined,
|
|
"place 3"
|
|
);
|
|
}
|
|
);
|
|
}
|
|
});
|
|
|
|
socket.on("get_history", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
if (
|
|
!msg.hasOwnProperty("channel") ||
|
|
!msg.hasOwnProperty("all") ||
|
|
typeof msg.channel != "string" ||
|
|
typeof msg.all != "boolean"
|
|
) {
|
|
var result = {
|
|
all: {
|
|
expected: "boolean",
|
|
got: msg.hasOwnProperty("all") ? typeof msg.all : undefined
|
|
},
|
|
channel: {
|
|
expected: "string",
|
|
got: msg.hasOwnProperty("channel") ? typeof msg.channel : undefined
|
|
},
|
|
pass: {
|
|
expected: "string",
|
|
got: msg.hasOwnProperty("pass") ? typeof msg.pass : undefined
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
return;
|
|
}
|
|
Chat.get_history(msg.channel, msg.all, socket);
|
|
});
|
|
|
|
socket.on("chat", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
Chat.chat(msg, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("all,chat", function(data) {
|
|
if (data.hasOwnProperty("channel") && data.channel.indexOf("?") > -1) {
|
|
var _list = data.channel.substring(0, data.channel.indexOf("?"));
|
|
data.channel = _list;
|
|
}
|
|
if (data.hasOwnProperty("channel")) {
|
|
data.channel = Functions.encodeChannelName(data.channel);
|
|
}
|
|
Chat.all_chat(data, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("frontpage_lists", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
Frontpage.frontpage_lists(msg, socket);
|
|
});
|
|
|
|
socket.on("import_zoff", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
ListChange.addFromOtherList(msg, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("now_playing", function(list, fn) {
|
|
List.now_playing(list, fn, socket);
|
|
});
|
|
|
|
socket.on("id", function(arr) {
|
|
if (arr.hasOwnProperty("channel") && arr.channel.indexOf("?") > -1) {
|
|
var _list = arr.channel.substring(0, arr.channel.indexOf("?"));
|
|
arr.channel = _list;
|
|
}
|
|
if (arr.hasOwnProperty("channel")) {
|
|
arr.channel = Functions.encodeChannelName(arr.channel);
|
|
}
|
|
if (typeof arr == "object")
|
|
io.to(arr.id).emit(arr.id.toLowerCase(), {
|
|
type: arr.type,
|
|
value: arr.value
|
|
});
|
|
});
|
|
|
|
socket.on("join_silent", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
} else {
|
|
return;
|
|
}
|
|
List.join_silent(msg, socket);
|
|
});
|
|
|
|
socket.on("list", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
try {
|
|
//var _list = msg.channel.replace(/ /g,'');
|
|
var _list = msg.channel;
|
|
if (_list.length == 0) return;
|
|
if (_list.indexOf("?") > -1) {
|
|
_list = _list.substring(0, _list.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
coll = Functions.removeEmojis(_list).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
//
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
|
|
if (msg.hasOwnProperty("offline") && msg.offline) {
|
|
offline = true;
|
|
}
|
|
List.list(msg, guid, coll, offline, socket);
|
|
Functions.get_short_id(socket);
|
|
});
|
|
|
|
socket.on("end", function(obj) {
|
|
if (obj.hasOwnProperty("channel") && obj.channel.indexOf("?") > -1) {
|
|
var _list = obj.channel.substring(0, obj.channel.indexOf("?"));
|
|
obj.channel = _list;
|
|
}
|
|
if (obj.hasOwnProperty("channel")) {
|
|
obj.channel = Functions.encodeChannelName(obj.channel);
|
|
try {
|
|
coll = obj.channel.toLowerCase(); //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
List.end(obj, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("addPlaylist", function(arr) {
|
|
if (arr.hasOwnProperty("channel") && arr.channel.indexOf("?") > -1) {
|
|
var _list = arr.channel.substring(0, arr.channel.indexOf("?"));
|
|
arr.channel = _list;
|
|
}
|
|
if (arr.hasOwnProperty("channel")) {
|
|
arr.channel = Functions.encodeChannelName(arr.channel);
|
|
}
|
|
ListChange.addPlaylist(arr, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("add", function(arr) {
|
|
if (arr.hasOwnProperty("list") && arr.list.indexOf("?") > -1) {
|
|
var _list = arr.list.substring(0, arr.list.indexOf("?"));
|
|
arr.list = _list;
|
|
}
|
|
if (arr.hasOwnProperty("list")) {
|
|
arr.list = Functions.encodeChannelName(arr.list);
|
|
}
|
|
if (
|
|
coll !== undefined &&
|
|
((arr.hasOwnProperty("offsiteAdd") && !arr.offsiteAdd) ||
|
|
!arr.hasOwnProperty("offsiteAdd"))
|
|
) {
|
|
try {
|
|
coll = arr.list; //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
} else if (arr.hasOwnProperty("offsiteAdd") && arr.offsiteAdd) {
|
|
arr.list = Functions.removeEmojis(arr.list).toLowerCase();
|
|
}
|
|
ListChange.add_function(arr, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("delete_all", function(msg) {
|
|
try {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
coll = msg.channel.toLowerCase(); //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
|
|
ListChange.delete_all(msg, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("vote", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
if (coll !== undefined) {
|
|
try {
|
|
coll = msg.channel.toLowerCase(); //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
}
|
|
ListChange.voteUndecided(msg, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("password", function(inp) {
|
|
if (inp.hasOwnProperty("channel") && inp.channel.indexOf("?") > -1) {
|
|
var _list = inp.channel.substring(0, inp.channel.indexOf("?"));
|
|
inp.channel = _list;
|
|
}
|
|
if (inp.hasOwnProperty("channel")) {
|
|
inp.channel = Functions.encodeChannelName(inp.channel);
|
|
}
|
|
//if(coll != undefined) coll.replace(/ /g,'');
|
|
ListSettings.password(inp, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("skip", function(list) {
|
|
if (list.hasOwnProperty("channel") && list.channel.indexOf("?") > -1) {
|
|
var _list = list.channel.substring(0, list.channel.indexOf("?"));
|
|
list.channel = _list;
|
|
coll = list.channel;
|
|
}
|
|
if (list.hasOwnProperty("channel")) {
|
|
list.channel = Functions.encodeChannelName(list.channel);
|
|
}
|
|
//if(coll != undefined) coll.replace(/ /g,'');
|
|
List.skip(list, guid, coll, offline, socket);
|
|
});
|
|
|
|
socket.on("conf", function(conf) {
|
|
if (conf.hasOwnProperty("channel") && conf.channel.indexOf("?") > -1) {
|
|
var _list = conf.channel.substring(0, conf.channel.indexOf("?"));
|
|
conf.channel = _list;
|
|
coll = conf.channel;
|
|
}
|
|
if (conf.hasOwnProperty("channel")) {
|
|
conf.channel = Functions.encodeChannelName(conf.channel);
|
|
coll = conf.channel;
|
|
}
|
|
//if(coll != undefined) coll.replace(/ /g,'');
|
|
ListSettings.conf_function(conf, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("shuffle", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
try {
|
|
coll = msg.channel.toLowerCase(); //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
|
|
ListChange.shuffle(msg, coll, guid, offline, socket);
|
|
});
|
|
|
|
socket.on("change_channel", function(obj) {
|
|
if (obj == undefined && coll != undefined) {
|
|
obj = {};
|
|
obj.channel = coll;
|
|
} else if (
|
|
obj != undefined &&
|
|
obj.hasOwnProperty("channel") &&
|
|
obj.channel.indexOf("?") > -1
|
|
) {
|
|
var _list = obj.channel.substring(0, obj.channel.indexOf("?"));
|
|
obj.channel = _list;
|
|
}
|
|
if (obj == undefined && coll == undefined) {
|
|
return;
|
|
}
|
|
if (obj.hasOwnProperty("channel")) {
|
|
obj.channel = Functions.encodeChannelName(obj.channel);
|
|
}
|
|
if (
|
|
coll === undefined &&
|
|
obj !== undefined &&
|
|
obj.channel !== undefined
|
|
) {
|
|
try {
|
|
coll = obj.channel.toLowerCase(); //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
}
|
|
Functions.left_channel(
|
|
coll,
|
|
guid,
|
|
short_id,
|
|
in_list,
|
|
socket,
|
|
true,
|
|
"left 1"
|
|
);
|
|
in_list = false;
|
|
});
|
|
|
|
socket.on("disconnect", function() {
|
|
Functions.left_channel(
|
|
coll,
|
|
guid,
|
|
short_id,
|
|
in_list,
|
|
socket,
|
|
false,
|
|
"left 2"
|
|
);
|
|
});
|
|
|
|
socket.on("disconnected", function() {
|
|
Functions.left_channel(
|
|
coll,
|
|
guid,
|
|
short_id,
|
|
in_list,
|
|
socket,
|
|
false,
|
|
"left 3"
|
|
);
|
|
});
|
|
|
|
socket.on("left_channel", function(msg) {
|
|
if (msg.hasOwnProperty("channel") && msg.channel.indexOf("?") > -1) {
|
|
var _list = msg.channel.substring(0, msg.channel.indexOf("?"));
|
|
msg.channel = _list;
|
|
}
|
|
if (msg.hasOwnProperty("channel")) {
|
|
msg.channel = Functions.encodeChannelName(msg.channel);
|
|
}
|
|
if (
|
|
msg.hasOwnProperty("channel") &&
|
|
msg.channel != "" &&
|
|
typeof msg.channel == "string"
|
|
) {
|
|
coll = msg.channel; //.replace(/ /g,'');
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = filter.clean(coll);
|
|
Functions.left_channel(
|
|
coll,
|
|
guid,
|
|
short_id,
|
|
in_list,
|
|
socket,
|
|
false,
|
|
"left 4"
|
|
);
|
|
}
|
|
});
|
|
|
|
socket.on("reconnect_failed", function() {
|
|
Functions.left_channel(
|
|
coll,
|
|
guid,
|
|
short_id,
|
|
in_list,
|
|
socket,
|
|
false,
|
|
"left 5"
|
|
);
|
|
});
|
|
|
|
socket.on("connect_timeout", function() {
|
|
Functions.left_channel(
|
|
coll,
|
|
guid,
|
|
short_id,
|
|
in_list,
|
|
socket,
|
|
false,
|
|
"left 6"
|
|
);
|
|
});
|
|
|
|
socket.on("error", function() {
|
|
Functions.left_channel(
|
|
coll,
|
|
guid,
|
|
short_id,
|
|
in_list,
|
|
socket,
|
|
false,
|
|
"left 7"
|
|
);
|
|
});
|
|
|
|
socket.on("pos", function(obj) {
|
|
if (
|
|
obj != undefined &&
|
|
obj.hasOwnProperty("channel") &&
|
|
obj.channel.indexOf("?") > -1
|
|
) {
|
|
var _list = obj.channel.substring(0, obj.channel.indexOf("?"));
|
|
obj.channel = _list;
|
|
}
|
|
if (obj != undefined && obj.hasOwnProperty("channel")) {
|
|
obj.channel = Functions.encodeChannelName(obj.channel);
|
|
}
|
|
if (obj == undefined && coll == undefined) {
|
|
return;
|
|
}
|
|
if (coll !== undefined) {
|
|
try {
|
|
coll = obj.channel.toLowerCase(); //.replace(/ /g,'');
|
|
if (coll.length == 0) return;
|
|
coll = Functions.removeEmojis(coll).toLowerCase();
|
|
//coll = coll.replace(/_/g, "");
|
|
|
|
//coll = filter.clean(coll);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (!obj.hasOwnProperty("channel") || typeof obj.channel != "string") {
|
|
var result = {
|
|
channel: {
|
|
expected: "string",
|
|
got: obj.hasOwnProperty("channel") ? typeof obj.channel : undefined
|
|
},
|
|
pass: {
|
|
expected: "string",
|
|
got: obj.hasOwnProperty("pass") ? typeof obj.pass : undefined
|
|
}
|
|
};
|
|
socket.emit("update_required", result);
|
|
return;
|
|
}
|
|
if (coll == undefined) return;
|
|
db.collection(coll + "_settings").find(function(err, docs) {
|
|
Functions.getSessionAdminUser(
|
|
Functions.getSession(socket),
|
|
coll,
|
|
function(userpass, adminpass) {
|
|
if (userpass != "" || obj.pass == undefined) {
|
|
obj.pass = userpass;
|
|
} else {
|
|
obj.pass = crypto
|
|
.createHash("sha256")
|
|
.update(Functions.decrypt_string(obj.pass))
|
|
.digest("base64");
|
|
}
|
|
if (
|
|
docs.length > 0 &&
|
|
(docs[0].userpass == undefined ||
|
|
docs[0].userpass == "" ||
|
|
(obj.hasOwnProperty("pass") && docs[0].userpass == obj.pass))
|
|
) {
|
|
Functions.check_inlist(
|
|
coll,
|
|
guid,
|
|
socket,
|
|
offline,
|
|
undefined,
|
|
"place 4"
|
|
);
|
|
List.send_play(coll, socket);
|
|
} else {
|
|
socket.emit("auth_required");
|
|
}
|
|
}
|
|
);
|
|
});
|
|
});
|
|
});
|
|
|
|
//send_ping();
|
|
};
|
|
|
|
/*
|
|
function send_ping() {
|
|
db.collection("connected_users").update({users: {$exists: true}}, {$set: {users: []}}, {multi: true}, function(err, docs){
|
|
db.collection("connected_users").update({"_id": "total_users"}, {$add: {total_users: 0}}, {multi: true}, function(err, docs){
|
|
db.collection("frontpage_lists").update({viewers: {$ne: 0}}, {$set: {"viewers": 0}}, {multi: true}, function(err, docs) {
|
|
io.emit("self_ping");
|
|
setTimeout(send_ping, 25000);
|
|
});
|
|
});
|
|
});
|
|
}*/
|