FTP-сервер Android аутентифицируется один раз

Я пытаюсь реализовать FTP-сервер в своем приложении, используя файл Apache FTP server library.

Сервер запущен и работает нормально, но только один раз.

Примечание. Сейчас я использую жестко закодированного пользователя. username: test и password: test

Итак по порядку:

  1. Приложение запущено, сервер запущен, все FTP-клиенты могут войти в систему.

  2. Приложение убито пользователем.

  3. Приложение запускается пользователем, а сервер запускается. Отвечает 530 authentication failed пользователю, вошедшему в систему с username: test и password: test

После этого он отвечает 530 authentication failed

Мой код ниже для создания сервера:

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);
    }

}

person Maclaren    schedule 16.08.2015    source источник


Ответы (1)


см. эту ссылку http://androidexample.com/FTP_File_Upload_From_Sdcard_to_server/index.php?view=article_discription&aid=98&aaid=120

имеет работающий проект FTP с приложением для Android

person Nilber Vittorazzi    schedule 17.08.2015