summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorNils Schwabe2014-04-10 16:34:34 +0200
committerNils Schwabe2014-04-10 16:34:34 +0200
commit3e35775012d2800d53d83ebe5083121479d83720 (patch)
treeeafcb93cdffc15f48a918f7a599948cf4a769e5d /src/main/java
parentMerge branch 'master' of git.openslx.org:bwlp/masterserver (diff)
downloadmasterserver-3e35775012d2800d53d83ebe5083121479d83720.tar.gz
masterserver-3e35775012d2800d53d83ebe5083121479d83720.tar.xz
masterserver-3e35775012d2800d53d83ebe5083121479d83720.zip
Added some functionallity to the ImageProcessor.
Database using is missing!
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/ImageProcessor.java57
-rw-r--r--src/main/java/org/openslx/imagemaster/server/ApiServer.java21
-rw-r--r--src/main/java/org/openslx/imagemaster/server/ImageProcessor.java14
-rw-r--r--src/main/java/org/openslx/imagemaster/server/MasterFtplet.java20
4 files changed, 80 insertions, 32 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/ImageProcessor.java b/src/main/java/org/openslx/imagemaster/db/ImageProcessor.java
new file mode 100644
index 0000000..804e4b9
--- /dev/null
+++ b/src/main/java/org/openslx/imagemaster/db/ImageProcessor.java
@@ -0,0 +1,57 @@
+package org.openslx.imagemaster.db;
+
+import java.io.File;
+import java.util.HashMap;
+
+import org.apache.log4j.Logger;
+import org.openslx.imagemaster.Globals;
+import org.openslx.imagemaster.thrift.iface.ImageData;
+
+public class ImageProcessor {
+
+ private static Logger log = Logger.getLogger(ImageProcessor.class);
+ private static HashMap<String, ImageData> images = new HashMap<>();
+
+ public static void processImageAfterUpload(String username, String filename) {
+ /*
+ * TODO: Process the image after download
+ */
+ log.info("Will now process '" + filename + "' from user '" + username
+ + "'");
+
+ // look for database entry, update it and move image to right location
+ String oldFileName = Globals.properties.getProperty("ftp_base_dir") + "/" + username
+ + "/" + filename;
+ File imageFile = new File(oldFileName);
+ if (!imageFile.exists()) {
+ // image file does not exist??
+ return;
+ }
+ String newFileName = Globals.properties.getProperty("image_dir") + "/" + images.get(username).imageName;
+ imageFile.renameTo( new File(newFileName) );
+ log.info("Moved file from " + oldFileName + " to " + newFileName );
+
+ File tempUserDir = new File (Globals.properties.getProperty("ftp_base_dir") + "/" + username);
+ tempUserDir.delete();
+ }
+
+ /**
+ * Try to add imageData to db
+ *
+ * @param imageData
+ * the data for the image to add
+ * @return false if submit fails
+ */
+ public static boolean addImageDataToProcess(ImageData imageData,
+ String username) {
+ /*
+ * TODO:
+ * check if imagedata is correct
+ * check if image is already in db
+ */
+
+ // if everything went fine, add image to processing list
+ images.put(username, imageData);
+ return true;
+ }
+}
diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java
index 258c490..7a24c43 100644
--- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java
+++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java
@@ -6,6 +6,7 @@ import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.openslx.imagemaster.Globals;
import org.openslx.imagemaster.db.DbSatellite;
+import org.openslx.imagemaster.db.ImageProcessor;
import org.openslx.imagemaster.serversession.ServerAuthenticator;
import org.openslx.imagemaster.serversession.ServerSession;
import org.openslx.imagemaster.serversession.ServerSessionManager;
@@ -91,24 +92,17 @@ public class ApiServer {
public static FtpCredentials submitImage(ImageData imageDescription,
ServerSessionData serverSessionData) throws AuthorizationException,
TException {
- /*
- * TODO:
- * Check if session is ok.
- * create and return FtpCredentials
- */
-
- /*
- * FTP Users can be added later with: ftpServer.addUser(username,
- * password, ftp_root);
- *
- * And removed with: removeUser(username);
- */
if (ServerSessionManager.getSession(serverSessionData.sessionId) == null) {
throw new AuthenticationException(AuthenticationError.GENERIC_ERROR, "No valid serverSessionData");
}
-
+
String generatedUser = RandomString.generate(10, false);
String generatedPass = RandomString.generate(16, true);
+
+ if (!ImageProcessor.addImageDataToProcess(imageDescription, generatedUser)) {
+ throw new TException("ImageData is not valid. Does this image exist already?");
+ }
+
String dir = Globals.properties.getProperty("ftp_base_dir") + "/"
+ generatedUser + "/";
if (new File(dir).mkdir()) {
@@ -116,7 +110,6 @@ public class ApiServer {
log.info("Generated user/pass: " + generatedUser + "\t"
+ generatedPass + "\n with home dir: " + dir);
}
- // TODO: remove old user
return new FtpCredentials(generatedUser, generatedPass);
}
diff --git a/src/main/java/org/openslx/imagemaster/server/ImageProcessor.java b/src/main/java/org/openslx/imagemaster/server/ImageProcessor.java
deleted file mode 100644
index e10ea21..0000000
--- a/src/main/java/org/openslx/imagemaster/server/ImageProcessor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.openslx.imagemaster.server;
-
-import org.apache.log4j.Logger;
-
-public class ImageProcessor {
-
- private static Logger log = Logger.getLogger(ImageProcessor.class);
- public static void processImageAfterUpload(String username, String filename) {
- /*
- * TODO: Process the image after download
- */
-
- }
-}
diff --git a/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java b/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java
index a1b9a90..479729d 100644
--- a/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java
+++ b/src/main/java/org/openslx/imagemaster/server/MasterFtplet.java
@@ -9,14 +9,17 @@ 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.ftpserver.ftplet.UserManager;
import org.apache.log4j.Logger;
+import org.openslx.imagemaster.db.ImageProcessor;
public class MasterFtplet implements Ftplet {
private static Logger log = Logger.getLogger(Ftplet.class);
+ private UserManager userManager;
@Override
public void init(FtpletContext ftpletContext) throws FtpException {
- // not used
+ userManager = ftpletContext.getUserManager();
}
@Override
@@ -37,9 +40,18 @@ public class MasterFtplet implements Ftplet {
public FtpletResult afterCommand(FtpSession session, FtpRequest request,
FtpReply reply) throws FtpException, IOException {
if (session.getUser() != null) {
- log.info(session.getUser().getName() + " is done with command: " + request.getRequestLine());
- // TODO: delete temporary user
- ImageProcessor.processImageAfterUpload(session.getUser().getName(), request.getRequestLine().split(" ")[1]);
+ String username = session.getUser().getName();
+ String command = request.getRequestLine();
+ log.info(username + " is done with command: " + command);
+ if (request.getCommand().equals("STOR")) {
+ try {
+ userManager.delete(username);
+ } catch (FtpException e) {
+ } finally {
+ log.info("Stored file and deleted user: '" + username + "'");
+ ImageProcessor.processImageAfterUpload(username, command.split(" ")[1]);
+ }
+ }
}
return null;
}