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(); } };