summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-01 16:57:46 +0200
committerSimon Rettberg2015-09-01 16:57:46 +0200
commit7594ffb08a0a7b3edea8c8d028478f79411e2fa8 (patch)
tree4dc2c18d6958321023a30dc2706514d5627a1c3e /dozentenmodul
parent[server] Add missing class (diff)
downloadtutor-module-7594ffb08a0a7b3edea8c8d028478f79411e2fa8.tar.gz
tutor-module-7594ffb08a0a7b3edea8c8d028478f79411e2fa8.tar.xz
tutor-module-7594ffb08a0a7b3edea8c8d028478f79411e2fa8.zip
[client] Check for clock skew
Diffstat (limited to 'dozentenmodul')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java47
1 files changed, 38 insertions, 9 deletions
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 9daf603f..497cc038 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
@@ -14,6 +14,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
import javax.swing.Box;
import javax.swing.BoxLayout;
@@ -45,7 +46,6 @@ import org.openslx.dozmod.gui.window.LectureListWindow;
import org.openslx.dozmod.gui.window.LoginWindow;
import org.openslx.dozmod.gui.window.MainMenuWindow;
import org.openslx.dozmod.gui.window.VirtualizerNoticeWindow;
-import org.openslx.dozmod.gui.window.layout.VirtualizerNoticeWindowLayout;
import org.openslx.dozmod.state.UploadWizardState;
import org.openslx.dozmod.thrift.GuiErrorCallback;
import org.openslx.dozmod.thrift.Session;
@@ -220,13 +220,13 @@ public abstract class MainWindow {
LoginWindow.open(mainWindow);
}
- if(DisclaimerWindow.shouldBeShown()) {
+ if (DisclaimerWindow.shouldBeShown()) {
DisclaimerWindow.open(mainWindow);
}
- if(!Config.getVirtualizerRead()) {
+ if (!Config.getVirtualizerRead()) {
VirtualizerNoticeWindow.open(mainWindow);
}
-
+
mainWindow.setTitle("bwLehrstuhl - " + Session.getFirstName() + " " + Session.getLastName() + " ["
+ Session.getSatelliteAddress() + "]");
@@ -368,6 +368,9 @@ public abstract class MainWindow {
// Debug label
QuickTimer.scheduleAtFixedDelay(new Task() {
+ private int failures = 0;
+ private int ignoreCount = 0;
+ private boolean timeDiffChecked = false;
@Override
public void fire() {
@@ -382,11 +385,37 @@ public abstract class MainWindow {
}
txt += "]";
if (Session.getUserId() != null) {
- try {
- SatelliteStatus status = ThriftManager.getSatClient().getStatus();
- txt += " [" + FormatHelper.bytes(status.availableStorageBytes, false) + "]";
- } catch (TException e) {
- //
+ if (ignoreCount > 0) {
+ ignoreCount -= 1;
+ } else {
+ try {
+ SatelliteStatus status = ThriftManager.getSatClient().getStatus();
+ failures = 0;
+ txt += " [" + FormatHelper.bytes(status.availableStorageBytes, false) + "]";
+ if (!timeDiffChecked) {
+ final long now = System.currentTimeMillis() / 1000;
+ final long diffSecs = Math.abs(now - status.serverTime);
+ LOGGER.debug("Clock diff client<->server: " + diffSecs + "s");
+ timeDiffChecked = true;
+ if (diffSecs > TimeUnit.MINUTES.toMillis(10)) {
+ Gui.asyncMessageBox(
+ "ACHTUNG: Die Uhrzeit ihres Computers weicht von der Uhrzeit auf dem Satellitenserver ab.\n"
+ + "Bitte stellen Sie sicher, dass die Uhr ihres Computers richtig gestellt ist.\n"
+ + "Falls Ihre Sytemzeit korrekt gesetzt ist, ist möglicherweise die Uhrzeit auf\n"
+ + "dem Satellitenserver nicht korrekt gestellt.\n"
+ + "In diesem Fall kann es - je nach Abweichung - zu unerwarteten Problemen mit den\n"
+ + "Start- und Endzeiten von Veranstaltungen kommen. Kontaktieren Sie in diesem\n"
+ + "Fall den zuständigen Administrator, damit die Uhrzeit auf dem Satellitenserver\n"
+ + "korrigiert werden kann.\n\n" + "Ihr Computer: "
+ + FormatHelper.longDate(now) + "\nSatelliten-Server: "
+ + FormatHelper.longDate(status.serverTime),
+ MessageType.WARNING, LOGGER, null);
+ }
+ }
+ } catch (TException e) {
+ failures += 1;
+ ignoreCount = Math.min(10, failures / 3);
+ }
}
}
final String labelText = txt;