summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java
diff options
context:
space:
mode:
authorNils Schwabe2014-04-09 15:40:16 +0200
committerNils Schwabe2014-04-09 15:40:16 +0200
commitb30da021d491ace47c1b6a7b5ad11e595a2399c9 (patch)
treea90ccc1f2a7833df6727c181a885cc56dc2e463a /src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java
parentfixed config dir (examples etc) (diff)
downloadmasterserver-b30da021d491ace47c1b6a7b5ad11e595a2399c9.tar.gz
masterserver-b30da021d491ace47c1b6a7b5ad11e595a2399c9.tar.xz
masterserver-b30da021d491ace47c1b6a7b5ad11e595a2399c9.zip
Added Globals.java and global properties
Added Ftpserver test Created some ftp testign in App.java (needs to be removed) Added Ftplet to trigger on FTP Commands
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java54
1 files changed, 41 insertions, 13 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java
index f54b80d..9ec5cf7 100644
--- a/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java
+++ b/src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java
@@ -2,23 +2,28 @@ package org.openslx.imagemaster.server;
import java.io.File;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.UserManager;
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.WritePermission;
+import org.apache.log4j.Logger;
public class MasterFtpServer implements Runnable {
+ private static Logger log = Logger.getLogger( ApiServer.class );
private FtpServer server;
+ private UserManager userManager;
- public MasterFtpServer(int port, String username, String password, String ftproot) {
+ public MasterFtpServer(int port, String adminUsername, String adminPassword, String ftproot) {
FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory factory = new ListenerFactory();
// set the port of the listener
@@ -27,18 +32,28 @@ public class MasterFtpServer implements Runnable {
// replace the default listener
serverFactory.addListener("default", factory.createListener());
- // create new user
- serverFactory.setUserManager(addUser(username, password, ftproot));
+ // create user manager
+ PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
+ userManagerFactory.setFile(new File("src/main/properties/ftp.properties"));
+ userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
+ userManager = userManagerFactory.createUserManager();
+
+ // create new admin user
+ addUser(adminUsername, adminPassword, ftproot, true);
+ serverFactory.setUserManager(userManager);
+
+ // add the Ftplet
+ HashMap<String, Ftplet> map = new HashMap<String, Ftplet>();
+ map.put("Ftplet1", new MasterFtplet());
+ serverFactory.setFtplets(map);
// start the server
- server = serverFactory.createServer();
+ server = serverFactory.createServer();
}
- private UserManager addUser(final String username, final String password, final String ftproot) {
- PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
- userManagerFactory.setFile(new File("config/ftp.properties"));
- userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
- UserManager um = userManagerFactory.createUserManager();
+ public boolean addUser(final String username, final String password, final String ftproot, final boolean writeAccess) {
+ // TODO: enable SSL
+ boolean result = true;
BaseUser user = new BaseUser();
user.setName(username);
@@ -46,21 +61,34 @@ public class MasterFtpServer implements Runnable {
user.setHomeDirectory(ftproot);
List<Authority> authorities = new ArrayList<Authority>();
- authorities.add(new WritePermission());
+ if (writeAccess) authorities.add(new WritePermission());
user.setAuthorities(authorities);
try {
- um.save(user);
+ userManager.save(user);
} catch (FtpException e) {
- e.printStackTrace();
+ result = false;
}
- return um;
+ return result;
+ }
+
+ public boolean removeUser(final String username) {
+ boolean result = true;
+
+ try {
+ userManager.delete(username);
+ } catch (FtpException e) {
+ result = false;
+ }
+
+ return result;
}
@Override
public void run() {
try {
+ log.info( "Starting FTP Sever" );
server.start();
} catch (FtpException e1) {
e1.printStackTrace();