Impossible de se connecter au serveur FTP Apache

J’essaie d’intégrer le serveur FTP Apache dans mon application. J’ai suivi les instructions données ici mais j’ai rencontré quelques problèmes. Actuellement, je suis capable de faire fonctionner le serveur et de me connecter depuis mon navigateur, mais je ne peux pas me connecter. J’ai essayé admin / admin et anonyme / *, mais la connexion échoue à chaque fois. Dans le code source d’apacheftpserver-1.0.6 que j’avais téléchargé, les fichiers associés au gestionnaire d’utilisateur se trouvent dans res / conf, mais lorsque je tente de faire correspondre ce chemin dans mon propre programme, je reçois une erreur indiquant nom du répertoire de ressources “et je suis incapable de générer. J’ai également essayé d’inclure directement les fichiers users.properties et ftpd-typical.xml dans le fichier principal, mais je ne peux pas me connecter à nouveau. Il semble que mon projet ne réalise pas que ces fichiers sont présents.

Quelqu’un at-il de l’expérience avec le serveur FTP Apache qui pourrait me dire comment inclure correctement ces fichiers pour que je puisse me connecter à mon serveur?

Merci!

PS Je ne pense pas que cela devrait faire la différence, mais je développe ce programme pour Android.

Dans le code suivant, je crée un utilisateur administrateur et un utilisateur non administrateur, définissant des ressortingctions de lecture, d’écriture et de limitation des limitations et des taux de transfert, et imposant une limitation du taux de téléchargement.

Ajout d’un auditeur pour écouter la connexion de l’utilisateur et la déconnexion du téléchargement et du téléchargement des événements de fin.

import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.ftplet.Authority; import org.apache.ftpserver.ftplet.FileSystemFactory; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.ftplet.Ftplet; import org.apache.ftpserver.ftplet.UserManager; import org.apache.ftpserver.ftpletcontainer.impl.DefaultFtpletContainer; import org.apache.ftpserver.listener.ListenerFactory; 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.ConcurrentLoginPermission; import org.apache.ftpserver.usermanager.impl.TransferRatePermission; import org.apache.ftpserver.usermanager.impl.WritePermission; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SFTPServer { // =========================================================== // Constants // =========================================================== private final int FTP_PORT = 2221; private final Ssortingng DEFAULT_LISTENER = "default"; // private final Logger LOG = LoggerFactory.getLogger(SFTPServer.class); private static final List ADMIN_AUTHORITIES; private static final int BYTES_PER_KB = 1024; private static final Ssortingng DEFAULT_USER_DIR = "C:\\upload"; public final static int MAX_CONCURRENT_LOGINS = 1; public final static int MAX_CONCURRENT_LOGINS_PER_IP = 1; // =========================================================== // Fields // =========================================================== private static FtpServer mFTPServer; private static UserManager mUserManager; private static FtpServerFactory mFTPServerFactory; private ListenerFactory mListenerFactor; // =========================================================== // Constructors // =========================================================== static { // Admin Authorities ADMIN_AUTHORITIES = new ArrayList(); ADMIN_AUTHORITIES.add(new WritePermission()); ADMIN_AUTHORITIES.add(new ConcurrentLoginPermission(MAX_CONCURRENT_LOGINS, MAX_CONCURRENT_LOGINS_PER_IP)); ADMIN_AUTHORITIES.add(new TransferRatePermission(Integer.MAX_VALUE, Integer.MAX_VALUE)); } // =========================================================== // Getter & Setter // =========================================================== // =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== // =========================================================== // Methods // =========================================================== public void init() throws FtpException { mFTPServerFactory = new FtpServerFactory(); mListenerFactor = new ListenerFactory(); mListenerFactor.setPort(FTP_PORT); mFTPServerFactory.addListener(DEFAULT_LISTENER, mListenerFactor.createListener()); mFTPServerFactory.getFtplets().put(FTPLetImpl.class.getName(), new FTPLetImpl()); PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); userManagerFactory.setFile(new File("ftpusers.properties")); userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor()); mUserManager = userManagerFactory.createUserManager(); mFTPServerFactory.setUserManager(mUserManager); this.createAdminUser(); SFTPServer.addUser("admin1", "admin1", 20, 20); mFTPServer = mFTPServerFactory.createServer(); mFTPServer.start(); } private UserManager createAdminUser() throws FtpException { UserManager userManager = mFTPServerFactory.getUserManager(); Ssortingng adminName = userManager.getAdminName(); if (!userManager.doesExist(adminName)) { // LOG.info((new // SsortingngBuilder()).append("Creating user : ").append(adminName).toSsortingng()); BaseUser adminUser = new BaseUser(); adminUser.setName(adminName); adminUser.setPassword(adminName); adminUser.setEnabled(true); adminUser.setAuthorities(ADMIN_AUTHORITIES); adminUser.setHomeDirectory(DEFAULT_USER_DIR); adminUser.setMaxIdleTime(0); userManager.save(adminUser); } return userManager; } public static void addUser(Ssortingng username, Ssortingng password, int uploadRateKB, int downloadRateKB) throws FtpException { BaseUser user = new BaseUser(); user.setName(username); user.setPassword(password); user.setHomeDirectory(DEFAULT_USER_DIR); user.setEnabled(true); List list = new ArrayList(); list.add(new TransferRatePermission(downloadRateKB * BYTES_PER_KB, uploadRateKB * BYTES_PER_KB)); // 20KB list.add(new ConcurrentLoginPermission(MAX_CONCURRENT_LOGINS, MAX_CONCURRENT_LOGINS_PER_IP)); user.setAuthorities(list); mFTPServerFactory.getUserManager().save(user); } public static void restartFTP() throws FtpException { if (mFTPServer != null) { mFTPServer.stop(); try { Thread.sleep(1000 * 3); } catch (InterruptedException e) { } mFTPServer.start(); } } public static void stopFTP() throws FtpException { if (mFTPServer != null) { mFTPServer.stop(); } } public static void pauseFTP() throws FtpException { if (mFTPServer != null) { mFTPServer.suspend(); } } public static void resumeFTP() throws FtpException { if (mFTPServer != null) { mFTPServer.resume(); } } public static void main(Ssortingng... are) { try { new SFTPServer().init(); } catch (FtpException e) { e.printStackTrace(); } } // =========================================================== // Inner and Anonymous Classes // =========================================================== } 

FTPLET auditeur

 import java.io.IOException; import org.apache.ftpserver.ftplet.DefaultFtplet; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.ftplet.FtpRequest; import org.apache.ftpserver.ftplet.FtpSession; import org.apache.ftpserver.ftplet.FtpletResult; public class FTPLetImpl extends DefaultFtplet { @Override public FtpletResult onLogin(FtpSession session, FtpRequest request) throws FtpException, IOException { System.out.println(session.getUser().getName() + " Logged in"); return super.onLogin(session, request); } @Override public FtpletResult onDisconnect(FtpSession session) throws FtpException, IOException { System.out.println(session.getUser().getName() + " Disconnected"); return super.onDisconnect(session); } @Override public FtpletResult onDownloadStart(FtpSession session, FtpRequest request) throws FtpException, IOException { System.out.println(session.getUser().getName() + " Started Downloading File " + request.getArgument()); return super.onDownloadStart(session, request); } @Override public FtpletResult onDownloadEnd(FtpSession session, FtpRequest request) throws FtpException, IOException { System.out.println("Finished Downloading " + request.getArgument()); return super.onDownloadEnd(session, request); } } 

Connexion à FTP