isAdmin( $_SESSION['user_id'] ); if($isAdmin) $home_info = $db->getGameHome($home_id); else $home_info = $db->getUserGameHome($_SESSION['user_id'],$home_id); if ( $home_info == FALSE ) { print_failure(get_lang('no_rights_to_start_server')); echo "
<< ".get_lang('back')."
"; return; } $mod_id = $_REQUEST['mod_id']; if ( !array_key_exists($mod_id,$home_info['mods']) ) { print_failure("Unable to retrieve mod information from database."); return; } echo "

"; echo empty($home_info['home_name']) ? get_lang('not_available') : htmlentities($home_info['home_name']); echo "

"; require_once('includes/lib_remote.php'); $remote = new OGPRemoteLibrary($home_info['agent_ip'],$home_info['agent_port'],$home_info['encryption_key'],$home_info['timeout']); $server_xml = read_server_config(SERVER_CONFIG_LOCATION."/".$home_info['home_cfg_file']); if ( !$server_xml ) { echo "
<< ".get_lang('back')."
"; return; } // It compares ip and port on POST with the pair on DB for security reasons (URL HACKING) $home_id = $home_info['home_id']; $ip_info = $db->getHomeIpPorts($home_id); foreach ( $ip_info as $ip_ports_row ) { if(($ip_ports_row['ip'] == $_REQUEST['ip'] || ($_REQUEST['ip'] == $ip_ports_row['agent_ip'] && $ip_ports_row['use_nat'] == 1)) && $ip_ports_row['port'] == $_REQUEST['port']) { $ip = $_REQUEST['ip']; $port = $ip_ports_row['port']; } } If (!isset($ip) OR !isset($port)) { echo "

" . get_lang_f('ip_port_pair_not_owned') . "

"; echo "
<< ".get_lang('back')."
"; return; } if( isset( $server_xml->console_log ) ) { $log_path = preg_replace("/%mod%/i", $home_info['mods'][$mod_id]['mod_key'], $server_xml->console_log); $log_retval = $remote->remote_readfile( $home_info['home_path'].'/'.$log_path, $home_log ); } else { $log_retval = $remote->get_log(OGP_SCREEN_TYPE_HOME, $home_info['home_id'], clean_path($home_info['home_path']."/".$server_xml->exe_location), $home_log); } function getLastLines($string, $n = 1) { $lines = explode("\n", $string); $lines = array_slice($lines, -$n); return implode("\n", $lines); } $home_log = getLastLines($home_log, 40); if ($log_retval > 0) { if ( $log_retval == 2 ) print_failure(get_lang('server_not_running_log_found')); echo "
".$home_log."
"; if ($log_retval == 2) return; } else { print_failure(get_lang_f('unable_to_get_log',$log_retval)); } // If game is not supported by lgsl we skip the lgsl checks and // assume successfull start. if ( $home_info['use_nat'] == 1 ) $query_ip = $home_info['agent_ip']; else $query_ip = $ip; $running = $remote->is_screen_running(OGP_SCREEN_TYPE_HOME,$home_info['home_id']); if ( $server_xml->lgsl_query_name ) { require('protocol/lgsl/lgsl_protocol.php'); $get_q_and_s = lgsl_port_conversion((string)$server_xml->lgsl_query_name, $port, "", ""); //Connection port $c_port = $get_q_and_s['0']; //query port $q_port = $get_q_and_s['1']; //software port $s_port = $get_q_and_s['2']; $data = lgsl_query_live((string)$server_xml->lgsl_query_name, $query_ip, $c_port, $q_port, $s_port, "sa"); if ( $data['b']['status'] == "0" ) { $running = FALSE; } } elseif ( $server_xml->gameq_query_name ) { require('protocol/GameQ/GameQ.php'); $query_port = get_query_port($server_xml, $port); $servers = array( array( 'id' => 'server', 'type' => (string)$server_xml->gameq_query_name, 'host' => $query_ip . ":" . $query_port, ) ); $gq = new GameQ(); $gq->addServers($servers); $gq->setOption('timeout', 4); $gq->setOption('debug', FALSE); $gq->setFilter('normalise'); $game = $gq->requestData(); if ( ! $game['server']['gq_online'] ) { $running = FALSE; } } if( ! $running ) { if (!isset($_GET['retry'])) $retry = 0; else $retry = $_GET['retry']; if ($retry >= 5) { echo "

".get_lang('server_running_not_responding'). "". get_lang('already_running_stop_server').".

". "
<< ". get_lang('back')."
"; } echo "Retry #".$retry."."; $retry++; print("

".get_lang('starting_server')."

"); $view->refresh("?m=gamemanager&p=start&refresh&ip=$ip&port=$port&home_id=$home_id&mod_id=$mod_id&retry=".$retry,3); return; } print_success(get_lang('server_started')); $ip_id = $db->getIpIdByIp($ip); $db->delServerStatusCache($ip_id,$port); $view->refresh("?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port=$home_id-$mod_id-$ip-$port" ); return; } ?>