Hello,

 What does your log say?



2011/7/28 Fabio Melo <fabio.f...@gmail.com>

> Hi All,
>
> I'm facing some problem while coding a server server using Apache FTP
> server.
>
> I'm using the code bellow to create a FTP server (MyFTPServer), when a run
> this piece of code I'm not able to connect through a FTP client such as
> Filezilla, WinSCP and My own FTP client into my ftp server.
>
> There is also bellow My FTP Client which represent my FTP Client code for
> connect.
>
> Does any body knows what I am doing wrong?
>
> Thanks in advance
>
>  ====================  MyFTPServer=================
> import java.io.File;
> import java.io.FileOutputStream;
> import java.io.IOException;
> import java.io.OutputStream;
> import java.util.ArrayList;
> import java.util.HashMap;
> import java.util.List;
>
> import org.apache.ftpserver.FtpServer;
> import org.apache.ftpserver.FtpServerFactory;
> import org.apache.ftpserver.ftplet.Authority;
> import org.apache.ftpserver.ftplet.DataConnection;
> import org.apache.ftpserver.ftplet.DefaultFtpReply;
> import org.apache.ftpserver.ftplet.DefaultFtplet;
> import org.apache.ftpserver.ftplet.FtpException;
> import org.apache.ftpserver.ftplet.FtpReply;
> import org.apache.ftpserver.ftplet.FtpRequest;
> import org.apache.ftpserver.ftplet.FtpSession;
> import org.apache.ftpserver.ftplet.Ftplet;
> import org.apache.ftpserver.ftplet.FtpletResult;
> import org.apache.ftpserver.ftplet.UserManager;
> import org.apache.ftpserver.impl.LocalizedFtpReply;
> import org.apache.ftpserver.listener.ListenerFactory;
> import org.apache.ftpserver.ssl.SslConfigurationFactory;
> import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
> import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor;
> import org.apache.ftpserver.usermanager.impl.BaseUser;
> import org.apache.ftpserver.usermanager.impl.WritePermission;
>
> public class FTPServerTest extends DefaultFtplet {
> public FTPServerTest() {
>  try {
> FtpServerFactory serverFactory = new FtpServerFactory();
>  PropertiesUserManagerFactory userManagerFactory = new
> PropertiesUserManagerFactory();
>  ListenerFactory factory = new ListenerFactory();
> factory.setPort(2221);
>  userManagerFactory.setFile(new File("myusers.properties"));
> userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
>  UserManager um = userManagerFactory.createUserManager();
> BaseUser user = new BaseUser();
>  // define SSL configuration
> SslConfigurationFactory ssl = new SslConfigurationFactory();
>  ssl.setKeystoreFile(new File("ftpserver.jks"));
> ssl.setKeystorePassword("password");
>  // set the SSL configuration for the listener
> factory.setSslConfiguration(ssl.createSslConfiguration());
>  factory.setImplicitSsl(false);
>  List<Authority> authorities = new ArrayList<Authority>();
>  authorities.add(new WritePermission());
> user.setAuthorities(authorities);
>  user.setName("myNewUser");
> user.setPassword("secret");
>  um.save(user);
> serverFactory.setUserManager(um);
>  serverFactory.addListener("default", factory.createListener());
> HashMap<String, Ftplet> ftplets = new HashMap<String, Ftplet>(0);
>  ftplets.put("DEFAULT", this);
> serverFactory.setFtplets(ftplets);
>  // start the server
> FtpServer server = serverFactory.createServer();
> server.start();
>
> } catch (FtpException e) {
> e.printStackTrace();
> }
>  }
>
> public static void main(String[] args) {
> new FTPServerTest();
>  }
>
> @Override
> public FtpletResult onConnect(FtpSession session) throws FtpException,
>  IOException {
> System.out.println("onConnect");
> return super.onConnect(session);
>  }
>
> @Override
> public FtpletResult onLogin(FtpSession session, FtpRequest request)
>  throws FtpException, IOException {
> System.out.println("onLogin");
>  return super.onLogin(session, request);
> }
>  @Override
> public FtpletResult onUploadStart(FtpSession session, FtpRequest request)
> throws FtpException, IOException {
>  String requestedFile = request.getArgument();
>
>        OutputStream in =  new FileOutputStream(requestedFile);
>
>
>        // open data connection
>        DataConnection out = null;
>        session.write(new DefaultFtpReply(150, "Getting data connection."));
>        try {
>            out = session.getDataConnection().openConnection();
>        } catch (Exception ex) {
>        System.out.println("Exception");
>        }
>        if (out == null) {
>        System.out.println("onUpload - out null");
>            return FtpletResult.SKIP;
>        }
>
>        // transfer data
>        try {
>
>
>            out.transferFromClient(session,in);
>        } finally {
>        session.write(new DefaultFtpReply(226, "Transfer Complete."));
>            session.getDataConnection().closeDataConnection();
>            in.close();
>        }
>        System.out.println("onUpload -  end");
>        return FtpletResult.SKIP;
>    }
>  @Override
> public FtpletResult onUploadEnd(FtpSession session, FtpRequest request){
>  System.out.println("fim do up");
> return FtpletResult.DEFAULT;
>  }
> }
>
> ========================My FTP
> Client================================================
>
> import java.io.FileInputStream;
> import java.io.IOException;
> import java.net.SocketException;
>
> import org.apache.commons.net.ftp.FTPClient;
> import org.apache.commons.net.ftp.FTPFile;
>
>
> public class FTPClientTest {
>
>    public static void main(String[] args) {
>       try {
>            FTPClient ftpClient = new FTPClient();
>            //connect and login
>
>            ftpClient.connect("127.0.0.1", 2221);
>            ftpClient.login("myNewUser", "secret");
>
>            //file
>            FileInputStream fis = null;
>            String filename = "README.txt";
>            fis = new
> FileInputStream("C:\\Users\\fam2\\Desktop\\README.txt");
>            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
>
>            //
>            // Store file to server
>            //
>            ftpClient.storeFile(filename, fis);
>            // System.out.println("Okay");
>            fis.close();
>            ftpClient.disconnect();
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>    }
>
>
> }
>

Reply via email to