function exec_ogp_module() { echo "<h2>" . get_lang('ban_list') . "</h2>"; global $db; if (isset($_POST['unban'])) { unset($_POST['unban']); foreach ($_POST as $name => $ip) { $db->query("UPDATE `OGP_DB_PREFIXban_list` SET logging_attempts='0', banned_until='0' WHERE client_ip = '{$ip}';"); } } $ban_list = $db->resultQuery("SELECT logging_attempts, banned_until, client_ip FROM `OGP_DB_PREFIXban_list`;"); $ban_qty = 0; $ban_table = ''; foreach ($ban_list as $ban) { if ($ban['logging_attempts'] >= 3) { $ban_table .= "<tr><td><input type=checkbox name='" . $ban_qty . "' value='" . $ban['client_ip'] . "' /></td><td>" . $ban['client_ip'] . "</td><td>" . date("r", $ban['banned_until']) . "</td></tr>\n"; $ban_qty++; } else { continue; } } if ($ban_qty == 0) { print_failure(get_lang('no_banned_ips')); } else { echo "<form method=post >\n" . "<table><tr><th><span id=check >" . get_lang('unban') . "</span></th><th>" . get_lang('client_ip') . "</th><th>" . get_lang('banned_until') . "</th></tr>\n" . $ban_table . "</table>\n" . "<input type=submit name=unban value='" . get_lang('unban_selected_ips') . "' /></form>"; ?> <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $('span#check').css({'cursor':'pointer','color':'blue'}); $('span#check').click(function(){ $('input[type=checkbox]').each(function( ){ if( this.checked ) { $(this).attr('checked', false); } else { $(this).attr('checked', true); } }); }); </script> <?php } echo create_back_button($_GET['m'], "main"); }
function exec_ogp_module() { global $db; global $view; $pieces = explode("-", $_GET['home_id-mod_id-ip-port']); $home_id = $pieces[0]; $mod_id = $pieces[1]; $ip = $pieces[2]; $port = $pieces[3]; $user_id = $_SESSION['user_id']; $isAdmin = $db->isAdmin($user_id); if ($isAdmin) { $home_info = $db->getGameHome($home_id); } else { $home_info = $db->getUserGameHome($user_id, $home_id); } if ($home_info === FALSE) { print_failure(get_lang('no_access_to_home')); return; } $server_xml = read_server_config(SERVER_CONFIG_LOCATION . "/" . $home_info['home_cfg_file']); if (!$server_xml) { echo create_back_button($_GET['m'], 'game_monitor&home_id-mod_id-ip-port=' . $_GET['home_id-mod_id-ip-port']); return; } require_once 'includes/lib_remote.php'; $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); $home_log = ""; if (isset($server_xml->console_log)) { $log_retval = $remote->remote_readfile($home_info['home_path'] . '/' . $server_xml->console_log, $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); } if ($log_retval == 0) { print_failure(get_lang('agent_offline')); echo create_back_button($_GET['m'], 'game_monitor&home_id-mod_id-ip-port=' . $_GET['home_id-mod_id-ip-port']); } elseif ($log_retval == 1 || $log_retval == 2) { // Using the refreshed class if (isset($_GET['refreshed'])) { echo "<pre class='log'>" . $home_log . "</pre>"; } else { echo "<h2>" . $home_info['home_name'] . "</h2>"; require_once "includes/refreshed.php"; $control = '<form method="POST" > <input type="submit" name="'; if (isset($_POST['full'])) { $height = "100%"; $control .= 'default" value="-'; } else { $height = "500px"; $control .= 'full" value="+'; } $control .= '" /></form><br />'; $intervals = array("4s" => "4000", "8s" => "8000", "30s" => "30000", "2m" => "120000", "5m" => "300000"); $intSel = '<form action="" method="GET" > <input type="hidden" name="m" value="gamemanager" /> <input type="hidden" name="p" value="log" /> <input type="hidden" name="home_id-mod_id-ip-port" value="' . $_GET['home_id-mod_id-ip-port'] . '" />' . get_lang('refresh_interval') . ':<select name="setInterval" onchange="this.form.submit();">'; foreach ($intervals as $interval => $value) { $selected = ""; if (isset($_GET['setInterval']) and $_GET['setInterval'] == $value) { $selected = 'selected="selected"'; } $intSel .= '<option value="' . $value . '" ' . $selected . ' >' . $interval . '</option>'; } $intSel .= "</select></form>"; $setInterval = $_GET['setInterval'] ? $_GET['setInterval'] : 4000; $refresh = new refreshed(); $pos = $refresh->add("home.php?m=gamemanager&p=log&type=cleared&refreshed&home_id-mod_id-ip-port=" . $_GET['home_id-mod_id-ip-port']); echo $refresh->getdiv($pos, "height:" . $height . ";overflow:auto;max-width:1600px;"); ?> <script type="text/javascript">$(document).ready(function(){ <?php echo $refresh->build("{$setInterval}"); ?> } ); </script><?php echo "<table class='center' ><tr><td>{$intSel}</td><td>{$control}</td></tr></table>"; if ($remote->is_screen_running(OGP_SCREEN_TYPE_HOME, $home_info['home_id']) != 1) { print_failure(get_lang('server_not_running')); } else { if ($server_xml->control_protocol == 'rcon' or $server_xml->control_protocol == 'rcon2' or @$server_xml->gameq_query_name == "minecraft" or $server_xml->control_protocol == 'lcon' or isset($server_xml->lgsl_query_name) and $server_xml->lgsl_query_name == "7dtd") { require 'modules/gamemanager/rcon.php'; } } echo create_back_button($_GET['m'], 'game_monitor&home_id-mod_id-ip-port=' . $_GET['home_id-mod_id-ip-port']); } } else { print_failure(get_lang_f('unable_to_get_log', $log_retval)); echo create_back_button($_GET['m'], 'game_monitor&home_id-mod_id-ip-port=' . $_GET['home_id-mod_id-ip-port']); } }
function exec_ogp_module() { global $db; $isAdmin = $db->isAdmin($_SESSION['user_id']); if (isset($_REQUEST['user_id']) && !$isAdmin) { echo "<p class='note'>" . get_lang('not_available') . "</p>"; return; } if (isset($_REQUEST['group_id']) && !$isAdmin) { $result = $db->getUserGroupList($_SESSION['user_id']); foreach ($result as $row) { if ($row['group_id'] == $_REQUEST['group_id']) { $own_group = TRUE; } } } if (!$isAdmin && !isset($own_group)) { echo "<p class='note'>" . get_lang('not_available') . "</p>"; return; } if (!isset($_REQUEST['user_id']) && !isset($_REQUEST['group_id'])) { print_failure(get_lang("invalid_url")); return; } /// \todo We might want to save this information to XML file? $selections = array("allow_updates" => "u", "allow_file_management" => "f", "allow_parameter_usage" => "p", "allow_extra_params" => "e", "allow_ftp" => "t", "allow_custom_fields" => "c"); if (isset($_REQUEST['user_id'])) { $assign_id = $_REQUEST['user_id']; $id_type = "user"; $user = $db->getUserById($assign_id); $assign_name = $user['users_login']; } else { if (isset($_REQUEST['group_id'])) { $assign_id = $_REQUEST['group_id']; $id_type = "group"; $group = $db->getGroupById($assign_id); $assign_name = $group['group_name']; } } $submit = isset($_POST['submit']) ? $_POST['submit'] : ""; if (isset($_REQUEST['assign'])) { $access_rights = ""; foreach ($selections as $selection => $flag) { if (isset($_REQUEST[$selection])) { $access_rights .= $flag; } } $hacker = FALSE; if (!$isAdmin) { $home_info = $db->getUserGameHome($_SESSION['user_id'], $_REQUEST['home_id']); if (!$home_info) { print_failure(get_lang_f("failed_to_assign_game_for", $id_type, "(Hacking attempt)")); $hacker = TRUE; } else { foreach ($selections as $selection => $flag) { if (isset($_REQUEST[$selection])) { if (!preg_match("/{$flag}/", $home_info['access_rights'])) { print_failure(get_lang_f("failed_to_assign_game_for", $id_type, "(Hacking attempt)")); $hacker = TRUE; } } } } } if (!$hacker) { if ($db->assignHomeTo($id_type, $assign_id, $_REQUEST['home_id'], $access_rights) === TRUE) { print_success(get_lang_f("assigned_home_to_" . $id_type, $_REQUEST['home_id'], $assign_name)); $db->logger(get_lang_f("assigned_home_to_" . $id_type, $_REQUEST['home_id'], $assign_name)); } else { print_failure(get_lang_f("failed_to_assign_game_for_", $id_type, $db->getError())); } } unset($_POST['home_id']); } else { if (isset($_REQUEST['unassign'])) { if ($db->unassignHomeFrom($id_type, $assign_id, $_REQUEST['home_id']) === TRUE) { print_success(get_lang_f("unassigned_home_from_" . $id_type, $_REQUEST['home_id'], $assign_name)); $db->logger(get_lang_f("unassigned_home_from_" . $id_type, $_REQUEST['home_id'], $assign_name)); } else { print_failure(get_lang_f("failed_to_assign_game_from_", $id_type)); } } } $remote_servers = $db->getRemoteServers(); if (empty($remote_servers)) { print_failure(get_lang("no_remote_servers_available_please_add_at_least_one")); echo "<p><a href='?m=server'>" . get_lang('add_remote_server') . "</a></p>"; return; } if ($isAdmin) { $available_homes = $db->getAvailableHomesFor($id_type, $assign_id); } else { $available_homes = $db->getAvailableUserHomesFor($id_type, $assign_id, $_SESSION['user_id']); } if (!empty($available_homes)) { echo "<h2>" . get_lang_f('assign_new_home_to_' . $id_type, $assign_name) . "</h2>"; echo "<form action='?m=user_games&p=assign' method='post'>"; echo "<input name='" . $id_type . "_id' value='" . $assign_id . "' type='hidden' />\n"; echo "<table class='center'><tr><td align='right'><label for='home_id'>" . get_lang('select_home') . ":</label></td>"; echo '<td align="left"><select id="home_id" name="home_id" onchange="this.form.submit();">'; echo "<option></option>\n"; foreach ($available_homes as $home) { if (isset($_POST['home_id']) && $_POST['home_id'] == $home['home_id']) { $selected = "selected='selected'"; } else { $selected = ""; } echo "<option value='" . $home['home_id'] . "' {$selected} >" . $home['home_name'] . "</option>\n"; } echo "</select></td>\n"; if (isset($_POST['home_id']) and !empty($_POST['home_id'])) { if ($isAdmin) { $access_rights = "ufpetc"; } else { $home_info = $db->getUserGameHome($_SESSION['user_id'], $_POST['home_id']); $access_rights = $home_info['access_rights']; } foreach ($selections as $selection => $flag) { echo create_selection($selection, $flag, $access_rights); } echo "<tr><td colspan='2'><input type='submit' name='assign' value='" . get_lang('assign') . "' /></td></tr>"; } echo "</table></form>"; } else { echo "<h2>" . get_lang("no_more_homes_available_that_can_be_assigned_for_this_{$id_type}") . "</h2>"; //print_lang('you_can_add_a_new_game_server_from'); //echo "<a href='?m=user_games'>".get_lang('game_servers')."</a>.</p>"; if ($isAdmin) { echo get_lang_f("you_can_add_a_new_game_server_from", "<a href='?m=user_games'>" . get_lang('game_servers') . "</a>") . "</p>"; } } // View servers for use if there are any. $game_homes = $db->getHomesFor($id_type, $assign_id); if (empty($game_homes)) { echo "<h3>" . get_lang_f("no_homes_assigned_to_" . $id_type, $assign_name) . "</h3>"; } else { echo "<h2>" . get_lang('assigned_homes') . "</h2>"; echo '<table class="center">'; echo "<tr><th>" . get_lang('home_id') . "</th><th>" . get_lang('game_server') . "</th>\n <th>" . get_lang('game_type') . "</th>\n <th align='center'>" . get_lang('game_home') . "</th>\n <th>" . get_lang('game_home_name') . "</th><th>" . get_lang('access_rights') . "</th>\n <th>" . get_lang('actions') . "</th></tr>"; foreach ($game_homes as $row) { echo "<tr><td>{$row['home_id']}</td>\n <td>" . $row['agent_ip'] . " (Agent)</td>\n <td>{$row['game_name']}</td>\n <td>{$row['home_path']}</td>\n <td>{$row['home_name']}</td>\n <td>"; echo empty($row['access_rights']) ? "-" : $row['access_rights']; echo "</td>\n <td>\n <form action='?m=user_games&p=assign' method='post'>\n <input name='" . $id_type . "_id' value='{$assign_id}' type='hidden' />\n <input name='home_id' value='" . $row['home_id'] . "' type='hidden' />\n <input type='submit' name='unassign' value='" . get_lang('unassign') . "' /></form></td>\n </tr>"; } echo "</table>"; } if ($id_type === "group") { echo create_back_button('user_admin', 'show_groups'); } else { echo create_back_button('user_admin'); } }
function exec_ogp_module() { global $db; global $view; $home_cfg_id = isset($_REQUEST['home_cfg_id']) ? $_REQUEST['home_cfg_id'] : ""; $home_id = isset($_REQUEST['home_id']) ? $_REQUEST['home_id'] : ""; $addon_id = isset($_REQUEST['addon_id']) ? $_REQUEST['addon_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); } if ($home_info === FALSE) { print_failure(get_lang('no_rights')); echo create_back_button("addonsmanager", "user_addons"); return; } $server_xml = read_server_config(SERVER_CONFIG_LOCATION . "/" . $home_info['home_cfg_file']); $state = isset($_REQUEST['state']) ? $_REQUEST['state'] : ""; $pid = isset($_REQUEST['pid']) ? $_REQUEST['pid'] : -1; if (!empty($state)) { $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); $addons_rows = $db->resultQuery("SELECT url, path, post_script FROM OGP_DB_PREFIXaddons WHERE addon_id=" . $addon_id); $addon_info = $addons_rows[0]; $url = $addon_info['url']; $filename = basename($url); #### This makes replacements to the bash script: if (isset($addon_info['post_script']) and !empty($addon_info['post_script']) and $addon_info['post_script'] != "") { $check_passed = FALSE; $address_at_post = $_POST['ip'] . ":" . $_POST['port']; $ip_ports = $db->getHomeIpPorts($home_info["home_id"]); foreach ($ip_ports as $ip_port) { } $address_owned = $ip_port['ip'] . ":" . $ip_port['port']; if ($address_owned == $address_at_post) { $check_passed = TRUE; break; } $ip = $ip_port['ip']; $port = $ip_port['port']; $home_info["ip"] = $check_passed ? $_POST['ip'] : $ip; $home_info["port"] = $check_passed ? $_POST['port'] : $port; if (isset($server_xml->gameq_query_name)) { $home_info["query_port"] = get_query_port($server_xml, $home_info['port']); } elseif (isset($server_xml->lgsl_query_name)) { $get_q_and_s = lgsl_port_conversion((string) $server_xml->lgsl_query_name, $home_info['port'], "", ""); $home_info["query_port"] = $get_q_and_s['1']; } $home_info["incremental"] = $db->incrementalNumByHomeId($home_info["home_id"], $home_info["mod_cfg_id"], $home_info["remote_server_id"]); $post_script = preg_replace("/\\%home_path\\%/i", $home_info["home_path"], $addon_info['post_script']); $post_script = preg_replace("/\\%home_name\\%/i", $home_info["home_name"], $post_script); $post_script = preg_replace("/\\%control_password\\%/i", $home_info["control_password"], $post_script); $post_script = preg_replace("/\\%max_players\\%/i", $home_info["max_players"], $post_script); $post_script = preg_replace("/\\%ip\\%/i", $home_info["ip"], $post_script); $post_script = preg_replace("/\\%port\\%/i", $home_info["port"], $post_script); $post_script = preg_replace("/\\%query_port\\%/i", $home_info["query_port"], $post_script); $post_script = preg_replace("/\\%incremental\\%/i", $home_info["incremental"], $post_script); } else { $post_script = ""; } #### end of replacememnts if ($state == "start" and $addon_id != "") { $pid = $remote->start_file_download($addon_info['url'], $home_info['home_path'] . "/" . $addon_info['path'], $filename, "uncompress", $post_script); } $headers = get_headers($url, 1); $download_available = !$headers ? FALSE : TRUE; // Check if any error occured if ($download_available) { $bytes = is_array($headers['Content-Length']) ? $headers['Content-Length'][1] : $headers['Content-Length']; // Display the File Size $totalsize = $bytes / 1024; clearstatcache(); } $kbytes = $remote->rsync_progress($home_info['home_path'] . "/" . $addon_info['path'] . "/" . $filename); list($totalsize, $mbytes, $pct) = explode(";", do_progress($kbytes, $totalsize)); $totalmbytes = round($totalsize / 1024, 2); $pct = $pct > 100 ? 100 : $pct; echo "<h2>" . $home_info['home_name'] . "</h2>"; echo '<div class="dragbox bloc rounded" style="background-color:#dce9f2;" > <h4>' . get_lang('install') . " " . $filename . " {$mbytes}MB/{$totalmbytes}MB</h4>\n\t\t\t <div style='background-color:#dce9f2;' >\n\t\t\t "; $bar = ''; for ($i = 1; $i <= $pct; $i++) { $bar .= '<img style="width:0.92%;vertical-align:middle;" src="images/progressBar.png">'; } echo "<center>{$bar} <b style='vertical-align:top;display:inline;font-size:1.2em;color:red;' >{$pct}%</b></center>\n\t\t\t\t</div>\n\t\t\t </div>"; if (($pct == "100" or !$download_available) and $post_script != "") { $log_retval = $remote->get_log("post_script", $pid, clean_path($home_info['home_path'] . "/" . $server_xml->exe_location), $script_log); if ($log_retval == 0) { print_failure(get_lang('agent_offline')); } elseif ($log_retval == 1 || $log_retval == 2) { echo "<pre class='log'>" . $script_log . "</pre>"; } elseif ($remote->is_screen_running("post_script", $pid) == 1) { print_failure(get_lang_f('unable_to_get_log', $log_retval)); } } if ($pct == "100" or !$download_available or $download_available and $pct == "-" and $pid > 0) { if (!$download_available) { print_failure(get_lang('failed_to_start_file_download')); } elseif ($remote->is_file_download_in_progress($pid) === 1) { print_success(get_lang_f('wait_while_decompressing', $filename)); echo "<p><a href=\"?m=addonsmanager&p=addons&state=refresh&home_id=" . $home_id . "&addon_id={$addon_id}&pid={$pid}\">" . get_lang('refresh') . "</a></p>"; $view->refresh("?m=addonsmanager&p=addons&state=refresh&home_id=" . $home_id . "&addon_id={$addon_id}&pid={$pid}", 5); } elseif ($remote->is_file_download_in_progress($pid) === 0 and $remote->is_screen_running("post_script", $pid) === 0) { print_success(get_lang('addon_installed_successfully')); $view->refresh("?m=addonsmanager&p=user_addons&home_id=" . $home_id, 10); return; } } else { echo "<p><a href=\"?m=addonsmanager&p=addons&state=refresh&home_id=" . $home_id . "&addon_id={$addon_id}&pid={$pid}\">" . get_lang('refresh') . "</a></p>"; $view->refresh("?m=addonsmanager&p=addons&state=refresh&home_id=" . $home_id . "&addon_id={$addon_id}&pid={$pid}", 5); } } elseif (!empty($_GET['addon_type'])) { ?> <h2><?php echo $home_info['home_name'] . " " . get_lang($_GET['addon_type']); ?> </h2> <table class='center'> <form action='?m=addonsmanager&p=addons<?php echo "&ip=" . $_GET['ip'] . "&port=" . $_GET['port']; ?> ' method='post'> <input type='hidden' name='home_id' value='<?php echo "{$home_id}"; ?> ' /> <input type='hidden' name='state' value='start' /> <tr><td align='right'><?php print_lang('game_name'); ?> : </td><td align='left'><?php echo "{$home_info['game_name']}"; ?> </td></tr> <tr><td align='right'><?php print_lang('directory'); ?> : </td><td align='left'><?php echo "{$home_info['home_path']}"; ?> </td></tr> <tr><td align='right'><?php print_lang('remote_server'); ?> : </td> <td align='left'><?php echo "{$home_info['remote_server_name']} ({$home_info['agent_ip']}:{$home_info['agent_port']})"; ?> </td></tr> <tr><td align='right'><?php print_lang('select_addon'); ?> : </td> <td align='left'> <select name="addon_id"> <?php $addons = $db->resultQuery("SELECT addon_id, name FROM OGP_DB_PREFIXaddons WHERE addon_type='" . $_GET['addon_type'] . "' AND home_cfg_id=" . $home_cfg_id); foreach ($addons as $addon) { ?> <option value="<?php echo $addon['addon_id']; ?> "><?php echo $addon['name']; ?> </option> <?php } ?> </select> </td></tr> <tr><td colspan='2' class='info'> </td></tr> <td align='left'> </td></tr><tr><td align="right"> <input type="submit" name="update" value="<?php print_lang('install'); ?> " /> </form></td><td> <form action="" method="get"> <input type="hidden" name="m" value="addonsmanager" /> <input type="hidden" name="p" value="user_addons" /> <input type="hidden" name="home_id" value="<?php echo "{$home_id}"; ?> " /> <input type="submit" value="<?php print_lang('back'); ?> " /> </form> </td></tr> </table> <?php } return; }
function exec_ogp_module() { $home_id = $_GET['home_id']; $mod_id = $_GET['mod_id']; global $db; $home_info = $db->getGameHome($home_id); if (array_key_exists($mod_id, $home_info['mods'])) { echo "<h2>" . get_lang('cmds_for') . " \"" . $home_info['home_name'] . "\" [Mod:" . $home_info['mods'][$mod_id]['mod_name'] . "]</h2>"; include 'includes/lib_remote.php'; $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); $mod_cfg_id = $home_info['mod_cfg_id']; if (isset($_POST['edit_preinstall_cmds'])) { $precmd = addslashes($_POST['edit_preinstall_cmds']); if (isset($_POST['save_as_default'])) { $game_mod_query = "UPDATE OGP_DB_PREFIXconfig_mods SET def_precmd='{$precmd}' WHERE mod_cfg_id='{$mod_cfg_id}'"; $db->query($game_mod_query); } else { $game_mod_query = "UPDATE OGP_DB_PREFIXgame_mods SET precmd='{$precmd}' WHERE mod_id='{$mod_id}'"; $db->query($game_mod_query); } unset($precmd); } $game_mod_precmd = $db->resultQuery("SELECT DISTINCT precmd FROM OGP_DB_PREFIXgame_mods WHERE mod_id='{$mod_id}'"); if ($game_mod_precmd[0]['precmd'] === NULL or empty($game_mod_precmd[0]['precmd'])) { $config_mod_precmd = $db->resultQuery("SELECT DISTINCT def_precmd FROM OGP_DB_PREFIXconfig_mods WHERE mod_cfg_id='{$mod_cfg_id}'"); if ($config_mod_precmd[0]['def_precmd'] === NULL or empty($config_mod_precmd[0]['def_precmd'])) { $precmd = "[" . get_lang('empty') . "]"; } else { $precmd = $config_mod_precmd[0]['def_precmd']; } } else { $precmd = $game_mod_precmd[0]['precmd']; } if (isset($_POST['edit_postinstall_cmds'])) { $postcmd = addslashes($_POST['edit_postinstall_cmds']); if (isset($_POST['save_as_default'])) { $game_mod_query = "UPDATE OGP_DB_PREFIXconfig_mods SET def_postcmd='{$postcmd}' WHERE mod_cfg_id='{$mod_cfg_id}'"; $db->query($game_mod_query); } else { $game_mod_query = "UPDATE OGP_DB_PREFIXgame_mods SET postcmd='{$postcmd}' WHERE mod_id='{$mod_id}'"; $db->query($game_mod_query); } unset($postcmd); } $game_mod_postcmd = $db->resultQuery("SELECT DISTINCT postcmd FROM OGP_DB_PREFIXgame_mods WHERE mod_id='{$mod_id}'"); if ($game_mod_postcmd[0]['postcmd'] === NULL or empty($game_mod_postcmd[0]['postcmd'])) { $config_mod_postcmd = $db->resultQuery("SELECT DISTINCT def_postcmd FROM OGP_DB_PREFIXconfig_mods WHERE mod_cfg_id='{$mod_cfg_id}'"); if ($config_mod_postcmd[0]['def_postcmd'] === NULL or empty($config_mod_postcmd[0]['def_postcmd'])) { $postcmd = "[" . get_lang('empty') . "]"; } else { $postcmd = $config_mod_postcmd[0]['def_postcmd']; } } else { $postcmd = $game_mod_postcmd[0]['postcmd']; } ?> <h2><?php print_lang('preinstall_cmds'); ?> </h2> <table class="center"> <tr> <td> <form method="POST"> <textarea name="edit_preinstall_cmds" style="width:80%;height:200px;" ><?php echo $precmd; ?> </textarea> </td> </tr> <tr> <td> <button><?php print_lang('edit_preinstall_cmds'); ?> </button> <input type="checkbox" name="save_as_default" value="true"/><?php print_lang('save_as_default_for_this_mod'); ?> </form> </td> </tr> </table> <h2><?php print_lang('postinstall_cmds'); ?> </h2> <table class="center"> <tr> <td> <form method="POST"> <textarea name="edit_postinstall_cmds" style="width:80%;height:200px;" ><?php echo $postcmd; ?> </textarea> </td> </tr> <tr> <td> <button><?php print_lang('edit_postinstall_cmds'); ?> </button> <input type="checkbox" name="save_as_default" value="true"/><?php print_lang('save_as_default_for_this_mod'); ?> </form> </td> </tr> </table><?php } echo create_back_button('user_games', 'edit&home_id=' . $home_id); }
function exec_ogp_module() { global $db; $home_id = $_REQUEST['home_id']; $server_row = $db->getGameHomeWithoutMods($home_id); if (empty($server_row)) { print_failure(get_lang('invalid_home_id')); return; } echo "<h2>" . get_lang_f('cloning_home', $server_row['home_name']) . "</h2>"; echo create_back_button('user_games'); include 'includes/lib_remote.php'; $remote = new OGPRemoteLibrary($server_row['agent_ip'], $server_row['agent_port'], $server_row['encryption_key']); if (isset($_REQUEST['clone_home'])) { $server_name = $_POST['new_home_name']; $user_group = $_POST['user_group']; $clone_home_id = $db->addGameHome($server_row['remote_server_id'], $server_row['user_id_main'], $server_row['home_cfg_id'], "/home/" . $server_row['ogp_user'] . "/OGP_User_Files/", $server_name, '', genRandomString(8)); $server_path = "/home/" . $server_row['ogp_user'] . "/OGP_User_Files/" . $clone_home_id; if ($clone_home_id === FALSE) { print_failure(get_lang_f('cloning_of_home_failed', $home_id)); return; } if (isset($_REQUEST['clone_mods'])) { $enabled_mods = $db->getHomeMods($home_id); if (empty($enabled_mods)) { print_failure(get_lang('note') . ": " . get_lang('no_mods_to_clone')); } else { foreach ($enabled_mods as $enabled_rows) { if ($db->addModToGameHome($clone_home_id, $enabled_rows['mod_cfg_id']) === FALSE) { print_failure(get_lang_f('failed_to_add_mod', $enabled_rows['mod_cfg'], $clone_home_id)); return; } if ($db->updateGameModParams($enabled_rows['max_players'], $enabled_rows['extra_params'], $enabled_rows['cpu_affinity'], $enabled_rows['nice'], $clone_home_id, $enabled_rows['mod_cfg_id']) === FALSE) { print_failure(get_lang_f('failed_to_update_mod_settings', $clone_home_id)); return; } } print_success(get_lang_f('successfully_cloned_mods', $clone_home_id)); } } print_success(get_lang('successfully_copied_home_database')); # do the remote copy call here echo "<p>" . get_lang_f('copying_home_remotely', $server_row['home_path'], $server_path) . "</p>"; $db->logger(get_lang_f('copying_home_remotely', $server_row['home_path'], $server_path)); $clone_rc = $remote->clone_home($server_row['home_path'], $server_path, $user_group); if ($clone_rc == -1) { print_success(get_lang('game_server_copy_is_running')); ?> <div class="html5-progress-bar"> <progress id="progressbar" value="0" max="100"></progress> <span class="progress-value">0%</span> </div> <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $.get( "home.php?m=user_games&type=cleared&p=get_size&home_id=<?php echo $home_id; ?> &bytes", function( orig_data ) { var orig_size = parseInt(orig_data,10); var refreshId = setInterval(function() { $.get( "home.php?m=user_games&type=cleared&p=get_size&home_id=<?php echo $clone_home_id; ?> &bytes", function( dest_data ) { var dest_size = parseInt(dest_data,10); var progress = parseInt(dest_size * 100 / orig_size); $('#progressbar').val(progress); $('.progress-value').html(progress + '%'); if(progress == 100) { clearInterval(refreshId); } }); }, 2000); }); }); </script> <?php } elseif ($clone_rc == 1) { print_success(get_lang('game_server_copy_was_successful')); } else { print_failure(get_lang_f('game_server_copy_failed_with_return_code', $clone_rc)); } echo "<br><a href='home.php?m=user_games'><< " . get_lang('back_to_game_servers') . "</a>"; return; } // Form to edit game path. $avail_mods = $db->getHomeMods($home_id); $read_status = $remote->remote_readfile('/etc/passwd', $passwd_array); if ($read_status === -1) { print_failure(get_lang('agent_offline')); return; } else { if ($read_status == 1) { $passwd_array = preg_split("/\n/", $passwd_array); } } require_once "includes/form_table_class.php"; $ft = new FormTable(); $ft->start_form('?m=user_games&p=clone'); $ft->add_field_hidden('home_id', $home_id); $ft->start_table(); $ft->add_custom_field('agent_ip', $server_row['agent_ip']); $ft->add_custom_field('current_home_path', $server_row['home_path']); $ft->add_field('string', 'new_home_name', $server_row['home_name']); echo "<tr><td class='right'>" . get_lang('clone_mods') . ":</td>\n\t\t<td class='left'><input type='checkbox' name='clone_mods' value='y' /></td></tr>"; echo "<input name='user_group' type='hidden' value='" . get_user_uid_gid_from_passwd($passwd_array, $server_row['ogp_user']) . "' /></tr>"; echo "</table>"; $ft->add_button('submit', 'clone_home', get_lang('clone_home')); echo "<p class='info'>" . get_lang('the_name_of_the_server_to_help_users_to_identify_it') . "</p>"; echo "</form>"; echo "<h3>" . get_lang('ips_and_ports_used_in_this_home') . "</h3>"; echo "<p>" . get_lang('note_ips_and_ports_are_not_cloned') . "</p>"; $assigned = $db->getHomeIpPorts($home_id); if (!empty($assigned)) { foreach ($assigned as $assigned_rows) { echo "<p>" . $assigned_rows['ip'] . ":" . $assigned_rows['port'] . "</p>\n"; } } $enabled_mods = $db->getHomeMods($home_id); echo "<h3>" . get_lang('mods_and_settings_for_this_game_server') . "</h3>"; if (empty($enabled_mods)) { print_failure(get_lang('note') . ": " . get_lang('note_no_mods')); return; } echo "<table class='center'>\n"; echo "<tr><td>" . get_lang('mod_name') . "</td><td>" . get_lang('max_players') . "</td><td>" . get_lang('extra_cmd_line_args') . "</td><td>" . get_lang('cpu_affinity') . "</td><td>" . get_lang('nice_level') . "</td></tr>\n"; foreach ($enabled_mods as $enabled_rows) { echo "<tr>"; echo "<td>" . $enabled_rows['mod_name'] . "</td>"; echo "<td>" . $enabled_rows['max_players'] . "</td>"; echo "<td>" . $enabled_rows['extra_params'] . "</td>"; echo "<td>" . $enabled_rows['cpu_affinity'] . "</td>"; echo "<td>" . $enabled_rows['nice'] . "</td></tr>\n"; } echo "</table>\n"; }
function exec_ogp_module() { global $view, $db; $ip = $_REQUEST['ip']; $port = $_REQUEST['port']; $home_id = $_REQUEST['home_id']; $user_id = $_SESSION['user_id']; $home_id = $_REQUEST['home_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); } require_once 'includes/lib_remote.php'; $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); $mod_id = $_REQUEST['mod_id']; if ($home_info === FALSE) { print_failure(get_lang('no_rights_to_stop_server')); return; } echo "<h2>"; echo empty($home_info['home_name']) ? get_lang('not_available') : $home_info['home_name']; echo "</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("" . get_lang('not_found_server') . " " . $home_info['remote_server_id'] . "."); } else { if (isset($_REQUEST['refresh'])) { if (isset($server_xml->console_log)) { $log_retval = $remote->remote_readfile($home_info['home_path'] . '/' . $server_xml->console_log, $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 "<pre style='background:black;color:white;'>" . $home_log . "</pre>"; 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 = TRUE; 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 "<p>" . get_lang('server_running_not_responding') . "\n\t\t\t\t\t<a href=?m=gamemanager&p=stop&home_id=" . $home_info['home_id'] . "&ip=" . $ip . "&port=" . $port . ">" . get_lang('already_running_stop_server') . ".</a></p>"; echo "<table class='center'><tr><td><a href='?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port={$home_id}-{$mod_id}-{$ip}-{$port}'><< " . get_lang('back') . "</a></td></tr></table>"; } echo "</b>Retry #" . $retry . ".</b>"; $retry++; print "<p class='note'>" . get_lang('starting_server') . "</p>"; $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_f('server_restarted', $home_info['home_name'])); $ip_id = $db->getIpIdByIp($ip); $db->delServerStatusCache($ip_id, $port); $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']); echo "<p>" . get_lang('follow_server_status') . " <a href='?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port=" . $home_info['home_id'] . "-" . $home_info['mod_id'] . "-" . $_REQUEST['ip'] . "-" . $_REQUEST['port'] . "'>" . get_lang('game_monitor') . "</a> " . get_lang('page') . ".</p>"; return; } else { 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"; } $control_type = isset($server_xml->control_protocol_type) ? $server_xml->control_protocol_type : ""; $run_dir = isset($server_xml->exe_location) ? $server_xml->exe_location : ""; $last_param = json_decode($home_info['last_param'], True); $cli_param_data['GAME_TYPE'] = $home_info['mods'][$mod_id]['mod_key']; $cli_param_data['IP'] = $ip; $cli_param_data['PORT'] = $port; $cli_param_data['HOSTNAME'] = $home_info['home_name']; $cli_param_data['PID_FILE'] = "ogp_game_startup.pid"; $os = $remote->what_os(); // Linux if (preg_match("/Linux/", $os)) { $cli_param_data['BASE_PATH'] = $home_info['home_path']; $cli_param_data['HOME_PATH'] = $home_info['home_path']; $cli_param_data['SAVE_PATH'] = $home_info['home_path']; $cli_param_data['OUTPUT_PATH'] = $home_info['home_path']; $cli_param_data['USER_PATH'] = $home_info['home_path']; } elseif (preg_match("/CYGWIN/", $os)) { $home_path_win = $remote->exec("cygpath -w " . $home_info['home_path']); $home_path_win = str_replace("\\", "\\\\", $home_path_win); $home_path_win = trim($home_path_win); $cli_param_data['BASE_PATH'] = $home_path_win; $cli_param_data['HOME_PATH'] = $home_path_win; $cli_param_data['SAVE_PATH'] = $home_path_win; $cli_param_data['OUTPUT_PATH'] = $home_path_win; $cli_param_data['USER_PATH'] = $home_path_win; } if ($server_xml->protocol == "gameq") { $cli_param_data['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, "", ""); $cli_param_data['QUERY_PORT'] = $get_ports['1']; } elseif ($server_xml->protocol == "teamspeak3") { $cli_param_data['QUERY_PORT'] = "10011"; } $cli_param_data['MAP'] = empty($last_param['map']) ? "" : $last_param['map']; $cli_param_data['PLAYERS'] = empty($last_param['players']) ? $home_info['mods'][$mod_id]['max_players'] : $last_param['players']; $start_cmd = ""; // If the template is empty then these are not needed. if ($server_xml->cli_template) { $start_cmd = $server_xml->cli_template; if ($server_xml->cli_params) { foreach ($server_xml->cli_params->cli_param as $cli) { // If s is found the param is seperated with space $add_space = preg_match("/s/", $cli['options']) > 0 ? " " : ""; $cli_value = $cli_param_data[(string) $cli['id']]; // If q is found we add quotes around the value. if (preg_match("/q/", $cli['options']) > 0) { $cli_value = "\"" . $cli_value . "\""; } $start_cmd = preg_replace("/%" . $cli['id'] . "%/", $cli['cli_string'] . $add_space . $cli_value, $start_cmd); } } } if ($isAdmin) { $home_info['access_rights'] = "ufpet"; } $param_access_enabled = preg_match("/p/", $home_info['access_rights']) > 0 ? TRUE : FALSE; if ($param_access_enabled && isset($last_param)) { foreach ($server_xml->server_params->param as $param) { foreach ($last_param as $paramKey => $paramValue) { if (!isset($paramValue)) { $paramValue = (string) $param->default; } if ($param['key'] == $paramKey) { if (0 == strlen($paramValue)) { continue; } if ($param['key'] == $paramValue) { // it's a checkbox $new_param = $paramKey; } elseif ($param->option == "ns" or $param->options == "ns") { $new_param = $paramKey . $paramValue; } else { $new_param = $paramKey . ' "' . $paramValue . '"'; } if ($param['id'] == NULL || $param['id'] == "") { $start_cmd .= ' ' . $new_param; } else { $start_cmd = preg_replace("/%" . $param['id'] . "%/", $new_param, $start_cmd); } } } $start_cmd = preg_replace("/%" . $param['id'] . "%/", '', $start_cmd); } } $extra_param_access_enabled = preg_match("/e/", $home_info['access_rights']) > 0 ? TRUE : FALSE; if (array_key_exists('extra', $last_param) && $extra_param_access_enabled) { $extra_default = $last_param['extra']; } else { $extra_default = $home_info['mods'][$mod_id]['extra_params']; } $start_cmd .= " " . $extra_default; $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) { print "<p class='note'>" . get_lang('restarting_server') . "</p>"; $view->refresh("?m=gamemanager&p=restart&refresh&ip={$ip}&port={$port}&home_id={$home_id}&mod_id={$mod_id}", 3); return; } else { if ($remote_retval === -1) { print_failure(get_lang('server_cant_start')); $view->refresh("?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port=" . $home_info['home_id'] . "-" . $home_info['mod_id'] . "-" . $ip . "-" . $port, 3); } else { if ($remote_retval === -2) { print_failure(get_lang('server_cant_stop')); $view->refresh("?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port=" . $home_info['home_id'] . "-" . $home_info['mod_id'] . "-" . $ip . "-" . $port, 3); } else { $screen_running = $remote->is_screen_running(OGP_SCREEN_TYPE_HOME, $home_info['home_id']); if ($screen_running == 1) { print "<p class='note'>" . get_lang('restarting_server') . "</p>"; $view->refresh("?m=gamemanager&p=restart&refresh&ip={$ip}&port={$port}&home_id={$home_id}&mod_id={$mod_id}", 3); return; } else { print_failure("" . get_lang('error_occured_remote_host') . ".{$remote_retval}"); $view->refresh("?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port=" . $home_info['home_id'] . "-" . $home_info['mod_id'] . "-" . $ip . "-" . $port, 3); } } } } } } }
function exec_ogp_module() { //update_local_copies(); #Disabled until the rsync_sites.list file from master servers is corrected. global $db, $view, $settings; if (isset($_REQUEST['url'])) { $url = $_REQUEST['url']; } else { $url = ""; } $home_id = isset($_REQUEST['home_id']) ? $_REQUEST['home_id'] : ""; $mod_id = isset($_REQUEST['mod_id']) ? $_REQUEST['mod_id'] : ""; $state = isset($_POST['state']) ? $_POST['state'] : ""; $update = isset($_GET['update']) ? $_GET['update'] : ""; $isAdmin = $db->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 || preg_match("/u/", $home_info['access_rights']) != 1) { print_failure(get_lang('no_rights')); echo create_back_button("gamemanager", "game_monitor"); return; } $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); $server_xml = read_server_config(SERVER_CONFIG_LOCATION . "/" . $home_info['home_cfg_file']); if (isset($server_xml->lgsl_query_name)) { $lgslname = $server_xml->lgsl_query_name; if ($lgslname == "quake3") { if ($server_xml->game_name == "Quake 3") { $lgslname = "q3"; } } } elseif (isset($server_xml->gameq_query_name)) { $lgslname = $server_xml->gameq_query_name; if ($lgslname == "minecraft") { if ($server_xml->game_name == "Minecraft Tekkit") { $lgslname = "tekkit"; } elseif ($server_xml->game_name == "Minecraft Bukkit") { $lgslname = "bukkit"; } } } elseif (isset($server_xml->protocol)) { $lgslname = $server_xml->protocol; } else { $lgslname = $server_xml->mods->mod['key']; } if (preg_match("/win32/", $server_xml->game_key) or preg_match("/win64/", $server_xml->game_key)) { $os = "windows"; } elseif (preg_match("/linux/", $server_xml->game_key)) { $os = "linux"; } $full_url = $url . "/ogp_game_installer/{$lgslname}/{$os}/"; echo "<h2>Update {$home_info['home_name']}</h2>"; if ($remote->is_screen_running(OGP_SCREEN_TYPE_HOME, $home_id) == 1) { print_failure(get_lang('server_running_cant_update')); return; } $update_active = $remote->get_log(OGP_SCREEN_TYPE_UPDATE, $home_id, clean_path($home_info['home_path']), $log_txt, 30); if ($update_active === 0) { print_failure(get_lang('agent_offline')); echo "<meta http-equiv='refresh' content='5'>"; return; } elseif ($state == 'start' && $update_active != 1) { $mod_cfg_id = $home_info['mod_cfg_id']; $game_mod_precmd = $db->resultQuery("SELECT DISTINCT precmd FROM OGP_DB_PREFIXgame_mods WHERE mod_id='{$mod_id}'"); if ($game_mod_precmd[0]['precmd'] === NULL or empty($game_mod_precmd[0]['precmd'])) { $config_mod_precmd = $db->resultQuery("SELECT DISTINCT def_precmd FROM OGP_DB_PREFIXconfig_mods WHERE mod_cfg_id='{$mod_cfg_id}'"); if ($config_mod_precmd[0]['def_precmd'] === NULL or empty($config_mod_precmd[0]['def_precmd'])) { $precmd = ""; } else { $precmd = $config_mod_precmd[0]['def_precmd']; } } else { $precmd = $game_mod_precmd[0]['precmd']; } $game_mod_postcmd = $db->resultQuery("SELECT DISTINCT postcmd FROM OGP_DB_PREFIXgame_mods WHERE mod_id='{$mod_id}'"); if ($game_mod_postcmd[0]['postcmd'] === NULL or empty($game_mod_postcmd[0]['postcmd'])) { $config_mod_postcmd = $db->resultQuery("SELECT DISTINCT def_postcmd FROM OGP_DB_PREFIXconfig_mods WHERE mod_cfg_id='{$mod_cfg_id}'"); if ($config_mod_postcmd[0]['def_postcmd'] === NULL or empty($config_mod_postcmd[0]['def_postcmd'])) { $postcmd = ""; } else { $postcmd = $config_mod_postcmd[0]['def_postcmd']; } } else { $postcmd = $game_mod_postcmd[0]['postcmd']; } $exec_folder_path = clean_path($home_info['home_path'] . "/" . $server_xml->exe_location); $exec_path = clean_path($exec_folder_path . "/" . $server_xml->server_exec_name); if (isset($_REQUEST['master_server_home_id'])) { $ms_home_id = $_REQUEST['master_server_home_id']; $ms_info = $db->getGameHome($ms_home_id); print_success(get_lang_f("starting_copy_with_master_server_named", $ms_info['home_name'])); $rsync = $remote->masterServerUpdate($home_id, $home_info['home_path'], $ms_home_id, $ms_info['home_path'], $exec_folder_path, $exec_path, $precmd, $postcmd); $master = "&master=true"; } else { print_success(get_lang_f("starting_sync_with", $full_url)); $rsync = $remote->start_rsync_install($home_id, $home_info['home_path'], "{$full_url}", $exec_folder_path, $exec_path, $precmd, $postcmd); $master = ""; } if ($rsync === 0) { print_failure(get_lang('failed_to_start_rsync_update')); return; } else { if ($rsync === 1) { print_success(get_lang('update_started')); echo "<p><a href=\"?m=gamemanager&p=rsync_install&update=refresh&home_id={$home_id}&mod_id={$mod_id}{$master}\">"; echo get_lang('refresh_rsync_status') . "</a></p>"; $view->refresh("?m=gamemanager&p=rsync_install&update=refresh&home_id={$home_id}&mod_id={$mod_id}{$master}", 5); return; } elseif ($rsync === 0) { print_failure(get_lang('agent_offline')); return; } } } elseif ($update_active == 1) { echo "<p class='note'></p>\n"; if (isset($_POST['stop_update_x'])) { $stop_update = sprintf("screen -S OGP_UPDATE_%09d -X quit", $home_id); $remote->exec("{$stop_update}"); } $update_complete = false; echo "<form method=POST><input type='image' name='stop_update' onsubmit='submit-form();' src='modules/administration/images/remove.gif'>" . get_lang('stop_update') . "</input></form>"; if (empty($log_txt)) { $log_txt = get_lang('not_available'); } if (!isset($_GET['master'])) { $kbytes = $remote->rsync_progress($home_info['home_path']); list($totalsize, $mbytes, $pct) = explode(";", do_progress($kbytes, $lgslname . "/" . $os)); $totalmbytes = round($totalsize / 1024, 2); echo '<div class="dragbox bloc rounded" style="background-color:#dce9f2;" > <h4>' . get_lang('update_in_progress') . " {$mbytes}MB/{$totalmbytes}MB</h4>\n\t\t\t\t <div style='background-color:#dce9f2;' >\n\t\t\t\t "; $bar = ''; for ($i = 1; $i <= $pct; $i++) { $bar .= '<img style="width:0.92%;vertical-align:middle;" src="images/progressBar.png">'; } echo "{$bar} <b style='vertical-align:top;display:inline;font-size:1.2em;color:red;' >{$pct}%</b>\n\t\t\t\t\t</div>\n\t\t\t\t </div><br>"; } else { echo '<h4>' . get_lang('update_in_progress') . '</h4>'; } echo "<pre>" . $log_txt . "</pre>\n"; echo "<p><a href=\"?m=gamemanager&p=rsync_install&update=refresh&home_id={$home_id}&mod_id={$mod_id}\">"; echo get_lang('refresh_rsync_status') . "</a></p>"; $view->refresh("?m=gamemanager&p=rsync_install&update=refresh&home_id={$home_id}&mod_id={$mod_id}", 5); return; } elseif ($update != "update") { echo "<meta http-equiv='refresh' content='60'>"; print_success(get_lang('update_completed')); echo "<table class='center'><tr><td><a href='?m=gamemanager&p=game_monitor&home_id=" . $home_info['home_id'] . "'><< " . get_lang('back') . "</a></td></tr></table>"; echo "<pre>" . $log_txt . "</pre>\n"; echo "<table class='center'><tr><td><a href='?m=gamemanager&p=game_monitor&home_id=" . $home_info['home_id'] . "'><< " . get_lang('back') . "</a></td></tr></table>"; $update_complete = true; } else { $rsync_remote_sites = file("modules/gamemanager/rsync_sites.list"); #load offical rsync sites $rsync_local_sites = file("modules/gamemanager/rsync_sites_local.list"); #load user custom sites $settings['rsync_available'] = isset($settings['rsync_available']) ? $settings['rsync_available'] : "1"; if (is_array($rsync_local_sites) and $settings['rsync_available'] == "1") { $rsync_sites = array_merge($rsync_remote_sites, $rsync_local_sites); #merge arrays } elseif ($settings['rsync_available'] == "2") { $rsync_sites = $rsync_remote_sites; } elseif ($settings['rsync_available'] == "3") { $rsync_sites = $rsync_local_sites; } #echo "LGSL or GameQ query name is $server_xml->lgsl_query_name$server_xml->gameq_query_name"; $sync_list = @file("modules/gamemanager/rsync.list", FILE_IGNORE_NEW_LINES); if (!is_array($sync_list)) { if (!is_file("modules/gamemanager/rsync.list")) { print_failure("Trouble accessing http://www.opengamepanel.org/rsync.list"); print_failure("Make sure allow_fopen_url is set to \"On\" in your php.ini and opengamepanel.org is online"); print_failure("In the mean time, you can get a local copy of the file by running wget http://www.opengamepanel.org/sync_data/rsync.list -O /path/to/ogpweb/modules/gamemanager/rsync.list"); return; } # print_failure("Error loading rsync.list"); # return; $sync_list = @file("modules/gamemanager/rsync.list", FILE_IGNORE_NEW_LINES); if (!is_array($sync_list)) { print_failure("Failed to open local copy of rsync.list in modules/gamemanager/rsync.list"); return; } } $master_server_home_id = $db->getMasterServer($home_info['remote_server_id'], $home_info['home_cfg_id']); if (in_array($lgslname, $sync_list)) { echo "Game type supported<br>\n\t\t\t\t <p class='center'>To add your own rsync site, create modules/gamemanager/rsync_sites_local.list and put a server name on each line.</p><br>\n\t\t\t\t <form action='?m=gamemanager&p=rsync_install' method='post'>\n\t\t\t\t <table class='center'>\n\t\t\t\t <input type='hidden' name='home_id' value='{$home_id}' />\n\t\t\t\t <input type='hidden' name='mod_id' value='{$mod_id}' />\n\t\t\t\t <input type='hidden' name='lgslname' value='{$lgslname}' />\n\t\t\t\t <input type='hidden' name='state' value='start' />\n\t\t\t\t <tr><td align='right'>Game name:</td><td align='left'>{$home_info['game_name']}</td></tr>\n\t\t\t\t <tr><td align='right'>Directory:</td><td align='left'>{$home_info['home_path']}</td></tr>\n\t\t\t\t <tr><td align='right'>Remoteserver:</td>\n\t\t\t\t <td align='left'>{$home_info['remote_server_name']} ({$home_info['agent_ip']}:{$home_info['agent_port']})</td></tr>\n\t\t\t\t <tr><td align='right'>Rsync Server:</td>\n\t\t\t\t <td align='left'>" . create_drop_box_from_array_rsync($rsync_sites, "url") . "<br>"; if ($master_server_home_id != FALSE and $master_server_home_id != $home_id) { echo "<input type='checkbox' name='master_server_home_id' value='{$master_server_home_id}' /><b>" . get_lang('update_from_local_master_server') . "</b>"; } echo "</td></tr></table><p><input type='submit' name='update' value='update' /></p>\n\t\t\t\t </form>"; } elseif ($master_server_home_id != FALSE and $master_server_home_id != $home_id) { $ms_home_info = $db->getGameHome($master_server_home_id); echo "<br>\n\t\t\t\t <p class='success'>Master server update available</p><br>\n\t\t\t\t <form action='?m=gamemanager&p=rsync_install' method='post'>\n\t\t\t\t <table class='center'>\n\t\t\t\t <input type='hidden' name='home_id' value='{$home_id}' />\n\t\t\t\t <input type='hidden' name='mod_id' value='{$mod_id}' />\n\t\t\t\t <input type='hidden' name='lgslname' value='{$lgslname}' />\n\t\t\t\t <input type='hidden' name='state' value='start' />\n\t\t\t\t <tr><td align='right'>Game name:</td><td align='left'>{$home_info['game_name']}</td></tr>\n\t\t\t\t <tr><td align='right'>Master Server Name:</td><td align='left'>{$ms_home_info['home_name']}</td></tr>\n\t\t\t\t <tr><td align='right'>Master Server Directory:</td><td align='left'>{$ms_home_info['home_path']}</td></tr>\n\t\t\t\t <tr><td align='right'>Local Directory:</td><td align='left'>{$home_info['home_path']}</td></tr>" . "<input type='hidden' name='master_server_home_id' value='{$master_server_home_id}' />" . "</td></tr></table><p><input type='submit' name='update' value='" . get_lang('update_from_local_master_server') . "' /></p>\n\t\t\t\t </form>"; } else { print_failure("This game type [ {$lgslname} ] is not yet supported with rsync install"); } } }
function exec_ogp_module() { $modDb = new MySQLModuleDatabase(); require "includes/config.inc.php"; $modDb->connect($db_host, $db_user, $db_pass, $db_name, $table_prefix); global $view, $db; $mysql_server_id = @$_REQUEST['mysql_server_id']; $mysql_server = $modDb->getMysqlServer($mysql_server_id); if ($mysql_server['remote_server_id'] == "0") { $server_homes = $db->getGameHomes(); } else { $server_homes = $modDb->getGameHomesByRemoteServerId($mysql_server['remote_server_id']); } $homes_array[0] = get_lang('select_game_server'); foreach ($server_homes as $server_home) { $homes_array["{$server_home['home_id']}"] = "(ID " . $server_home['home_id'] . ") " . $server_home['home_name']; } if ($mysql_server === FALSE) { print_failure(get_lang_f('invalid_mysql_server_id', $mysql_server_id)); $view->refresh("?m=mysql&p=mysql_admin"); return; } if (isset($_REQUEST['add_db'])) { $home_id = $_POST['home_id']; $db_user = trim($_POST['db_user']); $db_passwd = trim($_POST['db_passwd']); $db_name = trim($_POST['db_name']); $enabled = $_POST['enabled']; if (empty($db_user)) { print_failure(get_lang('enter_db_user')); } elseif (empty($db_passwd)) { print_failure(get_lang('enter_db_password')); } elseif (empty($db_name)) { print_failure(get_lang('enter_db_name')); } elseif ($home_id == 0) { print_failure(get_lang('select_game_server')); } else { $db_id = $modDb->addMysqlServerDB($mysql_server_id, $home_id, $db_user, $db_passwd, $db_name, $enabled); if (!$db_id) { print_failure(get_lang_f('there_is_another_db_named_or_user_named', $db_name, $db_user)); } else { $mysql_db = $modDb->getMysqlDBbyId($db_id); if (!$mysql_db) { return; } if ($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key']); $host_stat = $remote->status_chk(); if ($host_stat === 1) { $command = "mysql -h localhost -P " . $mysql_db['mysql_port'] . " -u root -p" . $mysql_db['mysql_root_passwd'] . ' -e exit; echo $?'; $test_mysql_conn = $remote->exec($command); if ($test_mysql_conn == 0) { $SQL = "CREATE DATABASE IF NOT EXISTS \\`" . $mysql_db['db_name'] . "\\`;" . "GRANT " . $mysql_db['privilegies_str'] . " ON \\`" . $mysql_db['db_name'] . "\\`.* TO '" . $mysql_db['db_user'] . "'@'localhost' IDENTIFIED BY '" . $mysql_db['db_passwd'] . "';" . "FLUSH PRIVILEGES;"; $command = "mysql --host=localhost --port=" . $mysql_db['mysql_port'] . " -uroot -p" . $mysql_db['mysql_root_passwd'] . " -e \"" . $SQL . "\""; $result = $remote->exec($command); } } } else { @($link = mysql_connect($mysql_db['mysql_ip'] . ':' . $mysql_db['mysql_port'], $mysql_db['db_user'], $mysql_db['db_passwd'])); if ($link === FALSE) { @($link = mysql_connect($mysql_db['mysql_ip'] . ':' . $mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd'])); if ($link !== FALSE) { $queries = array("CREATE DATABASE IF NOT EXISTS `" . $mysql_db['db_name'] . "`;", "GRANT " . $mysql_db['privilegies_str'] . " ON `" . $mysql_db['db_name'] . "`.* TO '" . $mysql_db['db_user'] . "'@'" . $mysql_db['mysql_ip'] . "' IDENTIFIED BY '" . $mysql_db['db_passwd'] . "';", "FLUSH PRIVILEGES;"); foreach ($queries as $query) { @($return = mysql_query($query)); if (!$return) { break; } } mysql_close($link); } } } print_success(get_lang_f('db_added_for_home_id', $_POST['home_id'])); } } $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=" . $mysql_server_id . "&assign", 5); } else { if (isset($_REQUEST['remove_db'])) { $db_id = $_REQUEST['db_id']; $mysql_db = $modDb->getMysqlDBbyId($db_id); if ($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key']); $host_stat = $remote->status_chk(); if ($host_stat === 1) { $remote->exec('mysql --host=localhost --port=' . $mysql_db['mysql_port'] . ' -uroot -p' . $mysql_db['mysql_root_passwd'] . ' -e "DROP DATABASE ' . $mysql_db['db_name'] . ";DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_db['mysql_ip'] . "';\""); } } else { @($link = mysql_connect($mysql_db['mysql_ip'] . ':' . $mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd'])); if ($link !== FALSE) { $queries = array("DROP DATABASE " . $mysql_db['db_name'] . ";", "DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_db['mysql_ip'] . "';"); foreach ($queries as $query) { @($return = mysql_query($query)); if (!$return) { break; } } mysql_close($link); $modDb->connect($db_host, $db_user, $db_pass, $db_name, $table_prefix); } } if ($modDb->removeMysqlServerDB($db_id) === FALSE) { print_failure(get_lang('could_not_remove_db')); } else { print_success(get_lang_f('db_removed_successfully_from_mysql_server_named', $mysql_db['mysql_name'])); } $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=" . $mysql_server_id . "&assign"); } else { if (isset($_POST['save_db_changes'])) { $db_id = $_POST['db_id']; $home_id = $_POST['home_id']; $post_db_user = trim($_POST['db_user']); $post_db_passwd = trim($_POST['db_passwd']); $post_db_name = trim($_POST['db_name']); $enabled = $_POST['enabled']; if (empty($post_db_passwd)) { print_failure(get_lang('enter_db_password')); } elseif ($home_id == 0) { print_failure(get_lang('select_game_server')); } else { $mysql_db = $modDb->getMysqlDBbyId($db_id); if ($post_db_passwd != $mysql_db['db_passwd']) { if ($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key']); $host_stat = $remote->status_chk(); if ($host_stat === 1) { $SQL = "DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_server['mysql_ip'] . "';" . "GRANT " . $mysql_db['privilegies_str'] . " ON \\`" . $mysql_db['db_name'] . "\\`.* TO '" . $mysql_db['db_user'] . "'@'localhost' IDENTIFIED BY '" . $post_db_passwd . "';" . "FLUSH PRIVILEGES;"; $command = "mysql --host=localhost --port=" . $mysql_db['mysql_port'] . " -uroot -p" . $mysql_db['mysql_root_passwd'] . " -e \"" . $SQL . "\""; $remote->exec($command); } } else { @($link = mysql_connect($mysql_db['mysql_ip'] . ':' . $mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd'])); if ($link !== FALSE) { $queries = array("DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_server['mysql_ip'] . "';", "GRANT " . $mysql_db['privilegies_str'] . " ON `" . $mysql_db['db_name'] . "`.* TO '" . $mysql_db['db_user'] . "'@'" . $mysql_db['mysql_ip'] . "' IDENTIFIED BY '" . $post_db_passwd . "';", "FLUSH PRIVILEGES;"); foreach ($queries as $query) { @($return = mysql_query($query)); if (!$return) { break; } } mysql_close($link); $modDb->connect($db_host, $db_user, $db_pass, $db_name, $table_prefix); } } } if ($enabled != $mysql_db['enabled']) { if ($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key']); $host_stat = $remote->status_chk(); if ($host_stat === 1) { if ($enabled == "0") { $SQL = "DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_server['mysql_ip'] . "';" . "FLUSH PRIVILEGES;"; } else { $SQL = "GRANT " . $mysql_db['privilegies_str'] . " ON \\`" . $mysql_db['db_name'] . "\\`.* TO '" . $mysql_db['db_user'] . "'@'localhost' IDENTIFIED BY '" . $post_db_passwd . "';" . "FLUSH PRIVILEGES;"; } $command = "mysql --host=localhost --port=" . $mysql_db['mysql_port'] . " -uroot -p" . $mysql_db['mysql_root_passwd'] . " -e \"" . $SQL . "\""; $remote->exec($command); } } else { @($link = mysql_connect($mysql_db['mysql_ip'] . ':' . $mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd'])); if ($link !== FALSE) { if ($enabled == "0") { $queries = array("DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_server['mysql_ip'] . "';", "FLUSH PRIVILEGES;"); } else { $queries = array("GRANT " . $mysql_db['privilegies_str'] . " ON `" . $mysql_db['db_name'] . "`.* TO '" . $mysql_db['db_user'] . "'@'" . $mysql_db['mysql_ip'] . "' IDENTIFIED BY '" . $post_db_passwd . "';", "FLUSH PRIVILEGES;"); } foreach ($queries as $query) { @($return = mysql_query($query)); if (!$return) { break; } } mysql_close($link); $modDb->connect($db_host, $db_user, $db_pass, $db_name, $table_prefix); } } } if ($modDb->editMysqlServerDB($db_id, $home_id, $post_db_user, $post_db_passwd, $post_db_name, $enabled) === FALSE) { print_failure(get_lang('could_not_be_changed')); } else { print_success(get_lang_f('db_changed_successfully', $post_db_name)); } } $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=" . $mysql_server_id . "&assign"); } else { if (isset($_REQUEST['delete'])) { if (!isset($_REQUEST['y'])) { echo "<p>" . get_lang_f('areyousure_remove_mysql_server', $mysql_server['mysql_name']) . "</p>\n <p><a href='?m=mysql&p=mysql_admin&p=edit&mysql_server_id=" . $mysql_server_id . "&delete&y=y'>" . get_lang('yes') . "</a> <a href='?m=mysql&p=mysql_admin'>" . get_lang('no') . "</a></p>"; return; } else { $mysql_dbs = $modDb->getMysqlServerDBs($mysql_server_id); if (!empty($mysql_dbs)) { foreach ($mysql_dbs as $mysql_db) { if ($mysql_server['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_server['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key']); $host_stat = $remote->status_chk(); if ($host_stat === 1) { $remote->exec('mysql --host=localhost --port=' . $mysql_server['mysql_port'] . ' -uroot -p' . $mysql_server['mysql_root_passwd'] . ' -e "DROP DATABASE ' . $mysql_db['db_name'] . ";DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_server['mysql_ip'] . "';\""); } } else { @($link = mysql_connect($mysql_server['mysql_ip'] . ':' . $mysql_server['mysql_port'], 'root', $mysql_server['mysql_root_passwd'])); if ($link !== FALSE) { $queries = array("DROP DATABASE " . $mysql_db['db_name'] . ";", "DROP USER '" . $mysql_db['db_user'] . "'@'" . $mysql_server['mysql_ip'] . "';"); foreach ($queries as $query) { @($return = mysql_query($query)); if (!$return) { break; } } mysql_close($link); } } } } if ($modDb->removeMysqlServer($mysql_server_id) === FALSE) { print_failure(get_lang('error_while_remove')); } else { print_success(get_lang_f('mysql_server_removed', $mysql_server['mysql_name'])); } } $view->refresh("?m=mysql&p=mysql_admin"); return; } else { if (isset($_POST['save_settings'])) { foreach ($_POST as $name => $value) { $get[$name] = trim($value); } if (empty($get['mysql_ip'])) { print_failure(get_lang('enter_mysql_ip')); } elseif (!isPortValid($get['mysql_port'])) { print_failure(get_lang('enter_valid_port')); } elseif (empty($get['mysql_root_passwd'])) { print_failure(get_lang('enter_mysql_root_password')); } elseif (empty($get['mysql_name'])) { print_failure(get_lang('enter_mysql_name')); } elseif (!$modDb->editMysqlServer($mysql_server_id, $get['remote_server_id'], $get['mysql_name'], $get['mysql_ip'], $get['mysql_port'], $get['mysql_root_passwd'], $mysql_server['privilegies_str'])) { print_failure(get_lang_f('unable_to_set_changes_to', $mysql_server['mysql_name'])); } else { print_success(get_lang_f('mysql_server_settings_changed', $mysql_server['mysql_name'])); } $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=" . $mysql_server_id . "&edit", 5); } elseif (isset($_GET['edit'])) { echo "<h2>" . get_lang_f('editing_mysql_server', $mysql_server['mysql_name']) . "</h2>"; $mysql_server = $modDb->getMysqlServer($mysql_server_id); $servers = $db->getRemoteServers(); $conn_method[0] = get_lang('direct_connection'); foreach ($servers as $server_row) { $id = $server_row['remote_server_id']; $name = get_lang_f('connection_through_remote_server_named', $server_row['remote_server_name']); $conn_method[$id] = $name; } $ft = new FormTable(); $ft->start_form('?m=mysql&p=edit&mysql_server_id=' . $mysql_server_id . '&edit'); $ft->start_table(); $ft->add_custom_field('connection_method', create_drop_box_from_array($conn_method, "remote_server_id", $mysql_server['remote_server_id'], false)); $ft->add_field('string', 'mysql_name', $mysql_server['mysql_name']); $ft->add_field('string', 'mysql_ip', $mysql_server['mysql_ip']); $ft->add_field('string', 'mysql_port', $mysql_server['mysql_port']); $ft->add_field('string', 'mysql_root_passwd', $mysql_server['mysql_root_passwd']); $ft->end_table(); $ft->add_button("submit", "save_settings", get_lang('save_settings')); $ft->end_form(); echo create_back_button('mysql', 'mysql_admin'); } elseif (isset($_GET['assign'])) { echo "<h2>" . get_lang_f('mysql_dbs_for', $mysql_server['mysql_name']) . "</h2>"; $mysql_server_dbs = $modDb->getMysqlServerDBs($mysql_server['mysql_server_id']); if (!empty($mysql_server_dbs)) { echo "<h4>" . get_lang('edit_dbs') . "</h4>"; foreach ($mysql_server_dbs as $mysql_db) { $home_info = $db->getGameHomeWithoutMods($mysql_db['home_id']); $db_array["{$mysql_db['db_id']}"] = $mysql_db['db_name'] . " (" . $home_info['home_name'] . ")"; } $ft = new FormTable(); $ft->start_form('', 'GET'); $ft->add_field_hidden('m', 'mysql'); $ft->add_field_hidden('p', 'edit'); $ft->add_field_hidden('mysql_server_id', $mysql_server_id); $ft->add_field_hidden('assign', 'true'); $ft->start_table(); $ft->add_custom_field('select_db', create_drop_box_from_array($db_array, "db_id", isset($_GET['db_id']) ? $_GET['db_id'] : "", false)); $ft->end_table(); $ft->add_button('submit', 'edit_db_settings', get_lang('edit_db_settings')); $ft->add_button('submit', 'remove_db', get_lang('remove_db')); $ft->end_form(); if (isset($_GET['edit_db_settings'])) { $mysql_db = $modDb->getMysqlDBbyId($_GET['db_id']); $ft = new FormTable(); $ft->start_form(''); $ft->add_field_hidden('db_id', $mysql_db['db_id']); $ft->start_table(); $ft->add_custom_field('game_server', create_drop_box_from_array($homes_array, "home_id", $mysql_db['home_id'], false)); $ft->add_field('string', 'db_user', $mysql_db['db_user'], "50", "readonly"); $ft->add_field('string', 'db_passwd', $mysql_db['db_passwd']); $ft->add_field('string', 'db_name', $mysql_db['db_name'], "50", "readonly"); $ft->add_field('on_off', 'enabled', $mysql_db['enabled']); $ft->end_table(); $ft->add_button('submit', 'save_db_changes', get_lang('save_db_changes')); $ft->end_form(); } } echo "<h4>" . get_lang('add_db') . "</h4>"; $ft = new FormTable(); $ft->start_form(''); $ft->start_table(); $ft->add_custom_field('game_server', create_drop_box_from_array($homes_array, "home_id", "0", false)); $ft->add_field('string', 'db_user', ''); $ft->add_field('string', 'db_passwd', genRandomString('10')); $ft->add_field('string', 'db_name', ''); $ft->add_field('on_off', 'enabled', '1'); $ft->end_table(); $ft->add_button('submit', 'add_db', get_lang('add_db')); $ft->end_form(); echo create_back_button('mysql', 'mysql_admin'); } else { print_failure("Invalid url."); $view->refresh("?m=mysql&p=mysql_admin"); } } } } } }
function exec_ogp_module() { global $db, $view; $blacklist = array('/install.php', '/modules/gamemanager/rsync_sites_local.list'); $curren_blacklist = array(); $blacklisted_files = $db->resultQuery('SELECT file_path FROM `OGP_DB_PREFIXupdate_blacklist`;'); if ($blacklisted_files !== FALSE) { $curren_blacklist = array(); foreach ($blacklisted_files as $blacklisted_file) { $curren_blacklist[] = $blacklisted_file['file_path']; } } if (isset($_POST['save_to_blacklist'])) { foreach ($_POST['blacklist'] as $file) { $db->query("INSERT INTO `OGP_DB_PREFIXupdate_blacklist` SET file_path='{$file}';"); } foreach ($_POST['folder_files'] as $file) { if (in_array($file, $curren_blacklist)) { if (!in_array($file, $_POST['blacklist'])) { $db->query("DELETE FROM `OGP_DB_PREFIXupdate_blacklist` WHERE file_path='{$file}';"); } } } $blacklisted_files = $db->resultQuery('SELECT file_path FROM `OGP_DB_PREFIXupdate_blacklist`;'); if ($blacklisted_files !== FALSE) { $curren_blacklist = array(); foreach ($blacklisted_files as $blacklisted_file) { $curren_blacklist[] = $blacklisted_file['file_path']; } } } $curren_blacklist = array_merge($curren_blacklist, $blacklist); path_check(); echo "<h2>"; echo get_lang('blacklist_files'); echo "</h2>"; $baseDir = str_replace("modules" . DIRECTORY_SEPARATOR . "update", "", dirname(__FILE__)); $path = clean_path($baseDir . "/" . @$_SESSION['fm_cwd']); echo "<table class='center' style='width:100%;' ><tr>\n" . "<td colspan='3' ><h3>" . get_lang_f('currently_viewing', $path) . "</h3></td>" . "</tr></table>"; if (!file_exists($path)) { $path = clean_path($baseDir); if (file_exists($path)) { print_failure(get_lang_f("dir_not_found", $path)); } else { $_SESSION['fm_cwd'] = str_replace("\\", "", dirname($_SESSION['fm_cwd'])); $view->refresh('?m=update&p=blacklist', 0); } } else { $dirlist = scandir($path); if (!is_array($dirlist)) { if ($dirlist === -1) { if ($path != $baseDir . "/") { $view->refresh('?m=update&p=blacklist', 0); } else { print_failure('The path is too long or there is a file with a very long name inside of your game server\'s home folder.'); } } else { if (file_exists($path)) { if (strpos($path, '/') !== FALSE) { $ePath = explode('/', $path); $filename = end($ePath); } else { if (strpos($path, '\\') !== FALSE) { $ePath = explode('\\', $path); $filename = end($ePath); } } $_SESSION['fm_cwd'] = str_replace("\\", "", dirname($_SESSION['fm_cwd'])); $view->refresh('?m=update&p=blacklist' . '&path=' . $filename, 0); } else { print_failure(get_lang("failed_list")); } } return; } if (empty($dirlist)) { print_lang('empty_directory'); } else { echo "<form method=POST>" . "<table class='center' style='width:100%;' >\n" . show_back($home_id) . "<tr>\n" . "<td style='width:10px;' >\n" . "<input type='checkbox' onclick='toggleChecked(this.checked)'>\n" . "</td>\n" . "<td align=left>\n" . get_lang('filename') . "\n</td>\n" . "</tr>\n"; $directorys = array(); $files = array(); $x = 0; $basedir_path = rtrim($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['SCRIPT_NAME']), DIRECTORY_SEPARATOR); $preg_basedir_path = preg_quote($basedir_path, "/"); foreach ($dirlist as $item) { # dirlist FM returns an array. Each element has 5 fields separated by the | character if ($item == "." or $item == "..") { continue; } $filename = $item; $filepath = clean_path($path . "/" . $filename); // Directory if (is_dir($filepath)) { $directorys[$x]['filename'] = $filename; } else { $files[$x]['filename'] = $filename; $files[$x]['filepath'] = preg_replace("/^" . $preg_basedir_path . "/", "", $filepath); } $x++; } foreach ($directorys as $directory) { echo "<tr>\n" . "<td>" . "</td>" . "<td align=left>" . "<img class=\"viewitem\" src=\"images/folder.png\" alt=\"Directory\" /> " . "<a href=\"?m=update&p=blacklist&path=" . $directory['filename'] . "\">" . $directory['filename'] . "</a></td></tr>\n"; } $i = 0; $unchecked = array(); foreach ($files as $file) { $checked = in_array($file['filepath'], $curren_blacklist) ? "checked='checked'" : ""; echo "<tr>\n" . "<td>" . "<input type=checkbox name='blacklist[{$i}]' value='" . $file['filepath'] . "' class='item' {$checked}/>\n" . "<input type=hidden name='folder_files[{$i}]' value='" . $file['filepath'] . "' />\n" . "</td>" . "<td align=left>"; echo "<img class=\"viewitem\" src=\"images/txt.png\" alt=\"Text file\" /> " . $file['filename'] . "</td>\n" . "</tr>\n"; $i++; } echo "</table>\n" . "<input type=submit name='save_to_blacklist' value='" . get_lang('save_to_blacklist') . "' />\n" . "</form>\n"; } } echo create_back_button('update'); }
function exec_ogp_module() { global $db; global $view; $home_id = isset($_REQUEST['home_id']) ? $_REQUEST['home_id'] : ""; $mod_id = isset($_REQUEST['mod_id']) ? $_REQUEST['mod_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); } if ($home_info === FALSE || preg_match("/u/", $home_info['access_rights']) != 1) { print_failure(get_lang('no_rights')); echo create_back_button("gamemanager", "gamemanager"); return; } $state = isset($_REQUEST['state']) ? $_REQUEST['state'] : ""; $pid = isset($_REQUEST['pid']) ? $_REQUEST['pid'] : -1; $filename = isset($_REQUEST['filename']) ? $_REQUEST['filename'] : ""; echo "<h2>" . get_lang('install_update_manual') . " {$home_info['home_name']}</h2>"; if (!empty($state)) { $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); if ($state == "start") { if (isset($_POST['one_dir_down'])) { $home_info['home_path'] .= "/../"; } $pid = $remote->start_file_download($_REQUEST['url'], $home_info['home_path'], $filename, "uncompress"); if ($pid < 0) { print_failure(get_lang("failed_to_start_file_download")); return; } } $url = $_REQUEST['url']; $headers = get_headers($url, 1); $download_available = !$headers ? FALSE : TRUE; // Check if any error occured if ($download_available) { $bytes = is_array($headers['Content-Length']) ? $headers['Content-Length'][1] : $headers['Content-Length']; // Display the File Size $totalsize = $bytes / 1024; clearstatcache(); } $kbytes = $remote->rsync_progress($home_info['home_path'] . "/" . $filename); list($totalsize, $mbytes, $pct) = explode(";", do_progress($kbytes, $totalsize)); $totalmbytes = round($totalsize / 1024, 2); $pct = $pct > 100 ? 100 : $pct; echo '<div class="dragbox bloc rounded" style="background-color:#dce9f2;" > <h4>' . get_lang('update_in_progress') . " {$mbytes}MB/{$totalmbytes}MB</h4>\n\t\t\t <div style='background-color:#dce9f2;' >\n\t\t\t "; $bar = ''; for ($i = 1; $i <= $pct; $i++) { $bar .= '<img style="width:0.92%;vertical-align:middle;" src="images/progressBar.png">'; } echo "<center>{$bar} <b style='vertical-align:top;display:inline;font-size:1.2em;color:red;' >{$pct}%</b></center>\n\t\t\t\t</div>\n\t\t\t </div>"; if ($remote->is_file_download_in_progress($pid) == 0) { print_success(get_lang('finished_manual_update')); } else { echo "<p><a href=\"?m=gamemanager&p=update_manual&state=refresh&home_id=" . $home_id . "&mod_id={$mod_id}&pid={$pid}&url={$url}&filename={$filename}\">Refresh</a></p>"; $view->refresh("?m=gamemanager&p=update_manual&state=refresh&home_id=" . $home_id . "&mod_id={$mod_id}&pid={$pid}&url={$url}&filename={$filename}", 5); } echo create_back_button($_GET['m'], "game_monitor&home_id=" . $_GET['home_id']); } else { echo "<form action='?m=gamemanager&p=update_manual' method='post'>\n <table class='center'>\n <input type='hidden' name='home_id' value='{$home_id}' />\n <input type='hidden' name='mod_id' value='{$mod_id}' />\n <input type='hidden' name='state' value='start' />\n <tr><td align='right'>" . get_lang('game_name') . ":</td><td align='left'>{$home_info['game_name']}</td></tr>\n <tr><td align='right'>" . get_lang('dest_dir') . ":</td><td align='left'>{$home_info['home_path']}</td></tr>\n <tr><td align='right'>" . get_lang('remote_server') . ":</td>\n <td align='left'>{$home_info['remote_server_name']} ({$home_info['agent_ip']}:{$home_info['agent_port']})</td></tr>\n <tr><td align='right'>" . get_lang('file_url') . ":</td>\n <td align='left'><input type='text' name='url' value='' size='50' /></td></tr>\n <tr><td colspan='2' class='info'>" . get_lang('file_url_info') . "</td></tr>\n <tr><td align='right'>" . get_lang('one_dir_down') . ":</td><td align='left'><input type='checkbox' name='one_dir_down' /></td></tr>\n <tr><td align='right'>" . get_lang('dest_filename') . ":</td>\n <td align='left'><input type='text' name='filename' value='' size='50'/></td></tr>\n <tr><td colspan='2' class='info'>" . get_lang('dest_filename_info') . "</td></tr>\n </table>\n <p><input type='submit' name='update' value='" . get_lang('update_server') . "' /></p>\n </form>"; } return; }
function exec_ogp_module() { global $db, $view; if (isset($_GET['rserver_id']) and $_GET['rserver_id'] != "") { $remote_server_ips = $db->getRemoteServerIPs($_GET['rserver_id']); if (!empty($remote_server_ips)) { if (isset($_GET['ip_id']) and $_GET['ip_id'] != "") { $ip = $db->getIpById($_GET['ip_id']); echo "<h2>" . get_lang_f('assign_new_ports_range_for_ip', $ip) . "</h2>"; if (isset($_POST['assign_range'])) { if ($_POST['home_cfg_id'] != "0") { $cfg_info = $db->getGameCfg($_POST['home_cfg_id']); } else { $cfg_info['game_name'] = get_lang('unspecified_game_types'); } $retval = $db->addPortsRange($_POST['ip_id'], $_POST['home_cfg_id'], $_POST['start_port'], $_POST['end_port'], $_POST['port_increment']); if ($retval === 1) { print_failure(get_lang('invalid_values')); } elseif ($retval === 2) { print_failure(get_lang('ports_in_range_already_arranged')); } elseif ($retval) { print_success(get_lang_f('ports_range_added_successfull_for', $cfg_info['game_name'])); } else { print_failure(get_lang_f('ports_range_already_configured_for', $cfg_info['game_name'])); } $view->refresh('?m=server&p=arrange_ports&rserver_id=' . $_GET['rserver_id'] . '&ip_id=' . $_GET['ip_id'], 3); } $game_homes = $db->getIpPorts($_GET['ip_id']); $game_cfgs = $db->getGameCfgs(); // require_once 'includes/lib_remote.php'; $rhost_id = $_GET['rserver_id']; $remote_server = $db->getRemoteServer($rhost_id); require_once 'includes/lib_remote.php'; $remote = new OGPRemoteLibrary($remote_server['agent_ip'], $remote_server['agent_port'], $remote_server['encryption_key']); $host_stat = $remote->status_chk(); if ($host_stat === 1) { $os = $remote->what_os(); } else { print_failure(get_lang_f("caution_agent_offline_can_not_get_os_and_arch_showing_servers_for_all_platforms")); $os = "Unknown OS"; } echo "<form method='POST' action=''>\n\n\t\t\t\t\t <input type='hidden' name='ip_id' value='" . $_GET['ip_id'] . "' />\n\n\t\t\t\t\t <table>\n\n\t\t\t\t\t <tr>\n\n\t\t\t\t\t <td>\n\n\t\t\t\t\t <select name='home_cfg_id'>\n\n\t\t\t\t\t <option style='background:black;color:white;' value='0'>" . get_lang('unspecified_game_types') . "</option>\n"; echo "<b>" . get_lang('assign_range_to_game_type') . ":</b>"; // Linux 64 bits + wine if (preg_match("/Linux/", $os) and preg_match("/64/", $os) and preg_match("/wine/", $os)) { foreach ($game_cfgs as $row) { if (preg_match("/linux/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name']; } if (preg_match("/64/", $row['game_key'])) { echo " (64 bit)"; } echo "</option>\n"; } echo "<option style='background:black;color:white;' value=''>" . get_lang('wine_games') . ":</option>\n"; foreach ($game_cfgs as $row) { if (preg_match("/win/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name']; } if (preg_match("/64/", $row['game_key'])) { echo " (64 bit)"; } echo "</option>\n"; } } elseif (preg_match("/Linux/", $os) and preg_match("/64/", $os)) { foreach ($game_cfgs as $row) { if (preg_match("/linux/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name']; } if (preg_match("/64/", $row['game_key'])) { echo " (64 bit)"; } echo "</option>\n"; } } elseif (preg_match("/Linux/", $os) and preg_match("/wine/", $os)) { foreach ($game_cfgs as $row) { if (preg_match("/linux32/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name'] . "</option>\n"; } } echo "<option style='background:black;color:white;' value=''>" . get_lang('wine_games') . "</option>\n"; foreach ($game_cfgs as $row) { if (preg_match("/win32/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name'] . "</option>\n"; } } } elseif (preg_match("/Linux/", $os)) { foreach ($game_cfgs as $row) { if (preg_match("/linux32/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name'] . "</option>\n"; } } } elseif (preg_match("/CYGWIN/", $os) and preg_match("/64/", $os)) { foreach ($game_cfgs as $row) { if (preg_match("/win/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name']; } if (preg_match("/64/", $row['game_key'])) { echo " (64 bit)"; } echo "</option>\n"; } } elseif (preg_match("/CYGWIN/", $os)) { foreach ($game_cfgs as $row) { if (preg_match("/win32/", $row['game_key'])) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name'] . "</option>\n"; } } } elseif ($os == "Unknown OS") { foreach ($game_cfgs as $row) { echo "<option value='" . $row['home_cfg_id'] . "'>" . $row['game_name']; if (preg_match("/64/", $row['game_key'])) { echo " (64 bit)"; } echo "</option>\n"; } } echo "</select>\n\n\t\t\t\t\t </td>\n\n\t\t\t\t\t <td>\n" . get_lang('start_port') . "<input type='text' id='start_port' name='start_port' class='add' size='8' />\n\n\t\t\t\t\t </td>\n\n\t\t\t\t\t <td>\n" . get_lang('end_port') . "<input type='text' id='end_port' name='end_port' class='add' size='8' />\n\n\t\t\t\t\t </td>\n\n\t\t\t\t\t <td>\n\n\t\t\t\t\t " . get_lang('port_increment') . "<input type='text' id='port_increment' name='port_increment' class='add' value='1' size='2' />\n\n\t\t\t\t\t </td>\n\n\t\t\t\t\t <td>\n\n\t\t\t\t\t " . get_lang('total_assignable_ports') . "\t<span id='total_assignable_ports' class='add'></span>\n\n\t\t\t\t\t </td>\n\n\t\t\t\t\t <td>\n" . "<input type='submit' name='assign_range' value='" . get_lang('assign_range') . "' />\n\n\t\t\t\t\t </td>\n \n\t\t\t\t\t </tr>\n \n\t\t\t\t\t </table>\n\n\t\t\t\t\t </form>\n"; echo "<h2>" . get_lang_f('assigned_port_ranges_for_ip', $ip) . "</h2>"; // if (isset($_POST['delete_range'])) { if ($db->delPortsRange($_POST['range_id'])) { print_success(get_lang('ports_range_deleted_successfull')); } else { print_failure(get_lang('failed_to_delete_ports_range')); } $view->refresh('?m=server&p=arrange_ports&rserver_id=' . $_GET['rserver_id'] . '&ip_id=' . $_GET['ip_id'], 3); } if (isset($_POST['edit_range'])) { if ($_POST['home_cfg_id'] != "0") { $cfg_info = $db->getGameCfg($_POST['home_cfg_id']); } else { $cfg_info['game_name'] = get_lang('unspecified_game_types'); } $retval = $db->editPortsRange($_POST['range_id'], $_POST['ip_id'], $_POST['start_port'], $_POST['end_port'], $_POST['port_increment']); if ($retval === 1) { print_failure(get_lang('invalid_values')); } elseif ($retval === 2) { print_failure(get_lang('ports_in_range_already_arranged')); } elseif ($retval) { print_success(get_lang_f('ports_range_edited_successfull_for', $cfg_info['game_name'])); } else { print_failure(get_lang_f('ports_range_already_configured_for', $cfg_info['game_name'])); } $view->refresh('?m=server&p=arrange_ports&rserver_id=' . $_GET['rserver_id'] . '&ip_id=' . $_GET['ip_id'], 3); } $ranges = $db->getPortsRange($_GET['ip_id']); if (!empty($ranges)) { echo "<table>\n"; foreach ($ranges as $range) { if ($range['home_cfg_id'] != "0") { $cfg_info = $db->getGameCfg($range['home_cfg_id']); } else { $cfg_info['game_name'] = get_lang('unspecified_game_types'); } $available_ports_amount = intval(($range['end_port'] - $range['start_port']) / $range['port_increment'] + 1); $usable_range_ports = array(); for ($port = $range['start_port']; $port >= $range['start_port'] and $port <= $range['end_port']; $port += $range['port_increment']) { $usable_range_ports[] = $port; } $used_ports = array(); if (!empty($game_homes)) { foreach ($game_homes as $game_home) { $used_ports[] = $game_home['port']; } } if (!empty($used_ports)) { foreach ($used_ports as $used_port) { if (in_array($used_port, $usable_range_ports)) { $available_ports_amount--; } } } echo "<form method='POST' action=''>\n\n\t\t\t\t\t\t\t <input type='hidden' name='range_id' value='" . $range['range_id'] . "' />\n\n\t\t\t\t\t\t\t <input type='hidden' name='ip_id' value='" . $range['ip_id'] . "' />\n\n\t\t\t\t\t\t\t <input type='hidden' name='home_cfg_id' value='" . $range['home_cfg_id'] . "' />\n\n\t\t\t\t\t\t\t <tr>\n\n\t\t\t\t\t\t\t <td>\n" . $cfg_info['game_name'] . "</td>\n\n\t\t\t\t\t\t\t <td>\n" . get_lang('start_port') . "<input type='text' id='start_port' name='start_port' value='" . $range['start_port'] . "' size='8' />\n\n\t\t\t\t\t\t\t </td>\n\n\t\t\t\t\t\t\t <td>\n" . get_lang('end_port') . "<input type='text' id='end_port' name='end_port' value='" . $range['end_port'] . "' size='8' />\n\n\t\t\t\t\t\t\t </td>\n\n\t\t\t\t\t\t\t <td>\n" . get_lang('port_increment') . "<input type='text' id='port_increment' name='port_increment' value='" . $range['port_increment'] . "' value='1' size='2' />\n\n\t\t\t\t\t\t\t </td>\n\n\t\t\t\t\t\t\t <td>\n" . get_lang('available_range_ports') . "\t<span id='available_range_ports'>" . $available_ports_amount . "</span>\n\n\t\t\t\t\t\t\t </td>\n\n\t\t\t\t\t\t\t <td>\n\n\t\t\t\t\t\t\t\t<input type='submit' name='edit_range' value='" . get_lang('edit_range') . "' />\n\n\t\t\t\t\t\t\t\t<input type='submit' name='delete_range' value='" . get_lang('delete_range') . "' />\n\n\t\t\t\t\t\t\t </td>\n \n\t\t\t\t\t\t\t </tr>\n \n\t\t\t\t\t\t </form>\n"; } echo "</table>\n"; } echo "<h2>" . get_lang_f('assigned_ports_for_ip', $ip) . "</h2>"; if (!empty($game_homes)) { echo "<table class='center'>"; echo "<tr><th>" . get_lang('home_id') . "</th><th>" . get_lang('home_path') . "</th><th>" . get_lang('game_type') . "</th><th>" . get_lang('server_name') . "</th><th>" . get_lang('port') . "</th></tr>"; foreach ($game_homes as $game_home) { echo "<tr><td>" . $game_home['home_id'] . "</td><td>" . $game_home['home_path'] . "</td><td>" . $game_home['game_name'] . "</td><td>" . $game_home['home_name'] . "</td><td>" . $game_home['port'] . "</td></tr>"; } echo "</table>"; } } } else { echo "There are no IPs assigned to the selected remote server."; return; } echo create_back_button('server', 'edit&rhost_id=' . $_GET['rserver_id'] . '&edit'); } ?> <script type="text/javascript"> $(document).ready(function(){ $("input[type=text]").each(function(){ $(this).numeric(); }); $('input#start_port.add').on('input', function() { $('input#end_port.add').val( Number($(this).val()) ); $('span#total_assignable_ports.add').html( parseInt( ( Number( $('input#end_port.add').val() ) - Number( $(this).val() ) ) / Number( $('input#port_increment.add').val() ) ) + 1 ); }); $('input#end_port.add').on('input', function() { $('span#total_assignable_ports.add').html( parseInt( ( Number( $(this).val() ) - Number( $('input#start_port.add').val() ) ) / Number( $('input#port_increment.add').val() ) ) + 1 ); }); $('input#port_increment.add').on('input', function() { $('span#total_assignable_ports.add').html( parseInt( ( Number( $('input#end_port.add').val() ) - Number( $('input#start_port.add').val() ) ) / Number( $(this).val() ) ) + 1 ); }); }); </script> <?php }
function exec_ogp_module() { global $view; global $db; $rhost_id = @$_REQUEST['rhost_id']; $remote_server = $db->getRemoteServer($rhost_id); if ($remote_server === FALSE) { print_failure(get_lang_f('invalid_remote_host_id', $rhost_id)); $view->refresh("?m=server"); return; } echo "<h2>" . get_lang_f('editing_remote_server', $remote_server['remote_server_name']) . "</h2>"; #this allows you to define upto 4 IPs for each remote host. The IPs are for binding games to if (isset($_REQUEST['add_ip'])) { $remote_ip = $_POST['remote_ip']; $remote_ip = preg_replace("/[^0-9\\.]/", "", $remote_ip); if ($db->addRemoteServerIp($rhost_id, $remote_ip) === FALSE) { print_failure(get_lang('could_not_add_ip')); } else { print_success(get_lang_f('ips_set_for_server', $remote_server['remote_server_name'])); } $view->refresh("?m=server&p=edit&rhost_id=" . $rhost_id . "&edit"); } else { if (isset($_REQUEST['remove_ip'])) { $ip_id = $_POST['ip_id']; if ($db->removeRemoteServerIps($ip_id) === FALSE) { print_failure(get_lang('could_not_remove_ip')); } else { print_success(get_lang_f('ips_set_for_server', $remote_server['remote_server_name'])); } $view->refresh("?m=server&p=edit&rhost_id=" . $rhost_id . "&edit"); } else { if (isset($_REQUEST['edit_ip'])) { $ip_id = $_POST['ip_id']; $ip = $_POST['ip']; $ip = preg_replace("/[^0-9\\.]/", "", $ip); if ($db->editRemoteServerIps($ip_id, $ip) === FALSE) { print_failure(get_lang('could_not_edit_ip')); } else { print_success(get_lang_f('ips_set_for_server', $remote_server['remote_server_name'])); } $view->refresh("?m=server&p=edit&rhost_id=" . $rhost_id . "&edit"); } else { if (isset($_REQUEST['delete'])) { if (!isset($_REQUEST['y'])) { echo "<p>" . get_lang('areyousure_removeagent') . " <b>\"" . $remote_server['remote_server_name'] . "\"</b> " . get_lang('areyousure_removeagent2') . "</p>\n <p><a href='?m=server&p=edit&rhost_id=" . $rhost_id . "&delete&y=y'>" . get_lang('yes') . "</a> <a href='?m=server'>" . get_lang('no') . "</a></p>"; return; } else { if ($db->removeRemoteServer($rhost_id) === FALSE) { print_failure(get_lang('error_while_remove')); } else { print_success(get_lang_f('remote_host_removed', $remote_server['remote_server_name'])); } } $view->refresh("?m=server"); return; } else { if (isset($_REQUEST['save_settings'])) { $db->changeRemoteServerSettings($remote_server['remote_server_id'], $_REQUEST['remote_host'], $_REQUEST['remote_host_port'], $_REQUEST['remote_host_name'], $_REQUEST['ogp_user'], $_REQUEST['remote_host_ftp_ip'], $_REQUEST['remote_host_ftp_port'], $_REQUEST['remote_encryption_key'], $_REQUEST['timeout'], $_REQUEST['use_nat']); print_success(get_lang_f('remote_server_settings_changed', $remote_server['remote_server_name'])); $view->refresh("?m=server&p=edit&rhost_id=" . $rhost_id . "&edit"); } } } } } if (isset($_REQUEST['edit'])) { $remote_server = $db->getRemoteServer($rhost_id); $ftp_ip = empty($remote_server['ftp_ip']) ? $remote_server['agent_ip'] : $remote_server['ftp_ip']; require_once 'includes/form_table_class.php'; $ft = new FormTable(); $ft->start_form('?m=server&p=edit&rhost_id=' . $rhost_id . '&edit'); $ft->add_field_hidden('rhost_id', $remote_server['remote_server_id']); $ft->start_table(); $ft->add_field('string', 'remote_host', $remote_server['agent_ip']); $ft->add_field('string', 'remote_host_port', $remote_server['agent_port']); $ft->add_field('string', 'remote_host_name', $remote_server['remote_server_name']); $ft->add_field('string', 'ogp_user', $remote_server['ogp_user']); $ft->add_field('string', 'remote_host_ftp_ip', $ftp_ip); $ft->add_field('string', 'remote_host_ftp_port', $remote_server['ftp_port']); $ft->add_field('string', 'remote_encryption_key', $remote_server['encryption_key']); $ft->add_field('string', 'timeout', $remote_server['timeout']); $ft->add_field('on_off', 'use_nat', $remote_server['use_nat']); $ft->end_table(); $ft->add_button('submit', 'save_settings', get_lang('save_settings')); $ft->end_form(); echo create_back_button('server'); echo "<h2>" . get_lang_f('remote_ips_for', $remote_server['remote_server_name']) . "</h2>"; echo "<p class='info'>" . get_lang('hint') . ": " . get_lang('add_more_ips') . "</p>"; $remote_server_ips = $db->getRemoteServerIPs($remote_server['remote_server_id']); if (!empty($remote_server_ips)) { echo "<h1>" . get_lang('edit_ip') . "s</h1>"; include 'includes/lib_remote.php'; foreach ($remote_server_ips as $ip_row) { $servers_match_ip_id = $db->getIpPorts($ip_row['ip_id']); $servers_running = FALSE; if ($servers_match_ip_id) { foreach ($servers_match_ip_id as $home_info) { $remote = new OGPRemoteLibrary($home_info['agent_ip'], $home_info['agent_port'], $home_info['encryption_key']); $screen_running = $remote->is_screen_running(OGP_SCREEN_TYPE_HOME, $home_info['home_id']) === 1; if ($screen_running) { $servers_running = TRUE; break; } } } $disabled = $servers_running ? "disabled" : ""; $warning = $servers_running ? "<b class='failure' >" . get_lang('there_are_servers_running_on_this_ip') . "<b>" : ""; echo "<table class='center'>\n\t\t\t\t\t <tr>\n\t\t\t\t\t <td align='left' >\n\t\t\t\t\t <form method='post' action=''>\n\t\t\t\t\t <input name='ip_id' type='hidden' value='" . $ip_row['ip_id'] . "'/>\n\t\t\t\t\t <input name='ip' type='text' value='" . $ip_row['ip'] . "'/>\n\t\t\t\t\t <input type='submit' name='edit_ip' value='" . get_lang('edit_ip') . "' {$disabled}/>\n\t\t\t\t\t <input type='submit' name='remove_ip' value='" . get_lang('remove_ip') . "' {$disabled}/> {$warning}\n\t\t\t\t\t </form>\n\t\t\t\t\t </td>\n\t\t\t\t\t <td style='text-align:left;'>\n\t\t\t\t\t <a href='?m=server&p=arrange_ports&rserver_id=" . $rhost_id . "&ip_id=" . $ip_row['ip_id'] . "'>" . get_lang('arrange_ports') . "</a>\n\t\t\t\t\t </td>\n\t\t\t\t\t </tr>\n\t\t\t\t\t </table>"; } } echo "<h1>" . get_lang('add_ip') . "s</h1>"; $ft = new FormTable(); $ft->start_form(''); $ft->add_field_hidden('rhost_id', $remote_server['remote_server_id']); $ft->start_table(); $ft->add_field('string', 'remote_ip', ''); $ft->end_table(); $ft->add_button('submit', 'add_ip', get_lang('add_ip')); $ft->end_form(); } else { print_failure("Invalid url."); $view->refresh("?m=server"); } }
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); }