TechDocs › Dashboard Administration › Erweiterte Programmierung

Serverseitige Skripte#

Wenn Anwendungen über Web APIs aufgerufen werden sollen, ist häufig eine Authentifizierung erforderlich. Eine mögliche Authentifizierungsmethode sind API-Keys, die geheim sein müssen, um Missbrauch zu verhindern. Mittels Server Side Scripting kann eine API serverseitig statt clientseitig aufgerufen werden. Damit die API-Keys auch vor fremden Dashboard-Administratoren geschützt sind, kann dieser Code verschlüsselt werden.

  1. Erstellen Sie wie gewohnt ein Dashboard.

  2. Konfigurieren Sie ein Inhaltselement vom Typ HTML/JS.

    Hier erhalten Sie ein Beispiel-Skript für Openweather-Map:

    Aktuelle Temperatur in {Contact.CITY1}:
    <span id="output_temp">-</span>°C
    
    <script type="server">
        function getTemp(city) {
            var xhr = new XMLHttpRequest();
            var API_KEY = '8de2235076f3ef9cf9bbedf148504945'
            var url = `http://api.openweathermap.org/data/2.5/weather/?q=${encodeURIComponent(city)}&units=metric&appid=${API_KEY}`
            xhr.open('GET', url, false);
            xhr.send();
            if (xhr.status == 200)
                return JSON.parse(xhr.responseText).main.temp;
            throw new Error('Request failed: ' + xhr.status);
        }
    </script>
    
    <script>
        XP.OnLoad(function() {
            XP.Server.getTemp('{Contact.CITY1}').then( result => {
                console.log(result)
                $('#output_temp').text(result)
            })
    
        })
    </script>
    

Verschlüsselung#

Das o.g. serverseitige Openweather-Map Element soll verschlüsselt werden. Dafür wird in das Tag <script type="server"> um encrypted="" erweitert:

Aktuelle Temperatur in {Contact.CITY1}:
<span id="output_temp">-</span>°C

<script type="server" encrypted="">
/* ENCRYPTED SECTION
bZcRTa++L4RnNNfDSn1348GCruCkGATJfYoldmTE/mXn1Hqfoj1CRfZsyu/AwpiB7+iGjd8FAvJhLY5gWLgOU1dDrYOIaADmG/T5frxUPqca5KLRr1wk8kgrsoLcbRXgbmFnwjUd2xXTNGnncbNmoMU3FRRPIR2xNIlBqGVduaf803USjYWVqY7ttWWUBl5NNIVAQKb2HzkN0uphy+zaWMRtzPea4SYr5P3NUcgtCa3EpnOzlFsnwnrzydKzMG2LVl7XP0KFv80RKstaUccsrIJSHGsw/+F/ZKbVuKVt3u6lvx4dtQpU2PZb+wx447rMiv6lx91eer8C+cqhciH5KbUT1H3JrsMUK8+5bGqfJ5fFaSuYGCNCdU+HfxcO9PDUD0ktJ4di3qyuhSRf64BfuWfXohhcFCh3mv91aeShb0ub504szcd3E1bxGgqyq2XnRhKYetJgcTg2mg0SYco3lPMUcFuPAM9fO9HS3GQ53huuMWY+BFEDmODPZctDeHOiaVUffSkn8pFpgw+2kKB21aNapJpkMvj1IDOovGFW0waIFQgPbogxKdUMcjQ+Z3YzmR614fUbbpyR3NgxrDJukPjnXC3wYdg+VxYHlSdzOSmilYKnGTuOwa5BDzZUzh9IHNIw/aVEKJ8gVJc+RRzXpjEhc+BRhpdyeE49cAEoku8=
ENCRYPTED SECTION END */
</script>

<script>
    XP.OnLoad(function() {
        XP.Server.getTemp('{Contact.CITY1}').then( result => {
            console.log(result)
            $('#output_temp').text(result)
        })

    })
</script>

Nach dem Speichern ist der komplette Tag nicht mehr durch andere Adminstratoren lesbar.

Vorsicht

Bitte speichern Sie Ihre Skipte nicht ausschließlich in diesem HTML/JS Element, da Sie sonst den Code nach dem verschlüsseln nicht mehr lesen können.

Ihre Meinung zählt!

Ob Lob, hilfreiche Ideen oder ein Hinweis auf einen Fehler - wir freuen uns über jede Nachricht.
Schreiben Sie uns einfach an doku@c4b.de und helfen Sie mit, diese Dokumentation noch besser zu machen.
Vielen Dank für Ihre Unterstützung!