Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Created by Michal on 2019-03-10.
- */
- import java.io.*;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.ftpserver.FtpServerFactory;
- import org.apache.ftpserver.ftplet.Authority;
- import org.apache.ftpserver.ftplet.FtpException;
- import org.apache.ftpserver.listener.ListenerFactory;
- 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;
- public class FtpServer {
- public static void main(String[] args) throws Exception {
- File temporaryFileToDelete = File.createTempFile("the file", "txt");
- temporaryFileToDelete.delete();
- File tmpDirectory = temporaryFileToDelete.getParentFile();
- File temporaryFtpRoot = new File(tmpDirectory, "ftp");
- FtpServer ftpServer = new FtpServer(temporaryFtpRoot);
- ftpServer.runOnPort(10021);
- String filename = "C:\\Users\\HITMEBABYONEMORETIME\\Downloads\\ftp\\GroupChat\\src\\users.txt";
- // ODCZYT PLIKOW TEKSTOWYCH
- BufferedReader reader;
- try {
- reader = new BufferedReader(new FileReader(
- filename));
- String line = reader.readLine();
- while (line != null) {
- //System.out.println(line);
- if (line.contains(":")) {
- String user = line.split(":")[0];
- String pass = line.split(":")[1];
- //System.out.println("User is " + user + " | " + "Password is " + pass);
- ftpServer.addUser(user,pass);
- }
- line = reader.readLine();
- }
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- System.out.println("ftp root: " + temporaryFtpRoot);
- ftpServer.start();
- }
- private static File createUserHome(File temporaryFtpRoot, String sally) {
- File userHome = new File(temporaryFtpRoot, sally);
- userHome.mkdirs();
- return userHome;
- }
- private final FtpServerFactory serverFactory = new FtpServerFactory();
- private final InMemoryUserManager userManager = new InMemoryUserManager();
- private final ListenerFactory listenerFactory = new ListenerFactory();
- private File temporaryFtpRoot;
- public FtpServer(File temporaryFtpRoot) {
- this.temporaryFtpRoot = temporaryFtpRoot;
- }
- private void runOnPort(int port) {
- listenerFactory.setPort(port);
- }
- private void addUser(String userName, String secret) throws FtpException {
- File userHome = createUserHome(temporaryFtpRoot, userName);
- BaseUser user = new BaseUser();
- user.setName(userName);
- user.setPassword(secret);
- user.setMaxIdleTime(0);
- user.setHomeDirectory(userHome.getAbsolutePath());
- user.setEnabled(true);
- List<Authority> authorities = new ArrayList<Authority>();
- authorities.add(new ConcurrentLoginPermission(0, 0));
- authorities.add(new WritePermission());
- authorities.add(new TransferRatePermission(0, 0));
- user.setAuthorities(authorities);
- userManager.save(user);
- }
- private void start() throws FtpException {
- serverFactory.addListener("default", listenerFactory.createListener());
- serverFactory.setUserManager(userManager);
- org.apache.ftpserver.FtpServer server = serverFactory.createServer();
- server.start();
- }
- }
- /**
- * Created by Michal on 2019-03-10.
- */
- import org.apache.ftpserver.ftplet.Authentication;
- import org.apache.ftpserver.ftplet.AuthenticationFailedException;
- import org.apache.ftpserver.ftplet.FtpException;
- import org.apache.ftpserver.ftplet.User;
- import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
- import org.apache.ftpserver.usermanager.UsernamePasswordAuthentication;
- import org.apache.ftpserver.usermanager.impl.AbstractUserManager;
- import java.util.HashMap;
- import java.util.Map;
- class InMemoryUserManager extends AbstractUserManager {
- private final Map<String, User> users = new HashMap<String, User>();
- public InMemoryUserManager() {
- super("deep-dark-secret", new ClearTextPasswordEncryptor());
- }
- @Override
- public User getUserByName(String name) throws FtpException {
- return users.get(name);
- }
- @Override
- public String[] getAllUserNames() throws FtpException {
- return users.keySet().toArray(new String[users.size()]);
- }
- @Override
- public void delete(String name) throws FtpException {
- users.remove(name);
- }
- @Override
- public void save(User user) throws FtpException {
- users.put(user.getName(), user);
- }
- @Override
- public boolean doesExist(String userName) throws FtpException {
- return users.containsKey(userName);
- }
- @Override
- public User authenticate(Authentication authentication) throws AuthenticationFailedException {
- if (authentication instanceof UsernamePasswordAuthentication) {
- UsernamePasswordAuthentication usernameAndPassword = (UsernamePasswordAuthentication) authentication;
- String username = usernameAndPassword.getUsername();
- User user = users.get(username);
- if (null == user) {
- throw new AuthenticationFailedException("unknown user '" + username + "'");
- }
- String password = usernameAndPassword.getPassword();
- if (getPasswordEncryptor().matches(password, user.getPassword())) {
- return user;
- } else {
- throw new AuthenticationFailedException("password wrong");
- }
- }
- throw new AuthenticationFailedException("try harder");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement