khanat-opennel-code/code/ryzom/tools/server/admin/index.php

1093 lines
42 KiB
PHP
Raw Normal View History

2013-06-15 14:08:38 +00:00
<?php
// Enw4k.XHXuULw
require_once('common.php');
require_once('functions_tool_main.php');
require_once('functions_tool_notes.php');
nt_common_add_debug('-- Starting on \'index.php\'');
$tpl->assign('tool_title', "Main");
$view_domain_id = nt_auth_get_session_var('view_domain_id');
$view_shard_id = nt_auth_get_session_var('view_shard_id');
if (!$view_domain_id)
{
$view_domain_id = $nel_user['group_default_domain_id'];
$view_shard_id = $nel_user['group_default_shard_id'];
nt_auth_set_session_var('view_domain_id', $view_domain_id);
nt_auth_set_session_var('view_shard_id', $view_shard_id);
}
if (isset($_GET['domain']))
{
if ($view_domain_id != $_GET['domain'])
{
$view_domain_id = $_GET['domain'];
nt_auth_set_session_var('view_domain_id', $view_domain_id);
$view_shard_id = null;
nt_auth_unset_session_var('view_shard_id');
}
}
if (isset($_GET['shard']))
{
$view_shard_id = $_GET['shard'];
nt_auth_set_session_var('view_shard_id', $view_shard_id);
}
if (!tool_main_check_user_domain($view_domain_id)) $view_domain_id = null;
if (!tool_main_check_user_shard($view_shard_id)) $view_shard_id = null;
$current_refresh_rate = nt_auth_get_session_var('current_refresh_rate');
if (isset($_POST['services_refresh']))
{
if ($current_refresh_rate != $_POST['services_refresh'])
{
$current_refresh_rate = $_POST['services_refresh'];
nt_auth_set_session_var('current_refresh_rate',$current_refresh_rate);
}
}
if ($current_refresh_rate == null)
{
$current_refresh_rate = 0;
}
elseif ($current_refresh_rate > 0)
{
$tpl->assign('nel_tool_refresh', '<meta http-equiv=refresh content="'. $current_refresh_rate .'">');
}
$tpl->assign('tool_refresh_list', $refresh_rates);
$tpl->assign('tool_refresh_rate', $current_refresh_rate);
$tpl->assign('tool_domain_list', $nel_user['access']['domains']);
$tpl->assign('tool_domain_selected', $view_domain_id);
$tpl->assign('tool_shard_list', $nel_user['access']['shards']);
$tpl->assign('tool_shard_selected', $view_shard_id);
$tool_shard_filters = tool_main_get_shard_ids($view_shard_id);
$tpl->assign('tool_shard_filters', $tool_shard_filters);
$AS_Host = tool_main_get_domain_host($view_domain_id);
$AS_Port = tool_main_get_domain_port($view_domain_id);
$AS_Name = tool_main_get_domain_name($view_domain_id);
$AS_Application = tool_main_get_domain_data($view_domain_id, 'domain_application');
$AS_RingSQL = tool_main_get_domain_data($view_domain_id, 'domain_sql_string');
$AS_CsSQL = tool_main_get_domain_data($view_domain_id, 'domain_cs_sql_string');
$AS_ShardName = tool_main_get_shard_name($view_shard_id);
$AS_InternalName = tool_main_get_shard_as_id($view_shard_id);
$AS_ShardRestart = tool_main_get_shard_data($view_shard_id, 'shard_restart');
$AS_ShardDomainRestart = tool_main_get_domain_shard_restart($view_domain_id);
$AS_ShardLang = tool_main_get_shard_data($view_shard_id, 'shard_lang');
$tpl->assign('tool_shard_restart_status', $AS_ShardRestart);
$tpl->assign('tool_domain_has_shard_restart', $AS_ShardDomainRestart);
$tool_no_domain_lock = false;
if (($AS_InternalName == '*') && ($AS_ShardDomainRestart > 0))
{
$tool_no_domain_lock = true;
$tpl->assign('tool_no_domain_lock', $tool_no_domain_lock);
}
$tpl->assign('tool_page_title', $AS_Name . ($AS_ShardName != '' ? ' / '. $AS_ShardName : ''));
$tool_annotation_info = tool_main_get_annotation($view_domain_id, $view_shard_id);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
// we check if the last activity on the lock is too old, in which case we unlock
// and only if there are no restart sequence going on (prevent loosing lock when inactive for too long during restart sequence - patch ...)
if ((LOCK_TIMEOUT > 0) && is_array($tool_lock_info) && ($AS_ShardRestart == 0) && !$tool_no_domain_lock)
{
$now = time();
if ($tool_lock_info['lock_update'] + LOCK_TIMEOUT < $now)
{
if ($tool_lock_info['lock_domain_id']) tool_main_delete_lock_domain($view_domain_id);
if ($tool_lock_info['lock_shard_id']) tool_main_delete_lock_shard($view_shard_id);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
}
}
// we update the lock data for the last activity time
if (is_array($tool_lock_info) && $tool_lock_info['lock_user_name'] == $nel_user['user_name'])
{
if ($tool_lock_info['lock_domain_id']) tool_main_set_lock_domain($view_domain_id, false);
if ($tool_lock_info['lock_shard_id']) tool_main_set_lock_shard($view_domain_id, $view_shard_id, false);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
}
if (tool_admin_applications_check('tool_main_lock_shard') || tool_admin_applications_check('tool_main_lock_domain'))
{
if (isset($NELTOOL['POST_VARS']['lock']))
{
$tool_lock_mode = $NELTOOL['POST_VARS']['lock'];
switch ($tool_lock_mode)
{
case 'lock shard':
if (tool_admin_applications_check('tool_main_lock_shard'))
{
tool_main_set_lock_shard($view_domain_id, $view_shard_id);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
if ($AS_ShardRestart > 0)
{
tool_main_set_restart_sequence_user($AS_ShardRestart);
}
}
break;
case 'lock domain':
if (tool_admin_applications_check('tool_main_lock_domain'))
{
tool_main_set_lock_domain($view_domain_id);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
}
break;
case 'unlock shard':
if (is_array($tool_lock_info) && $tool_lock_info['lock_user_name'] == $nel_user['user_name'])
{
tool_main_delete_lock_shard($view_shard_id);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
}
break;
case 'unlock domain':
if (is_array($tool_lock_info) && $tool_lock_info['lock_user_name'] == $nel_user['user_name'])
{
tool_main_delete_lock_domain($view_domain_id);
$tool_lock_info = tool_main_get_lock($view_domain_id, $view_shard_id);
}
break;
case 'update annotation':
if (is_array($tool_lock_info) && $tool_lock_info['lock_user_name'] == $nel_user['user_name'])
{
$tool_annotation = $NELTOOL['POST_VARS']['annotation'];
tool_main_set_annotation($view_domain_id, $view_shard_id, $tool_annotation);
$tool_annotation_info = tool_main_get_annotation($view_domain_id, $view_shard_id);
}
break;
case 'restart sequence':
if (is_array($tool_lock_info) && $tool_lock_info['lock_user_name'] == $nel_user['user_name'] && tool_admin_applications_check('tool_main_easy_restart'))
{
$restart_ws_state = $NELTOOL['POST_VARS']['restart_ws_state'];
$restart_first_step = 0;
// if restart_ws_state == '' means that i didn't find a shard_id
// which means the shard has been shutdown completely including AES and RAS
if ($restart_ws_state == 'close' || $restart_ws_state == '') $restart_first_step = 3;
$tool_restart_info = tool_main_set_restart_mode($view_domain_id, $view_shard_id, $restart_first_step);
}
break;
}
}
if (is_array($tool_lock_info) && $tool_lock_info['lock_user_name'] == $nel_user['user_name'])
{
if (tool_admin_applications_check('tool_main_start')) $tpl->assign('restriction_tool_main_start', true);
if (tool_admin_applications_check('tool_main_stop')) $tpl->assign('restriction_tool_main_stop', true);
if (tool_admin_applications_check('tool_main_restart')) $tpl->assign('restriction_tool_main_restart', true);
if (tool_admin_applications_check('tool_main_kill')) $tpl->assign('restriction_tool_main_kill', true);
if (tool_admin_applications_check('tool_main_abort')) $tpl->assign('restriction_tool_main_abort', true);
if (tool_admin_applications_check('tool_main_execute')) $tpl->assign('restriction_tool_main_execute', true);
if (tool_admin_applications_check('tool_main_ws')) $tpl->assign('restriction_tool_main_ws', true);
if (tool_admin_applications_check('tool_main_ws_old')) $tpl->assign('restriction_tool_main_ws_old', true);
if (tool_admin_applications_check('tool_main_reset_counters')) $tpl->assign('restriction_tool_main_reset_counters', true);
if (tool_admin_applications_check('tool_main_service_autostart')) $tpl->assign('restriction_tool_main_service_autostart', true);
if (tool_admin_applications_check('tool_main_shard_autostart')) $tpl->assign('restriction_tool_main_shard_autostart', true);
if (tool_admin_applications_check('tool_main_easy_restart')) $tpl->assign('restriction_tool_main_easy_restart', true);
$nel_user['has_lock'] = true;
if ($tool_lock_info['lock_shard_id'] > 0) $tpl->assign('tool_has_shard_lock', true);
elseif ($tool_lock_info['lock_domain_id'] > 0) $tpl->assign('tool_has_domain_lock', true);
if ($AS_ShardRestart > 0)
{
// define the shards language
$tpl->assign('tool_shard_language', $AS_ShardLang);
$tpl->assign('tool_language_list', $tool_language_list);
$tool_restart_message_reboot_list = tool_admin_restart_messages_get_list_from_name('reboot');
$tpl->assign('tool_restart_message_reboot_list', $tool_restart_message_reboot_list);
$tool_restart_stop_list = tool_admin_restarts_get_list('DESC');
$tool_restart_start_list = tool_admin_restarts_get_list('ASC');
// they are assigned at the end of the script
//$tpl->assign('tool_restart_stop_actions', $tool_restart_stop_list);
//$tpl->assign('tool_restart_start_actions', $tool_restart_start_list);
//$tool_restart_message_ready_list = tool_admin_restart_messages_get_list_from_name('ready');
//$tpl->assign('tool_restart_message_ready_list', $tool_restart_message_ready_list);
//$tool_restart_message_list = tool_admin_restart_messages_get_list_from_name('open');
// restart information
$tool_restart_info = tool_main_get_restart_sequence_by_id($AS_ShardRestart);
$tpl->assign('tool_restart_info', $tool_restart_info);
}
$tpl->assign('tool_has_lock', true);
}
else
{
$tpl->assign('tool_no_lock', true);
$tpl->assign('tool_no_annotation', true);
}
}
if (tool_admin_applications_check('tool_main_lock_shard')) $tpl->assign('restriction_tool_main_lock_shard',true);
if (tool_admin_applications_check('tool_main_lock_domain')) $tpl->assign('restriction_tool_main_lock_domain',true);
elseif (!tool_admin_applications_check('tool_main_lock_domain')
&& tool_admin_applications_check('tool_main_lock_shard')
&& (tool_main_get_shard_as_id($view_shard_id) == "*"))
{
// you have shard lock access
// but you don't have domain access
// and you are viewing the * shard
// locking the shard * will lock the domain
// so you must not be able to lock this shard
$tpl->assign('tool_cant_lock', true);
}
$tpl->assign('tool_lock_info', $tool_lock_info);
$tpl->assign('tool_annotation_info', $tool_annotation_info);
if (tool_admin_applications_check('tool_notes'))
{
$tool_note_list = tool_notes_get_list($nel_user['user_id'], 1);
if (sizeof($tool_note_list))
{
$tpl->assign('restriction_tool_notes', true);
$tpl->assign('tool_note_list', $tool_note_list);
}
}
$tool_as_error = null;
if ($AS_Host && $AS_Port)
{
$adminService = new MyAdminService;
if (@$adminService->connect($AS_Host, $AS_Port, $res) === false)
{
nt_common_add_debug($res);
$tpl->assign('tool_domain_error', $res );
}
else
{
if ($nel_user['has_lock'])
{
//nt_common_add_debug("HTTP_POST_VARS");
//nt_common_add_debug($HTTP_POST_VARS);
//echo '<pre>'. print_r($HTTP_POST_VARS,true) .'</pre>';
//die();
// make sure you are the one who has its name in the restart info
// as you can take over the lock and the restart sequence
// we don't want more than 1 client executing the restart commands if they think they still have the lock
if (isset($tool_restart_info) && ($tool_restart_info['restart_sequence_user_name'] == $nel_user['user_name']) && tool_admin_applications_check('tool_main_easy_restart'))
{
$tool_seq_id = $NELTOOL['POST_VARS']['restart_sequence_id'];
$tool_seq_step = $NELTOOL['POST_VARS']['restart_sequence_step'];
$restart_shard_id = $NELTOOL['POST_VARS']['restart_shard_id'];
$service_su = $NELTOOL['POST_VARS']['restart_su'];
$service_egs = $NELTOOL['POST_VARS']['restart_egs'];
$restart_stop_services = $NELTOOL['POST_VARS']['restart_stop_services'];
if (isset($NELTOOL['POST_VARS']['restart_check_ws']))
{
// we are starting the restart sequence
$restart_ws_state = $NELTOOL['POST_VARS']['restart_ws_state'];
if ($restart_ws_state == 'open')
{
// shard needs a regular restart
// - broadcast a message on the shard
$restart_reboot_message_id = $NELTOOL['POST_VARS']['restart_message_reboot_id'];
$restart_reboot_message_data = tool_admin_restart_messages_get_id($restart_reboot_message_id);
$restart_reboot_message = $restart_reboot_message_data['restart_message_value'];
if ($restart_reboot_message != '')
{
$service_command = "broadcast repeat=10 every=60 ". $restart_reboot_message;
nt_log("Domain '$AS_Name' : '$service_command' on ". $service_egs);
nt_common_add_debug("about to run command '$service_command' on '$service_egs' ...");
$adminService->serviceCmd($service_egs, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service_egs .'\' for command : '. $service_command);
}
$tpl->clear_assign('tool_execute_result');
}
// - prepare next step (timer countdown to 10 minutes)
if($restart_shard_id == 301)
{
// Fast restart for yubo shard (1mn)
tool_main_set_restart_sequence_timer($tool_seq_id, 60);
nt_common_add_debug("fast restart for yubo shard 301");
}
else
{
tool_main_set_restart_sequence_timer($tool_seq_id, 600);
nt_common_add_debug("normal restart for live shard");
}
// - lets start by locking the WS
$service_command = 'rsm.setWSState '. $restart_shard_id .' RESTRICTED ""';
nt_common_add_debug("about to run command '$service_command' on '$service_su' ...");
$adminService->serviceCmd($service_su, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service_su .'\' for command : '. $service_command);
}
$tpl->clear_assign('tool_execute_result');
nt_sleep(VIEW_DELAY);
}
else
{
// shard needs an immediate restart
// - prepare next step (timer countdown to a few seconds)
tool_main_set_restart_sequence_timer($tool_seq_id, 30);
}
// - inform CS about the restart
tool_main_add_restart_notification($tool_seq_id, $service_su, $service_egs, $restart_shard_id, 4101, $AS_CsSQL, $AS_ShardLang);
// - resend the services to stop for the next step
$tpl->assign('tool_restart_stop_actions', $restart_stop_services);
// - move on to the next step
$tool_restart_info = tool_main_set_next_restart_sequence_step($tool_seq_id, $tool_seq_step + 1);
$tpl->assign('tool_restart_info', $tool_restart_info);
}
elseif (isset($NELTOOL['POST_VARS']['restart_back']))
{
// this makes you go to the next step
if ($tool_seq_id == $tool_restart_info['restart_sequence_id'])
{
$tool_restart_info = tool_main_set_next_restart_sequence_step($tool_seq_id, $tool_seq_step - 1);
$tpl->assign('tool_restart_info', $tool_restart_info);
}
}
elseif (isset($NELTOOL['POST_VARS']['restart_end']))
{
tool_main_set_end_restart_sequence($tool_seq_id);
nt_common_redirect('index.php');
exit();
}
elseif (isset($NELTOOL['POST_VARS']['restart_continue']))
{
// this makes you go to the next step
if ($tool_seq_id == $tool_restart_info['restart_sequence_id'])
{
$tool_restart_info = tool_main_set_next_restart_sequence_step($tool_seq_id, $tool_seq_step + 1);
$tpl->assign('tool_restart_info', $tool_restart_info);
}
}
elseif (isset($NELTOOL['POST_VARS']['restart_giveup']))
{
// update klients events to giveup mode
//$klients_events = explode(',',$tool_restart_info['restart_sequence_events']);
//tool_main_change_restart_notification($klients_events, 4105, $AS_CsSQL);
tool_main_add_restart_notification($tool_seq_id, $service_su, $service_egs, $restart_shard_id, 4105, $AS_CsSQL, $AS_ShardLang);
tool_main_set_end_restart_sequence($tool_seq_id);
nt_common_redirect('index.php');
exit();
}
elseif (isset($NELTOOL['POST_VARS']['restart_cancel']))
{
if ($restart_ws_state != 'open')
{
// - broadcast a message on the shard
$restart_reboot_message_data = tool_admin_restart_messages_get_list_from_name('cancel', $AS_ShardLang);
if (sizeof($restart_reboot_message_data))
{
$restart_reboot_message = $restart_reboot_message_data[0]['restart_message_value'];
if ($restart_reboot_message != '')
{
$service_command = "broadcast ". $restart_reboot_message;
nt_log("Domain '$AS_Name' : '$service_command' on ". $service_egs);
nt_common_add_debug("about to run command '$service_command' on '$service_egs' ...");
$adminService->serviceCmd($service_egs, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service_egs .'\' for command : '. $service_command);
}
$tpl->clear_assign('tool_execute_result');
}
}
// update the klients events to cancelled mode
$klients_events = explode(',',$tool_restart_info['restart_sequence_events']);
tool_main_change_restart_notification($klients_events, 4104, $AS_CsSQL);
// - open the WS again
$service_command = 'rsm.setWSState '. $restart_shard_id .' OPEN ""';
nt_common_add_debug("about to run command '$service_command' on '$service_su' ...");
$adminService->serviceCmd($service_su, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service_su .'\' for command : '. $service_command);
}
$tpl->clear_assign('tool_execute_result');
nt_sleep(VIEW_DELAY);
// end the sequence and refresh
tool_main_set_end_restart_sequence($tool_seq_id);
nt_common_redirect('index.php');
exit();
}
}
elseif (isset($NELTOOL['POST_VARS']['restart_wait_timer']))
{
// step 1, waited for the timer, lets shutdown the shard
$service_list = explode(',', $restart_stop_services);
if (sizeof($service_list))
{
// comment out to prevent stopping services for testing purposes
nt_log("Domain '$AS_Name' : 'stopService' on ". implode(', ',array_values($service_list)));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'stopService' on '$service' ...");
$adminService->controlCmd($service, 'stopService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for stopService');
}
}
nt_sleep(VIEW_DELAY);
}
// - prepare next step (timer countdown to a few seconds)
tool_main_set_restart_sequence_timer($tool_seq_id, 30);
// - move on to the next step
$tool_restart_info = tool_main_set_next_restart_sequence_step($tool_seq_id, $tool_seq_step + 1);
$tpl->assign('tool_restart_info', $tool_restart_info);
}
elseif (isset($NELTOOL['POST_VARS']['restart_shutdown_timer']))
{
// step 2, waited for the shutdown timer, lets move on
// - move on to the next step
$tool_restart_info = tool_main_set_next_restart_sequence_step($tool_seq_id, $tool_seq_step + 1);
$tpl->assign('tool_restart_info', $tool_restart_info);
}
elseif (isset($NELTOOL['POST_VARS']['restart_start_group']))
{
// step 4, start a group of services
$tool_seq_start_id = $NELTOOL['POST_VARS']['restart_start_group_id'];
$tool_seq_start_list = $NELTOOL['POST_VARS']['restart_start_group_list'];
if (isset($tool_restart_start_list))
{
foreach($tool_restart_start_list as $restart_start_group)
{
if ($restart_start_group['restart_group_id'] == $tool_seq_start_id)
{
$service_list = explode(',', $tool_seq_start_list);
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'startService' on ". implode(', ',array_values($service_list)));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'startService' on '$service' ...");
$adminService->controlCmd($service, 'startService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for startService');
}
}
nt_sleep(VIEW_DELAY);
}
break;
}
}
}
}
elseif (isset($NELTOOL['POST_VARS']['restart_stop_group']))
{
// step 3, stop a group of services
$tool_seq_stop_id = $NELTOOL['POST_VARS']['restart_stop_group_id'];
$tool_seq_stop_list = $NELTOOL['POST_VARS']['restart_stop_group_list'];
if (isset($tool_restart_stop_list))
{
$service_list = explode(',', $tool_seq_stop_list);
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'stopService' on ". implode(', ',array_values($service_list)));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'stopService' on '$service' ...");
$adminService->controlCmd($service, 'stopService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for stopService');
}
}
nt_sleep(VIEW_DELAY);
}
}
}
elseif (isset($NELTOOL['POST_VARS']['restart_over']))
{
// this makes you go to the next step
if ($tool_seq_id == $tool_restart_info['restart_sequence_id'])
{
// - inform CS that the shard is ready and locked
tool_main_add_restart_notification($tool_seq_id, $service_su, $service_egs, $restart_shard_id, 4102, $AS_CsSQL, $AS_ShardLang);
$tool_restart_info = tool_main_set_next_restart_sequence_step($tool_seq_id, $tool_seq_step + 1);
$tpl->assign('tool_restart_info', $tool_restart_info);
}
}
//elseif (isset($NELTOOL['POST_VARS']['restart_broadcast_open']))
//{
// // step 6, open ws, end restart sequence
//
// // - open WS
// $service = $NELTOOL['POST_VARS']['restart_su'];
// $restart_shard_id = $NELTOOL['POST_VARS']['restart_shard_id'];
//
// $service_command = 'rsm.setWSState '. $restart_shard_id .' OPEN ""';
// nt_common_add_debug("about to run command '$service_command' on '$service' ...");
//
// $adminService->serviceCmd($service, $service_command);
// if (!$adminService->waitCallback())
// {
// nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for command : '. $service_command);
// }
//
// $tpl->clear_assign('tool_execute_result');
// nt_sleep(VIEW_DELAY);
//
// // - end restart sequence
// tool_main_set_end_restart_sequence($tool_seq_id);
// nt_common_redirect('index.php');
// exit();
//}
}
elseif (isset($_POST['shards_update']) && tool_admin_applications_check('tool_main_shard_autostart'))
{
$shard_update_mode = $_POST['shards_update'];
$shard_update_name = $_POST['shards_update_name'];
switch ($shard_update_mode)
{
case 'auto restart on':
$as_command = "setShardStartMode ". $shard_update_name ." on";
nt_log("Domain '$AS_Name' : $as_command");
nt_common_add_debug("about to run '$as_command' ...");
$adminService->globalCmd($as_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback for \''. $as_command .'\'');
}
nt_sleep(VIEW_DELAY);
break;
case 'auto restart off':
$as_command = "setShardStartMode ". $shard_update_name ." off";
nt_log("Domain '$AS_Name' : $as_command");
nt_common_add_debug("about to run '$as_command' ...");
$adminService->globalCmd($as_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback for \''. $as_command .'\'');
}
nt_sleep(VIEW_DELAY);
break;
}
}
elseif (isset($_POST['ws_update']) && tool_admin_applications_check('tool_main_ws'))
{
$shard_ws_su = $_POST['ws_su'];
$shard_ws_shard_name = $_POST['ws_shard_name'];
$shard_ws_shard_id = $_POST['ws_shard_id'];
$shard_ws_state = $_POST['ws_state_'. $shard_ws_shard_name];
$shard_ws_motd = $_POST['ws_motd_'. $shard_ws_shard_name];
// coders don't know how to write it seems
// ace: now they know if ($shard_ws_state == 'close') $shard_ws_state = 'closed';
//nt_common_add_debug("request for ". $shard_ws_su ."/". $shard_ws_shard_name ." to set STATE:". $shard_ws_state ." (". $shard_ws_motd .")");
$service = $shard_ws_su;
$service_command = 'rsm.setWSState '. $shard_ws_shard_id .' '. strtoupper($shard_ws_state) .' "'. $shard_ws_motd .'"';
nt_common_add_debug("about to run command '$service_command' on '$service' ...");
$adminService->serviceCmd($service, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for command : '. $service_command);
}
$tpl->clear_assign('tool_execute_result');
nt_sleep(VIEW_DELAY);
}
elseif (isset($_POST['services_update']))
{
$service_update_mode = $_POST['services_update'];
switch ($service_update_mode)
{
case 'open ws': // 2
if (tool_admin_applications_check('tool_main_ws_old'))
{
$service_command = "ShardOpen 2";
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : '$service_command' on ". implode(', ',array_values($service_list)));
nt_common_add_debug(array_combine($service_list, $service_list));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
$tpl->assign('tool_execute_result', '');
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run command '$service_command' on '$service' ...");
$adminService->serviceCmd($service, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for command : '. $service_command);
}
}
$tpl->clear_assign('tool_execute_result');
nt_sleep(VIEW_DELAY);
}
}
break;
case 'lock ws': // 1
if (tool_admin_applications_check('tool_main_ws_old'))
{
$service_command = "ShardOpen 1";
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : '$service_command' on ". implode(', ',array_values($service_list)));
nt_common_add_debug(array_combine($service_list, $service_list));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
$tpl->assign('tool_execute_result', '');
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run command '$service_command' on '$service' ...");
$adminService->serviceCmd($service, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for command : '. $service_command);
}
}
$tpl->clear_assign('tool_execute_result');
nt_sleep(VIEW_DELAY);
}
}
break;
case 'close ws':
if (tool_admin_applications_check('tool_main_ws_old'))
{
$service_command = "ShardOpen 0";
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : '$service_command' on ". implode(', ',array_values($service_list)));
nt_common_add_debug(array_combine($service_list, $service_list));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
$tpl->assign('tool_execute_result', '');
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run command '$service_command' on '$service' ...");
$adminService->serviceCmd($service, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for command : '. $service_command);
}
}
$tpl->clear_assign('tool_execute_result');
nt_sleep(VIEW_DELAY);
}
}
break;
case 'activate':
if (tool_admin_applications_check('tool_main_service_autostart'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'activateService' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'activateService' on '$service' ...");
$adminService->controlCmd($service, 'activateService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback for \''. $service .'\'');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'deactivate':
if (tool_admin_applications_check('tool_main_service_autostart'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'deactivateService' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'deactivateService' on '$service' ...");
$adminService->controlCmd($service, 'deactivateService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback for \''. $service .'\'');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'reset counters':
if (tool_admin_applications_check('tool_main_reset_counters'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'resetStartCounter' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'resetStartCounter' on '$service' ...");
$adminService->serviceCmd($service, 'aes.resetStartCounter');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback for \''. $service .'\'');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'start':
if (tool_admin_applications_check('tool_main_start'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'startService' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'startService' on '$service' ...");
$adminService->controlCmd($service, 'startService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for startService');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'stop':
if (tool_admin_applications_check('tool_main_stop'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'stopService' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'stopService' on '$service' ...");
$adminService->controlCmd($service, 'stopService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for stopService');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'restart':
if (tool_admin_applications_check('tool_main_restart'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'restartService' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'restartService' on '$service' ...");
$adminService->controlCmd($service, 'restartService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for restartService');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'kill':
if (tool_admin_applications_check('tool_main_kill'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'killService' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'killService' on '$service' ...");
$adminService->controlCmd($service, 'killService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for killService');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'abort':
if (tool_admin_applications_check('tool_main_abort'))
{
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : 'abortService' on ". implode(', ',array_values($service_list)));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run 'abortService' on '$service' ...");
$adminService->controlCmd($service, 'abortService');
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for abortService');
}
}
nt_sleep(VIEW_DELAY);
}
}
break;
case 'execute':
if (tool_admin_applications_check('tool_main_execute'))
{
if (isset($_POST['service_command']))
{
$service_command = trim(stripslashes(html_entity_decode($_POST['service_command'], ENT_QUOTES)));
$service_list = tool_main_get_checked_services();
if (sizeof($service_list))
{
nt_log("Domain '$AS_Name' : '$service_command' on ". implode(', ',array_values($service_list)));
nt_common_add_debug(array_combine($service_list, $service_list));
$tpl->assign('tool_service_select_list', array_combine($service_list, $service_list));
$tpl->assign('tool_execute_result', '');
reset($service_list);
foreach($service_list as $service)
{
nt_common_add_debug("about to run command '$service_command' on '$service' ...");
$adminService->serviceCmd($service, $service_command);
if (!$adminService->waitCallback())
{
nt_common_add_debug('Error while waiting for callback on service \''. $service .'\' for command : '. $service_command);
}
else
{
$tpl->assign('tool_execute_command', htmlentities($service_command, ENT_QUOTES));
}
}
}
}
}
break;
}
}
} // if ($nel_user['has_lock'])
$status_orders = $adminService->getShardOrders();
$status = $adminService->getStates();
nt_common_add_debug($status_orders);
nt_common_add_debug($status);
$domainServices = tool_main_parse_status($status);
$shardRunList = tool_main_get_shards_from_status($domainServices, $tool_shard_filters);
$shardRunOrders = tool_main_get_shards_orders($status_orders);
nt_common_add_debug($shardRunList);
nt_common_add_debug($shardRunOrders);
$shardInfos = tool_main_get_shards_info_from_db($AS_Application, $domainServices, $tool_shard_filters, $AS_RingSQL);
nt_common_add_debug("shard infos :");
nt_common_add_debug($shardInfos);
$tpl->assign('tool_services_list', $domainServices);
$tpl->assign('tool_shard_run_list', $shardRunList);
$tpl->assign('tool_shard_orders', $shardRunOrders);
$tpl->assign('tool_shard_su_name', tool_main_get_su_from_status($domainServices));
$tpl->assign('tool_shard_infos', $shardInfos);
$tpl->assign('tool_shard_ws_states',array('close','dev','restricted','open'));
if (isset($shardInfos[$AS_InternalName]))
{
$tpl->assign('tool_restart_ws_state', $shardInfos[$AS_InternalName]['state']);
}
if (isset($tool_restart_stop_list) && isset($tool_restart_info) && tool_admin_applications_check('tool_main_easy_restart'))
{
// lets get a list of services for each group
$tool_restart_start_group_list = tool_main_get_restart_services($AS_InternalName, $domainServices, $tool_restart_start_list);
$tpl->assign('tool_restart_start_actions', $tool_restart_start_group_list);
$tool_restart_stop_group_list = tool_main_get_all_restart_services($tool_restart_start_group_list);
$tpl->assign('tool_restart_stop_actions', $tool_restart_stop_group_list);
// get the shard id
$tool_restart_shard_id = tool_main_get_shardid_from_status($domainServices, $AS_InternalName);
$tpl->assign('tool_restart_shard_id', $tool_restart_shard_id);
// find the shard egs for broadcasts
$tool_restart_egs_name = tool_main_get_egs_from_status($domainServices, $AS_InternalName);
$tpl->assign('tool_restart_egs_name', $tool_restart_egs_name);
}
}
$tool_hd_list = tool_main_get_hd_data_for_domain($view_domain_id);
nt_common_add_debug($tool_hd_list);
$tpl->assign('tool_hd_list', $tool_hd_list);
$tpl->assign('tool_hd_time', tool_main_get_last_hd_time_for_domain($view_domain_id));
}
//else
//{
// nt_common_add_debug('invalid host/port!');
//}
$tpl->display('index.tpl');
?>