Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. package co.amscraft.ultralib.ftpserver;
  2.  
  3. import co.amscraft.ultralib.UltraLib;
  4. import co.amscraft.ultralib.modules.Module;
  5. import co.amscraft.ultralib.utils.ObjectUtils;
  6. import co.amscraft.ultralib.utils.savevar.SaveVar;
  7. import org.apache.ftpserver.DataConnectionConfiguration;
  8. import org.apache.ftpserver.FtpServer;
  9. import org.apache.ftpserver.FtpServerFactory;
  10. import org.apache.ftpserver.command.Command;
  11. import org.apache.ftpserver.command.CommandFactory;
  12. import org.apache.ftpserver.filesystem.nativefs.NativeFileSystemFactory;
  13. import org.apache.ftpserver.ftplet.Authority;
  14. import org.apache.ftpserver.ftplet.User;
  15. import org.apache.ftpserver.ftplet.UserManager;
  16. import org.apache.ftpserver.impl.FtpIoSession;
  17. import org.apache.ftpserver.impl.FtpServerContext;
  18. import org.apache.ftpserver.ipfilter.SessionFilter;
  19. import org.apache.ftpserver.listener.Listener;
  20. import org.apache.ftpserver.listener.ListenerFactory;
  21. import org.apache.ftpserver.ssl.SslConfiguration;
  22. import org.apache.ftpserver.ssl.SslConfigurationFactory;
  23. import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
  24. import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
  25. import org.apache.ftpserver.usermanager.impl.BaseUser;
  26. import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
  27. import org.apache.ftpserver.usermanager.impl.PropertiesUserManager;
  28. import org.apache.ftpserver.usermanager.impl.WritePermission;
  29. import org.apache.mina.core.session.IoSession;
  30. import org.apache.mina.filter.firewall.Subnet;
  31. import org.bukkit.scheduler.BukkitRunnable;
  32.  
  33.  
  34. import java.io.File;
  35. import java.net.InetAddress;
  36. import java.net.URL;
  37. import java.util.ArrayList;
  38. import java.util.List;
  39. import java.util.Set;
  40. import java.util.logging.Level;
  41.  
  42. public class FTPServer extends Module {
  43.  
  44. @Override
  45. public String[] getModuleDependancies() {
  46. return new String[0];
  47. }
  48.  
  49. @Override
  50. public void onEnable() {
  51. new Thread() {
  52. public void run() {
  53. try {
  54. startFTP();
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }
  58. }
  59. }.start();
  60. new BukkitRunnable() {
  61. public void run() {
  62. addUser("admin", "TempAdminPassword");
  63. System.out.println("Added user admin");
  64. }
  65. }.runTask(UltraLib.getInstance());
  66. }
  67.  
  68. @Override
  69. public void onDisable() {
  70. server.stop();
  71. }
  72.  
  73. public static boolean canDownload(String file) {
  74. for (String blockedExtention: blockedFileExtentions) {
  75. if (file.endsWith(blockedExtention)) {
  76. return false;
  77. }
  78. }
  79. for (String blockedFolder: blockedFolders) {
  80. if (file.startsWith(blockedFolder)) {
  81. return false;
  82. }
  83. }
  84. for (String blockedPhrase: blockedPhrases) {
  85. if (file.toLowerCase().contains(blockedPhrase.toLowerCase())) {
  86. return false;
  87. }
  88. }
  89. return true;
  90. }
  91.  
  92. @SaveVar
  93. public static String USER_FILE = UltraLib.getInstance().getDataFolder() + "/modules/CustomFTPServer/users.txt";
  94. @SaveVar
  95. public static int PORT = <InsertPortHere>;
  96. @SaveVar
  97. public static List<String> blockedFileExtentions = new ArrayList<>();
  98. @SaveVar
  99. public static List<String> blockedPhrases = new ArrayList<>();
  100. @SaveVar
  101. public static List<String> blockedFolders = new ArrayList<>();
  102.  
  103. static FtpServerFactory serverFactory;
  104. static ListenerFactory factory;
  105. static FtpServer server;
  106.  
  107. public static void startFTP() throws Exception{
  108. serverFactory = new FtpServerFactory();
  109. factory = new ListenerFactory();
  110. PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
  111. File users = new File(USER_FILE);
  112. UltraLib.getInstance().getLogger().log(Level.INFO, "File users exists: " + users.exists());
  113. //users.createNewFile();
  114. userManagerFactory.setFile(users);
  115. CommandFactory cmds = serverFactory.getCommandFactory();
  116. CustomRETR retr = new CustomRETR();
  117. serverFactory.setCommandFactory(new CommandFactory() {
  118. @Override
  119. public Command getCommand(String s) {
  120. if (s.equals("RETR")) {
  121. return retr;
  122. }
  123. return cmds.getCommand(s);
  124. }
  125. });
  126. factory.setPort(2221);
  127. serverFactory.addListener("default", factory.createListener());
  128. server = serverFactory.createServer();
  129. server.start();
  130. }
  131.  
  132. public static void addUser(String username, String password) {
  133. BaseUser user = new BaseUser();
  134. user.setName(username);
  135. user.setPassword(password);
  136. try {
  137. serverFactory.getUserManager().save(user);
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. }
  141. }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement