Search the FirstSpirit Knowledge Base
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.
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
cat fs-license.conf | grep license.TYPE
suchst du sowas?
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)
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
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
Hallo Andreas,
reicht Dir eventuell schon der ServerInformationAgent aus?
de.espirit.firstspirit.agency.ServerInformationAgent
Viele Grüße,
Daniel
Wenn die Server auf unterschiedlichen Versionen laufen ja... :smileylaugh:
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