blob: cefad7741833ffee0df72c25a6153b2a241b2354 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.apache.ftpserver.impl;
import java.net.InetSocketAddress;
import java.security.cert.Certificate;
import java.util.Date;
import java.util.UUID;
import org.apache.ftpserver.ftplet.DataConnectionFactory;
import org.apache.ftpserver.ftplet.DataType;
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpFile;
import org.apache.ftpserver.ftplet.FtpReply;
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Structure;
import org.apache.ftpserver.ftplet.User;
/**
* <strong>Internal class, do not use directly.</strong>
*
* FTP session
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public class DefaultFtpSession implements FtpSession {
private FtpIoSession ioSession;
/**
* Default constructor.
*/
public DefaultFtpSession(final FtpIoSession ioSession) {
this.ioSession = ioSession;
}
/**
* Is logged-in
*/
public boolean isLoggedIn() {
return ioSession.isLoggedIn();
}
/**
* Get FTP data connection.
*/
public DataConnectionFactory getDataConnection() {
return ioSession.getDataConnection();
}
/**
* Get file system view.
*/
public FileSystemView getFileSystemView() {
return ioSession.getFileSystemView();
}
/**
* Get connection time.
*/
public Date getConnectionTime() {
return new Date(ioSession.getCreationTime());
}
/**
* Get the login time.
*/
public Date getLoginTime() {
return ioSession.getLoginTime();
}
/**
* Get last access time.
*/
public Date getLastAccessTime() {
return ioSession.getLastAccessTime();
}
/**
* Get file offset.
*/
public long getFileOffset() {
return ioSession.getFileOffset();
}
/**
* Get rename from file object.
*/
public FtpFile getRenameFrom() {
return ioSession.getRenameFrom();
}
/**
* Returns user name entered in USER command
*
* @return user name entered in USER command
*/
public String getUserArgument() {
return ioSession.getUserArgument();
}
/**
* Get language.
*/
public String getLanguage() {
return ioSession.getLanguage();
}
/**
* Get user.
*/
public User getUser() {
return ioSession.getUser();
}
/**
* Get remote address
*/
public InetSocketAddress getClientAddress() {
if (ioSession.getRemoteAddress() instanceof InetSocketAddress) {
return ((InetSocketAddress) ioSession.getRemoteAddress());
} else {
return null;
}
}
/**
* Get attribute
*/
public Object getAttribute(final String name) {
if (name.startsWith(FtpIoSession.ATTRIBUTE_PREFIX)) {
throw new IllegalArgumentException(
"Illegal lookup of internal attribute");
}
return ioSession.getAttribute(name);
}
/**
* Set attribute.
*/
public void setAttribute(final String name, final Object value) {
if (name.startsWith(FtpIoSession.ATTRIBUTE_PREFIX)) {
throw new IllegalArgumentException(
"Illegal setting of internal attribute");
}
ioSession.setAttribute(name, value);
}
public int getMaxIdleTime() {
return ioSession.getMaxIdleTime();
}
public void setMaxIdleTime(final int maxIdleTime) {
ioSession.setMaxIdleTime(maxIdleTime);
}
/**
* Get the data type.
*/
public DataType getDataType() {
return ioSession.getDataType();
}
/**
* Get structure.
*/
public Structure getStructure() {
return ioSession.getStructure();
}
public Certificate[] getClientCertificates() {
return ioSession.getClientCertificates();
}
public InetSocketAddress getServerAddress() {
if (ioSession.getLocalAddress() instanceof InetSocketAddress) {
return ((InetSocketAddress) ioSession.getLocalAddress());
} else {
return null;
}
}
public int getFailedLogins() {
return ioSession.getFailedLogins();
}
public void removeAttribute(final String name) {
if (name.startsWith(FtpIoSession.ATTRIBUTE_PREFIX)) {
throw new IllegalArgumentException(
"Illegal removal of internal attribute");
}
ioSession.removeAttribute(name);
}
public void write(FtpReply reply) throws FtpException {
ioSession.write(reply);
}
public boolean isSecure() {
// TODO Auto-generated method stub
return ioSession.isSecure();
}
/**
* Increase the number of bytes written on the data connection
* @param increment The number of bytes written
*/
public void increaseWrittenDataBytes(int increment) {
ioSession.increaseWrittenDataBytes(increment);
}
/**
* Increase the number of bytes read on the data connection
* @param increment The number of bytes written
*/
public void increaseReadDataBytes(int increment) {
ioSession.increaseReadDataBytes(increment);
}
/**
* {@inheritDoc}
*/
public UUID getSessionId() {
return ioSession.getSessionId();
}
}