コード例 #1
0
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&amp;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&amp;p=edit&amp;rhost_id=" . $server_row['remote_server_id'] . "&amp;delete'>[" . get_lang('delete') . "]</a>\n" . "<a href='?m=server&amp;p=edit&amp;rhost_id=" . $server_row['remote_server_id'] . "&amp;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&amp;p=log&amp;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'] . "&nbsp;" . 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&amp;rhost_id=" . $server_row['remote_server_id'] . "&amp;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&amp;rhost_id=" . $server_row['remote_server_id'] . "&amp;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 
}
コード例 #2
0
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&amp;p=game_monitor&amp;home_id-mod_id-ip-port=" . $home_info['home_id'] . "-" . $home_info['mod_id'] . "-" . $_REQUEST['ip'] . "-" . $_REQUEST['port'], 3);
}
コード例 #3
0
     echo "<p>" . get_lang_f('server_already_running') . "<a href=?m=gamemanager&amp;p=stop&amp;home_id=" . $home_id . "&amp;ip=" . $ip . "&amp;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;
コード例 #4
0
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;
                }
            }
        }
    }
}