openvidu-server: asOptionalInetAddress less restrictive

pull/656/head
pabloFuente 2021-09-21 12:52:31 +02:00
parent c23f6910f0
commit 1f3f439e22
3 changed files with 24 additions and 6 deletions

View File

@ -267,6 +267,11 @@
<artifactId>spring-boot-starter-websocket</artifactId> <artifactId>spring-boot-starter-websocket</artifactId>
<version>${version.spring-boot}</version> <version>${version.spring-boot}</version>
</dependency> </dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>${version.commons-validator}</version>
</dependency>
<dependency> <dependency>
<groupId>com.github.docker-java</groupId> <groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId> <artifactId>docker-java</artifactId>

View File

@ -40,6 +40,8 @@ import javax.annotation.PostConstruct;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; 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.Header;
import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicHeader;
import org.kurento.jsonrpc.JsonUtils; import org.kurento.jsonrpc.JsonUtils;
@ -521,8 +523,8 @@ public class OpenviduConfig {
protected List<String> getNonUserProperties() { protected List<String> getNonUserProperties() {
return Arrays.asList("server.port", "SERVER_PORT", "DOTENV_PATH", "COTURN_IP", "COTURN_REDIS_IP", 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_REDIS_DBNAME", "COTURN_REDIS_PASSWORD", "COTURN_REDIS_CONNECT_TIMEOUT", "COTURN_INTERNAL_RELAY",
"COTURN_INTERNAL_RELAY", "OPENVIDU_RECORDING_IMAGE", "OPENVIDU_RECORDING_ENABLE_GPU"); "OPENVIDU_RECORDING_IMAGE", "OPENVIDU_RECORDING_ENABLE_GPU");
} }
// Properties // Properties
@ -544,7 +546,8 @@ public class OpenviduConfig {
coturnRedisConnectTimeout = getValue("COTURN_REDIS_CONNECT_TIMEOUT"); 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"); coturnInternalRelay = asBoolean("COTURN_INTERNAL_RELAY");
openviduSecret = asNonEmptyAlphanumericString("OPENVIDU_SECRET", openviduSecret = asNonEmptyAlphanumericString("OPENVIDU_SECRET",
@ -864,8 +867,17 @@ public class OpenviduConfig {
protected String asOptionalInetAddress(String property) { protected String asOptionalInetAddress(String property) {
String inetAddress = getValue(property); String inetAddress = getValue(property);
if (inetAddress != null && !inetAddress.isEmpty()) { 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 { try {
Inet6Address.getByName(inetAddress).getHostAddress(); Inet6Address.getByName(inetAddress).getHostAddress();
return inetAddress;
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
addError(property, "Is not a valid Internet Address (IP or Domain Name): " + e.getMessage()); addError(property, "Is not a valid Internet Address (IP or Domain Name): " + e.getMessage());
} }
@ -1042,8 +1054,8 @@ public class OpenviduConfig {
} else { } else {
String[] customImageSplit = configuredImage.split(":"); String[] customImageSplit = configuredImage.split(":");
if (customImageSplit.length != 2) { if (customImageSplit.length != 2) {
addError(recordingImageProperty, "The docker image configured is not valid. " + addError(recordingImageProperty, "The docker image configured is not valid. "
"This parameter must have this format: '<image>:<tag>'"); + "This parameter must have this format: '<image>:<tag>'");
} else { } else {
String customImageName = customImageSplit[0]; String customImageName = customImageSplit[0];
String customVersion = customImageSplit[1]; String customVersion = customImageSplit[1];
@ -1061,7 +1073,7 @@ public class OpenviduConfig {
return mediaNodesPublicIps; return mediaNodesPublicIps;
} }
List<String> mediaNodesPublicIpsList = asJsonStringsArray(propertyName); List<String> mediaNodesPublicIpsList = asJsonStringsArray(propertyName);
for(String ipPairStr: mediaNodesPublicIpsList) { for (String ipPairStr : mediaNodesPublicIpsList) {
String[] ipPair = ipPairStr.trim().split(":"); String[] ipPair = ipPairStr.trim().split(":");
if (ipPair.length != 2) { if (ipPair.length != 2) {
addError(propertyName, "Not valid ip pair in " + propertyName + ": " + ipPairStr); addError(propertyName, "Not valid ip pair in " + propertyName + ": " + ipPairStr);

View File

@ -59,6 +59,7 @@
<version.gson>2.8.6</version.gson> <version.gson>2.8.6</version.gson>
<version.unirest>1.4.9</version.unirest> <version.unirest>1.4.9</version.unirest>
<version.jcodec>0.2.5</version.jcodec> <version.jcodec>0.2.5</version.jcodec>
<version.commons-validator>1.7</version.commons-validator>
<version.webdrivermanager>4.2.2</version.webdrivermanager> <version.webdrivermanager>4.2.2</version.webdrivermanager>