Advertisement
Guest User

Untitled

a guest
Mar 17th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. /**
  2. * Created by Michal on 2019-03-10.
  3. */
  4.  
  5. import java.io.*;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8.  
  9. import org.apache.ftpserver.FtpServerFactory;
  10. import org.apache.ftpserver.ftplet.Authority;
  11. import org.apache.ftpserver.ftplet.FtpException;
  12. import org.apache.ftpserver.listener.ListenerFactory;
  13. import org.apache.ftpserver.usermanager.impl.BaseUser;
  14. import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
  15. import org.apache.ftpserver.usermanager.impl.TransferRatePermission;
  16. import org.apache.ftpserver.usermanager.impl.WritePermission;
  17.  
  18. public class FtpServer {
  19.  
  20. public static void main(String[] args) throws Exception {
  21.  
  22. File temporaryFileToDelete = File.createTempFile("the file", "txt");
  23. temporaryFileToDelete.delete();
  24. File tmpDirectory = temporaryFileToDelete.getParentFile();
  25. File temporaryFtpRoot = new File(tmpDirectory, "ftp");
  26. FtpServer ftpServer = new FtpServer(temporaryFtpRoot);
  27. ftpServer.runOnPort(10021);
  28.  
  29. String filename = "C:\\Users\\HITMEBABYONEMORETIME\\Downloads\\ftp\\GroupChat\\src\\users.txt";
  30.  
  31. // ODCZYT PLIKOW TEKSTOWYCH
  32. BufferedReader reader;
  33. try {
  34. reader = new BufferedReader(new FileReader(
  35. filename));
  36. String line = reader.readLine();
  37. while (line != null) {
  38. //System.out.println(line);
  39. if (line.contains(":")) {
  40. String user = line.split(":")[0];
  41. String pass = line.split(":")[1];
  42. //System.out.println("User is " + user + " | " + "Password is " + pass);
  43. ftpServer.addUser(user,pass);
  44. }
  45. line = reader.readLine();
  46. }
  47. reader.close();
  48. } catch (IOException e) {
  49. e.printStackTrace();
  50. }
  51.  
  52. System.out.println("ftp root: " + temporaryFtpRoot);
  53. ftpServer.start();
  54. }
  55.  
  56. private static File createUserHome(File temporaryFtpRoot, String sally) {
  57. File userHome = new File(temporaryFtpRoot, sally);
  58. userHome.mkdirs();
  59. return userHome;
  60. }
  61.  
  62. private final FtpServerFactory serverFactory = new FtpServerFactory();
  63. private final InMemoryUserManager userManager = new InMemoryUserManager();
  64. private final ListenerFactory listenerFactory = new ListenerFactory();
  65. private File temporaryFtpRoot;
  66.  
  67. public FtpServer(File temporaryFtpRoot) {
  68. this.temporaryFtpRoot = temporaryFtpRoot;
  69. }
  70.  
  71. private void runOnPort(int port) {
  72. listenerFactory.setPort(port);
  73. }
  74.  
  75. private void addUser(String userName, String secret) throws FtpException {
  76. File userHome = createUserHome(temporaryFtpRoot, userName);
  77. BaseUser user = new BaseUser();
  78. user.setName(userName);
  79. user.setPassword(secret);
  80. user.setMaxIdleTime(0);
  81. user.setHomeDirectory(userHome.getAbsolutePath());
  82. user.setEnabled(true);
  83.  
  84. List<Authority> authorities = new ArrayList<Authority>();
  85. authorities.add(new ConcurrentLoginPermission(0, 0));
  86. authorities.add(new WritePermission());
  87. authorities.add(new TransferRatePermission(0, 0));
  88. user.setAuthorities(authorities);
  89. userManager.save(user);
  90. }
  91.  
  92. private void start() throws FtpException {
  93. serverFactory.addListener("default", listenerFactory.createListener());
  94. serverFactory.setUserManager(userManager);
  95. org.apache.ftpserver.FtpServer server = serverFactory.createServer();
  96. server.start();
  97. }
  98. }
  99.  
  100.  
  101.  
  102. /**
  103. * Created by Michal on 2019-03-10.
  104. */
  105. import org.apache.ftpserver.ftplet.Authentication;
  106. import org.apache.ftpserver.ftplet.AuthenticationFailedException;
  107. import org.apache.ftpserver.ftplet.FtpException;
  108. import org.apache.ftpserver.ftplet.User;
  109. import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
  110. import org.apache.ftpserver.usermanager.UsernamePasswordAuthentication;
  111. import org.apache.ftpserver.usermanager.impl.AbstractUserManager;
  112.  
  113. import java.util.HashMap;
  114. import java.util.Map;
  115.  
  116. class InMemoryUserManager extends AbstractUserManager {
  117.  
  118. private final Map<String, User> users = new HashMap<String, User>();
  119.  
  120. public InMemoryUserManager() {
  121. super("deep-dark-secret", new ClearTextPasswordEncryptor());
  122. }
  123.  
  124. @Override
  125. public User getUserByName(String name) throws FtpException {
  126. return users.get(name);
  127. }
  128.  
  129. @Override
  130. public String[] getAllUserNames() throws FtpException {
  131. return users.keySet().toArray(new String[users.size()]);
  132. }
  133.  
  134. @Override
  135. public void delete(String name) throws FtpException {
  136. users.remove(name);
  137. }
  138.  
  139. @Override
  140. public void save(User user) throws FtpException {
  141. users.put(user.getName(), user);
  142.  
  143. }
  144.  
  145. @Override
  146. public boolean doesExist(String userName) throws FtpException {
  147. return users.containsKey(userName);
  148. }
  149.  
  150. @Override
  151. public User authenticate(Authentication authentication) throws AuthenticationFailedException {
  152. if (authentication instanceof UsernamePasswordAuthentication) {
  153. UsernamePasswordAuthentication usernameAndPassword = (UsernamePasswordAuthentication) authentication;
  154. String username = usernameAndPassword.getUsername();
  155.  
  156. User user = users.get(username);
  157. if (null == user) {
  158. throw new AuthenticationFailedException("unknown user '" + username + "'");
  159. }
  160. String password = usernameAndPassword.getPassword();
  161. if (getPasswordEncryptor().matches(password, user.getPassword())) {
  162. return user;
  163. } else {
  164. throw new AuthenticationFailedException("password wrong");
  165. }
  166. }
  167. throw new AuthenticationFailedException("try harder");
  168. }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement