403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/cluster/admin/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/cluster/admin/cluster_dbnode_list.php
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php';
/** @global CUser $USER */
global $USER;
/** @global CMain $APPLICATION */
global $APPLICATION;
/** @global CDatabase $DB */
global $DB;
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/cluster/prolog.php';

IncludeModuleLangFile(__FILE__);

if (!$USER->isAdmin())
{
	$APPLICATION->AuthForm(GetMessage('ACCESS_DENIED'));
}

$message = null;
$sTableID = 'tbl_cluster_dbnode_list';
$oSort = new CAdminSorting($sTableID, 'ID', 'ASC');
$lAdmin = new CAdminList($sTableID, $oSort);

if ($arID = $lAdmin->GroupAction())
{
	foreach ( $arID as $ID)
	{
		if ($ID == '')
		{
			continue;
		}

		$ID = intval($ID);
		if ($_REQUEST['action'] === 'delete')
		{
			$arNode = CClusterDBNode::GetByID($ID);
			if (is_array($arNode) && $arNode['ROLE_ID'] == 'MODULE' && $arNode['STATUS'] == 'READY')
			{
				CClusterDBNode::Delete($arNode['ID'], false);
			}
			break;
		}
	}
}

$arHeaders = [
	[
		'id' => 'ID',
		'content' => GetMessage('CLU_DBNODE_LIST_ID'),
		'align' => 'right',
		'default' => true,
	],
	[
		'id' => 'FLAG',
		'content' => GetMessage('CLU_DBNODE_LIST_FLAG'),
		'align' => 'center',
		'default' => true,
	],
	[
		'id' => 'ACTIVE',
		'content' => GetMessage('CLU_DBNODE_LIST_ACTIVE'),
		'align' => 'center',
		'default' => true,
	],
	[
		'id' => 'STATUS',
		'content' => GetMessage('CLU_DBNODE_LIST_STATUS'),
		'align' => 'center',
		'default' => true,
	],
	[
		'id' => 'NAME',
		'content' => GetMessage('CLU_DBNODE_LIST_NAME'),
		'align' => 'left',
		'default' => true,
	],
	[
		'id' => 'MODULES',
		'content' => GetMessage('CLU_DBNODE_LIST_MODULES'),
		'align' => 'left',
		'default' => true,
	],
	[
		'id' => 'DESCRIPTION',
		'content' => GetMessage('CLU_DBNODE_LIST_DESCRIPTION'),
		'align' => 'left',
		'default' => false,
	],
	[
		'id' => 'DB_HOST',
		'content' => GetMessage('CLU_DBNODE_LIST_DB_HOST'),
		'align' => 'left',
		'default' => false,
	],
	[
		'id' => 'DB_NAME',
		'content' => GetMessage('CLU_DBNODE_LIST_DB_NAME'),
		'align' => 'left',
		'default' => false,
	],
	[
		'id' => 'DB_LOGIN',
		'content' => GetMessage('CLU_DBNODE_LIST_DB_LOGIN'),
		'align' => 'left',
		'default' => false,
	],
];

$lAdmin->AddHeaders($arHeaders);

$strUptimeError = '';
$rsData = CClusterDBNode::GetList(
	[//Order
		'ID' => 'ASC',
	]
	,[//Filter
		'=ROLE_ID' => ['MAIN', 'MODULE'],
		'=MASTER_ID' => false,
	]
);

$rsData = new CAdminResult($rsData, $sTableID);

while ($arRes = $rsData->Fetch()):
	$row = $lAdmin->AddRow($arRes['ID'], $arRes);
	$uptime = CClusterDBNode::GetUpTime($arRes['ID']);
	$arModules = CClusterDBNode::GetModules($arRes['ID']);

	if ($arRes['ACTIVE'] == 'Y')
	{
		if ($arRes['STATUS'] == 'OFFLINE' && $uptime !== false)
		{
			CClusterDBNode::SetOnline($arRes['ID']);
			$arRes['STATUS'] = 'ONLINE';
		}
		elseif ($arRes['STATUS'] == 'ONLINE' && count($arModules) == 0 && $arRes['ROLE_ID'] == 'MODULE')
		{
			$ob = new CClusterDBNode;
			$ob->Update($arRes['ID'], ['STATUS' => 'READY']);
			$arRes['STATUS'] = 'READY';
		}
		elseif ($arRes['STATUS'] == 'READY' && count($arModules) > 0)
		{
			$ob = new CClusterDBNode;
			$ob->Update($arRes['ID'], ['STATUS' => 'ONLINE']);
			$arRes['STATUS'] = 'ONLINE';
		}
		elseif ($arRes['STATUS'] == 'READY' && $arRes['ROLE_ID'] == 'MAIN')
		{
			$ob = new CClusterDBNode;
			$ob->Update($arRes['ID'], ['STATUS' => 'ONLINE']);
			$arRes['STATUS'] = 'ONLINE';
		}
	}

	if ($arRes['ID'] > 1)
	{
		$row->AddViewField('ID', '<a href="cluster_dbnode_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $arRes['ID'] . '">' . $arRes['ID'] . '</a>');
	}

	if ($arRes['ACTIVE'] == 'Y' && $arRes['STATUS'] == 'ONLINE')
	{
		$htmlFLAG = '<div class="lamp-green"></div>';
	}
	else
	{
		$htmlFLAG = '<div class="lamp-red"></div>';
	}

	if ($uptime === false)
	{
		$htmlFLAG .= GetMessage('CLU_DBNODE_NOCONNECTION');
	}
	elseif ($uptime > 0)
	{
		$htmlFLAG .= GetMessage('CLU_DBNODE_UPTIME') . '<br>' . FormatDate([
			's' => 'sdiff',
			'i' => 'idiff',
			'H' => 'Hdiff',
			'' => 'ddiff',
		], time() - $uptime);
	}
	else
	{
		$strUptimeError = $uptime;
		$htmlFLAG .= GetMessage('CLU_DBNODE_UPTIME') . '<br>' . GetMessage('CLU_DBNODE_UPTIME_UNKNOWN') . '<span class="required"><sup>1</sup></span>';
	}

	$row->AddViewField('FLAG', $htmlFLAG);

	if ($arRes['ACTIVE'] == 'Y')
	{
		$row->AddViewField('ACTIVE', GetMessage('MAIN_YES'));
	}
	else
	{
		$row->AddViewField('ACTIVE', GetMessage('MAIN_NO'));
	}

	$row->AddViewField('MODULES', implode('<br>', $arModules));

	$arActions = [];
	if ($arRes['ROLE_ID'] == 'MODULE')
	{
		$arActions[] = [
			'ICON' => 'edit',
			'DEFAULT' => true,
			'TEXT' => GetMessage('CLU_DBNODE_LIST_EDIT'),
			'ACTION' => $lAdmin->ActionRedirect('cluster_dbnode_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $arRes['ID'])
		];
	}
	if ($arRes['ROLE_ID'] == 'MODULE')
	{
		if ($arRes['STATUS'] == 'READY')
		{
			if (CClusterDBNode::GetModulesForSharding())
			{
				$arActions[] = [
					'TEXT' => GetMessage('CLU_DBNODE_LIST_START_USING_DB'),
					'ACTION' => "javascript:StartWizard('bitrix:cluster.module_move', '&__wiz_node_id=" . $arRes['ID'] . '&__wiz_status=' . $arRes['STATUS'] . "')",
				];
			}

			$arActions[] = [
				'ICON' => 'delete',
				'TEXT' => GetMessage('CLU_DBNODE_LIST_DELETE'),
				'ACTION' => "if(confirm('" . GetMessage('CLU_DBNODE_LIST_DELETE_CONF') . "')) " . $lAdmin->ActionDoGroup($arRes['ID'], 'delete')
			];
		}
		elseif ($arRes['STATUS'] == 'ONLINE')
		{
			$arActions[] = [
				'TEXT' => GetMessage('CLU_DBNODE_LIST_STOP_USING_DB'),
				'ACTION' => "javascript:StartWizard('bitrix:cluster.module_move', '&__wiz_node_id=" . $arRes['ID'] . '&__wiz_status=' . $arRes['STATUS'] . "')",
			];
		}
	}
	if (!empty($arActions))
	{
		$row->AddActions($arActions);
	}
endwhile;

if ($strUptimeError)
{
	$lAdmin->BeginEpilogContent();
	echo BeginNote(), '<span class="required"><sup>1</sup></span>', $strUptimeError, EndNote();
	$lAdmin->EndEpilogContent();
}

$lAdmin->AddFooter(
	[
		[
			'title' => GetMessage('MAIN_ADMIN_LIST_SELECTED'),
			'value' => $rsData->SelectedRowsCount(),
		],
		[
			'counter' => true,
			'title' => GetMessage('MAIN_ADMIN_LIST_CHECKED'),
			'value' => '0',
		],
	]
);

$lAdmin->BeginPrologContent();
$url = 'cluster_dbnode_list.php?lang=' . urlencode(LANGUAGE_ID);
?>
<script>
	function StartWizard(name, params)
	{
		WizardWindow.Open(name, BX.bitrix_sessid() + params);
		BX.addCustomEvent(WizardWindow.currentDialog, 'onWindowClose', () => {<?=$lAdmin->ActionAjaxReload($url)?>});
	}
</script>
<?php
$lAdmin->EndPrologContent();

if ($DB->type === 'MYSQL')
{
	$link = "javascript:StartWizard('bitrix:cluster.dbnode_add', '')";
	$title = GetMessage('CLU_DBNODE_LIST_ADD_TITLE1');
}
else
{
	$link = '/bitrix/admin/cluster_dbnode_edit.php?lang=' . LANGUAGE_ID;
	$title = GetMessage('CLU_DBNODE_LIST_ADD_TITLE2');
}

$aContext = [
	[
		'TEXT' => GetMessage('CLU_DBNODE_LIST_ADD'),
		'LINK' => $link,
		'TITLE' => $title,
		'ICON' => 'btn_new',
	],
	[
		'TEXT' => GetMessage('CLU_DBNODE_LIST_REFRESH'),
		'LINK' => 'cluster_dbnode_list.php?lang=' . LANGUAGE_ID,
	],
];

$lAdmin->AddAdminContextMenu($aContext, /*$bShowExcel=*/false);

$lAdmin->CheckListMode();

$APPLICATION->SetTitle(GetMessage('CLU_DBNODE_LIST_TITLE'));

require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php';

if ($message)
{
	echo $message->Show();
}
$lAdmin->DisplayList();

$htmlModules = '<ul style="font-size:100%">';
foreach (GetModuleEvents('cluster', 'OnGetTableList', true) as $arEvent)
{
	$ar = ExecuteModuleEventEx($arEvent);
	if (is_array($ar))
	{
		$htmlModules .= '<li>' . $ar['MODULE']->MODULE_NAME;
	}
}
$htmlModules .= '</ul>';

echo BeginNote(), GetMessage('CLU_DBNODE_LIST_NOTE1'), $htmlModules, GetMessage('CLU_DBNODE_LIST_NOTE2'), EndNote();

require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php';

Youez - 2016 - github.com/yon3zu
LinuXploit