0

I am trying to implement an FTP server in my application using the Apache FTP server library.

The server is up and running and working fine, but only once.

Note: I am using a hardcoded user for now. username: test and password: test

So in order:

  1. App is launched, server is started, lets all FTP clients login.

  2. App is killed by user.

  3. App is started by user and server is started. Replies 530 authentication failed to user logging in with username: test and password: test

After that it responds with 530 authentication failed

My code below for making the server:

public void makePropertiesFile(){
    File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Download/user.properties");
    if(file.exists() == false){
        try {
            file.createNewFile();
            logMessage("user.properties File did not exist, made one");
            properties = file;
            this.addUsers();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    else {
        logMessage("File already exists, no need to recreate");
        userManagerFactory = new PropertiesUserManagerFactory();
        userManagerFactory.setFile(properties);
        userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
        org.apache.ftpserver.ftplet.UserManager userManager = userManagerFactory.createUserManager();
        serverFactory.setUserManager(userManager);
    }
}

public void addUsers(){
    userManagerFactory = new PropertiesUserManagerFactory();
    userManagerFactory.setFile(properties);
    userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
    baseUser = new BaseUser();
    baseUser.setName("test");
    baseUser.setPassword("test");
    baseUser.setHomeDirectory(Environment.getExternalStorageDirectory().getAbsolutePath());
    baseUser.setEnabled(true);
    List<Authority> authorities = new ArrayList<Authority>();
    authorities.add(new WritePermission());
    baseUser.setAuthorities(authorities);
    org.apache.ftpserver.ftplet.UserManager userManager = userManagerFactory.createUserManager();
    try {
        userManager.save(baseUser);
    } catch (FtpException e) {
        e.printStackTrace();
        logMessage("Could not save User");
    }
    serverFactory.setUserManager(userManager);
}

public void start(){
    serverFactory = new FtpServerFactory();
    listenerFactory = new ListenerFactory();
    listenerFactory.setPort(port);
    serverFactory.addListener("default",listenerFactory.createListener());
    ftpServer = serverFactory.createServer();
    this.makePropertiesFile();
    try {
        ftpServer.start();
        logMessage("Started FTP server on port: " + port);
    } catch (FtpException e) {
        e.printStackTrace();
        logMessage("Failed to start FTP server on port: " + port);
    }

}
Maclaren
  • 259
  • 3
  • 13

1 Answers1

0

see this link http://androidexample.com/FTP_File_Upload_From_Sdcard_to_server/index.php?view=article_discription&aid=98&aaid=120

has a working project FTP with Android app