diff --git a/openvidu-server/pom.xml b/openvidu-server/pom.xml index a1cb413a..39e27f83 100644 --- a/openvidu-server/pom.xml +++ b/openvidu-server/pom.xml @@ -267,6 +267,11 @@ spring-boot-starter-websocket ${version.spring-boot} + + commons-validator + commons-validator + ${version.commons-validator} + com.github.docker-java docker-java diff --git a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java index c219b9a9..1034bc5a 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java +++ b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java @@ -40,6 +40,8 @@ import javax.annotation.PostConstruct; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.validator.routines.DomainValidator; +import org.apache.commons.validator.routines.InetAddressValidator; import org.apache.http.Header; import org.apache.http.message.BasicHeader; import org.kurento.jsonrpc.JsonUtils; @@ -521,8 +523,8 @@ public class OpenviduConfig { protected List getNonUserProperties() { return Arrays.asList("server.port", "SERVER_PORT", "DOTENV_PATH", "COTURN_IP", "COTURN_REDIS_IP", - "COTURN_REDIS_DBNAME", "COTURN_REDIS_PASSWORD", "COTURN_REDIS_CONNECT_TIMEOUT", - "COTURN_INTERNAL_RELAY", "OPENVIDU_RECORDING_IMAGE", "OPENVIDU_RECORDING_ENABLE_GPU"); + "COTURN_REDIS_DBNAME", "COTURN_REDIS_PASSWORD", "COTURN_REDIS_CONNECT_TIMEOUT", "COTURN_INTERNAL_RELAY", + "OPENVIDU_RECORDING_IMAGE", "OPENVIDU_RECORDING_ENABLE_GPU"); } // Properties @@ -544,7 +546,8 @@ public class OpenviduConfig { coturnRedisConnectTimeout = getValue("COTURN_REDIS_CONNECT_TIMEOUT"); - // If true, coturn is using private IPs as relay IPs to enable relay connections pass through internal network + // If true, coturn is using private IPs as relay IPs to enable relay connections + // pass through internal network coturnInternalRelay = asBoolean("COTURN_INTERNAL_RELAY"); openviduSecret = asNonEmptyAlphanumericString("OPENVIDU_SECRET", @@ -864,8 +867,17 @@ public class OpenviduConfig { protected String asOptionalInetAddress(String property) { String inetAddress = getValue(property); if (inetAddress != null && !inetAddress.isEmpty()) { + DomainValidator domainValidator = DomainValidator.getInstance(); + if (domainValidator.isValid(inetAddress)) { + return inetAddress; + } + InetAddressValidator ipValidator = InetAddressValidator.getInstance(); + if (ipValidator.isValid(inetAddress)) { + return inetAddress; + } try { Inet6Address.getByName(inetAddress).getHostAddress(); + return inetAddress; } catch (UnknownHostException e) { addError(property, "Is not a valid Internet Address (IP or Domain Name): " + e.getMessage()); } @@ -1042,8 +1054,8 @@ public class OpenviduConfig { } else { String[] customImageSplit = configuredImage.split(":"); if (customImageSplit.length != 2) { - addError(recordingImageProperty, "The docker image configured is not valid. " + - "This parameter must have this format: ':'"); + addError(recordingImageProperty, "The docker image configured is not valid. " + + "This parameter must have this format: ':'"); } else { String customImageName = customImageSplit[0]; String customVersion = customImageSplit[1]; @@ -1061,7 +1073,7 @@ public class OpenviduConfig { return mediaNodesPublicIps; } List mediaNodesPublicIpsList = asJsonStringsArray(propertyName); - for(String ipPairStr: mediaNodesPublicIpsList) { + for (String ipPairStr : mediaNodesPublicIpsList) { String[] ipPair = ipPairStr.trim().split(":"); if (ipPair.length != 2) { addError(propertyName, "Not valid ip pair in " + propertyName + ": " + ipPairStr); diff --git a/pom.xml b/pom.xml index 8b121f7d..df04a920 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,7 @@ 2.8.6 1.4.9 0.2.5 + 1.7 4.2.2