RemoteAdmin:RemoteAdmin Implement new command/de

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
 
(5 intermediate revisions by one user not shown)
Line 13: Line 13:
  
 
=== Schritt 1 - Hinzufügen eines neuen Befehls ===
 
=== Schritt 1 - Hinzufügen eines neuen Befehls ===
First we need to define our new command and make it available. In the function ''public void Initialise(OpenSimBase openSim)'' you will find a list of all implemented commands. The available commands start with ''availableMethods...''. There we add our new command, lets call it admin_output_message.
+
Zuerst müssen wir unseren neuen Befehl definieren und zur Verfügung stellen. In der Funktion ''public void Initialise(OpenSimBase openSim)'' inden Sie eine Liste aller implementierten Befehle. Die verfügbaren Befehle beginnen mit ''availableMethods...''. Dort fügen wir unseren neuen Befehl hinzu, nennen wir admin_output_message.
  
We will now add a new availableMethods to those already listed, were admin_output_message is our command and XmlRpcOutputMessage will be the function in which our command does the work wehn called (step 2).
+
Wir werden nun eine neue availableMethods zu den bereits aufgeführten hinzufügen, waren admin_output_message ist unser Befehl und XmlRpcOutputMessage ist die Funktion, in der unser Befehl die Arbeit wehn aufgerufen hat (Schritt 2).
  
 
<source lang="csharp">
 
<source lang="csharp">
Line 22: Line 22:
 
         {
 
         {
 
         ...
 
         ...
                     //Our new command
+
                     //Unser neuer Befehl
 
                     availableMethods["admin_output_message"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcOutputMessage);
 
                     availableMethods["admin_output_message"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcOutputMessage);
 
         ...
 
         ...
Line 29: Line 29:
  
 
=== Schritt 2 - Codierung unseres neuen Kommandos ===
 
=== Schritt 2 - Codierung unseres neuen Kommandos ===
In Step 1 we added a new command which calls the function ''XmlRpcOutputMessage''. So our next step is to create our new function and include all the goddies our command will execute.
+
In Schritt 1 haben wir einen neuen Befehl hinzugefügt, der die Funktion ''XmlRpcOutputMessage''. aufruft . So ist unser nächster Schritt, unsere neue Funktion zu schaffen und alle goddies, die unser Befehl ausführen wird, zu umfassen.
  
 
<source lang="csharp">
 
<source lang="csharp">
Line 35: Line 35:
 
         private void XmlRpcOutputMessage(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
 
         private void XmlRpcOutputMessage(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
 
         {
 
         {
             //List with all parameters that will be returned
+
             //Liste mit allen Parametern, die zurückgegeben werden
 
             Hashtable responseData = (Hashtable)response.Value;
 
             Hashtable responseData = (Hashtable)response.Value;
             //List with all parameters received
+
             //Liste mit allen empfangenen Parametern
 
             Hashtable requestData = (Hashtable)request.Params[0];
 
             Hashtable requestData = (Hashtable)request.Params[0];
  
             //Check if the parameter message was received
+
             //Prüfen Sie, ob die Parametermeldung empfangen wurde
 
             CheckStringParameters(requestData, responseData, new string[] { "message" });
 
             CheckStringParameters(requestData, responseData, new string[] { "message" });
  
Line 47: Line 47:
 
             responseData["success"] = false;
 
             responseData["success"] = false;
  
             //Check if a region with parameter region_id or region_name exist
+
             //Prüfen Sie, ob eine Region mit dem Parameter region_id oder region_name existiert
 
             CheckRegionParamsInScene(requestData, out scene, out error_message);
 
             CheckRegionParamsInScene(requestData, out scene, out error_message);
  
 
             if (scene == null)
 
             if (scene == null)
 
             {
 
             {
                 //The region is not known, so we send a error message
+
                 //Die Region ist nicht bekannt, also senden wir eine Fehlermeldung
 
                 responseData["error"] = error_message;
 
                 responseData["error"] = error_message;
 
                 throw new Exception(error_message);
 
                 throw new Exception(error_message);
 
             }
 
             }
  
             // here we do all work when a region is found
+
             // Hier arbeiten wir alle, wenn eine Region gefunden wird
 
             string message = (string) requestData["message"];
 
             string message = (string) requestData["message"];
  
 
             m_log.InfoFormat("[RADMIN]: {0}: {1} {2}", message, scene.RegionInfo.RegionName, scene.RegionInfo.RegionID);
 
             m_log.InfoFormat("[RADMIN]: {0}: {1} {2}", message, scene.RegionInfo.RegionName, scene.RegionInfo.RegionID);
  
             // We have finished our work, lets send back some information
+
             // Wir haben unsere Arbeit beendet, lasst uns einige Informationen zurückschicken
 
             responseData["success"] = true;
 
             responseData["success"] = true;
 
             responseData["region_name"] = scene.RegionInfo.RegionName;
 
             responseData["region_name"] = scene.RegionInfo.RegionName;
Line 68: Line 68:
 
</source>
 
</source>
  
* Our new function always starts of with creating the Hashtable ''responseData'' and ''requestData''. In the ''requestData'' list we have all parameters we are recieving from our external application while ''responseData'' is the list of data we are sending back...
+
* Unsere neue Funktion beginnt immer mit der Erstellung der Hashtable ''responseData'' und ''requestData''. In the ''requestData'' Liste haben wir alle Parameter, die wir von unserer externen Anwendung erhalten, während ''responseData'' Liste der Daten ist, die wir zurückschicken ...  
* If we have parameters that are needed and may not be empty, then one check these parameters using ''CheckStringParameters'' and ''CheckIntegerParams''. If any of the specified paramaters, in our case the string "message" is not given, then a error with exeption will be given and the rest of our code will not be executed.
+
* As we want to send region data of a given region_id or region_name we use ''CheckRegionParamsInScene''. This will output us the ''scene'' of the region if it exists. Both region_id and region_name are checked. If no region is found then scene = null and a ''error_mesage'' is returned. The error message can be used to send back as ''responseData["error"]''
+
* As a response we always send ''responseData["success"]'' as true or false were true only is returned if no errors occured.
+
* If errors occure, we send the error message to our application as ''responseData["error"]''
+
  
[[RemoteAdmin]]
+
* Wenn wir Parameter haben, die benötigt werden und möglicherweise nicht leer sind, dann überprüft man diese Parameter mit ''CheckStringParameters'' und ''CheckIntegerParams''. Wenn einer der angegebenen Paramater, in unserem Fall die Zeichenfolge "message" nicht gegeben ist, dann wird ein Fehler mit Ausnahme gegeben und der Rest unseres Codes wird nicht ausgeführt.
 +
 
 +
* Da wir regionale Daten einer bestimmten region_id oder region_name senden wollen, verwenden wir ''CheckRegionParamsInScene''. Dies wird uns die ''scene'' der Region ausgeben, wenn sie existiert. Sowohl region_id und region_name werden geprüft. Wenn keine Region gefunden wird, dann ist scene = null und eine ''error_mesage'' wird zurückgegeben. Die Fehlermeldung kann verwendet werden, um als Antwort zurückzugegeben ''responseData["error"]''
 +
 
 +
* Als Antwort geben wir immer ''responseData["success"]'' als true oder false werden zurückgegeben, wenn keine Fehler aufgetreten sind.
 +
 
 +
* Wenn Fehler auftreten, senden wir die Fehlermeldung an unsere Anwendung als ''responseData["error"]''
 +
 
 +
[[RemoteAdmin/de]]
 +
[[Category:German Translations]]

Latest revision as of 04:30, 28 March 2018


[edit] So implementieren Sie neue Befehle an Remote Admin

Bei der Implementierung eines neuen RemoteAdmin-Befehls müssen Sie die Datei /OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs bearbeiten

Bitte beachten Sie die RemoteAdmin Standards für das vorgeschlagene Namensschema.


Nehmen wir an, wir wollen einen Befehl erstellen, der eine Zeile in der Konsole ausgibt, die eine Nachricht und die Region uuid einer Region enthält, die wir wählen.

[edit] Schritt 1 - Hinzufügen eines neuen Befehls

Zuerst müssen wir unseren neuen Befehl definieren und zur Verfügung stellen. In der Funktion public void Initialise(OpenSimBase openSim) inden Sie eine Liste aller implementierten Befehle. Die verfügbaren Befehle beginnen mit availableMethods.... Dort fügen wir unseren neuen Befehl hinzu, nennen wir admin_output_message.

Wir werden nun eine neue availableMethods zu den bereits aufgeführten hinzufügen, waren admin_output_message ist unser Befehl und XmlRpcOutputMessage ist die Funktion, in der unser Befehl die Arbeit wehn aufgerufen hat (Schritt 2).

public void Initialise(OpenSimBase openSim)
        {
        ...
                    //Unser neuer Befehl
                    availableMethods["admin_output_message"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcOutputMessage);
        ...
        }

[edit] Schritt 2 - Codierung unseres neuen Kommandos

In Schritt 1 haben wir einen neuen Befehl hinzugefügt, der die Funktion XmlRpcOutputMessage. aufruft . So ist unser nächster Schritt, unsere neue Funktion zu schaffen und alle goddies, die unser Befehl ausführen wird, zu umfassen.

private void XmlRpcOutputMessage(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
        {
            //Liste mit allen Parametern, die zurückgegeben werden
            Hashtable responseData = (Hashtable)response.Value;
            //Liste mit allen empfangenen Parametern
            Hashtable requestData = (Hashtable)request.Params[0];
 
            //Prüfen Sie, ob die Parametermeldung empfangen wurde
            CheckStringParameters(requestData, responseData, new string[] { "message" });
 
            Scene scene = null;
            string error_message = String.Empty;
            responseData["success"] = false;
 
            //Prüfen Sie, ob eine Region mit dem Parameter region_id oder region_name existiert
            CheckRegionParamsInScene(requestData, out scene, out error_message);
 
            if (scene == null)
            {
                //Die Region ist nicht bekannt, also senden wir eine Fehlermeldung
                responseData["error"] = error_message;
                throw new Exception(error_message);
            }
 
            // Hier arbeiten wir alle, wenn eine Region gefunden wird
            string message = (string) requestData["message"];
 
            m_log.InfoFormat("[RADMIN]: {0}: {1} {2}", message, scene.RegionInfo.RegionName, scene.RegionInfo.RegionID);
 
            // Wir haben unsere Arbeit beendet, lasst uns einige Informationen zurückschicken
            responseData["success"] = true;
            responseData["region_name"] = scene.RegionInfo.RegionName;
        }
  • Unsere neue Funktion beginnt immer mit der Erstellung der Hashtable responseData und requestData. In the requestData Liste haben wir alle Parameter, die wir von unserer externen Anwendung erhalten, während responseData Liste der Daten ist, die wir zurückschicken ...
  • Wenn wir Parameter haben, die benötigt werden und möglicherweise nicht leer sind, dann überprüft man diese Parameter mit CheckStringParameters und CheckIntegerParams. Wenn einer der angegebenen Paramater, in unserem Fall die Zeichenfolge "message" nicht gegeben ist, dann wird ein Fehler mit Ausnahme gegeben und der Rest unseres Codes wird nicht ausgeführt.
  • Da wir regionale Daten einer bestimmten region_id oder region_name senden wollen, verwenden wir CheckRegionParamsInScene. Dies wird uns die scene der Region ausgeben, wenn sie existiert. Sowohl region_id und region_name werden geprüft. Wenn keine Region gefunden wird, dann ist scene = null und eine error_mesage wird zurückgegeben. Die Fehlermeldung kann verwendet werden, um als Antwort zurückzugegeben responseData["error"]
  • Als Antwort geben wir immer responseData["success"] als true oder false werden zurückgegeben, wenn keine Fehler aufgetreten sind.
  • Wenn Fehler auftreten, senden wir die Fehlermeldung an unsere Anwendung als responseData["error"]

RemoteAdmin/de

Personal tools
General
About This Wiki