function exec_ogp_module() { global $view; global $db; echo "<h2>" . get_lang('add_new_remote_host') . "</h2>"; echo "<p>" . get_lang('note_remote_host') . "</p>"; require_once "includes/form_table_class.php"; $ft = new FormTable(); $ft->start_form("?m=server&p=add"); $ft->start_table(); $ft->add_field('string', 'remote_host', ""); $ft->add_field('string', 'remote_host_port', "12679"); $ft->add_field('string', 'remote_host_name', ""); $ft->add_field('string', 'remote_host_user_name', ""); $ft->add_field('string', 'remote_host_ftp_ip', ""); $ft->add_field('string', 'remote_host_ftp_port', "21"); $ft->add_field('string', 'remote_encryption_key', ""); $ft->add_field('string', 'timeout', "2"); $ft->add_field('on_off', 'use_nat', "0"); $ft->end_table(); $ft->add_button('submit', 'add_remote_host', get_lang('add_remote_host')); $ft->end_form(); $servers = $db->getRemoteServers(); if ($servers === FALSE) { return; } $tr = 0; ?> <table id="servermonitor" class="tablesorter remote"> <thead> <tr> <th colspan="4" ><?php print_lang('configured_remote_hosts'); ?> </th> </tr> </thead> <tbody> <?php foreach ($servers as $server_row) { #generate jQuery code $jqboobles["{$server_row['remote_server_id']}"] = '$("#tonus-' . $server_row['remote_server_id'] . '").tooltip({ delay: 0, showURL: false, bodyHandler: function() { return $("<img/>").attr("src", this.src); } });'; #check to see if the remote daeomns are up status_chk is found in lib_remote.php $remote = new OGPRemoteLibrary($server_row['agent_ip'], $server_row['agent_port'], $server_row['encryption_key']); $host_stat = $remote->status_chk(); $buttons = "<a href='?m=server&p=edit&rhost_id=" . $server_row['remote_server_id'] . "&delete'>[" . get_lang('delete') . "]</a>\n" . "<a href='?m=server&p=edit&rhost_id=" . $server_row['remote_server_id'] . "&edit'>[" . get_lang('edit') . "]</a>\n"; $tittle = "<b>ID#:</b> <b style='color:red;'>" . $server_row['remote_server_id'] . "</b></td>\n\t\t\t\t\t<td class='collapsible' ><b>" . get_lang('server_name') . ":</b> " . $server_row['remote_server_name'] . "</td>\n\t\t\t\t\t<td class='collapsible' ><b>" . get_lang('agent_status') . ":</b> "; $booble = ""; if ($host_stat === 0) { $tittle .= "<span class='failure'>" . get_lang('offline') . "</span> "; } elseif ($host_stat === 1) { $os = $remote->what_os(); $buttons .= "<a href='?m=server&p=log&rhost_id=" . $server_row['remote_server_id'] . "'>[" . get_lang('view_log') . "]</a>\n"; $tittle .= "<span class='success'>" . get_lang('online') . "</span>"; $booble .= "<img id='tonus-{$server_row['remote_server_id']}' src='includes/api.php?remote_server={$server_row['remote_server_id']}&mon_stats' height='20' />"; } elseif ($host_stat === -1) { $tittle .= "<span class='failure'>" . get_lang('encryption_key_mismatch') . "</span>\n"; } else { $tittle .= "<span class='failure'>" . get_lang('unknown_error') . ": {$host_stat}</span>\n"; } $tittle .= "</td><td>{$buttons}</td>"; $ftp_ip = empty($server_row['ftp_ip']) ? $server_row['agent_ip'] : $server_row['ftp_ip']; $data = "<tr class='expand-child' >\n\t\t\t\t <td>{$booble}</td><td>\n\t\t\t\t\t<b>" . get_lang('ogp_user') . ":</b> " . $server_row['ogp_user'] . "<br />\n\t\t\t\t\t<b>" . get_lang('agent_ip_port') . ":</b> " . $server_row['agent_ip'] . ":" . $server_row['agent_port'] . "<br />\n\t\t\t\t\t<b>" . get_lang('remote_host_ftp_ip') . ":</b> " . $ftp_ip . "<br />\n\t\t\t\t\t<b>" . get_lang('remote_host_ftp_port') . ":</b> " . $server_row['ftp_port'] . "<br />\n\t\t\t\t\t<b>" . get_lang('timeout') . ":</b> " . $server_row['timeout'] . " " . get_lang('seconds') . "<br />\n\t\t\t\t\t<b>" . get_lang('encryption_key') . ":</b> " . $server_row['encryption_key'] . "<br />\n\t\t\t\t </td>\n\t\t\t\t <td><b>" . get_lang('ips') . ": </b><br>"; // Next we print the IP addresses and one empty field. $remote_server_ips = $db->getRemoteServerIPs($server_row['remote_server_id']); if (empty($remote_server_ips)) { $data .= "<span class='failure'>" . get_lang('no_ip_for_remote_host') . "</span>"; } else { foreach ($remote_server_ips as $ip_row) { $data .= $ip_row['ip'] . "<br>"; } } $data .= "</td><td>"; if ($host_stat === 1) { $data .= "<b>OS:</b> " . @$os . "<br>"; if (preg_match("/Linux/", $os)) { $data .= "<b>" . get_lang('ufw') . ":</b>"; if (isset($_GET['ch_ufw_status']) and $server_row['remote_server_id'] == $_GET['rhost_id']) { $rhost_id = $_GET['rhost_id']; $ch_ufw_status = $_GET['ch_ufw_status']; $db->query("UPDATE `OGP_DB_PREFIXremote_servers`\n\t\t\t\t\t\t\t\tSET ufw_status = '{$ch_ufw_status}'\n\t\t\t\t\t\t\t\tWHERE remote_server_id = '{$rhost_id}'"); if ($ch_ufw_status == "enable") { $remote->sudo_exec("ufw allow " . $server_row['agent_port']); //OGP agent port $remote->sudo_exec("ufw allow " . $server_row['ftp_port']); //FTP port $remote->sudo_exec("ufw allow 80"); //Apache (web server) port $remote->sudo_exec("ufw allow 22"); //SSH (putty) port $remote->sudo_exec("ufw allow 25"); //SMTP (mail) port $remote->sudo_exec("ufw allow proto tcp to any port 40000:65000"); //unknow range of ports needed by the OGP agent $remote->sudo_exec("echo y | ufw {$ch_ufw_status}"); } else { $remote->sudo_exec("ufw {$ch_ufw_status}"); } } if (!$db->query("SELECT ufw_status FROM `OGP_DB_PREFIXremote_servers`")) { $status = "disable"; } else { $status = $db->resultQuery("SELECT ufw_status \n\t\t\t\t\t\t\t\t\t\t FROM `OGP_DB_PREFIXremote_servers` \n\t\t\t\t\t\t\t\t\t\t WHERE remote_server_id = '" . $server_row['remote_server_id'] . "'"); $status = $status[0]['ufw_status']; if (empty($status)) { $status = "disable"; } } $data .= "<br />"; if ($status == "enable") { $data .= "<b>" . get_lang('status') . "</b> " . get_lang('on') . "<br />\n\t\t\t\t\t\t\t <a href='?m=server&rhost_id=" . $server_row['remote_server_id'] . "&ch_ufw_status=disable'>[" . get_lang('stop_firewall') . "]</a>\n"; } elseif ($status == "disable") { $data .= "<b>" . get_lang('status') . "</b> " . get_lang('off') . "<br />\n\t\t\t\t\t\t\t <a href='?m=server&rhost_id=" . $server_row['remote_server_id'] . "&ch_ufw_status=enable'>[" . get_lang('start_firewall') . "]</a>\n"; } $data .= "<br />"; } } $data .= "</td></tr>"; // Template $first = "<tr class='maintr'><td class='collapsible' >{$tittle}</td></tr>"; $second = $data; //Echo them all echo "{$first}{$second}"; } echo "</tbody>"; echo "</table>\n"; ?> <script type="text/javascript"> $(function() { <?php foreach ($jqboobles as $jqbooble) { echo "{$jqbooble}\n"; } ?> }); </script> <script type="text/javascript"> $(document).ready(function(){ $("#servermonitor") .collapsible("td.collapsible", {collapse: true}) .tablesorter({sortList: [[0,0], [1,0]] , widgets: ['zebra','repeatHeaders']}); }); </script> <?php }
function exec_ogp_module() { global $view, $db; require_once 'includes/lib_remote.php'; $ip = $_REQUEST['ip']; $port = $_REQUEST['port']; $home_id = $_REQUEST['home_id']; $user_id = $_SESSION['user_id']; $isAdmin = $db->isAdmin($_SESSION['user_id']); if ($isAdmin) { $home_info = $db->getGameHome($home_id); } else { $home_info = $db->getUserGameHome($_SESSION['user_id'], $home_id); } $home_path = $home_info['home_path'] . "/"; if ($home_info === FALSE) { print_failure(get_lang('no_rights_to_stop_server')); return; } echo "<h2>" . $home_info['home_name'] . "</h2>"; $server_xml = read_server_config(SERVER_CONFIG_LOCATION . "/" . $home_info['home_cfg_file']); if (!$server_xml) { echo create_back_button("gamemanager", "game_monitor"); return; } $rserver = $db->getRemoteServerById($home_info['remote_server_id']); if (empty($rserver)) { print_failure("Could not find the remote server with ID " . $home_info['remote_server_id'] . "."); } else { $remote = new OGPRemoteLibrary($rserver['agent_ip'], $rserver['agent_port'], $rserver['encryption_key']); if (isset($server_xml->control_protocol_type)) { $control_type = $server_xml->control_protocol_type; } else { $control_type = ""; } if ($server_xml->protocol == "gameq") { $query_port = get_query_port($server_xml, $port); } elseif ($server_xml->protocol == "lgsl") { require 'protocol/lgsl/lgsl_protocol.php'; $get_ports = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $port, "", ""); $query_port = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $query_port = "10011"; } $remote_retval = $remote->remote_stop_server($home_id, $ip, $port, $server_xml->control_protocol, $home_info['control_password'], $control_type, $home_path); $db->logger(get_lang_f('server_stopped', $home_info['home_name']) . "({$ip}:{$port})"); if ($remote_retval === 1) { print_success(get_lang_f("server_stopped", $home_info['home_name'])); if (isset($home_info['ufw_status']) and $home_info['ufw_status'] == "enable") { $ip_ports = $db->getHomeIpPorts($home_id); foreach ($ip_ports as $ip_port) { if ($server_xml->protocol == "gameq") { $query_port = get_query_port($server_xml, $ip_port['port']); } elseif ($server_xml->protocol == "lgsl") { require 'protocol/lgsl/lgsl_protocol.php'; $get_ports = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $ip_port['port'], "", ""); $query_port = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $query_port = "10011"; } $remote->sudo_exec("ufw deny " . $ip_port['port']); if (isset($query_port)) { $remote->sudo_exec("ufw deny " . $query_port); } } } } elseif ($remote_retval === 0) { $remote_retval = $remote->remote_stop_server($home_info['home_id'], $ip, $port, $server_xml->control_protocol, "", $control_type, $home_path); if ($remote_retval === 1) { print_success(get_lang_f("server_stopped", $home_info['home_name'])); if (isset($home_info['ufw_status']) and $home_info['ufw_status'] == "enable") { $ip_ports = $db->getHomeIpPorts($home_id); foreach ($ip_ports as $ip_port) { if ($server_xml->protocol == "gameq") { $query_port = get_query_port($server_xml, $ip_port['port']); } elseif ($server_xml->protocol == "lgsl") { require 'protocol/lgsl/lgsl_protocol.php'; $get_ports = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $ip_port['port'], "", ""); $query_port = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $query_port = "10011"; } $remote->sudo_exec("ufw deny " . $ip_port['port']); if (isset($query_port)) { $remote->sudo_exec("ufw deny " . $query_port); } } } } } if ($remote_retval === 0) { print_failure(get_lang("agent_offline")); } elseif ($remote_retval !== 1) { print_failure("Error occurred on the remote host."); } } $view->refresh("?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port=" . $home_info['home_id'] . "-" . $home_info['mod_id'] . "-" . $_REQUEST['ip'] . "-" . $_REQUEST['port'], 3); }
echo "<p>" . get_lang_f('server_already_running') . "<a href=?m=gamemanager&p=stop&home_id=" . $home_id . "&ip=" . $ip . "&port=" . $port . ">" . get_lang_f('already_running_stop_server') . "</a></p>"; return; } if (isset($server_home['ufw_status']) and $server_home['ufw_status'] == "enable") { $ip_ports = $db->getHomeIpPorts($home_id); foreach ($ip_ports as $ip_port) { if ($server_xml->protocol == "gameq") { $query_port = get_query_port($server_xml, $ip_port['port']); } elseif ($server_xml->protocol == "lgsl") { require 'protocol/lgsl/lgsl_protocol.php'; $get_ports = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $ip_port['port'], "", ""); $query_port = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $query_port = "10011"; } $remote->sudo_exec("ufw allow " . $ip_port['port']); if (isset($query_port)) { $remote->sudo_exec("ufw allow " . $query_port); } } } if ($server_xml->protocol == "gameq") { $query_port = get_query_port($server_xml, $port); } elseif ($server_xml->protocol == "lgsl") { require 'protocol/lgsl/lgsl_protocol.php'; $get_ports = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $port, "", ""); $query_port = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $query_port = "10011"; } $cli_param_data['QUERY_PORT'] = $query_port;
function exec_operation($action, $home_id, $mod_id, $ip, $port) { global $db; $isAdmin = $db->isAdmin($_SESSION['user_id']); if ($isAdmin) { $home_info = $db->getGameHome($home_id); } else { $home_info = $db->getUserGameHome($_SESSION['user_id'], $home_id); } require_once 'includes/lib_remote.php'; $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); if ($home_info === FALSE) { return FALSE; } $home_path = $home_info['home_path'] . "/"; $server_xml = read_server_config(SERVER_CONFIG_LOCATION . "/" . $home_info['home_cfg_file']); if (!$server_xml) { return FALSE; } $rserver = $db->getRemoteServerById($home_info['remote_server_id']); if (empty($rserver)) { return FALSE; } else { if ($action != "stop") { if ($server_xml->replace_texts) { $server_home = $home_info; if (isset($server_xml->lgsl_query_name)) { require_once 'protocol/lgsl/lgsl_protocol.php'; } require_once "modules/gamemanager/cfg_text_replace.php"; } } if (isset($server_xml->control_protocol_type)) { $control_type = $server_xml->control_protocol_type; } else { $control_type = ""; } $screen_running = $remote->is_screen_running(OGP_SCREEN_TYPE_HOME, $home_info['home_id']); if ($action == "stop" and $screen_running) { $remote_retval = $remote->remote_stop_server($home_info['home_id'], $ip, $port, $server_xml->control_protocol, $home_info['control_password'], $control_type, $home_path); $db->logger(get_lang_f('server_stopped', $home_info['home_name']) . "({$ip}:{$port})"); if ($remote_retval === -1) { return FALSE; } else { if ($remote_retval === -2) { return FALSE; } else { $screen_running = $remote->is_screen_running(OGP_SCREEN_TYPE_HOME, $home_info['home_id']); if ($screen_running == 1) { return FALSE; } else { if (isset($home_info['ufw_status']) and $home_info['ufw_status'] == "enable") { $ip_ports = $db->getHomeIpPorts($home_id); foreach ($ip_ports as $ip_port) { if ($server_xml->protocol == "gameq") { $query_port = get_query_port($server_xml, $ip_port['port']); } elseif ($server_xml->protocol == "lgsl") { require 'protocol/lgsl/lgsl_protocol.php'; $get_ports = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $ip_port['port'], "", ""); $query_port = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $query_port = "10011"; } $remote->sudo_exec("ufw deny " . $ip_port['port']); if (isset($query_port)) { $remote->sudo_exec("ufw deny " . $query_port); } } } return TRUE; } } } } elseif ($action == "restart" and $screen_running) { $start_cmd = get_sart_cmd($remote, $server_xml, $home_info, $mod_id, $ip, $port); $remote_retval = $remote->remote_restart_server($home_info['home_id'], $ip, $port, $server_xml->control_protocol, $home_info['control_password'], $control_type, $home_info['home_path'], $server_xml->server_exec_name, $run_dir, $start_cmd, $home_info['cpu_affinity'], $home_info['nice']); $db->logger(get_lang_f('server_restarted', $home_info['home_name']) . "({$ip}:{$port})"); if ($remote_retval === -1) { return FALSE; } else { if ($remote_retval === -2) { return FALSE; } else { $screen_running = $remote->is_screen_running(OGP_SCREEN_TYPE_HOME, $home_info['home_id']); if ($screen_running == 1) { $ip_id = $db->getIpIdByIp($ip); $db->delServerStatusCache($ip_id, $port); return TRUE; } else { return FALSE; } } } } elseif ($action == "start" and !$screen_running) { $start_cmd = get_sart_cmd($remote, $server_xml, $home_info, $mod_id, $ip, $port); $start_retval = $remote->universal_start($home_info['home_id'], $home_info['home_path'], $server_xml->server_exec_name, $server_xml->exe_location, $start_cmd, $port, $ip, $home_info['mods'][$mod_id]['cpu_affinity'], $home_info['mods'][$mod_id]['nice']); $db->logger(get_lang('server_started') . " (" . $home_info['home_name'] . " {$ip}:{$port})"); if ($start_retval == AGENT_ERROR_NOT_EXECUTABLE) { return FALSE; } else { if ($start_retval <= 0) { return FALSE; } else { if (isset($server_home['ufw_status']) and $server_home['ufw_status'] == "enable") { $ip_ports = $db->getHomeIpPorts($home_id); foreach ($ip_ports as $ip_port) { if ($server_xml->protocol == "gameq") { $query_port = get_query_port($server_xml, $ip_port['port']); } elseif ($server_xml->protocol == "lgsl") { require 'protocol/lgsl/lgsl_protocol.php'; $get_ports = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $ip_port['port'], "", ""); $query_port = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $query_port = "10011"; } $remote->sudo_exec("ufw allow " . $ip_port['port']); if (isset($query_port)) { $remote->sudo_exec("ufw allow " . $query_port); } } } $ip_id = $db->getIpIdByIp($ip); $db->delServerStatusCache($ip_id, $port); return TRUE; } } } } }