Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Wireguard Server abfragen -> Client Infos

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    231

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Wireguard Server abfragen -> Client Infos

Scheduled Pinned Locked Moved JavaScript
25 Posts 3 Posters 2.1k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Kuddel

    @negalein habe den Adapter mal gerade in einer Test VM installiert.

    Sieht fast so aus, als wenn der Adapter alle nötigen Daten liefert.

    Ich baue mir dann mal ein javascript um eine HTML Seite für meine VIS zu erzeugen

    NegaleinN Offline
    NegaleinN Offline
    Negalein
    Global Moderator
    wrote on last edited by
    #4

    @kuddel sagte in Wireguard Server abfragen -> Client Infos:

    Ich baue mir dann mal ein javascript um eine HTML Seite für meine VIS zu erzeugen

    die könntest dann hier zeigen.
    Hab die Vis derzeit nur so.
    b31e4b59-99df-45de-b3c5-5ca855704859-image.png

    ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
    ° Node.js Fixer ---> iob nodejs-update
    ° Fixer ---> iob fix

    1 Reply Last reply
    0
    • K Kuddel

      @negalein habe den Adapter mal gerade in einer Test VM installiert.

      Sieht fast so aus, als wenn der Adapter alle nötigen Daten liefert.

      Ich baue mir dann mal ein javascript um eine HTML Seite für meine VIS zu erzeugen

      David G.D Online
      David G.D Online
      David G.
      wrote on last edited by
      #5

      @kuddel

      So habe ich es in der Visu.

      Grün und Rot für den Verbindungsstatus.
      Über den Pfeil kann man sich Infos anzeigen lassen, von wo die Verbindung aufgebaut wurde (ist für mich ein kleines Sicherheitsfeature, da sollte nicht auf einmal Afghanistan stehen 🤣).

      Screenshot_20241011_084248_Fully Kiosk Browser.jpg

      Screenshot_20241011_084259_Fully Kiosk Browser.jpg

      Zeigt eure Lovelace-Visualisierung klick
      (Auch ideal um sich Anregungen zu holen)

      Meine Tabellen für eure Visualisierung klick

      NegaleinN 1 Reply Last reply
      2
      • David G.D David G.

        @kuddel

        So habe ich es in der Visu.

        Grün und Rot für den Verbindungsstatus.
        Über den Pfeil kann man sich Infos anzeigen lassen, von wo die Verbindung aufgebaut wurde (ist für mich ein kleines Sicherheitsfeature, da sollte nicht auf einmal Afghanistan stehen 🤣).

        Screenshot_20241011_084248_Fully Kiosk Browser.jpg

        Screenshot_20241011_084259_Fully Kiosk Browser.jpg

        NegaleinN Offline
        NegaleinN Offline
        Negalein
        Global Moderator
        wrote on last edited by
        #6

        @david-g sagte in Wireguard Server abfragen -> Client Infos:

        So habe ich es in der Visu.

        schaut toll aus!

        Würdest du es teilen?

        ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
        ° Node.js Fixer ---> iob nodejs-update
        ° Fixer ---> iob fix

        David G.D 1 Reply Last reply
        0
        • NegaleinN Negalein

          @david-g sagte in Wireguard Server abfragen -> Client Infos:

          So habe ich es in der Visu.

          schaut toll aus!

          Würdest du es teilen?

          David G.D Online
          David G.D Online
          David G.
          wrote on last edited by
          #7

          @negalein

          Schau mal in den Link in meiner Signatur.
          Da habe ich die mit drinnen.

          Zeigt eure Lovelace-Visualisierung klick
          (Auch ideal um sich Anregungen zu holen)

          Meine Tabellen für eure Visualisierung klick

          NegaleinN 1 Reply Last reply
          0
          • David G.D David G.

            @negalein

            Schau mal in den Link in meiner Signatur.
            Da habe ich die mit drinnen.

            NegaleinN Offline
            NegaleinN Offline
            Negalein
            Global Moderator
            wrote on last edited by
            #8

            @david-g sagte in Wireguard Server abfragen -> Client Infos:

            Da habe ich die mit drinnen.

            Ah, mit Lovelace gemacht.
            Verwende ich leider noch nicht.

            ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
            ° Node.js Fixer ---> iob nodejs-update
            ° Fixer ---> iob fix

            David G.D 1 Reply Last reply
            0
            • NegaleinN Negalein

              @david-g sagte in Wireguard Server abfragen -> Client Infos:

              Da habe ich die mit drinnen.

              Ah, mit Lovelace gemacht.
              Verwende ich leider noch nicht.

              David G.D Online
              David G.D Online
              David G.
              wrote on last edited by
              #9

              @negalein

              Sämtliche Tabellen werden als HTML in einen DP geschrieben, solltest du also mit jeder Visu verwenden können.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              1 Reply Last reply
              1
              • K Offline
                K Offline
                Kuddel
                wrote on last edited by
                #10

                @david-g wie hast du gemacht mit dem Quell Ort der Verbindung?

                David G.D 1 Reply Last reply
                0
                • K Kuddel

                  @david-g wie hast du gemacht mit dem Quell Ort der Verbindung?

                  David G.D Online
                  David G.D Online
                  David G.
                  wrote on last edited by
                  #11

                  @kuddel

                  Frage ich per httpget von einer Website ab.
                  Kann man im Blockly von mir ein- und ausschalten.

                  Zeigt eure Lovelace-Visualisierung klick
                  (Auch ideal um sich Anregungen zu holen)

                  Meine Tabellen für eure Visualisierung klick

                  K 1 Reply Last reply
                  1
                  • David G.D David G.

                    @kuddel

                    Frage ich per httpget von einer Website ab.
                    Kann man im Blockly von mir ein- und ausschalten.

                    K Offline
                    K Offline
                    Kuddel
                    wrote on last edited by
                    #12

                    @david-g kannst du das hier posten?

                    Würde es dann versuchen mit im Javascript einzubauen und in der HTML Tabelle anzuzeigen

                    David G.D 1 Reply Last reply
                    0
                    • K Kuddel

                      @david-g kannst du das hier posten?

                      Würde es dann versuchen mit im Javascript einzubauen und in der HTML Tabelle anzuzeigen

                      David G.D Online
                      David G.D Online
                      David G.
                      wrote on last edited by David G.
                      #13

                      @kuddel

                      Im Link in meiner Signatur findest du das Blockly.
                      Da kannst du dir das rausholen.

                      In der JS Ansicht ggf den ganzen entsprechenden Bereich kopieren....

                      Screenshot_20241011_102738_Chrome.jpg

                      Zeigt eure Lovelace-Visualisierung klick
                      (Auch ideal um sich Anregungen zu holen)

                      Meine Tabellen für eure Visualisierung klick

                      K 1 Reply Last reply
                      1
                      • David G.D David G.

                        @kuddel

                        Im Link in meiner Signatur findest du das Blockly.
                        Da kannst du dir das rausholen.

                        In der JS Ansicht ggf den ganzen entsprechenden Bereich kopieren....

                        Screenshot_20241011_102738_Chrome.jpg

                        K Offline
                        K Offline
                        Kuddel
                        wrote on last edited by
                        #14

                        Die Anzeige der Werte vom Wireguard Adapter über in JSON DP funz schonmal:

                        fe1387ac-8072-4da1-8b89-0b3b603087a9-grafik.png

                        Aktuell hänge ich noch an der whois Abfrage.

                        Die Abfrage an sich funzt, nur mein javascript wartet aktuell nicht, bis die Abfrage eine Antwort gelifert hat. Somit sind die Werte immer undefiniert

                        David G.D 1 Reply Last reply
                        1
                        • K Kuddel

                          Die Anzeige der Werte vom Wireguard Adapter über in JSON DP funz schonmal:

                          fe1387ac-8072-4da1-8b89-0b3b603087a9-grafik.png

                          Aktuell hänge ich noch an der whois Abfrage.

                          Die Abfrage an sich funzt, nur mein javascript wartet aktuell nicht, bis die Abfrage eine Antwort gelifert hat. Somit sind die Werte immer undefiniert

                          David G.D Online
                          David G.D Online
                          David G.
                          wrote on last edited by
                          #15

                          @kuddel

                          So dürfte er erst nach einem Ergebnis oder 2sek weiter machen oder?
                          Das ist der Code den mit Blockly gibt.

                          httpGet('https://xxx.de', { timeout: 2000, responseType: 'text' }, async (err, response) => {
                             console.info(response.data); 
                          });
                          

                          Zeigt eure Lovelace-Visualisierung klick
                          (Auch ideal um sich Anregungen zu holen)

                          Meine Tabellen für eure Visualisierung klick

                          K 1 Reply Last reply
                          0
                          • David G.D David G.

                            @kuddel

                            So dürfte er erst nach einem Ergebnis oder 2sek weiter machen oder?
                            Das ist der Code den mit Blockly gibt.

                            httpGet('https://xxx.de', { timeout: 2000, responseType: 'text' }, async (err, response) => {
                               console.info(response.data); 
                            });
                            
                            K Offline
                            K Offline
                            Kuddel
                            wrote on last edited by
                            #16

                            @david-g timeout: 2000 bedeutet doch eigentlich nur, dass die Abfrage nicht länger als 2 Sekunden dauern darf.

                            Eine Pause ist es aber nicht

                            David G.D 1 Reply Last reply
                            0
                            • K Kuddel

                              @david-g timeout: 2000 bedeutet doch eigentlich nur, dass die Abfrage nicht länger als 2 Sekunden dauern darf.

                              Eine Pause ist es aber nicht

                              David G.D Online
                              David G.D Online
                              David G.
                              wrote on last edited by David G.
                              #17

                              @kuddel

                              Das ist das Blockly was mir den Code generiert hat.
                              Alles innerhalb des httpget Baustsins wird dort erst nach einer Antwort oder 2sek ausgeführt.

                              Screenshot_20241015_110357_Chrome.jpg

                              Edit
                              Hier siehst du, dass die der Fehler schon zwischen beiden Warnungen kommt.
                              Screenshot_20241015_113246_Chrome.jpg

                              Mit einer echten Website hab ich da auch ein result stehen. Nur zu lang für einen Screenshot.

                              Zeigt eure Lovelace-Visualisierung klick
                              (Auch ideal um sich Anregungen zu holen)

                              Meine Tabellen für eure Visualisierung klick

                              K 1 Reply Last reply
                              0
                              • David G.D David G.

                                @kuddel

                                Das ist das Blockly was mir den Code generiert hat.
                                Alles innerhalb des httpget Baustsins wird dort erst nach einer Antwort oder 2sek ausgeführt.

                                Screenshot_20241015_110357_Chrome.jpg

                                Edit
                                Hier siehst du, dass die der Fehler schon zwischen beiden Warnungen kommt.
                                Screenshot_20241015_113246_Chrome.jpg

                                Mit einer echten Website hab ich da auch ein result stehen. Nur zu lang für einen Screenshot.

                                K Offline
                                K Offline
                                Kuddel
                                wrote on last edited by
                                #18

                                @david-g

                                ICh bin schon einen Schritt weiter gekommen.

                                Wenn ich alle weiteren Schritte mit in den HTTP Get Block schreibe funktioniert es.

                                Problem ist jetzt, dass es nur für verbundene Clients geht.

                                Morgen mache ich einen erneuten Anlauf, um das Skript für alle Clients lauffähig zu bekommen

                                cc46f443-aab4-49bf-ad4d-9f2dcf631bd4-grafik.png

                                K 1 Reply Last reply
                                0
                                • K Kuddel

                                  @david-g

                                  ICh bin schon einen Schritt weiter gekommen.

                                  Wenn ich alle weiteren Schritte mit in den HTTP Get Block schreibe funktioniert es.

                                  Problem ist jetzt, dass es nur für verbundene Clients geht.

                                  Morgen mache ich einen erneuten Anlauf, um das Skript für alle Clients lauffähig zu bekommen

                                  cc46f443-aab4-49bf-ad4d-9f2dcf631bd4-grafik.png

                                  K Offline
                                  K Offline
                                  Kuddel
                                  wrote on last edited by
                                  #19

                                  So, das Skript macht jetzt was es soll

                                  cd29096c-f006-451c-9734-24d9263eae80-grafik.png

                                  Morgen kommen dann nur noch Optimierungen

                                  K 1 Reply Last reply
                                  1
                                  • K Kuddel

                                    So, das Skript macht jetzt was es soll

                                    cd29096c-f006-451c-9734-24d9263eae80-grafik.png

                                    Morgen kommen dann nur noch Optimierungen

                                    K Offline
                                    K Offline
                                    Kuddel
                                    wrote on last edited by
                                    #20

                                    Mein Script erstellt jetzt folgende zwei JSON Datein:

                                    8cf30247-84c9-4b91-91c3-19482d8c0ee4-grafik.png

                                    Oben sieht man den aktuellen Zustand:
                                    Das Land und die Herkunft werden nur abgefragt, wenn sich der Client verbindet oder trennt. Habe da im Test irgednwann eine Ablehnung von der APi bekommen, weil ich zu viele Abfragen gestellt habe.
                                    Des Weiteren läuft das Skript bei Änderungen des Traffics sowie der IP erneut los.

                                    Unten sieht man eine Verbindungshistory, die nur befüllt wird, wenn sich ein Client verbindet oder wieder trennt.

                                    Wenn Interesse besteht, kann ich das Skript gern teilen :-)

                                    NegaleinN 1 Reply Last reply
                                    1
                                    • K Kuddel

                                      Mein Script erstellt jetzt folgende zwei JSON Datein:

                                      8cf30247-84c9-4b91-91c3-19482d8c0ee4-grafik.png

                                      Oben sieht man den aktuellen Zustand:
                                      Das Land und die Herkunft werden nur abgefragt, wenn sich der Client verbindet oder trennt. Habe da im Test irgednwann eine Ablehnung von der APi bekommen, weil ich zu viele Abfragen gestellt habe.
                                      Des Weiteren läuft das Skript bei Änderungen des Traffics sowie der IP erneut los.

                                      Unten sieht man eine Verbindungshistory, die nur befüllt wird, wenn sich ein Client verbindet oder wieder trennt.

                                      Wenn Interesse besteht, kann ich das Skript gern teilen :-)

                                      NegaleinN Offline
                                      NegaleinN Offline
                                      Negalein
                                      Global Moderator
                                      wrote on last edited by
                                      #21

                                      @kuddel sagte in Wireguard Server abfragen -> Client Infos:

                                      Wenn Interesse besteht, kann ich das Skript gern teilen

                                      Ja bitte! :)

                                      Und die View auch bitte! ;)

                                      ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                                      ° Node.js Fixer ---> iob nodejs-update
                                      ° Fixer ---> iob fix

                                      K 1 Reply Last reply
                                      0
                                      • NegaleinN Negalein

                                        @kuddel sagte in Wireguard Server abfragen -> Client Infos:

                                        Wenn Interesse besteht, kann ich das Skript gern teilen

                                        Ja bitte! :)

                                        Und die View auch bitte! ;)

                                        K Offline
                                        K Offline
                                        Kuddel
                                        wrote on last edited by Kuddel
                                        #22

                                        @negalein

                                        Das Skript habe ich mit freudlicher Unterstützung von ChatGPT erstellt. Ist also nicht nur auf meinem Mist gewachsen ^^

                                        Skript:

                                        /////////////////////
                                        // Wireguard Infos //
                                        /////////////////////
                                        async function wireguard_infos(obj) {
                                           // Define lists for clients
                                           const list_of_clients = [];
                                        
                                           // Create states if they don't exist
                                           await createStateIfNotExists('0_userdata.0.wireguard-clients.Wireguard-JSON', '[]', { name: 'Wireguard-JSON', type: 'string' });
                                           await createStateIfNotExists('0_userdata.0.wireguard-clients.Letztes_Update', '', { name: 'Letztes_Update', type: 'string' });
                                        
                                           // Check if the trigger was for *.connected
                                           let isConnectedTrigger = obj?.id && (obj.id.includes('.connected') || obj.id.includes('.endpoint'));
                                        
                                           // Get the current stored clients data from 0_userdata.0.wireguard-clients.Wireguard-JSON
                                           let storedClients = JSON.parse(getState('0_userdata.0.wireguard-clients.Wireguard-JSON').val);
                                        
                                           // Iterate over each Wireguard client
                                           var cacheSelector = $('[id=wireguard.0.Wireguard-wg0.peers.*.connected]');
                                           cacheSelector.each(function(id, i) {
                                               var client_id = getObject(id)._id;
                                               client_id = client_id.replace(".connected", "");
                                        
                                               // Get client name and status
                                               var client_name = getState(client_id + ".device").val;
                                               let client_status = getState(client_id + ".connected").val;
                                        
                                               // Get connection time in German format
                                               var client_connection_time = formatDateToGerman(new Date(getState(client_id + ".connected").lc));
                                        
                                               // Prepare other client details (empty values if disconnected)
                                               let client_ip = '';
                                               let client_transfer_dl = '';
                                               let client_transfer_ul = '';
                                        
                                               if (client_status === true) {
                                                   // Get IP address and split it from the port
                                                   client_ip = getState(client_id + ".endpoint").val.split(':')[0];
                                        
                                                   // Calculate download and upload transfers in MB
                                                   client_transfer_dl = (getState(client_id + ".transferRx").val / 1048576).toFixed(2) + ' MB';
                                                   client_transfer_ul = (getState(client_id + ".transferTx").val / 1048576).toFixed(2) + ' MB';
                                               }
                                        
                                               // Format status
                                               var client_status_formatted = client_status === false ? '🔴' : '🟢';
                                        
                                               // Check if this client exists in the stored clients' data
                                               let storedClient = storedClients.find(c => c.client_name === client_name);
                                        
                                               // Initialize origin values
                                               let client_origin = '';
                                               let client_origin_flag = '';
                                        
                                           	// Preserve stored client origin information
                                               if (storedClient && storedClient.client_origin && storedClient.client_origin_flag && client_status === true) {
                                                   client_origin = storedClient.client_origin;
                                                   client_origin_flag = storedClient.client_origin_flag;
                                               }
                                        
                                               // Add client details to the list
                                               list_of_clients.push({
                                                   "client_status_formatted": client_status_formatted,
                                                   "client_connection_time": client_connection_time,
                                                   "client_name": client_name,
                                                   "client_ip": client_ip,
                                                   "client_transfer_dl": client_transfer_dl,
                                                   "client_transfer_ul": client_transfer_ul,
                                                   "client_origin_flag": client_origin_flag,
                                                   "client_origin": client_origin,
                                                   "client_status": client_status
                                               });
                                           });
                                        
                                           // Only fetch origin information for connected clients if the trigger was *.connected
                                           if (isConnectedTrigger) {
                                               for (let client of list_of_clients) {
                                                   if (client.client_ip) {
                                                       // Check if the client exists in the stored data and has valid origin values
                                                       let storedClient = storedClients.find(c => c.client_name === client.client_name);
                                                       
                                                       if (storedClient && storedClient.client_origin && storedClient.client_origin_flag) {
                                                           // Use the stored values if they are valid
                                                           client.client_origin = storedClient.client_origin;
                                                           client.client_origin_flag = storedClient.client_origin_flag;
                                                       } else {
                                                           // Fetch and set if not already stored
                                                           client.client_origin = await fetchClientOrigin(client.client_ip);
                                                           client.client_origin_flag = await fetchClientOriginCountryCode(client.client_ip);
                                                       }
                                                   }
                                               }
                                           }
                                        
                                           // Sort clients by status and name
                                           list_of_clients.sort((a, b) => {
                                               // Compare client_status first, true should come before false
                                               if (a.client_status === b.client_status) {
                                                   // If client_status is the same, compare client_name
                                                   return a.client_name.localeCompare(b.client_name);
                                               } else {
                                                   // Sort true (1) before false (0)
                                                   return a.client_status === true ? -1 : 1;
                                               }
                                           });
                                        
                                           // Write formatted lists to states for VIS and JARVIS
                                           let dp = "0_userdata.0.wireguard-clients.Wireguard-JSON";
                                           if (JSON.stringify(getState(dp).val) !== JSON.stringify(list_of_clients)) {
                                               setStateDelayed(dp, JSON.stringify(list_of_clients), 800);
                                           }
                                        
                                           // Update last synchronization time
                                           dp = "0_userdata.0.wireguard-clients.Letztes_Update";
                                           let datum = new Date();
                                           let heute = datum.getDate() + "." + (datum.getMonth() + 1) + "." + datum.getFullYear() + " " + datum.getHours() + ":" + datum.getMinutes() + ":" + datum.getSeconds() + " Uhr";
                                           setStateDelayed(dp, heute, 800);
                                        }
                                        
                                        
                                        ///////////////////////
                                        // Wireguard history //
                                        ///////////////////////
                                        async function wireguard_history(event) {
                                           // Define list for history clients
                                           const list_of_clients = [];
                                        
                                           // Create state for Wireguard history if not exists
                                           await createStateIfNotExists('0_userdata.0.wireguard-clients.Wireguard-JSON-History', '[]', { name: 'Wireguard-JSON-History', type: 'string' });
                                        
                                           // Get client ID from event
                                           var client_id = event.id.replace(".connected", "");
                                        
                                           // Get client name and status
                                           var client_name = getState(client_id + '.device').val;
                                           let client_status = event.state.val;
                                           let client_status_formatted = event.state.val === true ? "🟢" : "🔴";
                                        
                                           // Get connection time in German format
                                           var client_connection_time = formatDateToGerman(new Date(getState(client_id + ".connected").lc));
                                        
                                           // Prepare other history client details
                                           var client_ip = getState(client_id + ".endpoint").val.split(':')[0];
                                           var client_transfer_dl, client_transfer_ul;
                                        
                                           if (client_status === false) {
                                               client_transfer_dl = (getState(client_id + ".transferRx").val / 1048576).toFixed(2) + ' MB';
                                               client_transfer_ul = (getState(client_id + ".transferTx").val / 1048576).toFixed(2) + ' MB';
                                           } else {
                                               client_transfer_dl = '';
                                               client_transfer_ul = '';
                                           }
                                        
                                           // Add history client details to the list
                                           list_of_clients.push({
                                               "client_status": client_status_formatted,
                                               "client_connection_time": client_connection_time,
                                               "client_name": client_name,
                                               "client_ip": client_ip,
                                               "client_transfer_dl": client_transfer_dl,
                                               "client_transfer_ul": client_transfer_ul,
                                               "client_origin_flag": '',
                                               "client_origin": ''
                                           });
                                        
                                           // Fetch origin information for connected IPs
                                           for (let client of list_of_clients) {
                                               if (client.client_ip) {
                                                   client.client_origin = await fetchClientOrigin(client.client_ip);
                                               }
                                           }
                                        
                                           // Fetch country_code for connected clients
                                           for (let client of list_of_clients) {
                                               if (client.client_ip) {
                                                   client.client_origin_flag = await fetchClientOriginCountryCode(client.client_ip);
                                               }
                                           }
                                        
                                           // Append history clients to existing history state
                                           var json_history = JSON.parse(getState('0_userdata.0.wireguard-clients.Wireguard-JSON-History').val);
                                           json_history.unshift(...list_of_clients);
                                           setState('0_userdata.0.wireguard-clients.Wireguard-JSON-History', JSON.stringify(json_history));
                                        }
                                        
                                        
                                        //////////////
                                        // Triggers //
                                        //////////////
                                        
                                        // Define triggers for updating wireguard data
                                        $('wireguard.0.*.connected').on(wireguard_infos);
                                        $('wireguard.0.*.endpoint').on(wireguard_infos);
                                        $('wireguard.0.*.transferRx').on(wireguard_infos);
                                        $('wireguard.0.*.transferTx').on(wireguard_infos);
                                        
                                        // Trigger wireguard function on start
                                        wireguard_infos();
                                        
                                        // Define triggers for logging wireguard connection history
                                        $('wireguard.0.*.connected').on(wireguard_history);
                                        
                                        
                                        ///////////////
                                        // Functions //
                                        ///////////////
                                        
                                        // Helper function to make httpGet requests async
                                        function httpGetAsync(url) {
                                           return new Promise((resolve, reject) => {
                                               httpGet(url, { timeout: 2000, responseType: 'text' }, (err, response) => {
                                                   if (err) return reject(err);
                                                   resolve(response);
                                               });
                                           });
                                        }
                                        
                                        // Helper function to create states asynchronously if they don't exist
                                        async function createStateIfNotExists(stateId, defaultValue, attributes) {
                                           if (!existsState(stateId)) {
                                               await createStateAsync(stateId, defaultValue, attributes);
                                           }
                                        }
                                        
                                        // Helper function to format date and time into German format
                                        function formatDateToGerman(date) {
                                           const days = ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."];
                                           let dayName = days[date.getDay()];
                                           let day = ('0' + date.getDate()).slice(-2);
                                           let month = ('0' + (date.getMonth() + 1)).slice(-2);
                                           let year = date.getFullYear();
                                           let hours = ('0' + date.getHours()).slice(-2);
                                           let minutes = ('0' + date.getMinutes()).slice(-2);
                                        
                                           return `${dayName} ${day}.${month}.${year} - ${hours}:${minutes} Uhr`;
                                        }
                                        
                                        
                                        // Fetch client origin information using IP address
                                        async function fetchClientOrigin(ip) {
                                           if (ip.indexOf('.') > 0) {
                                               try {
                                                   let url = `https://api.ipapi.is/?q=${ip}`;
                                                   let response = await httpGetAsync(url);
                                                   let json = JSON.parse(response.data);
                                                   
                                                   // Check if the necessary properties exist before accessing them
                                                   let state = json?.location?.state || '';
                                                   let city = json?.location?.city || '';
                                                   let provider = json?.company?.name || '';
                                                   
                                                   return `${state} / ${city} / ${provider}`;
                                               } catch (error) {
                                                   console.error('Wireguard Script: Error fetching client origin:', error);
                                                   return '';
                                               }
                                           }
                                           return '';
                                        }
                                        
                                        // Fetch client origin country code using IP address
                                        async function fetchClientOriginCountryCode(ip) {
                                           if (ip.indexOf('.') > 0) {
                                               try {
                                                   let url = `https://api.ipapi.is/?q=${ip}`;
                                                   let response = await httpGetAsync(url);
                                                   let json = JSON.parse(response.data);
                                                   
                                                   // Check if the necessary properties exist before accessing them
                                                   let countryCode = json?.location?.country_code || '';
                                                   return `<img src="https://flagsapi.com/${countryCode}/flat/64.png" style="width:20px;height:20px;">`;
                                               } catch (error) {
                                                   console.error('Wireguard Script: Error fetching client origin country code:', error);
                                                   return 'Unknown';
                                               }
                                           }
                                           return '';
                                        }
                                        
                                        

                                        View Export (VIS 1)

                                        {
                                           "settings": {
                                               "style": {
                                                   "background_class": "",
                                                   "background-color": "#303030",
                                                   "background-image": "",
                                                   "background-repeat": "",
                                                   "background-attachment": "",
                                                   "background-position": "",
                                                   "background-size": "",
                                                   "background-clip": "",
                                                   "background-origin": ""
                                               },
                                               "theme": "redmond",
                                               "sizex": "1500",
                                               "sizey": "2500",
                                               "gridSize": "",
                                               "useBackground": false,
                                               "snapType": null,
                                               "useAsDefault": true,
                                               "alwaysRender": true
                                           },
                                           "widgets": {
                                               "e00001": {
                                                   "tpl": "tplVis-materialdesign-Table",
                                                   "data": {
                                                       "oid": "0_userdata.0.wireguard-clients.Wireguard-JSON",
                                                       "g_fixed": true,
                                                       "g_visibility": false,
                                                       "g_css_font_text": false,
                                                       "g_css_background": false,
                                                       "g_css_shadow_padding": false,
                                                       "g_css_border": false,
                                                       "g_gestures": false,
                                                       "g_signals": false,
                                                       "g_last_change": false,
                                                       "countCols": "7",
                                                       "tableLayout": "standard",
                                                       "showHeader": true,
                                                       "headerTextSize": "20px",
                                                       "showColumn0": "true",
                                                       "colType0": "text",
                                                       "textAlign0": "center",
                                                       "showColumn1": "true",
                                                       "colType1": "text",
                                                       "textAlign1": "right",
                                                       "signals-cond-0": "==",
                                                       "signals-val-0": true,
                                                       "signals-icon-0": "/vis.0/VIS_v3/lowbattery.png",
                                                       "signals-icon-size-0": 0,
                                                       "signals-blink-0": false,
                                                       "signals-horz-0": 0,
                                                       "signals-vert-0": 0,
                                                       "signals-hide-edit-0": false,
                                                       "signals-cond-1": "==",
                                                       "signals-val-1": true,
                                                       "signals-icon-1": "/vis.0/VIS_v3/lowbattery.png",
                                                       "signals-icon-size-1": 0,
                                                       "signals-blink-1": false,
                                                       "signals-horz-1": 0,
                                                       "signals-vert-1": 0,
                                                       "signals-hide-edit-1": false,
                                                       "signals-cond-2": "==",
                                                       "signals-val-2": true,
                                                       "signals-icon-2": "/vis.0/VIS_v3/lowbattery.png",
                                                       "signals-icon-size-2": 0,
                                                       "signals-blink-2": false,
                                                       "signals-horz-2": 0,
                                                       "signals-vert-2": 0,
                                                       "signals-hide-edit-2": false,
                                                       "lc-type": "last-change",
                                                       "lc-is-interval": true,
                                                       "lc-is-moment": false,
                                                       "lc-format": "",
                                                       "lc-position-vert": "top",
                                                       "lc-position-horz": "right",
                                                       "lc-offset-vert": 0,
                                                       "lc-offset-horz": 0,
                                                       "lc-font-size": "12px",
                                                       "lc-font-family": "",
                                                       "lc-font-style": "",
                                                       "lc-bkg-color": "",
                                                       "lc-color": "",
                                                       "lc-border-width": "0",
                                                       "lc-border-style": "",
                                                       "lc-border-color": "",
                                                       "lc-border-radius": 10,
                                                       "lc-zindex": 0,
                                                       "showColumn2": "true",
                                                       "colType2": "text",
                                                       "textAlign2": "center",
                                                       "showColumn3": true,
                                                       "colType3": "text",
                                                       "textAlign3": "center",
                                                       "label0": "Status",
                                                       "label2": "Client",
                                                       "label1": "Last Connection Change",
                                                       "padding_left0": "10",
                                                       "label3": "IP",
                                                       "dataJson": "",
                                                       "padding_left2": "",
                                                       "class": "tableLog",
                                                       "textSize3": "small",
                                                       "textColor2": "#8f8f8f",
                                                       "textSize2": "small",
                                                       "padding_right3": "",
                                                       "rowHeight": "25",
                                                       "textSize0": "small",
                                                       "textSize1": "small",
                                                       "padding_left1": "",
                                                       "textColor0": "#8f8f8f",
                                                       "textColor1": "#8f8f8f",
                                                       "textColor3": "#8f8f8f",
                                                       "imageSize1": "",
                                                       "prefix3": "<span style=\"word-wrap:break-all\">",
                                                       "suffix3": "</span>",
                                                       "colorHeaderRowText": "white",
                                                       "colorHeaderRowBackground": "#212121",
                                                       "colorRowBackground": "#303030",
                                                       "colorRowText": "#fff",
                                                       "dividers": "",
                                                       "colorBackground": "transparent",
                                                       "prefix2": "",
                                                       "prefix1": "",
                                                       "suffix2": "",
                                                       "suffix1": "",
                                                       "columnWidth0": "50",
                                                       "columnWidth1": "130",
                                                       "columnWidth3": "70",
                                                       "columnWidth2": "70",
                                                       "fontFamily1": "Arial, Helvetica, sans-serif",
                                                       "fontFamily3": "Arial, Helvetica, sans-serif",
                                                       "fontFamily2": "Arial, Helvetica, sans-serif",
                                                       "fontFamily0": "Arial, Helvetica, sans-serif",
                                                       "colTextSize2": "20px",
                                                       "colTextSize3": "20px",
                                                       "colTextSize1": "20px",
                                                       "colTextSize0": "20px",
                                                       "name": "Ubersicht",
                                                       "headerRowHeight": "30",
                                                       "headerFontFamily": "Arial, Helvetica, sans-serif",
                                                       "colNoWrap1": true,
                                                       "colNoWrap0": true,
                                                       "colTextColor0": "white",
                                                       "colTextColor1": "",
                                                       "colTextColor2": "lightblue",
                                                       "colTextColor3": "white",
                                                       "colNoWrap3": true,
                                                       "colNoWrap2": true,
                                                       "roundBorder": false,
                                                       "colorRowBackgroundHover": "grey",
                                                       "borderColor": "#mdwTheme:vis-materialdesign.0.colors.table.border",
                                                       "visibility-cond": "==",
                                                       "visibility-val": 1,
                                                       "visibility-groups-action": "hide",
                                                       "fixedHeader": false,
                                                       "showColumn4": "true",
                                                       "colType4": "text",
                                                       "textAlign4": "center",
                                                       "colTextSize4": "20px",
                                                       "fontFamily4": "Arial, Helvetica, sans-serif",
                                                       "showColumn5": "true",
                                                       "colType5": "text",
                                                       "textAlign5": "left",
                                                       "colTextSize5": "20px",
                                                       "fontFamily5": "Arial, Helvetica, sans-serif",
                                                       "showColumn6": "true",
                                                       "colType6": "text",
                                                       "textAlign6": "center",
                                                       "colTextSize6": "20px",
                                                       "fontFamily6": "Arial, Helvetica, sans-serif",
                                                       "showColumn7": true,
                                                       "colType7": "text",
                                                       "textAlign7": "center",
                                                       "colTextSize7": "20px",
                                                       "fontFamily7": "Arial, Helvetica, sans-serif",
                                                       "showColumn8": true,
                                                       "colType8": "text",
                                                       "textAlign8": "center",
                                                       "colTextSize8": "20px",
                                                       "fontFamily8": "Arial, Helvetica, sans-serif",
                                                       "columnWidth4": "60",
                                                       "label4": "DL",
                                                       "columnWidth5": "60",
                                                       "colNoWrap5": true,
                                                       "label5": "UL",
                                                       "label6": "Land",
                                                       "label7": "Origin",
                                                       "label8": "Origin",
                                                       "showColumn9": "true",
                                                       "colType9": "text",
                                                       "textAlign9": "center",
                                                       "colTextSize9": "60px",
                                                       "fontFamily9": "Arial, Helvetica, sans-serif",
                                                       "showColumn10": "true",
                                                       "colType10": "text",
                                                       "textAlign10": "center",
                                                       "colTextSize10": "#mdwTheme:vis-materialdesign.0.fontSizes.table.row",
                                                       "fontFamily10": "#mdwTheme:vis-materialdesign.0.fonts.table.row",
                                                       "label9": "Vers.",
                                                       "label10": "Temp.",
                                                       "columnWidth6": "50",
                                                       "columnWidth7": "200",
                                                       "columnWidth8": "140",
                                                       "colNoWrap6": true,
                                                       "padding_right6": "1",
                                                       "colNoWrap7": false
                                                   },
                                                   "style": {
                                                       "left": "0px",
                                                       "top": "0px",
                                                       "width": "1240px",
                                                       "height": "248px",
                                                       "z-index": "",
                                                       "overflow-y": ""
                                                   },
                                                   "widgetSet": "materialdesign"
                                               },
                                               "e00002": {
                                                   "tpl": "tplHqButton",
                                                   "data": {
                                                       "oid": "javascript.0.scriptEnabled.java.abfragen.wireguard_clients",
                                                       "min": "false",
                                                       "max": "true",
                                                       "iconName": "",
                                                       "btIconWidth": "100",
                                                       "offsetAuto": false,
                                                       "leftOffset": "0",
                                                       "topOffset": "0",
                                                       "timeAsInterval": "true",
                                                       "infoLeftFontSize": "12",
                                                       "infoFontRightSize": "12",
                                                       "caption": "",
                                                       "captionOn": "",
                                                       "iconOn": "",
                                                       "gestures-offsetX": 0,
                                                       "gestures-offsetY": 0,
                                                       "signals-cond-0": "==",
                                                       "signals-val-0": "true",
                                                       "signals-icon-0": "/icons-mfd-png/control_clear.png",
                                                       "signals-icon-size-0": "50",
                                                       "signals-blink-0": false,
                                                       "signals-horz-0": "-30",
                                                       "signals-vert-0": "-30",
                                                       "signals-hide-edit-0": false,
                                                       "signals-cond-1": "==",
                                                       "signals-val-1": "false",
                                                       "signals-icon-1": "/icons-mfd-png/control_cancel.png",
                                                       "signals-icon-size-1": "50",
                                                       "signals-blink-1": true,
                                                       "signals-horz-1": "-30",
                                                       "signals-vert-1": "-30",
                                                       "signals-hide-edit-1": false,
                                                       "signals-cond-2": "==",
                                                       "signals-val-2": true,
                                                       "signals-icon-2": "/vis.0/VIS_v3/lowbattery.png",
                                                       "signals-icon-size-2": 0,
                                                       "signals-blink-2": false,
                                                       "signals-horz-2": 0,
                                                       "signals-vert-2": 0,
                                                       "signals-hide-edit-2": false,
                                                       "pushButton": false,
                                                       "usejQueryStyle": false,
                                                       "g_visibility": false,
                                                       "styleActive": "hq-button-no-background",
                                                       "name": "Infos_Skript-Status_Box",
                                                       "infoLeftPaddingLeft": "15",
                                                       "infoLeftPaddingRight": "50",
                                                       "infoRightPaddingRight": "15",
                                                       "gestures-swipeLeft-limit": "-1",
                                                       "gestures-rotateLeft-limit": "2",
                                                       "styleNormal": "hq-button-no-background",
                                                       "testActive": false,
                                                       "lc-type": "last-change",
                                                       "lc-is-interval": true,
                                                       "lc-is-moment": false,
                                                       "lc-format": "",
                                                       "lc-position-vert": "top",
                                                       "lc-position-horz": "right",
                                                       "lc-offset-vert": 0,
                                                       "lc-offset-horz": 0,
                                                       "lc-font-size": "12px",
                                                       "lc-font-family": "",
                                                       "lc-font-style": "",
                                                       "lc-bkg-color": "",
                                                       "lc-color": "",
                                                       "lc-border-width": "0",
                                                       "lc-border-style": "",
                                                       "lc-border-color": "",
                                                       "lc-border-radius": 10,
                                                       "lc-zindex": 0,
                                                       "descriptionLeft": "Side brush lifetime reset",
                                                       "descriptionLeftDisabled": true,
                                                       "visibility-cond": "==",
                                                       "visibility-val": 1,
                                                       "visibility-groups-action": "hide",
                                                       "signals-oid-0": "javascript.0.scriptEnabled.java.abfragen.wireguard_clients",
                                                       "signals-oid-1": "javascript.0.scriptEnabled.java.abfragen.wireguard_clients"
                                                   },
                                                   "style": {
                                                       "left": "599px",
                                                       "top": "750px",
                                                       "width": "30px",
                                                       "height": "30px",
                                                       "border-width": "2px",
                                                       "border-style": "hidden",
                                                       "border-color": "{wert:javascript.0.scriptEnabled.java.abfragen.shelly_infos; wert==\"true\" ? \"#41f316\" : ",
                                                       "border-radius": "10px",
                                                       "z-index": "0",
                                                       "text-align": "center",
                                                       "font-size": "small",
                                                       "box-shadow": "",
                                                       "background": "#303030"
                                                   },
                                                   "widgetSet": "hqwidgets"
                                               },
                                               "e00003": {
                                                   "tpl": "tplValueLastchange",
                                                   "data": {
                                                       "oid": "0_userdata.0.wireguard-devices.Letztes_Update",
                                                       "g_fixed": true,
                                                       "g_visibility": false,
                                                       "g_css_font_text": true,
                                                       "g_css_background": false,
                                                       "g_css_shadow_padding": false,
                                                       "g_css_border": false,
                                                       "g_gestures": false,
                                                       "g_signals": false,
                                                       "g_last_change": false,
                                                       "visibility-cond": "==",
                                                       "visibility-val": 1,
                                                       "visibility-groups-action": "hide",
                                                       "signals-cond-0": "==",
                                                       "signals-val-0": true,
                                                       "signals-icon-0": "/vis/signals/lowbattery.png",
                                                       "signals-icon-size-0": 0,
                                                       "signals-blink-0": false,
                                                       "signals-horz-0": 0,
                                                       "signals-vert-0": 0,
                                                       "signals-hide-edit-0": false,
                                                       "signals-cond-1": "==",
                                                       "signals-val-1": true,
                                                       "signals-icon-1": "/vis/signals/lowbattery.png",
                                                       "signals-icon-size-1": 0,
                                                       "signals-blink-1": false,
                                                       "signals-horz-1": 0,
                                                       "signals-vert-1": 0,
                                                       "signals-hide-edit-1": false,
                                                       "signals-cond-2": "==",
                                                       "signals-val-2": true,
                                                       "signals-icon-2": "/vis/signals/lowbattery.png",
                                                       "signals-icon-size-2": 0,
                                                       "signals-blink-2": false,
                                                       "signals-horz-2": 0,
                                                       "signals-vert-2": 0,
                                                       "signals-hide-edit-2": false,
                                                       "lc-type": "last-change",
                                                       "lc-is-interval": true,
                                                       "lc-is-moment": false,
                                                       "lc-format": "",
                                                       "lc-position-vert": "top",
                                                       "lc-position-horz": "right",
                                                       "lc-offset-vert": 0,
                                                       "lc-offset-horz": 0,
                                                       "lc-font-size": "12px",
                                                       "lc-font-family": "",
                                                       "lc-font-style": "",
                                                       "lc-bkg-color": "",
                                                       "lc-color": "",
                                                       "lc-border-width": "0",
                                                       "lc-border-style": "",
                                                       "lc-border-color": "",
                                                       "lc-border-radius": 10,
                                                       "lc-zindex": 0,
                                                       "name": "Infos_Letzte_Aenderung",
                                                       "format_date": "DD.MM.YYYY -  hh:mm:ss",
                                                       "html_prepend": "Letzte Aktualisierung: ",
                                                       "html_append": " Uhr"
                                                   },
                                                   "style": {
                                                       "left": "10px",
                                                       "top": "750px",
                                                       "width": "410px",
                                                       "height": "30px",
                                                       "text-align": "left",
                                                       "font-weight": "bolder",
                                                       "font-size": "large",
                                                       "line-height": "30px",
                                                       "color": "white",
                                                       "z-index": ""
                                                   },
                                                   "widgetSet": "basic"
                                               },
                                               "e00004": {
                                                   "tpl": "tplHtml",
                                                   "data": {
                                                       "g_fixed": true,
                                                       "g_visibility": false,
                                                       "g_css_font_text": true,
                                                       "g_css_background": true,
                                                       "g_css_shadow_padding": false,
                                                       "g_css_border": false,
                                                       "g_gestures": false,
                                                       "g_signals": false,
                                                       "g_last_change": false,
                                                       "visibility-cond": "==",
                                                       "visibility-val": 1,
                                                       "visibility-groups-action": "hide",
                                                       "refreshInterval": "0",
                                                       "signals-cond-0": "==",
                                                       "signals-val-0": true,
                                                       "signals-icon-0": "/vis/signals/lowbattery.png",
                                                       "signals-icon-size-0": 0,
                                                       "signals-blink-0": false,
                                                       "signals-horz-0": 0,
                                                       "signals-vert-0": 0,
                                                       "signals-hide-edit-0": false,
                                                       "signals-cond-1": "==",
                                                       "signals-val-1": true,
                                                       "signals-icon-1": "/vis/signals/lowbattery.png",
                                                       "signals-icon-size-1": 0,
                                                       "signals-blink-1": false,
                                                       "signals-horz-1": 0,
                                                       "signals-vert-1": 0,
                                                       "signals-hide-edit-1": false,
                                                       "signals-cond-2": "==",
                                                       "signals-val-2": true,
                                                       "signals-icon-2": "/vis/signals/lowbattery.png",
                                                       "signals-icon-size-2": 0,
                                                       "signals-blink-2": false,
                                                       "signals-horz-2": 0,
                                                       "signals-vert-2": 0,
                                                       "signals-hide-edit-2": false,
                                                       "lc-type": "last-change",
                                                       "lc-is-interval": true,
                                                       "lc-is-moment": false,
                                                       "lc-format": "",
                                                       "lc-position-vert": "top",
                                                       "lc-position-horz": "right",
                                                       "lc-offset-vert": 0,
                                                       "lc-offset-horz": 0,
                                                       "lc-font-size": "12px",
                                                       "lc-font-family": "",
                                                       "lc-font-style": "",
                                                       "lc-bkg-color": "",
                                                       "lc-color": "",
                                                       "lc-border-width": "0",
                                                       "lc-border-style": "",
                                                       "lc-border-color": "",
                                                       "lc-border-radius": 10,
                                                       "lc-zindex": 0,
                                                       "html": "Skript-Status",
                                                       "name": "Infos_Skript-Status"
                                                   },
                                                   "style": {
                                                       "left": "462px",
                                                       "top": "750px",
                                                       "height": "30px",
                                                       "width": "130px",
                                                       "z-index": "",
                                                       "color": "white",
                                                       "text-align": "center",
                                                       "text-shadow": "",
                                                       "font-family": "Arial, Helvetica, sans-serif",
                                                       "font-style": "",
                                                       "font-variant": "",
                                                       "font-weight": "bolder",
                                                       "font-size": "large",
                                                       "line-height": "30px",
                                                       "background": ""
                                                   },
                                                   "widgetSet": "basic"
                                               },
                                               "e00005": {
                                                   "tpl": "tplVis-materialdesign-Table",
                                                   "data": {
                                                       "oid": "0_userdata.0.wireguard-clients.Wireguard-JSON-History",
                                                       "g_fixed": true,
                                                       "g_visibility": false,
                                                       "g_css_font_text": false,
                                                       "g_css_background": false,
                                                       "g_css_shadow_padding": false,
                                                       "g_css_border": false,
                                                       "g_gestures": false,
                                                       "g_signals": false,
                                                       "g_last_change": false,
                                                       "countCols": "7",
                                                       "tableLayout": "standard",
                                                       "showHeader": true,
                                                       "headerTextSize": "20px",
                                                       "showColumn0": "true",
                                                       "colType0": "text",
                                                       "textAlign0": "center",
                                                       "showColumn1": "true",
                                                       "colType1": "text",
                                                       "textAlign1": "right",
                                                       "signals-cond-0": "==",
                                                       "signals-val-0": true,
                                                       "signals-icon-0": "/vis.0/VIS_v3/lowbattery.png",
                                                       "signals-icon-size-0": 0,
                                                       "signals-blink-0": false,
                                                       "signals-horz-0": 0,
                                                       "signals-vert-0": 0,
                                                       "signals-hide-edit-0": false,
                                                       "signals-cond-1": "==",
                                                       "signals-val-1": true,
                                                       "signals-icon-1": "/vis.0/VIS_v3/lowbattery.png",
                                                       "signals-icon-size-1": 0,
                                                       "signals-blink-1": false,
                                                       "signals-horz-1": 0,
                                                       "signals-vert-1": 0,
                                                       "signals-hide-edit-1": false,
                                                       "signals-cond-2": "==",
                                                       "signals-val-2": true,
                                                       "signals-icon-2": "/vis.0/VIS_v3/lowbattery.png",
                                                       "signals-icon-size-2": 0,
                                                       "signals-blink-2": false,
                                                       "signals-horz-2": 0,
                                                       "signals-vert-2": 0,
                                                       "signals-hide-edit-2": false,
                                                       "lc-type": "last-change",
                                                       "lc-is-interval": true,
                                                       "lc-is-moment": false,
                                                       "lc-format": "",
                                                       "lc-position-vert": "top",
                                                       "lc-position-horz": "right",
                                                       "lc-offset-vert": 0,
                                                       "lc-offset-horz": 0,
                                                       "lc-font-size": "12px",
                                                       "lc-font-family": "",
                                                       "lc-font-style": "",
                                                       "lc-bkg-color": "",
                                                       "lc-color": "",
                                                       "lc-border-width": "0",
                                                       "lc-border-style": "",
                                                       "lc-border-color": "",
                                                       "lc-border-radius": 10,
                                                       "lc-zindex": 0,
                                                       "showColumn2": "true",
                                                       "colType2": "text",
                                                       "textAlign2": "center",
                                                       "showColumn3": true,
                                                       "colType3": "text",
                                                       "textAlign3": "center",
                                                       "label0": "Status",
                                                       "label2": "Client",
                                                       "label1": "Last Connection Change",
                                                       "padding_left0": "10",
                                                       "label3": "IP",
                                                       "dataJson": "",
                                                       "padding_left2": "",
                                                       "class": "tableLog",
                                                       "textSize3": "small",
                                                       "textColor2": "#8f8f8f",
                                                       "textSize2": "small",
                                                       "padding_right3": "",
                                                       "rowHeight": "25",
                                                       "textSize0": "small",
                                                       "textSize1": "small",
                                                       "padding_left1": "",
                                                       "textColor0": "#8f8f8f",
                                                       "textColor1": "#8f8f8f",
                                                       "textColor3": "#8f8f8f",
                                                       "imageSize1": "",
                                                       "prefix3": "<span style=\"word-wrap:break-all\">",
                                                       "suffix3": "</span>",
                                                       "colorHeaderRowText": "white",
                                                       "colorHeaderRowBackground": "#212121",
                                                       "colorRowBackground": "#303030",
                                                       "colorRowText": "#fff",
                                                       "dividers": "",
                                                       "colorBackground": "transparent",
                                                       "prefix2": "",
                                                       "prefix1": "",
                                                       "suffix2": "",
                                                       "suffix1": "",
                                                       "columnWidth0": "50",
                                                       "columnWidth1": "130",
                                                       "columnWidth3": "70",
                                                       "columnWidth2": "70",
                                                       "fontFamily1": "Arial, Helvetica, sans-serif",
                                                       "fontFamily3": "Arial, Helvetica, sans-serif",
                                                       "fontFamily2": "Arial, Helvetica, sans-serif",
                                                       "fontFamily0": "Arial, Helvetica, sans-serif",
                                                       "colTextSize2": "20px",
                                                       "colTextSize3": "20px",
                                                       "colTextSize1": "20px",
                                                       "colTextSize0": "20px",
                                                       "name": "History",
                                                       "headerRowHeight": "30",
                                                       "headerFontFamily": "Arial, Helvetica, sans-serif",
                                                       "colNoWrap1": true,
                                                       "colNoWrap0": true,
                                                       "colTextColor0": "white",
                                                       "colTextColor1": "",
                                                       "colTextColor2": "lightblue",
                                                       "colTextColor3": "white",
                                                       "colNoWrap3": true,
                                                       "colNoWrap2": true,
                                                       "roundBorder": false,
                                                       "colorRowBackgroundHover": "grey",
                                                       "borderColor": "#mdwTheme:vis-materialdesign.0.colors.table.border",
                                                       "visibility-cond": "==",
                                                       "visibility-val": 1,
                                                       "visibility-groups-action": "hide",
                                                       "fixedHeader": false,
                                                       "showColumn4": "true",
                                                       "colType4": "text",
                                                       "textAlign4": "center",
                                                       "colTextSize4": "20px",
                                                       "fontFamily4": "Arial, Helvetica, sans-serif",
                                                       "showColumn5": "true",
                                                       "colType5": "text",
                                                       "textAlign5": "left",
                                                       "colTextSize5": "20px",
                                                       "fontFamily5": "Arial, Helvetica, sans-serif",
                                                       "showColumn6": "true",
                                                       "colType6": "text",
                                                       "textAlign6": "center",
                                                       "colTextSize6": "20px",
                                                       "fontFamily6": "Arial, Helvetica, sans-serif",
                                                       "showColumn7": true,
                                                       "colType7": "text",
                                                       "textAlign7": "center",
                                                       "colTextSize7": "20px",
                                                       "fontFamily7": "Arial, Helvetica, sans-serif",
                                                       "showColumn8": true,
                                                       "colType8": "text",
                                                       "textAlign8": "center",
                                                       "colTextSize8": "20px",
                                                       "fontFamily8": "Arial, Helvetica, sans-serif",
                                                       "columnWidth4": "60",
                                                       "label4": "DL",
                                                       "columnWidth5": "60",
                                                       "colNoWrap5": true,
                                                       "label5": "UL",
                                                       "label6": "Land",
                                                       "label7": "Origin",
                                                       "label8": "Origin",
                                                       "showColumn9": "true",
                                                       "colType9": "text",
                                                       "textAlign9": "center",
                                                       "colTextSize9": "60px",
                                                       "fontFamily9": "Arial, Helvetica, sans-serif",
                                                       "showColumn10": "true",
                                                       "colType10": "text",
                                                       "textAlign10": "center",
                                                       "colTextSize10": "#mdwTheme:vis-materialdesign.0.fontSizes.table.row",
                                                       "fontFamily10": "#mdwTheme:vis-materialdesign.0.fonts.table.row",
                                                       "label9": "Vers.",
                                                       "label10": "Temp.",
                                                       "columnWidth6": "50",
                                                       "columnWidth7": "200",
                                                       "columnWidth8": "140",
                                                       "colNoWrap6": true,
                                                       "padding_right6": "1",
                                                       "colNoWrap7": false
                                                   },
                                                   "style": {
                                                       "left": "5px",
                                                       "top": "280px",
                                                       "width": "1240px",
                                                       "height": "460px",
                                                       "z-index": "",
                                                       "overflow-y": "auto"
                                                   },
                                                   "widgetSet": "materialdesign"
                                               }
                                           },
                                           "name": "2422_Netzwerk_Wireguard",
                                           "filterList": []
                                        }
                                        

                                        1 Reply Last reply
                                        1
                                        • NegaleinN Offline
                                          NegaleinN Offline
                                          Negalein
                                          Global Moderator
                                          wrote on last edited by
                                          #23

                                          @kuddel sagte in Wireguard Server abfragen -> Client Infos:

                                          Skript

                                          Sorry, für die seeeeeeehr lange Zeit.
                                          Hab es komplett vergessen.

                                          Ist das Script ohne Anpassung lauffähig?

                                          ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                                          ° Node.js Fixer ---> iob nodejs-update
                                          ° Fixer ---> iob fix

                                          K 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          368

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe