mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			302 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			302 lines
		
	
	
		
			9.8 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();
 | ||
|     }
 | ||
| };
 |