diff --git a/config/alfresco/subsystems/fileServers/default/file-servers-context.xml b/config/alfresco/subsystems/fileServers/default/file-servers-context.xml index fc9cc2b8dc..993197f1d3 100644 --- a/config/alfresco/subsystems/fileServers/default/file-servers-context.xml +++ b/config/alfresco/subsystems/fileServers/default/file-servers-context.xml @@ -260,6 +260,11 @@ ${nfs.portMapperPort} + + + ${nfs.rpcRegisterPort} + + ${nfs.portMapperEnabled} diff --git a/config/alfresco/subsystems/fileServers/default/file-servers.properties b/config/alfresco/subsystems/fileServers/default/file-servers.properties index 2e0572a540..5b7216c03a 100644 --- a/config/alfresco/subsystems/fileServers/default/file-servers.properties +++ b/config/alfresco/subsystems/fileServers/default/file-servers.properties @@ -57,6 +57,10 @@ nfs.enabled=false nfs.mountServerPort=0 nfs.nfsServerPort=2049 +# RPC registration port, 0 will allocate next available port +# Some portmapper/rpcbind services require a privileged port to be used +nfs.rpcRegisterPort=0 + # To disable NFS and mount server registering with a portmapper set nfs.portMapperPort to -1 nfs.portMapperPort=111 # Enable the builtin portmapper service diff --git a/source/java/org/alfresco/filesys/ServerConfigurationBean.java b/source/java/org/alfresco/filesys/ServerConfigurationBean.java index 44d408ee5d..9e677eb27b 100644 --- a/source/java/org/alfresco/filesys/ServerConfigurationBean.java +++ b/source/java/org/alfresco/filesys/ServerConfigurationBean.java @@ -1730,6 +1730,20 @@ public class ServerConfigurationBean extends AbstractServerConfigurationBean { } } + // Check for an RPC registration port + + elem = config.getConfigElement("RPCRegisterPort"); + if ( elem != null) { + try { + nfsConfig.setRPCRegistrationPort( Integer.parseInt(elem.getValue())); + if ( nfsConfig.getRPCRegistrationPort() <= 0 || nfsConfig.getRPCRegistrationPort() >= 65535) + throw new AlfrescoRuntimeException("RPC registration port out of valid range"); + } + catch (NumberFormatException ex) { + throw new AlfrescoRuntimeException("Invalid RPC registration port"); + } + } + // Check if NFS debug is enabled elem = config.getConfigElement("debug"); diff --git a/source/java/org/alfresco/filesys/config/NFSConfigBean.java b/source/java/org/alfresco/filesys/config/NFSConfigBean.java index 16f53488cc..b63f525350 100644 --- a/source/java/org/alfresco/filesys/config/NFSConfigBean.java +++ b/source/java/org/alfresco/filesys/config/NFSConfigBean.java @@ -62,6 +62,9 @@ public class NFSConfigBean /** The rpc authenticator. */ private RpcAuthenticator rpcAuthenticator; + /** RPC register port */ + private Integer rpcRegisterPort; + /** * Checks if is server enabled. * @@ -293,4 +296,23 @@ public class NFSConfigBean this.rpcAuthenticator = rpcAuthenticator; } + /** + * Set the RPC registration port + * + * @param rpcRegPort Integer + */ + public void setRpcRegisterPort(Integer rpcRegPort) + { + this.rpcRegisterPort = rpcRegPort; + } + + /** + * Return the RPC register port + * + * @return Integer + */ + public Integer getRpcRegisterPort() + { + return rpcRegisterPort; + } } diff --git a/source/java/org/alfresco/filesys/config/ServerConfigurationBean.java b/source/java/org/alfresco/filesys/config/ServerConfigurationBean.java index f11e71fa05..1e1d599230 100644 --- a/source/java/org/alfresco/filesys/config/ServerConfigurationBean.java +++ b/source/java/org/alfresco/filesys/config/ServerConfigurationBean.java @@ -1441,6 +1441,16 @@ public class ServerConfigurationBean extends AbstractServerConfigurationBean throw new AlfrescoRuntimeException("NFS server port out of valid range"); } + // Check for an RPC registration port + + Integer rpcRegisterPort = nfsConfigBean.getRpcRegisterPort(); + if ( rpcRegisterPort != null) + { + nfsConfig.setRPCRegistrationPort( rpcRegisterPort); + if ( nfsConfig.getRPCRegistrationPort() < 0 || nfsConfig.getRPCRegistrationPort() >= 65535) + throw new AlfrescoRuntimeException("RPC registrtion port out of valid range"); + } + // Check for NFS debug flags String flags = nfsConfigBean.getDebugFlags();