IDEMPIERE-389 - Fix to set non loopback and non link IP on ServerName

This commit is contained in:
Deepak Pansheriya 2012-10-21 11:58:52 +05:30
parent b3d3d04a51
commit da5f06287c
2 changed files with 48 additions and 16 deletions

View File

@ -141,9 +141,6 @@ public final class Ini implements Serializable
/** Role */
public static final String P_ROLE = "Role";
private static final String DEFAULT_ROLE = "";
/**Server Name */
public static final String P_SERVERNAME = "ServerName";
private static final String DEFAULT_SERVERNAME = "";
/** Client Name */
public static final String P_CLIENT = "Client";
private static final String DEFAULT_CLIENT = "";
@ -199,7 +196,7 @@ public final class Ini implements Serializable
P_ADEMPIERESYS, P_LOGMIGRATIONSCRIPT, P_SHOW_ACCT, P_SHOW_TRL,
P_SHOW_ADVANCED, P_CACHE_WINDOW,
P_CONTEXT, P_TEMP_DIR,
P_ROLE, P_SERVERNAME, P_CLIENT, P_ORG, P_PRINTER, P_WAREHOUSE, P_TODAY,
P_ROLE, P_CLIENT, P_ORG, P_PRINTER, P_WAREHOUSE, P_TODAY,
P_PRINTPREVIEW,
P_VALIDATE_CONNECTION_ON_STARTUP,
P_SINGLE_INSTANCE_PER_WINDOW,
@ -217,7 +214,7 @@ public final class Ini implements Serializable
DEFAULT_ADEMPIERESYS?"Y":"N", DEFAULT_LOGMIGRATIONSCRIPT?"Y":"N", DEFAULT_SHOW_ACCT?"Y":"N", DEFAULT_SHOW_TRL?"Y":"N",
DEFAULT_SHOW_ADVANCED?"Y":"N", DEFAULT_CACHE_WINDOW?"Y":"N",
DEFAULT_CONTEXT, DEFAULT_TEMP_DIR,
DEFAULT_ROLE, DEFAULT_SERVERNAME, DEFAULT_CLIENT, DEFAULT_ORG, DEFAULT_PRINTER, DEFAULT_WAREHOUSE, DEFAULT_TODAY.toString(),
DEFAULT_ROLE, DEFAULT_CLIENT, DEFAULT_ORG, DEFAULT_PRINTER, DEFAULT_WAREHOUSE, DEFAULT_TODAY.toString(),
DEFAULT_PRINTPREVIEW?"Y":"N",
DEFAULT_VALIDATE_CONNECTION_ON_STARTUP?"Y":"N",
DEFAULT_SINGLE_INSTANCE_PER_WINDOW?"Y":"N",

View File

@ -25,6 +25,8 @@ import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.net.UnknownHostException;
@ -32,6 +34,7 @@ import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Enumeration;
import java.util.Properties;
import java.util.logging.Level;
@ -1259,24 +1262,56 @@ public final class WebUtil
*/
public static String getServerName(){
StringBuilder strBuilder = new StringBuilder();
String serverName = Ini.getProperties().getProperty("ServerName");
try {
strBuilder.append(InetAddress.getLocalHost().getHostName());
} catch (UnknownHostException e) {
log.log(Level.WARNING, "Local host or IP not found", e);
}
strBuilder.append(":");
try {
strBuilder.append(InetAddress.getLocalHost().getHostAddress());
} catch (UnknownHostException e) {
log.log(Level.WARNING, "Local host or IP not found", e);
}
strBuilder.append(":");
if(serverName!=null)
strBuilder.append(serverName);
strBuilder.append(":").append(getHostIP());
return strBuilder.toString();
}
public static String getHostIP() {
String retVal = null;
try {
InetAddress localAddress= InetAddress.getLocalHost();
if (!localAddress.isLinkLocalAddress() && !localAddress.isLoopbackAddress() && localAddress.isSiteLocalAddress())
return localAddress.getHostAddress();
} catch (UnknownHostException e) {
log.log(Level.WARNING,
"UnknownHostException while retrieving host ip");
}
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()
&& !inetAddress.isLinkLocalAddress()
&& inetAddress.isSiteLocalAddress()) {
retVal = inetAddress.getHostAddress().toString();
break;
}
}
}
} catch (SocketException e) {
log.log(Level.WARNING, "Socket Exeception while retrieving host ip");
}
if (retVal == null) {
try {
retVal = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
log.log(Level.WARNING,
"UnknownHostException while retrieving host ip");
}
}
return retVal;
}
} // WUtil