diff options
author | Simon Rettberg | 2015-09-01 16:57:46 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-01 16:57:46 +0200 |
commit | 7594ffb08a0a7b3edea8c8d028478f79411e2fa8 (patch) | |
tree | 4dc2c18d6958321023a30dc2706514d5627a1c3e /dozentenmodul | |
parent | [server] Add missing class (diff) | |
download | tutor-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.java | 47 |
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; |