$size)
{
# If the rsync path matches the path at the string on the variable $size
# then lists the path and the total size on separated variables
# using explode over the string saved on $size
if ( preg_match("/$rsyncPath/i", $size) )
list( $path, $totalsize ) = explode( ";", $size );
}
if($kbytes > 0)
{
$pct = round(( $kbytes / $totalsize ) * 100, 2);
}
else
{
$pct = "unavailable";
}
#echo "Percent is $pct";
$pct = $pct > 100 ? 100 : $pct;
return "$totalsize;$mbytes;$pct";
}
function update_local_copies()
{
$last_updated = filemtime("modules/gamemanager/sizes.list");
$nowtime=time();
$diff = $nowtime - $last_updated;
if( $diff < 86400)
{
#echo "Now $nowtime last $last_updated diff $diff
";
return 0;
}
echo "Updating local cache of rsync meta data files
";
$update_files = array('sizes.list', 'rsync.list', 'rsync_sites.list');
$update_urls = array('rsync.opengamepanel.org', 'dls.atl.webehostin.com');
$context = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
foreach($update_files as $file_chk)
{
#echo "Trying to update $file_chk
";
foreach($update_urls as $site)
{
#echo "Trying $file_chk from $site
";
if(!is_writable("modules/gamemanager/$file_chk"))
{
print_failure("modules/gamemanager/$file_chk is not writable...please make it writable by the webserver");
}
if($tmp_content = file_get_contents("http://$site/sync_data/$file_chk", false, $context))
{
if(!file_put_contents("modules/gamemanager/$file_chk",$tmp_content)){echo "Failed to write
";};
break;
}
}
}
if(is_writable('modules/gamemanager'))
{
$tmp = 'modules/gamemanager';
}
elseif(is_writable('/tmp'))
{
$tmp = 'modules/gamemanager';
}
else
{
return "-1";
}
}
require_once("includes/lib_remote.php");
require_once("modules/config_games/server_config_parser.php");
function exec_ogp_module() {
//update_local_copies(); #Disabled until the rsync_sites.list file from master servers is corrected.
global $db,$view,$settings;
$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'] : "";
$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) && $settings['rsync_available'] == "1") {
$rsync_sites = array_merge($rsync_remote_sites, $rsync_local_sites);
} elseif($settings['rsync_available'] == "2") {
$rsync_sites = $rsync_remote_sites;
} elseif( $settings['rsync_available'] == "3") {
$rsync_sites = $rsync_local_sites;
}
$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;
}
$home_id = $home_info['home_id'];
$remote = new OGPRemoteLibrary($home_info['agent_ip'],$home_info['agent_port'],$home_info['encryption_key'],$home_info['timeout']);
$server_xml = read_server_config(SERVER_CONFIG_LOCATION."/".$home_info['home_cfg_file']);
if( 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 == "Bukkit")
$lgslname = "bukkit";
elseif($server_xml->game_name == "Tekkit")
$lgslname = "tekkit";
}
}
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";
echo "
". get_lang("refresh_rsync_status") ."
"; $view->refresh("?m=gamemanager&p=rsync_install&update=refresh&home_id=$home_id&mod_id=$mod_id$master",5); return; } } elseif($update_active == 1) { echo "\n"; if ( isset( $_POST['stop_update_x'] ) ) { $remote->stop_update($home_id); print_success("Update stopped."); $view->refresh("?m=gamemanager&p=rsync_install&update=refresh&home_id=$home_id&mod_id=$mod_id", 2); return; } $update_complete = false; echo ""; if (empty($log_txt)) $log_txt = 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 '
';
}
echo "$bar $pct%
".$log_txt."\n". "
". get_lang("refresh_rsync_status") ."
"; $view->refresh("?m=gamemanager&p=rsync_install&update=refresh&home_id=$home_id&mod_id=$mod_id",5); return; } elseif($update != "update") { $view->refresh("{CURRENT_PAGE}", 60); print_success(get_lang("update_completed") ); echo "| << ". get_lang("back") ." |
".$log_txt."\n"; echo "
| << ". get_lang("back") ." |
To add your own rsync site, create modules/gamemanager/rsync_sites_local.list and put a server name on each line.
Master server update available