summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/server
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
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')
-rw-r--r--src/main/java/org/openslx/imagemaster/server/ApiServer.java1
-rw-r--r--src/main/java/org/openslx/imagemaster/server/MasterFtpServer.java54
-rw-r--r--src/main/java/org/openslx/imagemaster/server/MasterFtplet.java61
3 files changed, 102 insertions, 14 deletions
diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java
index dd0ec9e..ba15623 100644
--- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java
+++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java
@@ -26,7 +26,6 @@ public class ApiServer
{
@SuppressWarnings( "unused" )
private static Logger log = Logger.getLogger( ApiServer.class );
- //
/**
* Request for authentication
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();
diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java b/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java
new file mode 100644
index 0000000..73d69d2
--- /dev/null
+++ b/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java
@@ -0,0 +1,61 @@
+package org.openslx.imagemaster.server;
+
+import java.io.IOException;
+
+import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpReply;
+import org.apache.ftpserver.ftplet.FtpRequest;
+import org.apache.ftpserver.ftplet.FtpSession;
+import org.apache.ftpserver.ftplet.Ftplet;
+import org.apache.ftpserver.ftplet.FtpletContext;
+import org.apache.ftpserver.ftplet.FtpletResult;
+import org.apache.log4j.Logger;
+import org.openslx.imagemaster.App;
+
+public class MasterFtplet implements Ftplet {
+ private static Logger log = Logger.getLogger(App.class);
+
+ @Override
+ public void init(FtpletContext ftpletContext) throws FtpException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void destroy() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public FtpletResult beforeCommand(FtpSession session, FtpRequest request)
+ throws FtpException, IOException {
+ if (session.getUser() != null && request.getCommand() == "QUIT") {
+ // TODO: tell server that user finished uploading
+ String user = session.getUser().getName();
+ }
+ return null;
+ }
+
+ @Override
+ public FtpletResult afterCommand(FtpSession session, FtpRequest request,
+ FtpReply reply) throws FtpException, IOException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public FtpletResult onConnect(FtpSession session) throws FtpException,
+ IOException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public FtpletResult onDisconnect(FtpSession session) throws FtpException,
+ IOException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}