Files
zoff/server/public/assets/js/crypt.js
Kasper Rynning-Tønnesen bcb5641f90 Somewhat prettier css
2019-07-26 10:23:55 +02:00

359 lines
9.6 KiB
JavaScript
Executable File

var Crypt = {
conf_pass: undefined,
user_pass: undefined,
tmp_pass_user: "",
tmp_pass: "",
init: function() {
if (window.location.pathname != "/") {
if (location.protocol != "https:") {
document.cookie =
chan.toLowerCase() +
"=;path=/" +
chan.toLowerCase() +
";expires=" +
new Date(0).toUTCString();
} else {
document.cookie =
chan.toLowerCase() +
"=;path=/" +
chan.toLowerCase() +
";secure;expires=" +
new Date(0).toUTCString();
}
}
try {
conf_arr = Crypt.decrypt(Crypt.getCookie("_opt"), "_opt");
} catch (err) {
conf_arr = Crypt.decrypt(Crypt.create_cookie("_opt"), "_opt");
}
if (window.location.pathname != "/") {
change_intelligent(Crypt.get_intelligent_list_enabled());
if (!conf_arr.hasOwnProperty("color")) {
Crypt.set_background_color("dynamic", true);
} else {
document.querySelector(".backround_switch_class").checked =
conf_arr.color == "dynamic";
if (conf_arr.color != "dynamic") {
Helper.removeClass(".background_color_container", "hide");
document.querySelector("#background_color_choser").value =
conf_arr.color;
}
}
Hostcontroller.change_enabled(conf_arr.remote);
if (conf_arr.width != 100) Player.set_width(conf_arr.width);
}
},
set_background_color: function(value, first) {
conf_arr.color = value;
if (value != "dynamic" && !first) {
Helper.css("#main-container", "background-color", value);
Helper.css("#nav", "background-color", value);
Helper.css(".title-container", "background-color", value);
document
.querySelector("meta[name=theme-color]")
.setAttribute("content", value);
Helper.css("#controls", "background", value);
} else if (!first) {
var url = "https://img.youtube.com/vi/" + Player.np.id + "/mqdefault.jpg";
if (videoSource == "soundcloud") url = Player.np.thumbnail;
getColor(url);
}
Crypt.encrypt(conf_arr, "_opt");
},
get_background_color: function(value) {
if (!conf_arr.hasOwnProperty("color")) {
Crypt.set_background_color("dynamic");
}
return conf_arr.color;
},
get_intelligent_list_enabled: function() {
if (conf_arr.hasOwnProperty("intelligent")) {
return conf_arr.intelligent;
} else {
conf_arr.intelligent = false;
Crypt.encrypt(conf_arr, "_opt");
return false;
}
},
set_intelligent_list_enabled: function(enabled) {
conf_arr.intelligent = enabled;
if (Helper.mobilecheck()) {
intelligentList = enabled;
}
Crypt.encrypt(conf_arr, "_opt");
},
decrypt: function(cookie, name) {
if (Crypt.getCookie(name) === undefined) {
cookie = Crypt.create_cookie(name);
}
if (cookie == undefined && name == "_opt")
return {
volume: 100,
width: 100,
remote: true,
name: "",
offline: false
};
/*var key = btoa("0103060703080703080701") + btoa("0103060703080703080701");
key = key.substring(0,32);
key = btoa(key);
var decrypted = CryptoJS.AES.decrypt(
cookie,key,
{
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);*/
//return $.parseJSON(decrypted.toString(CryptoJS.enc.Utf8));
return JSON.parse(atob(cookie));
},
decrypt_pass: function(pass) {
if (socket) {
/*var key = btoa(socket.id) + btoa(socket.id);
key = key.substring(0,32);
key = btoa(key);
var decrypted = CryptoJS.AES.decrypt(
pass,key,
{
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
return decrypted.toString(CryptoJS.enc.Utf8);*/
return atob(pass);
}
return false;
},
encrypt: function(json_formated, cookie) {
var to_encrypt = JSON.stringify(json_formated);
/*var key = btoa("0103060703080703080701") + btoa("0103060703080703080701");
key = key.substring(0,32);
key = btoa(key);
var encrypted = CryptoJS.AES.encrypt(
to_encrypt,
key,
{
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);*/
var encrypted = btoa(to_encrypt);
var CookieDate = new Date();
CookieDate.setFullYear(CookieDate.getFullYear() + 1);
if (location.protocol != "https:") {
document.cookie =
cookie +
"=" +
encrypted.toString() +
";expires=" +
CookieDate.toGMTString() +
";path=/;";
} else {
document.cookie =
cookie +
"=" +
encrypted.toString() +
";secure;expires=" +
CookieDate.toGMTString() +
";path=/;";
}
},
get_volume: function() {
return Crypt.decrypt(Crypt.getCookie("_opt"), "_opt").volume;
//return conf_arr.volume;
},
get_offline: function() {
var temp_offline = Crypt.decrypt(Crypt.getCookie("_opt"), "_opt").offline;
if (temp_offline != undefined) {
return Crypt.decrypt(Crypt.getCookie("_opt"), "_opt").offline;
} else {
Crypt.set_offline(false);
return false;
}
},
set_volume: function(val) {
conf_arr.volume = val;
Crypt.encrypt(conf_arr, "_opt");
},
create_cookie: function(name) {
if (name == "_opt")
cookie_object = {
volume: 100,
width: 100,
remote: true,
name: "",
offline: false
};
else cookie_object = { passwords: {} };
var string_it = JSON.stringify(cookie_object);
/*var key = btoa("0103060703080703080701") + btoa("0103060703080703080701");
key = key.substring(0,32);
key = btoa(key);
var encrypted = CryptoJS.AES.encrypt(
string_it,
key,
{
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);*/
var encrypted = btoa(string_it);
var CookieDate = new Date();
CookieDate.setFullYear(CookieDate.getFullYear() + 1);
if (location.protocol != "https:") {
document.cookie =
name +
"=" +
encrypted.toString() +
";expires=" +
CookieDate.toGMTString() +
";path=/;";
} else {
document.cookie =
name +
"=" +
encrypted.toString() +
";secure;expires=" +
CookieDate.toGMTString() +
";path=/;";
}
//document.cookie = name+"="+encrypted.toString()+";expires="+CookieDate.toGMTString()+";path=/;"
//document.cookie = na"="+encrypted.toString()+";expires="+CookieDate.toGMTString()+";path=/;"
return Crypt.getCookie(name);
},
/*set_pass: function(chan, pass) {
Crypt.conf_pass.passwords[chan] = pass;
Crypt.encrypt(Crypt.conf_pass, chan);
},
remove_pass:function(chan) {
delete Crypt.conf_pass.passwords[chan];
Crypt.encrypt(Crypt.conf_pass, chan.toLowerCase());
},
set_userpass: function(chan, pass) {
Crypt.conf_pass.passwords["userpass"] = pass;
Crypt.encrypt(Crypt.conf_pass, chan);
},
remove_userpass:function(chan) {
delete Crypt.conf_pass.passwords["userpass"];
Crypt.encrypt(Crypt.conf_pass, chan.toLowerCase());
},*/
set_name: function(name, pass) {
conf_arr.name = encodeURIComponent(name).replace(/\W/g, "");
conf_arr.chat_pass = pass;
Crypt.encrypt(conf_arr, "_opt");
},
set_offline: function(enabled) {
conf_arr.offline = enabled;
Crypt.encrypt(conf_arr, "_opt");
},
remove_name: function() {
conf_arr.name = "";
conf_arr.chat_pass = "";
Crypt.encrypt(conf_arr, "_opt");
},
get_pass: function(chan) {
if (Crypt.conf_pass !== undefined) return Crypt.conf_pass.passwords[chan];
return undefined;
},
get_userpass: function(chan) {
if (Crypt.conf_pass !== undefined)
return Crypt.conf_pass.passwords["userpass"];
return "";
},
set_remote: function(val) {
conf_arr.remote = val;
Crypt.encrypt(conf_arr, "_opt");
},
get_remote: function(val) {
return conf_arr.remote;
},
crypt_chat_pass: function(pass) {
/*var key = btoa(socket.id) + btoa(socket.id);
key = key.substring(0,32);
key = btoa(key);
var iv = btoa(Crypt.makeiv());
var encrypted = CryptoJS.AES.encrypt(
pass,
CryptoJS.enc.Base64.parse(key),
{
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
iv: CryptoJS.enc.Base64.parse(iv),
}
);*/
//window.encrypted = encrypted;
return btoa(pass);
//return encrypted.toString() + "$" + iv;
},
crypt_pass: function(pass, userpass) {
if (userpass) {
Crypt.tmp_pass_user = pass;
} else {
Crypt.tmp_pass = pass;
}
//return Crypt.crypt_chat_pass(pass);
return btoa(pass);
},
makeiv: function() {
var text = "";
var possible =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 16; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
},
get_width: function() {
return conf_arr.width;
},
set_width: function(val) {
conf_arr.width = val;
Crypt.encrypt(conf_arr, "_opt");
},
getCookie: function(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2)
return parts
.pop()
.split(";")
.shift();
}
};