Kaynağa Gözat

Added Domain Support on checkDisplayPublicIP Function

oNdsen 9 yıl önce
ebeveyn
işleme
35304ee613

+ 41 - 1
includes/functions.php

@@ -705,4 +705,44 @@ function paginationPages($pageResults, $currentPage, $perPage, $pageUri, $pagesS
 
 }
 
-?>
+function checkDisplayPublicIP($display_public_ip,$internal_ip){
+
+	// Set Cache Timer in Seconds
+	$cache_timer = 600;
+
+	if(!isset($_SESSION['gethostbyname_cache'])){
+		$_SESSION['gethostbyname_cache'] = array();
+	}
+
+	if(filter_var($display_public_ip, FILTER_VALIDATE_IP) && $display_public_ip!=$internal_ip){
+		return $display_public_ip;
+	}else{
+		if(!array_key_exists($display_public_ip, $_SESSION['gethostbyname_cache'])){
+			$_SESSION['gethostbyname_cache'][$display_public_ip] = array();
+			$ipcheck = gethostbyname($display_public_ip);
+			if($ipcheck!=$display_public_ip){
+				$_SESSION['gethostbyname_cache'][$display_public_ip]['ip'] = $ipcheck;
+				$_SESSION['gethostbyname_cache'][$display_public_ip]['stamp'] = time();
+			}else{
+				unset($_SESSION['gethostbyname_cache'][$display_public_ip]);
+				return $internal_ip;
+			}
+		}else{
+			if((time()-$_SESSION['gethostbyname_cache'][$display_public_ip]['stamp'])>=$cache_timer){
+				$ipcheck = gethostbyname($display_public_ip);
+				if($ipcheck!=$display_public_ip){
+					$_SESSION['gethostbyname_cache'][$display_public_ip]['ip'] = $ipcheck;
+					$_SESSION['gethostbyname_cache'][$display_public_ip]['stamp'] = time();
+				}else{
+					unset($_SESSION['gethostbyname_cache'][$display_public_ip]);
+					return $internal_ip;
+				}
+			}
+		}
+		if(filter_var($_SESSION['gethostbyname_cache'][$display_public_ip]['ip'], FILTER_VALIDATE_IP)){
+			return $_SESSION['gethostbyname_cache'][$display_public_ip]['ip'];
+		}
+	}
+	return $internal_ip;
+}
+?>

+ 2 - 2
modules/ftp/ftp_admin.php

@@ -105,7 +105,7 @@ function exec_ogp_module()
 
 		foreach ( $servers as $server_row )
 		{
-			$display_ip = ip2long($server_row['display_public_ip']) && $server_row['display_public_ip']!=$server_row['agent_ip'] ? $server_row['display_public_ip'] : $server_row['agent_ip'];
+			$display_ip = checkDisplayPublicIP($server_row['display_public_ip'],$server_row['agent_ip']);
 			echo "<option value='" . $server_row['remote_server_id'] . "' >" . $server_row['remote_server_name'] . " (" . $display_ip . ":" . $server_row['agent_port'] . ")</option>";
 		}
 		echo "</select>
@@ -131,7 +131,7 @@ function exec_ogp_module()
 	<?php		
 		foreach ( $servers as $server_row )
 		{
-			$display_ip = ip2long($server_row['display_public_ip']) && $server_row['display_public_ip']!=$server_row['agent_ip'] ? $server_row['display_public_ip'] : $server_row['agent_ip'];
+			$display_ip = checkDisplayPublicIP($server_row['display_public_ip'],$server_row['agent_ip']);
 			$remote = new OGPRemoteLibrary($server_row['agent_ip'],$server_row['agent_port'],$server_row['encryption_key'],$server_row['timeout']);
 
 			$host_stat = $remote->status_chk();

+ 6 - 2
modules/server/module.php

@@ -24,8 +24,8 @@
 
 // Module general information
 $module_title = "Server manager";
-$module_version = "1.6";
-$db_version = 6;
+$module_version = "1.6.1";
+$db_version = 7;
 $module_required = TRUE;
 $module_menus = array(
 	array( 'subpage' => '', 'name'=>'Servers', 'group'=>'admin' )
@@ -87,4 +87,8 @@ $install_queries[6] = array(
         "ALTER TABLE `OGP_DB_PREFIXremote_servers`
 	ADD `display_public_ip` varchar(15) NOT NULL;");
 
+$install_queries[7] = array(
+        "ALTER TABLE `OGP_DB_PREFIXremote_servers`
+        MODIFY `display_public_ip` varchar(255) NOT NULL;");
+
 ?>

+ 2 - 2
modules/user_games/add_home.php

@@ -136,9 +136,9 @@ function exec_ogp_module()
 		echo "<option>".get_lang('select_remote_server')."</option>\n";
 		foreach ( $remote_servers as $server )
 		{
-			$ip = ip2long($server['display_public_ip']) && $server['display_public_ip']!=$server['agent_ip'] ? $server['display_public_ip'] : $server['agent_ip'];
+			$display_ip = checkDisplayPublicIP($server['display_public_ip'],$server['agent_ip']);
 			echo "<option value='".$server['remote_server_id']."'>".
-				$server['remote_server_name']." (".$ip.")</option>\n";
+				$server['remote_server_name']." (".$display_ip.")</option>\n";
 		}
 		echo "</select>\n";
 		echo "</form>";

+ 7 - 14
modules/user_games/edit_home.php

@@ -44,7 +44,7 @@ function exec_ogp_module()
 	$home_id = $home_info['home_id'];
 	$enabled_mods = $db->getHomeMods($home_id);
 
-	$display_ip = ip2long($home_info['display_public_ip']) && $home_info['display_public_ip']!=$home_info['agent_ip'] ? $home_info['display_public_ip'] : $home_info['agent_ip'];
+	$display_ip = checkDisplayPublicIP($home_info['display_public_ip'],$home_info['agent_ip']);
 
 	if( $isAdmin and isset( $_POST['change_home_cfg_id'] ) )
 	{
@@ -813,14 +813,11 @@ function exec_ogp_module()
 				echo "<input type='hidden' name='home_id' value=\"$home_id\" />\n";
 				echo  ip .":<select name='ip' onchange='this.form.submit();'>";
 
-				if(ip2long($home_info['display_public_ip']) && $home_info['display_public_ip']!=$home_info['agent_ip']){
-					echo "<option value='".$avail_ips[0]['ip_id']."' $selected >".$display_ip."</option>\n";
-				}else{
-					foreach($avail_ips as $value)
-					{
-						$selected = ( isset($_POST['ip']) and $_POST['ip'] == $value['ip_id'] ) ? "selected='selected'" : "";
-						echo "<option value='".$value['ip_id']."' $selected >".$value['ip']."</option>\n";
-					}
+				foreach($avail_ips as $value)
+				{
+					$avail_display_ip = checkDisplayPublicIP($home_info['display_public_ip'],$value['ip']);
+					$selected = ( isset($_POST['ip']) and $_POST['ip'] == $value['ip_id'] ) ? "selected='selected'" : "";
+					echo "<option value='".$value['ip_id']."' $selected >".$avail_display_ip."</option>\n";
 				}
 
 				echo "</select>";
@@ -858,11 +855,7 @@ function exec_ogp_module()
 							$force_mod .= "</select>\n</form>\n</td>\n";
 							$align = "right";
 						}
-						if(ip2long($home_info['display_public_ip']) && $home_info['display_public_ip']!=$home_info['agent_ip']){
-							$assigned_ip = $home_info['display_public_ip'];
-						}else{
-							$assigned_ip = $assigned_rows['ip'];
-						}
+						$assigned_ip = checkDisplayPublicIP($home_info['display_public_ip'],$assigned_rows['ip']);
 						echo "<table class='center'><tr><td align='$align'>".$assigned_ip.":".$assigned_rows['port'].
 							 " <a href='?m=user_games&p=edit&home_id=$home_id&delete_ip&ip=".
 							 $assigned_rows['ip_id']."&port=".$assigned_rows['port'].