Merged V1.3 to HEAD (3117:3125)

svn merge svn://www.alfresco.org:3691/alfresco/BRANCHES/V1.3@3117 svn://www.alfresco.org:3691/alfresco/BRANCHES/V1.3@3125 .


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3402 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2006-07-26 09:43:07 +00:00
parent 133c4bc2f3
commit e80158b922
11 changed files with 180 additions and 43 deletions

View File

@@ -50,10 +50,6 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable
// Session Thread group // Session Thread group
private static final ThreadGroup THREAD_GROUP_SESSION = new ThreadGroup("FTP_SESSION_GROUP"); private static final ThreadGroup THREAD_GROUP_SESSION = new ThreadGroup("FTP_SESSION_GROUP");
// Server version
private static final String ServerVersion = "3.5.0";
// Listen backlog for the server socket // Listen backlog for the server socket
protected static final int LISTEN_BACKLOG = 10; protected static final int LISTEN_BACKLOG = 10;
@@ -100,10 +96,6 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable
{ {
super("FTP", config); super("FTP", config);
// Set the server version
setVersion(ServerVersion);
// Allocate the session lists // Allocate the session lists
m_sessions = new FTPSessionList(); m_sessions = new FTPSessionList();
@@ -365,7 +357,6 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable
if (logger.isDebugEnabled() && hasDebug()) if (logger.isDebugEnabled() && hasDebug())
{ {
logger.debug("FTP Server starting on port " + getPort()); logger.debug("FTP Server starting on port " + getPort());
logger.debug("Version " + isVersion());
} }
// Create a server socket to listen for incoming FTP session requests // Create a server socket to listen for incoming FTP session requests

View File

@@ -412,7 +412,7 @@ public class NetBIOSNameServer extends NetworkServer implements Runnable
// Allocate the datagram packet, using the add name buffer // Allocate the datagram packet, using the add name buffer
DatagramPacket pkt = new DatagramPacket(buf, len, dest, getPort()); DatagramPacket pkt = new DatagramPacket(buf, len, dest, RFCNetBIOSProtocol.NAME_PORT);
// Send the add name request // Send the add name request
@@ -469,7 +469,7 @@ public class NetBIOSNameServer extends NetworkServer implements Runnable
// Allocate the datagram packet, using the refresh name buffer // Allocate the datagram packet, using the refresh name buffer
DatagramPacket pkt = new DatagramPacket(buf, len, dest, getPort()); DatagramPacket pkt = new DatagramPacket(buf, len, dest, RFCNetBIOSProtocol.NAME_PORT);
// Send the refresh name request // Send the refresh name request
@@ -525,7 +525,7 @@ public class NetBIOSNameServer extends NetworkServer implements Runnable
// Allocate the datagram packet, using the add name buffer // Allocate the datagram packet, using the add name buffer
DatagramPacket pkt = new DatagramPacket(buf, len, dest, getPort()); DatagramPacket pkt = new DatagramPacket(buf, len, dest, RFCNetBIOSProtocol.NAME_PORT);
// Send the add name request // Send the add name request
@@ -683,7 +683,12 @@ public class NetBIOSNameServer extends NetworkServer implements Runnable
{ {
super("NetBIOS", config); super("NetBIOS", config);
// Set the NetBIOS name server port
setServerPort( config.getNetBIOSNamePort());
// Perform common constructor code // Perform common constructor code
commonConstructor(); commonConstructor();
} }
@@ -712,7 +717,6 @@ public class NetBIOSNameServer extends NetworkServer implements Runnable
// Set the local address to bind the server to, and server port // Set the local address to bind the server to, and server port
setBindAddress(getConfiguration().getNetBIOSBindAddress()); setBindAddress(getConfiguration().getNetBIOSBindAddress());
setServerPort(RFCNetBIOSProtocol.NAME_PORT);
// Copy the WINS server addresses, if set // Copy the WINS server addresses, if set
@@ -1716,7 +1720,6 @@ public class NetBIOSNameServer extends NetworkServer implements Runnable
protected final void sendPacket(NetBIOSPacket nbpkt, int len, InetAddress replyAddr, int replyPort) protected final void sendPacket(NetBIOSPacket nbpkt, int len, InetAddress replyAddr, int replyPort)
throws java.io.IOException throws java.io.IOException
{ {
// Allocate the datagram packet, using the add name buffer // Allocate the datagram packet, using the add name buffer
DatagramPacket pkt = new DatagramPacket(nbpkt.getBuffer(), len, replyAddr, replyPort); DatagramPacket pkt = new DatagramPacket(nbpkt.getBuffer(), len, replyAddr, replyPort);

View File

@@ -67,6 +67,7 @@ import org.alfresco.filesys.server.filesys.DiskInterface;
import org.alfresco.filesys.server.filesys.DiskSharedDevice; import org.alfresco.filesys.server.filesys.DiskSharedDevice;
import org.alfresco.filesys.server.filesys.HomeShareMapper; import org.alfresco.filesys.server.filesys.HomeShareMapper;
import org.alfresco.filesys.smb.ServerType; import org.alfresco.filesys.smb.ServerType;
import org.alfresco.filesys.smb.TcpipSMB;
import org.alfresco.filesys.util.IPAddress; import org.alfresco.filesys.util.IPAddress;
import org.alfresco.filesys.util.X64; import org.alfresco.filesys.util.X64;
import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.AuthenticationComponent;
@@ -182,6 +183,16 @@ public class ServerConfiguration implements ApplicationListener
private String m_broadcast; private String m_broadcast;
// NetBIOS ports
private int m_nbNamePort = RFCNetBIOSProtocol.NAME_PORT;
private int m_nbSessPort = RFCNetBIOSProtocol.PORT;
private int m_nbDatagramPort = RFCNetBIOSProtocol.DATAGRAM;
// Native SMB port
private int m_tcpSMBPort = TcpipSMB.PORT;
// Announce the server to network neighborhood, announcement interval in // Announce the server to network neighborhood, announcement interval in
// minutes // minutes
@@ -586,7 +597,7 @@ public class ServerConfiguration implements ApplicationListener
m_platform = PlatformType.LINUX; m_platform = PlatformType.LINUX;
else if (osName.startsWith("Mac OS X")) else if (osName.startsWith("Mac OS X"))
m_platform = PlatformType.MACOSX; m_platform = PlatformType.MACOSX;
else if (osName.startsWith("Solaris")) else if (osName.startsWith("Solaris") || osName.startsWith("SunOS"))
m_platform = PlatformType.SOLARIS; m_platform = PlatformType.SOLARIS;
} }
@@ -896,7 +907,48 @@ public class ServerConfiguration implements ApplicationListener
throw new AlfrescoRuntimeException( "Failed to get IP address(es) for the local server, check hosts file and/or DNS setup"); throw new AlfrescoRuntimeException( "Failed to get IP address(es) for the local server, check hosts file and/or DNS setup");
} }
}
// Check if the session port has been specified
String portNum = elem.getAttribute("sessionPort");
if ( portNum != null && portNum.length() > 0) {
try {
setNetBIOSSessionPort(Integer.parseInt(portNum));
if ( getNetBIOSSessionPort() <= 0 || getNetBIOSSessionPort() >= 65535)
throw new AlfrescoRuntimeException("NetBIOS session port out of valid range");
}
catch (NumberFormatException ex) {
throw new AlfrescoRuntimeException("Invalid NetBIOS session port");
}
}
// Check if the name port has been specified
portNum = elem.getAttribute("namePort");
if ( portNum != null && portNum.length() > 0) {
try {
setNetBIOSNamePort(Integer.parseInt(portNum));
if ( getNetBIOSNamePort() <= 0 || getNetBIOSNamePort() >= 65535)
throw new AlfrescoRuntimeException("NetBIOS name port out of valid range");
}
catch (NumberFormatException ex) {
throw new AlfrescoRuntimeException("Invalid NetBIOS name port");
}
}
// Check if the datagram port has been specified
portNum = elem.getAttribute("datagramPort");
if ( portNum != null && portNum.length() > 0) {
try {
setNetBIOSDatagramPort(Integer.parseInt(portNum));
if ( getNetBIOSDatagramPort() <= 0 || getNetBIOSDatagramPort() >= 65535)
throw new AlfrescoRuntimeException("NetBIOS datagram port out of valid range");
}
catch (NumberFormatException ex) {
throw new AlfrescoRuntimeException("Invalid NetBIOS datagram port");
}
} }
} }
else else
@@ -937,6 +989,20 @@ public class ServerConfiguration implements ApplicationListener
// Enable the TCP/IP SMB support, if enabled for this platform // Enable the TCP/IP SMB support, if enabled for this platform
setTcpipSMB(platformOK); setTcpipSMB(platformOK);
// Check if the port has been specified
String portNum = elem.getAttribute("port");
if ( portNum != null && portNum.length() > 0) {
try {
setTcpipSMBPort(Integer.parseInt(portNum));
if ( getTcpipSMBPort() <= 0 || getTcpipSMBPort() >= 65535)
throw new AlfrescoRuntimeException("TCP/IP SMB port out of valid range");
}
catch (NumberFormatException ex) {
throw new AlfrescoRuntimeException("Invalid TCP/IP SMB port");
}
}
} }
else else
{ {
@@ -2013,6 +2079,36 @@ public class ServerConfiguration implements ApplicationListener
return m_nbBindAddress; return m_nbBindAddress;
} }
/**
* Return the NetBIOS name server port
*
* @return int
*/
public final int getNetBIOSNamePort()
{
return m_nbNamePort;
}
/**
* Return the NetBIOS session port
*
* @return int
*/
public final int getNetBIOSSessionPort()
{
return m_nbSessPort;
}
/**
* Return the NetBIOS datagram port
*
* @return int
*/
public final int getNetBIOSDatagramPort()
{
return m_nbDatagramPort;
}
/** /**
* Return the network broadcast mask to be used for broadcast datagrams. * Return the network broadcast mask to be used for broadcast datagrams.
* *
@@ -2154,6 +2250,16 @@ public class ServerConfiguration implements ApplicationListener
return m_win32NBUseWinsock; return m_win32NBUseWinsock;
} }
/**
* Return the native SMB port
*
* @return int
*/
public final int getTcpipSMBPort()
{
return m_tcpSMBPort;
}
/** /**
* Return the timezone name * Return the timezone name
* *
@@ -2716,6 +2822,36 @@ public class ServerConfiguration implements ApplicationListener
m_netBIOSEnable = ena; m_netBIOSEnable = ena;
} }
/**
* Set the NetBIOS name server port
*
* @param port int
*/
public final void setNetBIOSNamePort(int port)
{
m_nbNamePort = port;
}
/**
* Set the NetBIOS session port
*
* @param port int
*/
public final void setNetBIOSSessionPort(int port)
{
m_nbSessPort = port;
}
/**
* Set the NetBIOS datagram port
*
* @param port int
*/
public final void setNetBIOSDatagramPort(int port)
{
m_nbDatagramPort = port;
}
/** /**
* Enable/disable the TCP/IP SMB support * Enable/disable the TCP/IP SMB support
* *
@@ -2726,6 +2862,16 @@ public class ServerConfiguration implements ApplicationListener
m_tcpSMBEnable = ena; m_tcpSMBEnable = ena;
} }
/**
* Set the TCP/IP SMB port
*
* @param port int
*/
public final void setTcpipSMBPort( int port)
{
m_tcpSMBPort = port;
}
/** /**
* Enable/disable the Win32 NetBIOS SMB support * Enable/disable the Win32 NetBIOS SMB support
* *

View File

@@ -198,11 +198,15 @@ public class TcpipNetBIOSHostAnnouncer extends HostAnnouncer
*/ */
protected void sendAnnouncement(String hostName, byte[] buf, int offset, int len) throws Exception protected void sendAnnouncement(String hostName, byte[] buf, int offset, int len) throws Exception
{ {
// DEBUG
if ( logger.isDebugEnabled())
logger.debug("Send NetBIOS host announcement to " + m_bcastAddr.getHostAddress() + ", port " + m_bcastPort);
// Send the host announce datagram // Send the host announce datagram
m_nbdgram.SendDatagram(NetBIOSDatagram.DIRECT_GROUP, hostName, NetBIOSName.FileServer, getDomain(), m_nbdgram.SendDatagram(NetBIOSDatagram.DIRECT_GROUP, hostName, NetBIOSName.FileServer, getDomain(),
NetBIOSName.MasterBrowser, buf, len, offset); NetBIOSName.MasterBrowser, buf, len, offset, m_bcastAddr, m_bcastPort);
} }
/** /**

View File

@@ -20,7 +20,6 @@ import java.net.InetAddress;
import java.net.Socket; import java.net.Socket;
import java.net.SocketException; import java.net.SocketException;
import org.alfresco.filesys.netbios.RFCNetBIOSProtocol;
import org.alfresco.filesys.server.config.ServerConfiguration; import org.alfresco.filesys.server.config.ServerConfiguration;
import org.alfresco.filesys.smb.mailslot.TcpipNetBIOSHostAnnouncer; import org.alfresco.filesys.smb.mailslot.TcpipNetBIOSHostAnnouncer;
@@ -154,7 +153,7 @@ public class NetBIOSSessionSocketHandler extends SessionSocketHandler
// Create the NetBIOS SMB handler // Create the NetBIOS SMB handler
SessionSocketHandler sessHandler = new NetBIOSSessionSocketHandler(server, RFCNetBIOSProtocol.PORT, config SessionSocketHandler sessHandler = new NetBIOSSessionSocketHandler(server, config.getNetBIOSSessionPort(), config
.getSMBBindAddress(), sockDbg); .getSMBBindAddress(), sockDbg);
sessHandler.initialize(); sessHandler.initialize();
@@ -171,7 +170,7 @@ public class NetBIOSSessionSocketHandler extends SessionSocketHandler
// DEBUG // DEBUG
if (logger.isDebugEnabled() && sockDbg) if (logger.isDebugEnabled() && sockDbg)
logger.debug("TCP NetBIOS session handler created"); logger.debug("TCP NetBIOS session handler created on port " + config.getNetBIOSSessionPort());
// Check if a host announcer should be created // Check if a host announcer should be created
@@ -188,6 +187,7 @@ public class NetBIOSSessionSocketHandler extends SessionSocketHandler
announcer.setDomain(config.getDomainName()); announcer.setDomain(config.getDomainName());
announcer.setComment(config.getComment()); announcer.setComment(config.getComment());
announcer.setBindAddress(config.getSMBBindAddress()); announcer.setBindAddress(config.getSMBBindAddress());
announcer.setPort(config.getNetBIOSDatagramPort());
// Set the announcement interval // Set the announcement interval
@@ -222,7 +222,7 @@ public class NetBIOSSessionSocketHandler extends SessionSocketHandler
// DEBUG // DEBUG
if (logger.isDebugEnabled() && sockDbg) if (logger.isDebugEnabled() && sockDbg)
logger.debug("TCP NetBIOS host announcer created"); logger.debug("TCP NetBIOS host announcer created on port " + config.getNetBIOSDatagramPort());
} }
} }
} }

View File

@@ -80,15 +80,6 @@ public class SMBServer extends NetworkFileServer implements Runnable
private int m_srvType = ServerType.WorkStation + ServerType.Server + ServerType.NTServer; private int m_srvType = ServerType.WorkStation + ServerType.Server + ServerType.NTServer;
// Next available session id
private int m_sessId;
// Server shutdown flag and server active flag
private boolean m_shutdown = false;
private boolean m_active = false;
// Server GUID // Server GUID
private UUID m_serverGUID; private UUID m_serverGUID;
@@ -472,7 +463,7 @@ public class SMBServer extends NetworkFileServer implements Runnable
// Clear the server shutdown flag // Clear the server shutdown flag
m_shutdown = false; setShutdown(false);
// Get the list of IP addresses the server is bound to // Get the list of IP addresses the server is bound to
@@ -529,7 +520,7 @@ public class SMBServer extends NetworkFileServer implements Runnable
// Wait for incoming connection requests // Wait for incoming connection requests
while (m_shutdown == false) while (hasShutdown() == false)
{ {
// Sleep for a while // Sleep for a while
@@ -569,7 +560,7 @@ public class SMBServer extends NetworkFileServer implements Runnable
// Do not report an error if the server has shutdown, closing the server socket // Do not report an error if the server has shutdown, closing the server socket
// causes an exception to be thrown. // causes an exception to be thrown.
if (m_shutdown == false) if (hasShutdown() == false)
{ {
logger.error("Server error : ", ex); logger.error("Server error : ", ex);
@@ -654,7 +645,7 @@ public class SMBServer extends NetworkFileServer implements Runnable
// Indicate that the server is closing // Indicate that the server is closing
m_shutdown = true; setShutdown(true);
try try
{ {

View File

@@ -21,7 +21,6 @@ import java.net.Socket;
import java.net.SocketException; import java.net.SocketException;
import org.alfresco.filesys.server.config.ServerConfiguration; import org.alfresco.filesys.server.config.ServerConfiguration;
import org.alfresco.filesys.smb.TcpipSMB;
/** /**
* Native SMB Session Socket Handler Class * Native SMB Session Socket Handler Class
@@ -153,7 +152,7 @@ public class TcpipSMBSessionSocketHandler extends SessionSocketHandler
// Create the NetBIOS SMB handler // Create the NetBIOS SMB handler
SessionSocketHandler sessHandler = new TcpipSMBSessionSocketHandler(server, TcpipSMB.PORT, config SessionSocketHandler sessHandler = new TcpipSMBSessionSocketHandler(server, config.getTcpipSMBPort(), config
.getSMBBindAddress(), sockDbg); .getSMBBindAddress(), sockDbg);
sessHandler.initialize(); sessHandler.initialize();
@@ -168,6 +167,6 @@ public class TcpipSMBSessionSocketHandler extends SessionSocketHandler
// DEBUG // DEBUG
if (logger.isDebugEnabled() && sockDbg) if (logger.isDebugEnabled() && sockDbg)
logger.debug("Native SMB TCP session handler created"); logger.debug("Native SMB TCP session handler created on port " + config.getTcpipSMBPort());
} }
} }

View File

@@ -107,7 +107,7 @@ public class DictionaryComponent implements DictionaryService
*/ */
public Collection<QName> getAllTypes() public Collection<QName> getAllTypes()
{ {
Collection<QName> types = new ArrayList<QName>(); Collection<QName> types = new ArrayList<QName>(100);
for (QName model : getAllModels()) for (QName model : getAllModels())
{ {
types.addAll(getTypes(model)); types.addAll(getTypes(model));
@@ -136,7 +136,7 @@ public class DictionaryComponent implements DictionaryService
*/ */
public Collection<QName> getAllAspects() public Collection<QName> getAllAspects()
{ {
Collection<QName> aspects = new ArrayList<QName>(); Collection<QName> aspects = new ArrayList<QName>(64);
for (QName model : getAllModels()) for (QName model : getAllModels())
{ {
aspects.addAll(getAspects(model)); aspects.addAll(getAspects(model));

View File

@@ -18,6 +18,7 @@ package org.alfresco.repo.security.permissions.impl;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -329,7 +330,7 @@ public class PermissionServiceImpl implements PermissionServiceSPI, Initializing
public Set<String> getSettablePermissions(QName type) public Set<String> getSettablePermissions(QName type)
{ {
Set<PermissionReference> settable = getSettablePermissionReferences(type); Set<PermissionReference> settable = getSettablePermissionReferences(type);
Set<String> strings = new HashSet<String>(settable.size()); Set<String> strings = new LinkedHashSet<String>(settable.size());
for (PermissionReference pr : settable) for (PermissionReference pr : settable)
{ {
strings.add(getPermission(pr)); strings.add(getPermission(pr));

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -277,7 +278,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
private Set<PermissionReference> getAllPermissionsImpl(QName type, boolean exposedOnly) private Set<PermissionReference> getAllPermissionsImpl(QName type, boolean exposedOnly)
{ {
Set<PermissionReference> permissions = new HashSet<PermissionReference>(); Set<PermissionReference> permissions = new LinkedHashSet<PermissionReference>();
if (dictionaryService.getClass(type).isAspect()) if (dictionaryService.getClass(type).isAspect())
{ {
addAspectPermissions(type, permissions, exposedOnly); addAspectPermissions(type, permissions, exposedOnly);

View File

@@ -19,6 +19,7 @@ package org.alfresco.repo.security.permissions.impl.model;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import org.alfresco.service.namespace.NamespacePrefixResolver; import org.alfresco.service.namespace.NamespacePrefixResolver;
@@ -44,7 +45,7 @@ public class PermissionSet implements XMLModelInitialisable
private boolean exposeAll; private boolean exposeAll;
private Set<PermissionGroup> permissionGroups = new HashSet<PermissionGroup>(); private Set<PermissionGroup> permissionGroups = new LinkedHashSet<PermissionGroup>();
private Set<Permission> permissions = new HashSet<Permission>(); private Set<Permission> permissions = new HashSet<Permission>();