%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.220.78.64
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/scale/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/scale/admin_frame.js
/**
 * BX.Scale.AdminFrame class - main class for scalability panel page.
 */
;(function(window) {

	if (BX.Scale.AdminFrame) return;

	BX.Scale.AdminFrame = {

		frameObjectName: "",
		srvFrameObjectName: "",
		currentAsyncActionBID: "", //Bitrix ID (BID) for async long actions.
		timeAsyncRefresh: 20000, //ms how often we want to refresh info about "long" actions
		timeIntervalId: "",
		graphPageUrl: "",
		failureAnswersCount: 0,
		failureAnswersCountAllow: 50, // Max number bad request-answers we suppose to receive.  For example server reboots, etc.
		nextActionId: null, // for action chains

		/**
		 * Initializes frame params
		 */
		init: function (params)
		{
			for(var key in params)
				this[key] = params[key];
		},

		/**
		 * Prepares & builds main frame objects
		 */
		build: function()
		{
			var frameObj = BX(this.frameObjectName);

			if(!frameObj)
				return false;

			this.showActions();
			this.showServers();

			return true;
		},

		showServers: function()
		{
			var frameObj = BX(this.srvFrameObjectName),
				servers = BX.Scale.serversCollection.getObjectsList(),
				newSrv = frameObj.children[0];

			if(frameObj)
				for(var key in servers)
					frameObj.insertBefore(servers[key].getDomObj(), newSrv);
		},

		isObjectEmpty: function (obj)
		{
			for (var i in obj)
				return false;

			return true;
		},

		showActions: function()
		{
			var frameObj = BX(this.frameObjectName);

			if(!frameObj)
				return false;

			if(!this.isObjectEmpty(BX.Scale.serversCollection.getObjectsList()))
				frameObj.insertBefore(this.getMenuObj(), frameObj.children[0]);
		},

		/**
		 * Starts the process of monitoring data refreshing
		 * @param {number} timeInterval - ms how often we must refresh data
		 */
		refreshingDataStart: function(timeInterval)
		{
			BX.Scale.AdminFrame.refreshingDataIntervalId = setInterval( function() {
					BX.Scale.AdminFrame.refreshServersRolesLoadbars();
				},
				timeInterval
			);
		},

		/**
		 * Sets the servers roles loadbar values
		 * @param {object} monitoringData
		 */
		setMonitoringValues: function(monitoringData)
		{
			for(var hostname in monitoringData)
			{
				var server = BX.Scale.serversCollection.getObject(hostname);

				if(monitoringData[hostname].ROLES_LOADBARS)
				{
					for(var roleId in  monitoringData[hostname].ROLES_LOADBARS)
					{
						if(server && server.roles && server.roles[roleId])
						{
							server.roles[roleId].setLoadBarValue(monitoringData[hostname].ROLES_LOADBARS[roleId]);
						}
					}
				}

				if(monitoringData[hostname].MONITORING_VALUES)
					server.setMonitoringValues(monitoringData[hostname].MONITORING_VALUES);
			}
		},

		/**
		 * Receives the data from server for server roles loadbars using ajax request
		 */
		refreshServersRolesLoadbars: function()
		{
			if(!BX.Scale.AdminFrame.monitoringParams)
			{
				BX.Scale.AdminFrame.monitoringParams = {};

				var servers = BX.Scale.serversCollection.getObjectsList();

				for(var srvId in servers)
				{
					if(!BX.Scale.isMonitoringDbCreated[srvId])
						continue;

					BX.Scale.AdminFrame.monitoringParams[srvId] = {
						rolesIds:[],
						monitoringParams: servers[srvId].getMonitoringParams()
					};

					for(var roleId in  servers[srvId].roles)
					{
						if(servers[srvId].roles[roleId].loadBar !== null)
						{
							BX.Scale.AdminFrame.monitoringParams[srvId].rolesIds.push(roleId);
						}
					}
				}
			}

			if(BX.Scale.isObjEmpty(BX.Scale.AdminFrame.monitoringParams))
				return;

			var sendPrams = {
				operation: "get_monitoring_values",
				servers: BX.Scale.AdminFrame.monitoringParams
			};

			var callbacks = {
				onsuccess: function(result){
					if(result)
					{
						if(result.MONITORING_DATA)
						{
							BX.Scale.AdminFrame.setMonitoringValues(result.MONITORING_DATA);
						}

						if(result.ERROR && result.ERROR.length > 0)
						{
							BX.debug("Monitoring data error: "+result.ERROR);
						}
					}
					else
					{
						BX.debug("Monitoring receiving data error.");
					}
				},
				onfailure: function(){
					BX.debug("Monitoring receiving data failure.");
				}
			};

			BX.Scale.Communicator.sendRequest(sendPrams, callbacks, this, false);
		},


		getMenuObj: function()
		{
			var domObj = document.createElement("span");
			BX.addClass(domObj, "adm-scale-menu-btn");
			domObj.innerHTML = BX.message("SCALE_PANEL_JS_GLOBAL_ACTIONS");
			BX.bind(domObj, "click", BX.proxy(this.actionsMenuOpen, this));
			return BX.create("div",{children:[domObj], style:{padding:"0 0 40px 0"}});
		},

		actionsMenuOpen: function(event)
		{
			event = event || window.event;
			var menuButton = event.target || event.srcElement,
				menuItems = [],
				settMenu = [],
				actionsIds = {
					MONITORING_ENABLE: true,
					MONITORING_DISABLE: true,
					SITE_CREATE: true,
					SITE_DEL: true,
					SET_EMAIL_SETTINGS: true,
					CRON_SET: true,
					CRON_UNSET: true,
					HTTP_OFF: true,
					HTTP_ON: true,
					CERTIFICATES: true,
					UPDATE_ALL_BVMS: true,
					UPDATE_ALL_SYSTEMS: true 
				},
				s;

			for(var key in actionsIds)
			{
				if(!actionsIds.hasOwnProperty(key))
					continue;

				var action = BX.Scale.actionsCollection.getObject(key);

				if(action)
				{
					if(key == "SET_EMAIL_SETTINGS")
					{
						settMenu = [];

						for(s in BX.Scale.sitesList)
						{
							if(!BX.Scale.sitesList.hasOwnProperty(s))
								continue;

							settMenu.push({
								TEXT: BX.Scale.sitesList[s].NAME,
								ONCLICK: "BX.Scale.actionsCollection.getObject('"+key+"').start('',{SITE_NAME_CONF: '"+BX.Scale.sitesList[s].SiteName+"', SITE_NAME: '"+BX.Scale.sitesList[s].NAME+"',SMTP_HOST: BX.Scale.sitesList['"+s+"'].SMTPHost,SMTP_PORT: BX.Scale.sitesList['"+s+"'].SMTPPort,SMTP_USER: BX.Scale.sitesList['"+s+"'].SMTPUser,EMAIL: BX.Scale.sitesList['"+s+"'].EmailAddress,SMTPTLS: (BX.Scale.sitesList['"+s+"'].SMTPTLS == 'on' ? 'Y' : 'N'), USER_PASSWORD: BX.Scale.sitesList['"+s+"'].SMTPPassword, USE_AUTH: (BX.Scale.sitesList['"+s+"'].SMTP_USE_AUTH == 'Y' ? 'Y' : 'N')});"
							});
						}

						menuItems.push({
							TEXT: action.name,
							MENU: settMenu
						});
					}
					else if(key == "CERTIFICATES")
					{
						var menu1 = [];

						for(s in BX.Scale.sitesList)
						{
							if(!BX.Scale.sitesList.hasOwnProperty(s))
								continue;

							var email = BX.Scale.sitesList[s].EMAIL ? BX.Scale.sitesList[s].EMAIL : '',
								domains = BX.Scale.sitesList[s].DOMAINS ? BX.Scale.sitesList[s].DOMAINS : '';

							menu1.push({
								TEXT: BX.Scale.sitesList[s].NAME,
								ONCLICK: "BX.Scale.actionsCollection.getObject('CERTIFICATE_LETS_ENCRYPT_CONF').start('',{SITE_NAME_CONF: '"+BX.Scale.sitesList[s].SiteName+"', SITE_NAME: '"+BX.Scale.sitesList[s].NAME+"', EMAIL: '"+email+"', DNS: '"+domains+"'});"
							});
						}

						var menu2 = [];

						for(s in BX.Scale.sitesList)
						{
							if(!BX.Scale.sitesList.hasOwnProperty(s))
								continue;

							menu2.push({
								TEXT: BX.Scale.sitesList[s].NAME,
								ONCLICK: "BX.Scale.actionsCollection.getObject('CERTIFICATE_SELF_CONF').start('',{SITE_NAME_CONF: '"+BX.Scale.sitesList[s].SiteName+"', SITE_NAME: '"+BX.Scale.sitesList[s].NAME+"', PRIVATE_KEY_PATH: '"+BX.Scale.sitesList[s].HTTPSPriv+"', CERTIFICATE_PATH: '"+BX.Scale.sitesList[s].HTTPSCert+"', CERTIFICATE_CHAIN_PATH: '"+BX.Scale.sitesList[s].HTTPSCertChain+"'});"
							});
						}

						settMenu = [
							{
								TEXT: BX.Scale.actionsCollection.getObject('CERTIFICATE_LETS_ENCRYPT_CONF').name,
								MENU:menu1
							},
							{
								TEXT: BX.Scale.actionsCollection.getObject('CERTIFICATE_SELF_CONF').name,
								MENU:menu2
							}
						];

						menuItems.push({
							TEXT: action.name,
							MENU: settMenu
						});
					}
					else if(key == "CRON_SET" || key == "CRON_UNSET" )
					{
						settMenu = [];
						for(s in BX.Scale.sitesList)
						{
							if(
								(BX.Scale.sitesList[s].CronTask == "enable" && key == "CRON_UNSET")
									|| (BX.Scale.sitesList[s].CronTask != "enable" && key == "CRON_SET")
								)
							{
								settMenu.push({
									TEXT: BX.Scale.sitesList[s].NAME,
									ONCLICK: "BX.Scale.actionsCollection.getObject('"+key+"').start('',{VM_SITE_ID: '"+s+"'});"
								});
							}
						}

						if(settMenu.length > 0)
						{
							menuItems.push({
								TEXT: action.name,
								MENU: settMenu
							});
						}
					}
					else if(key == "HTTP_OFF" || key == "HTTP_ON" )
					{
						settMenu = [];
						for(s in BX.Scale.sitesList)
						{
							if(
								(BX.Scale.sitesList[s].HTTPS == "enable" && key == "HTTP_ON")
									|| (BX.Scale.sitesList[s].HTTPS != "enable" && key == "HTTP_OFF")
								)
							{
								settMenu.push({
									TEXT: BX.Scale.sitesList[s].NAME,
									ONCLICK: "BX.Scale.actionsCollection.getObject('"+key+"').start('',{VM_SITE_ID: '"+s+"'});"
								});
							}
						}

						if(settMenu.length > 0)
						{
							menuItems.push({
								TEXT: action.name,
								MENU: settMenu
							});
						}
					}
					else if(key == "SITE_CREATE")
					{
						menuItems.push({
							TEXT: action.name,
							MENU:[
								{
									TEXT: BX.Scale.actionsCollection.getObject('SITE_CREATE_LINK').name,
									ONCLICK: "BX.Scale.actionsCollection.getObject('SITE_CREATE_LINK').start();"
								},
								{
									TEXT: BX.Scale.actionsCollection.getObject('SITE_CREATE_KERNEL').name,
									ONCLICK: "BX.Scale.actionsCollection.getObject('SITE_CREATE_KERNEL').start();"
								}
							]
						});
					}
					else if(key == "SITE_DEL")
					{
						settMenu = [];

						for(s in BX.Scale.sitesList)
						{
							settMenu.push({
								TEXT: BX.Scale.sitesList[s].NAME,
								ONCLICK: "BX.Scale.actionsCollection.getObject('"+key+"').start('',{VM_SITE_ID: '"+s+"'})"
							});
						}

						menuItems.push({
							TEXT: action.name,
							MENU: settMenu
						});
					}
					else
					{
						menuItems.push({
							TEXT: action.name,
							ONCLICK: "BX.Scale.actionsCollection.getObject('"+key+"').start();"
						});
					}
				}
			}

			if (!menuButton.OPENER)
				BX.adminShowMenu(menuButton, menuItems, {active_class: "bx-adm-scale-menu-butt-active"});
			else
				menuButton.OPENER.SetMenu(menuItems);

			return BX.PreventDefault(event);
		},

		/**
		* Generates name for new server
		*/
		getNewServerName: function(idx)
		{
			if(!idx)
				idx = 1;

			var hostname = "server"+idx;
			var server = BX.Scale.serversCollection.getObject(hostname);

			if(server !== false)
			{
				idx++;
				hostname = this.getNewServerName(idx);
			}

			return hostname;
		},

		/**
		 * Shows alert dialog
		 * @param text
		 * @param title
		 * @param callback
		 */
		alert: function(text, title, callback)
		{
			var btnClose = {
				title: BX.message("SCALE_PANEL_JS_CLOSE"),
				id: 'btnClose',
				name: 'btnClose',

				action: function () {
					this.parentWindow.Close();

					if(callback && typeof callback === 'function')
						callback.apply();
				}
			};

			this.dialogWindow = new BX.CDialog({
				title: title ? title : '',
				content: text,
				resizable: false,
				height: 200,
				width: 400,
				buttons: [ btnClose ]
			});

			this.dialogWindow.adjustSizeEx();
			this.dialogWindow.Show();
		},

		/**
		 * Shows confirm dialog
		 * @param text
		 * @param title
		 * @param callbackOk
		 * @param callbackCancel
		 */
		confirm: function(text, title, callbackOk, callbackCancel)
		{
			var btnOk = {
				title: "OK",
				id: 'btnOk',
				name: 'btnOk',
				className: 'adm-btn-save',

				action: function () {
					this.parentWindow.Close();

					if(callbackOk && typeof callbackOk === 'function')
						callbackOk.apply();
				}
			};

			var btnCancel = {
				title: BX.message("SCALE_PANEL_JS_CANCEL"),
				id: 'btnCancel',
				name: 'btnCancel',

				action: function () {
					this.parentWindow.Close();

					if(callbackCancel && typeof callbackCancel === 'function')
						callbackCancel.apply();
				}
			};

			this.dialogWindow = new BX.CDialog({
				title: title ? title : '',
				content: '<div style="margin-top: 9px;">'+text+'</div>',
				resizable: false,
				height: 200,
				width: 400,
				buttons: [ btnOk, btnCancel]
			});

			this.dialogWindow.adjustSizeEx();
			this.dialogWindow.Show();
		},

		/**
		 * Shows window with warning about running action
		 * @param bid
		 * @returns {boolean}
		 */
		waitForAction: function(bid)
		{
			if(!bid)
				return false;

			this.dialogWindow = new BX.CDialog({
				title: BX.message("SCALE_PANEL_JS_WFA_TITLE"),
				content: BX.message("SCALE_PANEL_JS_WFA_TEXT").replace('##BID##',bid)+"<div class='bx-adm-scale-wait'></div>",
				resizable: false,
				height: 200,
				width: 400
			});

			this.dialogWindow.adjustSizeEx();
			this.dialogWindow.Show();

			this.failureAnswersCount = 0;

			var sendPrams = {
				operation: "check_state",
				bid: bid
			};


			var callbacks = {
				onsuccess: function(result) {

					this.failureAnswersCount = 0;

					if(result.ACTION_STATE.status != "running")
					{
						window.location.reload(true);
					}
				},
				onfailure: function(type, e) {

					BX.debug({type: type, error: e});

					if(this.failureAnswersCountAllow >= this.failureAnswersCount)
					{
						this.failureAnswersCount++;
					}
					else
					{
						window.location.reload(true);
					}
				}
			};

			var _this = this;
			setInterval(function(){	BX.Scale.Communicator.sendRequest(sendPrams, callbacks, _this, false); }, _this.timeAsyncRefresh);

			return true;
		},

		waitForPageRefreshing: function()
		{
			var dialog = new BX.CDialog({
				title: BX.message("SCALE_PANEL_JS_REFRESH_TITLE"),
				content: '<div style="margin-top: 9px;">'+BX.message("SCALE_PANEL_JS_REFRESH_TEXT")+'</div>',
				resizable: false,
				height: 200,
				width: 400
			});

			dialog.adjustSizeEx();
			dialog.Show();
		}
	}

})(window);

Youez - 2016 - github.com/yon3zu
LinuXploit