<?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'); ?>