450 lines
9.2 KiB
Java

/*
* Copyright (C) 2005 Alfresco, Inc.
*
* Licensed under the Mozilla Public License version 1.1
* with a permitted attribution clause. You may obtain a
* copy of the License at
*
* http://www.alfresco.org/legal/license.txt
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the
* License.
*/
package org.alfresco.filesys.server.auth;
import org.alfresco.service.cmr.repository.NodeRef;
import net.sf.acegisecurity.Authentication;
/**
* Client Information Class
*
* <p>The client information class holds the details of a remote user from a session setup or tree
* connect request.
*
* @author GKSpencer
*/
public class ClientInfo
{
// Logon types
public final static int LogonNormal = 0;
public final static int LogonGuest = 1;
public final static int LogonNull = 2;
public final static int LogonAdmin = 3;
// Logon type strings
private static final String[] _logonTypStr = { "Normal", "Guest", "Null", "Administrator" };
// User name and password
private String m_user;
private byte[] m_password;
// ANSI encrypted password
private byte[] m_ansiPwd;
// Logon type
private int m_logonType;
// User's domain
private String m_domain;
// Operating system type
private String m_opsys;
// Remote network address
private String m_ipAddr;
// Authentication token
private Authentication m_authToken;
// Home folder node
private NodeRef m_homeNode;
/**
* Class constructor
*
* @param user User name
* @param pwd Password
*/
public ClientInfo(String user, byte[] pwd)
{
setUserName(user);
setPassword(pwd);
}
/**
* Get the remote users domain.
*
* @return String
*/
public final String getDomain()
{
return m_domain;
}
/**
* Get the remote operating system
*
* @return String
*/
public final String getOperatingSystem()
{
return m_opsys;
}
/**
* Get the password.
*
* @return String.
*/
public final byte[] getPassword()
{
return m_password;
}
/**
* Return the password as a string
*
* @return String
*/
public final String getPasswordAsString()
{
if (m_password != null)
return new String(m_password);
return null;
}
/**
* Return the password as a character array
*
* @return char[]
*/
public final char[] getPasswordAsCharArray()
{
char[] cpwd = null;
if (m_password != null)
{
String pwd = new String(m_password);
cpwd = new char[pwd.length()];
pwd.getChars(0, pwd.length(), cpwd, 0);
}
return cpwd;
}
/**
* Determine if the client has specified an ANSI password
*
* @return boolean
*/
public final boolean hasANSIPassword()
{
return m_ansiPwd != null ? true : false;
}
/**
* Return the ANSI encrypted password
*
* @return byte[]
*/
public final byte[] getANSIPassword()
{
return m_ansiPwd;
}
/**
* Return the ANSI password as a string
*
* @return String
*/
public final String getANSIPasswordAsString()
{
if (m_ansiPwd != null)
return new String(m_ansiPwd);
return null;
}
/**
* Get the user name.
*
* @return String
*/
public final String getUserName()
{
return m_user;
}
/**
* Return the logon type
*
* @return int
*/
public final int getLogonType()
{
return m_logonType;
}
/**
* Return the logon type as a string
*
* @return String
*/
public final String getLogonTypeString()
{
return _logonTypStr[m_logonType];
}
/**
* Determine if the user is logged on as a guest
*
* @return boolean
*/
public final boolean isGuest()
{
return m_logonType == LogonGuest ? true : false;
}
/**
* Determine if the session is a null session
*
* @return boolean
*/
public final boolean isNullSession()
{
return m_logonType == LogonNull ? true : false;
}
/**
* Determine if the user if logged on as an administrator
*
* @return boolean
*/
public final boolean isAdministrator()
{
return m_logonType == LogonAdmin ? true : false;
}
/**
* Determine if the client network address has been set
*
* @return boolean
*/
public final boolean hasClientAddress()
{
return m_ipAddr != null ? true : false;
}
/**
* Return the client network address
*
* @return String
*/
public final String getClientAddress()
{
return m_ipAddr;
}
/**
* Check if the client has an authentication token
*
* @return boolean
*/
public final boolean hasAuthenticationToken()
{
return m_authToken != null ? true : false;
}
/**
* Return the authentication token
*
* @return Authentication
*/
public final Authentication getAuthenticationToken()
{
return m_authToken;
}
/**
* Check if the client has a home folder node
*
* @return boolean
*/
public final boolean hasHomeFolder()
{
return m_homeNode != null ? true : false;
}
/**
* Return the home folder node
*
* @return NodeRef
*/
public final NodeRef getHomeFolder()
{
return m_homeNode;
}
/**
* Set the remote users domain
*
* @param domain Remote users domain
*/
public final void setDomain(String domain)
{
m_domain = domain;
}
/**
* Set the remote users operating system type.
*
* @param opsys Remote operating system
*/
public final void setOperatingSystem(String opsys)
{
m_opsys = opsys;
}
/**
* Set the password.
*
* @param pwd byte[]
*/
public final void setPassword(byte[] pwd)
{
m_password = pwd;
}
/**
* Set the ANSI encrypted password
*
* @param pwd byte[]
*/
public final void setANSIPassword(byte[] pwd)
{
m_ansiPwd = pwd;
}
/**
* Set the password
*
* @param pwd Password string.
*/
public final void setPassword(String pwd)
{
if (pwd != null)
m_password = pwd.getBytes();
else
m_password = null;
}
/**
* Set the user name
*
* @param user User name string.
*/
public final void setUserName(String user)
{
m_user = user;
}
/**
* Set the logon type
*
* @param logonType int
*/
public final void setLogonType(int logonType)
{
m_logonType = logonType;
}
/**
* Set the guest logon flag
*
* @param guest boolean
*/
public final void setGuest(boolean guest)
{
setLogonType(guest == true ? LogonGuest : LogonNormal);
}
/**
* Set the client network address
*
* @param addr String
*/
public final void setClientAddress(String addr)
{
m_ipAddr = addr;
}
/**
* Set the authentication toekn
*
* @param token Authentication
*/
public final void setAuthenticationToken(Authentication token)
{
m_authToken = token;
}
/**
* Set the home folder node
*
* @param homeNode NodeRef
*/
public final void setHomeFolder(NodeRef homeNode)
{
m_homeNode = homeNode;
}
/**
* Display the client information as a string
*
* @return String
*/
public String toString()
{
StringBuffer str = new StringBuffer();
str.append("[");
str.append(getUserName());
str.append(":");
str.append(getPassword());
str.append(",");
str.append(getDomain());
str.append(",");
str.append(getOperatingSystem());
if (hasClientAddress())
{
str.append(",");
str.append(getClientAddress());
}
if ( hasAuthenticationToken())
{
str.append(",token=");
str.append(getAuthenticationToken());
}
if (isGuest())
str.append(",Guest");
str.append("]");
return str.toString();
}
}