%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.144.117.167
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/main/core/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/main/core/core_frame_cache.js
(function (window)
{
	if (window.BX.frameCache) return;

	var BX = window.BX;
	var localStorageKey = "compositeCache";
	var lolalStorageTTL = 1440;
	var compositeMessageIds = ["bitrix_sessid", "USER_ID", "SERVER_TIME", "USER_TZ_OFFSET", "USER_TZ_AUTO"];
	var compositeDataFile = "/bitrix/tools/composite_data.php";
	var sessidWasUpdated = false;

	BX.frameCache = function()
	{
	};

	if (BX.browser.IsIE8())
	{
		BX.frameCache.localStorage = new BX.localStorageIE8();
	}
	else if (typeof(localStorage) !== "undefined")
	{
		BX.frameCache.localStorage = new BX.localStorage();
	}
	else
	{
		BX.frameCache.localStorage = {
			set : BX.DoNothing,
			get : function() { return null; },
			remove : BX.DoNothing
		};
	}

	BX.frameCache.localStorage.prefix = function()
	{
		return "bx-";
	};

	BX.frameCache.init = function()
	{
		this.cacheDataBase = null;
		this.tableParams =
		{
			tableName: "composite",
			fields: [
				{name: "id", unique: true},
				"content",
				"hash",
				"props"
			]
		};

		this.frameDataReceived = false;
		this.frameDataInserted = false;

		if (BX.type.isString(window.frameDataString) && window.frameDataString.length > 0)
		{
			BX.frameCache.onFrameDataReceived(window.frameDataString);
		}

		this.vars = window.frameCacheVars ? window.frameCacheVars : {
			dynamicBlocks: {},
			page_url: "",
			params: {},
			storageBlocks: []
		};

		//local storage warming up
		var lsCache = BX.frameCache.localStorage.get(localStorageKey) || {};
		for (var i = 0; i < compositeMessageIds.length; i++)
		{
			var messageId = compositeMessageIds[i];
			if (typeof(BX.message[messageId]) != "undefined")
			{
				lsCache[messageId] = BX.message[messageId];
			}
		}
		BX.frameCache.localStorage.set(localStorageKey, lsCache, lolalStorageTTL);

		BX.addCustomEvent("onBXMessageNotFound", function(mess)
		{
			if (BX.util.in_array(mess, compositeMessageIds))
			{
				var cache = BX.frameCache.localStorage.get(localStorageKey);
				if (cache && typeof(cache[mess]) != "undefined")
				{
					BX.message[mess] = cache[mess];
				}
				else
				{
					BX.frameCache.getCompositeMessages();
				}
			}
		});

		if (!window.frameUpdateInvoked)
		{
			this.update(false);
			window.frameUpdateInvoked = true;
		}

		if (window.frameRequestStart)
		{
			BX.ready(function() {
				BX.onCustomEvent("onCacheDataRequestStart");
				BX.frameCache.tryUpdateSessid();
			});
		}

		if (window.frameRequestFail)
		{
			BX.ready(function() {
				setTimeout(function() {
					BX.onCustomEvent("onFrameDataRequestFail", [window.frameRequestFail]);
				}, 0);
			});
		}

		BX.frameCache.insertBanner();
	};

	BX.frameCache.getCompositeMessages = function()
	{
		try {
			BX.ajax({
				method: "GET",
				dataType: "json",
				url: compositeDataFile,
				async : false,
				data:  '',
				onsuccess: function(json)
				{
					BX.frameCache.setCompositeVars(json);
				}
			});
		}
		catch (exeption)
		{
			BX.debug("Composite sync request failed.");
		}
	};

	BX.frameCache.setCompositeVars = function(vars)
	{
		if (!vars)
		{
			return;
		}
		else if (vars.lang)
		{
			vars = vars.lang;
		}

		var lsCache = BX.frameCache.localStorage.get(localStorageKey) || {};
		for (var name in vars)
		{
			if (vars.hasOwnProperty(name))
			{
				BX.message[name] = vars[name];

				if (BX.util.in_array(name, compositeMessageIds))
				{
					lsCache[name] = vars[name];
				}
			}
		}

		BX.frameCache.localStorage.set(localStorageKey, lsCache, lolalStorageTTL);
	};

	BX.frameCache.insertBlock = function(block, callback)
	{
		if (!BX.type.isFunction(callback))
		{
			callback = function() {};
		}

		if (!block)
		{
			callback();
			return;
		}

		var container = null;
		var dynamicStart = null;
		var dynamicEnd = null;

		var autoContainerPrefix = "bxdynamic_";
		if (block.ID.substr(0, autoContainerPrefix.length) === autoContainerPrefix)
		{
			dynamicStart = BX(block.ID + "_start");
			dynamicEnd = BX(block.ID + "_end");
			if (!dynamicStart || !dynamicEnd)
			{
				BX.debug("Dynamic area " + block.ID + " was not found");
				callback();
				return;
			}
		}
		else
		{
			container = BX(block.ID);
			if (!container)
			{
				BX.debug("Container " + block.ID + " was not found");
				callback();
				return;
			}
		}

		var htmlWasInserted = false;
		var scriptsLoaded = false;
		var assets = getAssets();
		processCSS(insertHTML);
		processStrings();
		processExternalJS(processInlineJS);

		function processCSS(callback)
		{
			var styles = assets.styles;
			if (BX.type.isArray(block.PROPS.CSS) && block.PROPS.CSS.length > 0)
			{
				styles = BX.util.array_merge(block.PROPS.CSS, styles);
			}

			styles.length > 0 ? BX.load(styles, callback) : callback();
		}

		function insertHTML()
		{
			if (container)
			{
				if (block.PROPS.USE_ANIMATION)
				{
					container.style.opacity = 0;
					container.innerHTML = block.CONTENT;
					(new BX.easing({
						duration : 1500,
						start : { opacity: 0 },
						finish : { opacity: 100 },
						transition : BX.easing.makeEaseOut(BX.easing.transitions.quart),
						step : function(state){
							container.style.opacity = state.opacity / 100;
						},
						complete : function() {
							container.style.cssText = '';
						}
					})).animate();
				}
				else
				{
					container.innerHTML = block.CONTENT;
				}
			}
			else
			{
				BX.frameCache.removeNodes(dynamicStart, dynamicEnd);
				dynamicStart.insertAdjacentHTML("afterEnd", block.CONTENT);
			}

			htmlWasInserted = true;
			if (scriptsLoaded)
			{
				processInlineJS();
			}
		}

		function processStrings()
		{
			if (BX.Type.isStringFilled(assets.html))
			{
				document.head.insertAdjacentHTML("beforeend", assets.html);
			}

			BX.evalGlobal(assets.inlineJS.join(";"));
		}

		function getAssets()
		{
			var result = { styles: [], inlineJS: [], externalJS: [], html: "" };
			if (!BX.type.isArray(block.PROPS.STRINGS) || block.PROPS.STRINGS.length < 1)
			{
				return result;
			}

			var parts = BX.processHTML(block.PROPS.STRINGS.join(""), false);
			for (var i = 0, l = parts.SCRIPT.length; i < l; i++)
			{
				var script = parts.SCRIPT[i];
				if (script.isInternal)
				{
					result.inlineJS.push(script.JS);
				}
				else
				{
					result.externalJS.push(script.JS);
				}
			}

			result.styles = parts.STYLE;
			result.html = parts.HTML;

			return result;
		}

		function processExternalJS(callback)
		{
			var scripts = assets.externalJS;
			if (BX.type.isArray(block.PROPS.JS) && block.PROPS.JS.length > 0)
			{
				scripts = BX.util.array_merge(scripts, block.PROPS.JS);
			}
			scripts.length > 0 ? BX.load(scripts, callback) : callback();
		}

		function processInlineJS()
		{
			scriptsLoaded = true;
			if (htmlWasInserted)
			{
				BX.ajax.processRequestData(block.CONTENT, {scriptsRunFirst: false, dataType: "HTML"});

				if (BX.type.isArray(block.PROPS.BUNDLE_JS))
				{
					BX.setJSList(block.PROPS.BUNDLE_JS);
				}

				if (BX.type.isArray(block.PROPS.BUNDLE_CSS))
				{
					BX.setCSSList(block.PROPS.BUNDLE_CSS);
				}

				callback();
			}
		}
	};

	BX.frameCache.removeNodes = function(fromElement, toElement)
	{
		var startFound = false;
		var parent = fromElement.parentNode;
		var nodes = Array.prototype.slice.call(parent.childNodes);
		for (var i = 0, length = nodes.length; i < length; i++)
		{
			if (startFound)
			{
				if (nodes[i] === toElement)
				{
					break;
				}
				else
				{
					parent.removeChild(nodes[i]);
				}
			}
			else if (nodes[i] === fromElement)
			{
				startFound = true;
			}
		}
	};

	BX.frameCache.update = function(makeRequest, noInvoke)
	{
		noInvoke = !!noInvoke;
		makeRequest = typeof(makeRequest) == "undefined" ? true : makeRequest;
		if (makeRequest)
		{
			this.requestData();
		}

		if (!noInvoke)
		{
			BX.ready(BX.proxy(function() {
				if (!this.frameDataReceived)
				{
					this.invokeCache();
				}
			}, this));
		}
	};

	BX.frameCache.invokeCache = function()
	{
		//getting caching dynamic blocks
		if (this.vars.storageBlocks && this.vars.storageBlocks.length > 0)
		{
			BX.onCustomEvent(this, "onCacheInvokeBefore", [this.vars.storageBlocks]);
			this.readCacheWithID(this.vars.storageBlocks, BX.proxy(this.insertFromCache, this));
		}
	};

	BX.frameCache.handleResponse = function(json)
	{
		if (json == null)
			return;

		BX.onCustomEvent("onFrameDataReceivedBefore", [json]);

		if (json.dynamicBlocks && json.dynamicBlocks.length > 0)//we have dynamic blocks
		{
			this.insertBlocks(json.dynamicBlocks, false);
			this.writeCache(json.dynamicBlocks);
		}

		BX.onCustomEvent("onFrameDataReceived", [json]);

		if (json.isManifestUpdated == "1" && this.vars.CACHE_MODE === "APPCACHE")//the manifest has been changed
		{
			window.applicationCache.update();
		}

		if (json.htmlCacheChanged === true && this.vars.CACHE_MODE === "HTMLCACHE")
		{
			BX.onCustomEvent("onHtmlCacheChanged", [json]);
		}

		if (BX.type.isArray(json.spread))
		{
			for (var i = 0; i < json.spread.length; i++)
			{
				new Image().src = json.spread[i];
			}
		}

	};

	BX.frameCache.requestData = function()
	{
		var headers = [
			{ name: "BX-ACTION-TYPE", value: "get_dynamic" },
			{ name: "BX-REF", value: document.referrer },
			{ name: "BX-CACHE-MODE", value: this.vars.CACHE_MODE },
			{ name: "BX-CACHE-BLOCKS", value: this.vars.dynamicBlocks ? JSON.stringify(this.vars.dynamicBlocks) : "" }
		];

		if (this.vars.AUTO_UPDATE === false && this.vars.AUTO_UPDATE_TTL && this.vars.AUTO_UPDATE_TTL > 0)
		{
			var lastModified = Date.parse(document.lastModified);
			if (!isNaN(lastModified))
			{
				var now = new Date().getTime();
				if ((lastModified + this.vars.AUTO_UPDATE_TTL * 1000) < now)
				{
					headers.push({ name: "BX-INVALIDATE-CACHE", value: "Y" });
				}
			}
		}

		if (this.vars.CACHE_MODE === "APPCACHE")
		{
			headers.push({ name: "BX-APPCACHE-PARAMS", value: JSON.stringify(this.vars.PARAMS) });
			headers.push({ name: "BX-APPCACHE-URL", value: this.vars.PAGE_URL ? this.vars.PAGE_URL : "" });
		}

		BX.onCustomEvent("onCacheDataRequestStart");

		var requestURI = window.location.href;
		var index = requestURI.indexOf("#");
		if (index > 0)
		{
			requestURI = requestURI.substring(0, index);
		}
		requestURI += (requestURI.indexOf("?") >= 0 ? "&" : "?") + "bxrand=" + new Date().getTime();

		BX.ajax({
			timeout: 60,
			method: "GET",
			url: requestURI,
			data: {},
			headers: headers,
			skipBxHeader : true,
			processData: false,
			onsuccess: BX.proxy(BX.frameCache.onFrameDataReceived, this),
			onfailure: function()
			{
				window.frameRequestFail = {
					error: true,
					reason: "bad_response",
					url : requestURI,
					xhr: this.xhr,
					status: this.xhr ? this.xhr.status : 0
				};

				BX.onCustomEvent("onFrameDataRequestFail", [window.frameRequestFail]);
			}
		});
	};

	BX.frameCache.onFrameDataReceived = function(response)
	{
		var result = null;
		try
		{
			eval("result = " + response);
		}
		catch (e)
		{
			var error = {
				error: true,
				reason: "bad_eval",
				response: response
			};

			window.frameRequestFail = error;

			BX.ready(function() {
				setTimeout(function() {
					BX.onCustomEvent("onFrameDataRequestFail", [error]);
				}, 0);
			});

			return;
		}

		this.frameDataReceived = true;

		if (result && BX.type.isNotEmptyString(result.redirect_url))
		{
			window.location = result.redirect_url;
			return;
		}

		if (result && result.error === true)
		{
			window.frameRequestFail = result;

			BX.ready(BX.proxy(function() {
				setTimeout(BX.proxy(function() {
					BX.onCustomEvent("onFrameDataRequestFail", [result]);
				}, this), 0);
			}, this));

			return;
		}

		BX.frameCache.setCompositeVars(result);
		BX.ready(BX.proxy(function() {
			this.handleResponse(result);
			this.tryUpdateSessid();
		}, this));
	};

	BX.frameCache.insertFromCache = function(resultSet, transaction)
	{
		if (!this.frameDataReceived)
		{
			var items = resultSet.items;
			if (items.length > 0)
			{
				for (var i = 0; i < items.length; i++)
				{
					items[i].PROPS = JSON.parse(items[i].PROPS);
				}

				this.insertBlocks(items, true);
			}

			BX.onCustomEvent(this, "onCacheInvokeAfter", [this.vars.storageBlocks, resultSet]);
		}
	};

	BX.frameCache.insertBlocks = function(blocks, fromCache)
	{
		var blocksToInsert = new Set();
		for (var i = 0; i < blocks.length; i++)
		{
			var block = blocks[i];
			BX.onCustomEvent("onBeforeDynamicBlockUpdate", [block, fromCache]);

			if (block.PROPS.AUTO_UPDATE === false)
			{
				continue;
			}

			blocksToInsert.add(block);
		}

		var inserted = 0;

		var finalize = function() {
			if (window.performance)
			{
				var entries = performance.getEntries();
				for (var i = 0; i < entries.length; i++)
				{
					var entry = entries[i];
					if (entry.initiatorType === 'xmlhttprequest' && entry.name && entry.name.match(/bxrand=[0-9]+/))
					{
						this.requestTiming = entry;
					}
				}

				if (window.performance.measure)
				{
					window.performance.measure('Composite:LCP');

					var lcpEntries = performance.getEntriesByName('Composite:LCP');
					if (lcpEntries.length > 0 && lcpEntries[0].duration)
					{
						this.lcp = Math.ceil(lcpEntries[0].duration);
					}
				}
			}

			BX.onCustomEvent("onFrameDataProcessed", [blocks, fromCache]);
			this.frameDataInserted = true;
		}.bind(this);

		var handleBlockInsertion = function() {
			if (++inserted === blocksToInsert.size)
			{
				finalize();
			}
		}.bind(this);

		if (blocksToInsert.size === 0)
		{
			finalize();
		}
		else
		{
			blocksToInsert.forEach(function(block) {

				if (block && block.HASH && block.PROPS && block.PROPS.ID)
				{
					this.vars.dynamicBlocks[block.PROPS.ID] = block.HASH;
				}

				this.insertBlock(block, handleBlockInsertion);
			}, this);
		}
	};

	BX.frameCache.writeCache = function(blocks)
	{
		for (var i = 0; i < blocks.length; i++)
		{
			if (blocks[i].PROPS.USE_BROWSER_STORAGE === true)
			{
				this.writeCacheWithID(
					blocks[i].ID,
					blocks[i].CONTENT,
					blocks[i].HASH,
					JSON.stringify(blocks[i].PROPS)
				);
			}
		}
	};

	BX.frameCache.openDatabase = function()
	{
		var isDatabaseOpened = (this.cacheDataBase != null);

		if(!isDatabaseOpened)
		{
			this.cacheDataBase = new BX.Dexie("composite");
			if(this.cacheDataBase != null)
			{
				this.cacheDataBase.version(1).stores({
					composite: '&ID,CONTENT,HASH,PROPS'
				});
				isDatabaseOpened = true;
			}
		}

		return isDatabaseOpened;
	};

	BX.frameCache.writeCacheWithID = function(id, content, hash, props)
	{
		if(BX.frameCache.openDatabase())
		{
			if (typeof props == "object")
			{
				props = JSON.stringify(props);
			}

			this.cacheDataBase.composite.put({
				ID: id,
				CONTENT: content,
				HASH: hash,
				PROPS : props
			});
		}
	};

	BX.frameCache.readCacheWithID = function(id, callback)
	{
		if(BX.frameCache.openDatabase())
		{
			this.cacheDataBase.composite
				.where("ID").anyOf(id).toArray()
				.then((function(items){
					callback({items:items});
				}).bind(this));
		}
		else if(typeof callback != "undefined")
		{
			callback({items:[]});
		}
	};

	BX.frameCache.insertBanner = function()
	{
		if (!this.vars.banner || !BX.type.isNotEmptyString(this.vars.banner.text))
		{
			return;
		}

		BX.ready(BX.proxy(function() {
			var banner = BX.create("a", {
				props : {
					className : "bx-composite-btn" + (
						BX.type.isNotEmptyString(this.vars.banner.style) ?
						" bx-btn-" + this.vars.banner.style :
						""
					),
					href : this.vars.banner.url
				},
				attrs : {
					target : "_blank"
				},
				text : this.vars.banner.text
			});

			if (BX.type.isNotEmptyString(this.vars.banner.bgcolor))
			{
				banner.style.backgroundColor = this.vars.banner.bgcolor;
				if (BX.util.in_array(this.vars.banner.bgcolor.toUpperCase(), ["#FFF", "#FFFFFF", "WHITE"]))
				{
					BX.addClass(banner, "bx-btn-border");
				}
			}

			var container = BX("bx-composite-banner");
			if (container)
			{
				container.appendChild(banner);
			}
			else
			{
				BX.addClass(banner, "bx-composite-btn-fixed");
				document.body.appendChild(BX.create("div", {
					style : { position: "relative" },
					children: [ banner ]
				}));
			}
		}, this));
	};

	BX.frameCache.tryUpdateSessid = function()
	{
		if (sessidWasUpdated)
		{
			return;
		}

		var name = "bitrix_sessid";
		var sessid = false;

		if (typeof(BX.message[name]) != "undefined")
		{
			sessid = BX.message[name];
		}
		else
		{
			var cache = BX.frameCache.localStorage.get(localStorageKey) || {};
			if (typeof(cache[name]) != "undefined")
			{
				sessid = cache[name];
			}
		}

		if (sessid !== false)
		{
			sessidWasUpdated = true;
			this.updateSessid(sessid);
		}
	};

	BX.frameCache.updateSessid = function(sessid)
	{
		var inputs = document.getElementsByName("sessid");
		for (var i = 0; i < inputs.length; i++)
		{
			inputs[i].value = sessid;
		}
	};

	//initialize
	BX.frameCache.init();

})(window);


Youez - 2016 - github.com/yon3zu
LinuXploit