summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/Config.java44
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java18
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java5
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java6
4 files changed, 67 insertions, 6 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java
index 3ef0edcf..928b38d1 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java
@@ -25,7 +25,7 @@ public class Config {
* Logger for this class
*/
private final static Logger LOGGER = Logger.getLogger(Config.class);
-
+
public static final int TRANSFER_TIMEOUT = 20 * 1000; // 20s timeout for hung transfers
public static interface ErrorCallback {
@@ -76,7 +76,7 @@ public class Config {
}
} else if (osName.contains("linux")) {
configPath = System.getProperty("user.home") + "/.config";
- }
+ }
if (configPath == null || configPath.isEmpty()) {
// Not Windows nor Linux, try fallback to relative path
// TODO MacOS Support?
@@ -84,7 +84,8 @@ public class Config {
}
// Check if we got a path
- configFile = new File(configPath + File.separatorChar + "bwSuite" + File.separatorChar + "config.properties");
+ configFile = new File(configPath + File.separatorChar + "bwSuite" + File.separatorChar
+ + "config.properties");
// Check if the directory exists.
if (!configFile.getParentFile().exists()) {
@@ -98,7 +99,7 @@ public class Config {
if (!configFile.exists()) {
forceSaveInternal();
}
-
+
// Make sure all settings are saved when we exit
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
@@ -298,6 +299,31 @@ public class Config {
setString("login.method", value);
}
+ /**
+ * Saves the current session, identified by the satellite server's address
+ * and token.
+ *
+ * @param satAddress
+ * @param satToken
+ */
+ public static void saveCurrentSession(String satAddress, String satToken) {
+ setString("session.address", satAddress);
+ setString("session.token", satToken);
+ }
+
+ /**
+ * Load a saved session.
+ *
+ * @return Saved session, or <code>null</code> if no session was saved
+ */
+ public static SavedSession getSavedSession() {
+ SavedSession session = new SavedSession(getString("session.address", ""), getString("session.token",
+ ""));
+ if (session.token.isEmpty() || session.address.isEmpty())
+ return null;
+ return session;
+ }
+
/*
* Generic helpers for different data types
*/
@@ -372,4 +398,14 @@ public class Config {
queueSave();
}
+ public static class SavedSession {
+ public final String address;
+ public final String token;
+
+ public SavedSession(String address, String token) {
+ this.address = address;
+ this.token = token;
+ }
+ }
+
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
index aebcffbd..d5b4d4e3 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
@@ -24,8 +24,12 @@ import javax.swing.JMenuItem;
import javax.swing.JPanel;
import org.apache.log4j.Logger;
+import org.apache.thrift.TException;
+import org.openslx.bwlp.thrift.iface.TAuthorizationException;
+import org.openslx.bwlp.thrift.iface.TInternalServerError;
import org.openslx.dozmod.App;
import org.openslx.dozmod.Config;
+import org.openslx.dozmod.Config.SavedSession;
import org.openslx.dozmod.gui.Gui.GuiCallable;
import org.openslx.dozmod.gui.activity.ActivityPanel;
import org.openslx.dozmod.gui.activity.UploadPanel;
@@ -206,10 +210,20 @@ public abstract class MainWindow {
mainWindow.setVisible(true);
// here we can check for Session information
- if (Session.getSatelliteToken() != null) {
+ SavedSession session = Config.getSavedSession();
+ if (session != null) {
// Wait for proxy server init
App.waitForInit();
- // TODO: Try to resume session
+ ThriftManager.setSatelliteAddress(session.address);
+ try {
+ ThriftManager.getSatClient().isAuthenticated(session.token);
+ // TODO: Satellite whoami call
+ Session.setSatelliteAddress(session.address);
+ Session.fromSavedSession(session);
+ LOGGER.info("Saved session used for resume.");
+ } catch (TException e1) {
+ LOGGER.info("Session resume failed.", e1);
+ }
}
// Session resume probably failed, show login window
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
index 82c372c5..cda33b80 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
@@ -337,6 +337,7 @@ public class LoginWindow extends LoginWindowLayout {
// TODO HACK HACK
Session.setSatelliteAddress("132.230.8.113");
+ // TODO: Set in proper place, clear saved address if different
ThriftManager.setSatelliteAddress(Session.getSatelliteAddress());
// Something like ThriftManager.setSatelliteAddress(Session.getSatelliteAddress()); (might need selection box)
Exception e = null;
@@ -345,6 +346,10 @@ public class LoginWindow extends LoginWindowLayout {
// now read the config to see if the user already agreed to the disclaimer
// if (DisclaimerWindow.shouldBeShown())
// VirtualizerNoticeWindow.open();
+ // Save session (TODO: Extra checkbox)
+ if (saveUsernameCheck.isSelected()) {
+ Config.saveCurrentSession(Session.getSatelliteAddress(), Session.getSatelliteToken());
+ }
LOGGER.debug("Closing...");
dispose();
return;
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java
index a3f04a8b..36c6f617 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java
@@ -5,6 +5,7 @@ import org.openslx.bwlp.thrift.iface.ClientSessionData;
import org.openslx.bwlp.thrift.iface.SessionData;
import org.openslx.bwlp.thrift.iface.TInvalidTokenException;
import org.openslx.bwlp.thrift.iface.UserInfo;
+import org.openslx.dozmod.Config.SavedSession;
import org.openslx.dozmod.authentication.ServiceProviderResponse;
import org.openslx.thrifthelper.ThriftManager;
@@ -62,6 +63,11 @@ public class Session {
satelliteToken = response.token;
}
+ public static void fromSavedSession(SavedSession session) {
+ satelliteToken = session.token;
+ // TODO: Satellite whoami call
+ }
+
/**
* @return the first name
*/