Class HighLevelApplicationManager

java.lang.Object
de.bsvrz.dav.dav.main.HighLevelApplicationManager

public class HighLevelApplicationManager extends Object
Klasse, die Telegramme von den Applikations-Verbindungen entgegennimmt und entsprechend weiterleitet und verarbeitet
  • Constructor Details

    • HighLevelApplicationManager

      public HighLevelApplicationManager(HighLevelConnectionsManagerInterface connectionsManager)
      Initialisiert einen neuen HighLevelApplicationManager
      Parameters:
      connectionsManager - Connections-Manager
  • Method Details

    • setConfigurationAvailable

      public void setConfigurationAvailable(SelfClientDavConnection selfClientDavConnection, String configAreaPidForApplicationObjects)
      Wird aufgerufen, wenn die Konfiguration verfügbar wird.
      Parameters:
      selfClientDavConnection - Verbindung zur Konfiguration
      configAreaPidForApplicationObjects -
    • handleSendSubscription

      public void handleSendSubscription(T_A_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.SendSubscriptionTelegram sendSubscriptionTelegram)
      Behandelt eine Anmeldung zum Senden von Daten
      Parameters:
      communication - Verbindung
      sendSubscriptionTelegram - Anmeldetelegramm
    • handleSendUnsubscription

      public void handleSendUnsubscription(T_A_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.SendUnsubscriptionTelegram sendUnsubscriptionTelegram)
      Behandelt eine Abmeldung zum Senden von Daten
      Parameters:
      communication - Verbindung
      sendUnsubscriptionTelegram - Abmeldetelegramm
    • handleReceiveSubscription

      public void handleReceiveSubscription(T_A_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.ReceiveSubscriptionTelegram receiveSubscriptionTelegram)
      Behandelt eine Anmeldung zum Empfangen von Daten
      Parameters:
      communication - Verbindung
      receiveSubscriptionTelegram - Anmeldetelegramm
    • handleReceiveUnsubscription

      public void handleReceiveUnsubscription(T_A_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.ReceiveUnsubscriptionTelegram receiveUnsubscriptionTelegram)
      Behandelt eine Abmeldung zum Empfangen von Daten
      Parameters:
      communication - Verbindung
      receiveUnsubscriptionTelegram - Abmeldetelegramm
    • handleDataTelegram

      public void handleDataTelegram(T_A_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.ApplicationDataTelegram applicationDataTelegram)
      Behandelt ein ankommendes Daten-Telegramm
      Parameters:
      communication - Verbindung
      applicationDataTelegram - Daten-Telegramm
    • getConfigurationId

      public long getConfigurationId(String configurationPid)
      Gibt die Konfigurations-Id zu einer Pid zurück
      Parameters:
      configurationPid - Pid eines Konfigurationsverantwortlichen
      Returns:
      die Id der Konfiguration oder -1 falls kein Objekt gefunden werden konnte
    • createNewApplication

      public long createNewApplication(T_A_HighLevelCommunication communication, String applicationTypePid, String applicationName) throws de.bsvrz.dav.daf.main.config.ConfigurationChangeException
      Gibt die ID einer Applikation zurück und erstellt gegebenenfalls ein Systemobjekt
      Parameters:
      communication -
      applicationTypePid - die Pid des Applikationstyps
      applicationName - der Applikationsname
      Returns:
      die Applikation ID oder -1 bei einem Problem
      Throws:
      de.bsvrz.dav.daf.main.config.ConfigurationChangeException - signalisiert Fehler bei Konfigurationsänderungen
    • removeApplication

      public void removeApplication(T_A_HighLevelCommunication communication)
      Wird nach dem Verbindungsabbruch zu einer Applikation aufgerufen
      Parameters:
      communication - Verbindung, die terminiert wurde
    • getApplicationStatusUpdater

      public ApplicationStatusUpdater getApplicationStatusUpdater()
    • fetchSrpVerifierAndAuthentication

      public de.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUser fetchSrpVerifierAndAuthentication(String userName, int passwordIndex) throws de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedException
      Holt den SRP-Überprüfungscode und die Benutzer-ID von einem Benutzer von der Konfiguration
      Parameters:
      userName - Anzufragender Benutzername
      passwordIndex - Index des Einmalpassworts
      Returns:
      Überprüfungscode und Benutzername analog zur UserAdministration-Implementierung. Insbesondere ist der Benutzer UserLogin.notAuthenticated() falls es den Benutzer nicht gibt, aber es wird immer ein SRP-Überprüfungscode erzeugt um eine SrpServerAuthentication.step1(String, BigInteger, BigInteger, boolean) Fake-Authentifizierung} zu ermöglichen.
      Throws:
      de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedException - Falls SRP nicht untersützt wird
    • disableSingleServingPassword

      public void disableSingleServingPassword(String userName, int passwordIndex)
    • throttleLoginAttempt

      public void throttleLoginAttempt(boolean passwordWasCorrect)
      Wird bei jedem Login-Versuch aufgerufen und sorgt dafür, dass bei wiederholten Brute-Force-Angriffen der Login verzögert wird.
      Parameters:
      passwordWasCorrect - War das Passwort korrekt? Ausgebremst wird zwar immer, aber nur wenn das passwort falsch war, hat das eine Auswirkung auf folgende Login-Vesuche