status_chk() != 1) { $remote_servers_offline[$rhost_id] = $remote_server; continue; } else { $jobs = $remote->scheduler_list_tasks(); if($jobs != -1) { foreach($jobs as $jobId => $job) { list($minute,$hour,$dayOfTheMonth,$month,$dayOfTheWeek,$command) = explode(" ", $job, 6); if(preg_match('/'.preg_quote('wget -qO- "','/').'([^"]+)'.preg_quote('" --no-check-certificate > /dev/null 2>&1','/').'/', $command)) { list($wget,$wget_args,$url,$wget_nocert,$gt,$devnull,$err2out) = explode(" ", $command, 7); //echo "$wget,$wget_args,$url,$wget_nocert,$gt,$devnull,$err2out
"; parse_str(parse_url(trim($url,'"'), PHP_URL_QUERY), $url_query); if(!isset($url_query['ip']) or !isset($url_query['port'])) continue; $home_info = $db->getGameHomeByIP($url_query['ip'], $url_query['port']); if(!$getAllJobs && !hasAccess($home_info)) continue; $action = key($url_query); if($action == "gamemanager/update"){ $action = "steam_auto_update"; }else if($action == "gamemanager/stop"){ $action = "stop"; }else if($action == "gamemanager/start"){ $action = "start"; }else if($action == "gamemanager/restart"){ $action = "restart"; } $jobsArray[$rhost_id][$jobId] = array( 'job' => $job, 'minute' => $minute, 'hour' => $hour, 'dayOfTheMonth' => $dayOfTheMonth, 'month' => $month, 'dayOfTheWeek' => $dayOfTheWeek, 'command' => $command, 'action' => $action, 'home_id' => $home_info['home_id'], 'ip' => $home_info['ip'], 'port' => $home_info['port'], 'mod_key' => $url_query['mod_key']); } else { if(!$getAllJobs && !$db->isAdmin($_SESSION['user_id'])){ continue; } $jobsArray[$rhost_id][$jobId] = array( 'job' => $job, 'minute' => $minute, 'hour' => $hour, 'dayOfTheMonth' => $dayOfTheMonth, 'month' => $month, 'dayOfTheWeek' => $dayOfTheWeek, 'command' => $command); } } } } } return array($jobsArray, $remote_servers_offline); } function updateCronJobTokens($old_token, $token){ global $db; $remote_servers = $db->getRemoteServers(); foreach($remote_servers as $remote_server) { $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key'], $remote_server['timeout']); $jobs = $remote->scheduler_list_tasks(); foreach($jobs as $job_id => $job) { if(strstr($job, $old_token)) { $remote->scheduler_edit_task($job_id, str_replace($old_token, $token, $job)); } } } } function get_action_selector($action = false, $server_homes = false, $homeid_ip_port = false) { $server_actions = array('restart','stop','start'); if($server_homes and $homeid_ip_port) { $server_xml = read_server_config(SERVER_CONFIG_LOCATION."/".$server_homes[$homeid_ip_port]['home_cfg_file']); if( $server_xml->installer == "steamcmd" ) $server_actions[] = 'steam_auto_update'; } $select_action = ''; } function get_server_selector($server_homes, $homeid_ip_port = FALSE, $onchange = FALSE, $includeRemoteName = false) { $onchange_this_form_submit = $onchange ? 'onchange="this.form.submit();"' : ''; $select_game = "\n"; } function get_remote_server_selector($r_servers, $remote_servers_offline, $remote_server_id = FALSE, $onchange = FALSE, $first_empty = FALSE ) { $onchange_this_form_submit = $onchange ? 'onchange="this.form.submit();"' : ''; $select_rserver = "\n"; } function checkCronInput($min, $hour, $day, $month, $dayOfWeek) { $blacklist = '"#$%^&()+=[]\';{}|:<>?~'; $returns = array(); $args = func_get_args(); foreach ($args as $k => $arg) { if (strlen($arg) == 0 || strpbrk($arg, $blacklist) || preg_match('/\\s/', $arg)) { $returns[$k] = false; } } return (empty($returns) ? true : false); } function hasAccess($home_info){ global $db; return ($home_info and $db->isAdmin($_SESSION['user_id'])) ? true : ($home_info and $db->getUserGameHome($_SESSION['user_id'], $home_info['home_id'])); } function updateCronJobsToNewApi() { $panelURL = getOGPSiteURL(); if($panelURL === false) return false; global $db; $remote_servers = $db->getRemoteServers(); $regex = '/'.preg_quote('action=','/').'([a-zA-Z]+)'.preg_quote('&homeid=','/').'([0-9]+)'.preg_quote('&controlpass=','/').'([^"]+)/'; foreach($remote_servers as $remote_server) { $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key'], $remote_server['timeout']); $jobs = $remote->scheduler_list_tasks(); $token = $db->getApiToken($_SESSION['user_id']); $mod_key = ''; foreach($jobs as $job_id => $job) { if(preg_match($regex, $job, $matches)) { list($full_match, $action, $home_id, $control_password) = $matches; $home_ip_ports = $db->getHomeIpPorts($home_id); if(isset($home_ip_ports[0])) { list($ip_id,$ip,$port,$force_mod_id) = $home_ip_ports[0]; switch ($action) { case "stopServer": $command = "wget -qO- \"${panelURL}/ogp_api.php?gamemanager/stop&token=${token}&ip=${ip}&port=${port}&mod_key=${mod_key}\" --no-check-certificate > /dev/null 2>&1"; break; case "startServer": $command = "wget -qO- \"${panelURL}/ogp_api.php?gamemanager/start&token=${token}&ip=${ip}&port=${port}&mod_key=${mod_key}\" --no-check-certificate > /dev/null 2>&1"; break; case "restartServer": $command = "wget -qO- \"${panelURL}/ogp_api.php?gamemanager/restart&token=${token}&ip=${ip}&port=${port}&mod_key=${mod_key}\" --no-check-certificate > /dev/null 2>&1"; break; case "autoUpdateSteamHome": $command = "wget -qO- \"${panelURL}/ogp_api.php?gamemanager/update&token=${token}&ip=${ip}&port=${port}&mod_key=${mod_key}&type=steam\" --no-check-certificate > /dev/null 2>&1"; break; } list($minute,$hour,$dayOfTheMonth,$month,$dayOfTheWeek,$old_command) = explode(" ", $job, 6); $new_job = $minute." ". $hour." ". $dayOfTheMonth." ". $month." ". $dayOfTheWeek." ". $command; $remote->scheduler_edit_task($job_id, $new_job); } } } } } ?>