aVogt
Returning Creator

FS5.2R15: Merkmal ob System Prod oder Staging ist

Hallo,

ich möchte (muss) einen Serverauftrag erstellen. Der Auftrag stellt über alle Projekte die vergebenen Rechte (wer hat in in den unterschiedlichen Projekten und unterschiedlichen Stores auf welchem "Ordner" welche Rechte und welche Rechte sind über "CMS_INPUT_PERMISSION" an bestimmten Elementen vergeben) zusammen und schreibt diese in eine Datei in ein Verzeichnis auf einem anderen Server.

Das ist alles so gut wie fertig und funktioniert auch.

Der einzige Unterschied zwischen Test- und Produktivsystem ist das Zielverzeichnis und der Dateiname.

Damit ich dem Script nicht übergeben muss um welchen System es sich handelt (Test- oder Prod) suche ich nach einer Möglichkeit automatisch herauszubekommen um welches System es sich handelt.

Zwei Wege fallen mir ein, aber ich habe keine Ahnung wie ich daran komme.

  1. Wert SYMBOLIC_HOSTNAME aus der fs-server.conf - da habe ich einen Namen vergeben, aus dem ersichtlich ist, um welches System es sich handelt
  2. Wenn ich die Startseite des Systems aufrufe, wird im Testsystem "der Staging-Ahänger" angezeigt. im Produktivsystem der "Production".

Hat jemand eine Idee, wie ich an die Werte herankomme? Oder hat jamand einen anderen Tipp zur Systemunterscheidung?

Da das automatisch oder manuell als (server)Auftragsscript ausgeführt wird, habe ich die Serverconnection und den ScheduleContext.

Danke.

Andreas

0 Kudos
7 Replies
mikula
Crownpeak employee

cat fs-license.conf | grep license.TYPE


suchst du sowas?

0 Kudos
aVogt
Returning Creator

So was wäre schon gut, allerdings wäre es wünschenswert über die API. Sonst muss ich den kompletten Pfad auf die fs-licens.conf angeben, was ich nicht so schön fände (wir überlegen eventuell die Serverplattform zu wechseln -  das ist aber nicht sicher)

0 Kudos
felix_reinhold
Returning Responder

Wäre spannend zu wissen, ob es hierfür eine Lösung über die freigegebene API gibt.

Ich hatte mal für einen Delivery-Anwendungsfall in meinem DEV-System folgendes genutzt (Beispiel mit Remote-Zugriff):

import de.espirit.firstspirit.access.Connection;

import de.espirit.firstspirit.access.ConnectionManager;

import de.espirit.firstspirit.manager.LicenseManager;

import de.espirit.firstspirit.manager.LicenseManager.LicenseType;

import de.espirit.firstspirit.manager.LicenseManagerProxy;

import de.espirit.firstspirit.server.io.AbstractServerConnection;

Connection connection = ConnectionManager.getConnection(host, port, mode, user, password);

ConnectionManager.setUseHttps(false);

try {

    connection.connect();

    AbstractServerConnection enhancedConnection = (AbstractServerConnection) connection;

    LicenseManagerProxy manager = (LicenseManagerProxy) enhancedConnection.getManager(LicenseManager.class);

    LicenseType type = manager.getLicenseType();

    System.out.println("License-Type: " + type.name());

} catch (Exception e) {

    e.printStackTrace();

} finally {

    if (connection != null && connection.isConnected()) {

        try {

            connection.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

Die Klassen befinden sich zwar alle in der fs-access.jar, sind aber zum Großteil nicht Teil der fs-api.jar -

Nutzung also nur für Tests und Dev-Systeme empfehlenswert 😉

LicenseType gibt dann entsprechend Staging, Development etc. zurück.

Gruß

Felix

0 Kudos

Hallo Felix,

Danke dafür.

Wie auch immer bin ich gerade durch Dein Codebeispiel auf die ServerConfiguration gestoßen. Darüber bekommt man die Systemurl und somit eigentlich auch das System heraus.

ServerConfiguration serverConfig = connection.getServerConfiguration();

String systemUrl =  serverConfig.getUrl());

Und man bewegt sich in der öffentlichen API.

Vielleicht versteckt sich ja die Lizenz ja auch noch irgendwo in der öffentlichen API.

Grüße

Andreas

0 Kudos

Hallo Andreas,

reicht Dir eventuell schon der ServerInformationAgent aus?

de.espirit.firstspirit.agency.ServerInformationAgent

Viele Grüße,

Daniel

0 Kudos

Wenn die Server auf unterschiedlichen Versionen laufen ja... :smileylaugh:

0 Kudos
aVogt
Returning Creator

Hallo Daniel,

das ist auch ein Weg. Allerdings bin ich da auch wieder abhängig was als Servername vergeben wurde.

Ich gehe jetzt über die URL um die Systemart zu ermitteln.

Grüße

Andreas

0 Kudos