ich verwende aktuell ein frisch installiertes OPSI 4.3.26.23 (letzte stabile Version) unter Ubuntu 24.04.
Fehlerbild
Beim Aufruf des RPC-Interfaces unter https://OPSI:4447/admin/#rpc-interface bleibt die Seite (außer der Menüleiste) leer. Ein Blick in die Chrome Dev-Tools zeigt folgende Fehlermeldung:
Code: Alles auswählen
admin/#rpc-interface:1 Uncaught SyntaxError: Expected ',' or '}' after property value in JSON at position 39041 (line 1 column 39042)
at JSON.parse (<anonymous>)
at admin/:23:31
Uncaught TypeError: Cannot read properties of undefined (reading 'forEach')
at fillRPCMethodSelect (admininterface.js:517:19)
at openTab (admin/:98:5)
at onLoad (admin/:59:4)
at onload (VM334 :1:1)
Öffnet man die Seite mit "Quelltext anzeigen" im Browser, so scheint die 250 KB RPC-Interfaces JSON direkt in den Quellcode der Seite geschrieben zu werden (https://github.com/opsi-org/opsiconfd/b ... e.html#L23), dessen Parsing im Browser fehlschlägt.
Nach weiterer Eingrenzung scheint die Fehlermeldung unter anderem durch den String "\u0022*\u0022" zu entstehen. Eventuell führen andere in Unicode codierten Zeichen zu ähnlichen Problemen, was ich aber nicht geprüft habe. Der Browser interpretiert zunächst den String und dekodiert die Unicode encodierten Zeichen, bevor der String an JSON.parse weitergeben wird. Im Folgenden ein Beispiel:
Code: Alles auswählen
{"doc": "\u0022*\u0022"} -> {"doc": ""*""} -> JSON.parse('{"doc": ""*""}') -> invalides JSON
Code: Alles auswählen
<script>
let data = '{"doc": "\u0022*\u0022"}';
JSON.parse(data);
</script>
Code: Alles auswählen
<script>
let data = '{"doc": "\\u0022*\\u0022"}';
JSON.parse(data);
</script>
Hat es einen Grund, warum die RPC-Interface JSON überhaupt direkt in den Quelltext geschrieben wird? Wäre es nicht eleganter und weniger fehleranfällig, den JSON Code nachzuladen? Lädt man das JSON so wie es aktuell ist aus einer Datei funktioniert alles einwandfrei.