001
014
015 package com.liferay.portal.kernel.util;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019
020 import java.net.InetAddress;
021 import java.net.UnknownHostException;
022
023
026 public class IPDetector {
027
028 public static boolean isPrefersV4() {
029 if (_prefersV4 != null) {
030 return _prefersV4.booleanValue();
031 }
032
033 _prefersV4 = Boolean.valueOf(
034 System.getProperty("java.net.preferIPv4Stack"));
035
036 return _prefersV4.booleanValue();
037 }
038
039 public static boolean isPrefersV6() {
040 if (_prefersV6 != null) {
041 return _prefersV6.booleanValue();
042 }
043
044 _prefersV6 = Boolean.valueOf(
045 System.getProperty("java.net.preferIPv6Stack"));
046
047 return _prefersV6.booleanValue();
048 }
049
050 public static boolean isSupportsV6() {
051 if (_suppportsV6 != null) {
052 return _suppportsV6.booleanValue();
053 }
054
055 try {
056 InetAddress[] inetAddresses = InetAddress.getAllByName(
057 "localhost");
058
059 for (InetAddress inetAddress : inetAddresses) {
060 if (inetAddress.getHostAddress().contains(":")) {
061 _suppportsV6 = Boolean.TRUE;
062
063 break;
064 }
065 }
066 }
067 catch (UnknownHostException uhe) {
068 _log.error(uhe, uhe);
069 }
070
071 if (_suppportsV6 == null) {
072 _suppportsV6 = Boolean.FALSE;
073 }
074
075 return _suppportsV6.booleanValue();
076 }
077
078 private static Log _log = LogFactoryUtil.getLog(IPDetector.class);
079
080 private static Boolean _prefersV4;
081 private static Boolean _prefersV6;
082 private static Boolean _suppportsV6;
083
084 }