Hilfreiche KocoBox Bookmarklets

Ich habe einige Bookmarklets entwickelt, welche die Bedienung der KocoBox Management- Oberfläche vereinfachen.

Zur Nutzung wird ein Lesezeichen im jeweiligen Browser erstellt, dessen URL/Link-Ziel mit dem jeweiligen Bookmarklet gefüllt wird und dessen Name frei vergeben werden kann, es obliegt dem Leser die Benennung so zu gestalten, dass er sie auseinanderhalten kann.

Nach dem Login auf der Kocobox Management Oberfläche kann das Lesezeichen durch anklicken ausgeführt werden.

Der Quellcode des Bookmarklets wird für die Ausführung nicht benötigt, erleichtert aber die Kontrolle, welcher Code hier ausgeführt wird und dient auch für mögliche, eigene Erweiterungen durch den Leser. Die Bookmarklets sind gemeinfrei nach CC-0.

 

Infomodell speichern

Ein Klick speichert das Infomodell als JSON Objekt, welches mit der weiter unten beschriebenen Methode wieder eingelesen werden kann. Das Infomodell kann nicht mit dem KocoBox eigenen Importer eingelesen werden; dieser akzeptiert lediglich XML, kein JSON.

javascript:(function()%7Bfunction%20Get(yourUrl)%7Bvar%20Httpreq%20%3D%20new%20XMLHttpRequest()%3BHttpreq.open(%22GET%22%2CyourUrl%2Cfalse)%3BHttpreq.send(null)%3Breturn%20(Httpreq.responseText)%3B%20%20%20%20%20%20%20%20%20%20%0A%7Dvar%20infomodell%20%3D%20Get(%22%2Fadministration%2Fjson-data%2Finfomodell%22)%3B%0Afunction%20download(content%2C%20fileName%2C%20contentType)%20%7Bvar%20a%20%3D%20document.createElement(%22a%22)%3Bvar%20file%20%3D%20new%20Blob(%5Bcontent%5D%2C%20%7Btype%3A%20contentType%7D)%3B%20a.href%20%3D%20URL.createObjectURL(file)%3Ba.download%20%3D%20fileName%3Ba.click()%3B%0A%7D%0Alet%20date%20%3D%20new%20Date()%3B%0Adate%20%3D%20date.toISOString().slice(0%2C10)%3B%0Adownload(infomodell%2C%20window.location.hostname%20%2B%20%22-%22%20%2B%20date%20%2B%20%22.json%22%2C%20'text%2Fplain')%3B%7D)()%3B

 

Quellcode:

function Get(yourUrl){
    var Httpreq = new XMLHttpRequest(); // a new request
    Httpreq.open("GET",yourUrl,false);
    Httpreq.send(null);
    return (Httpreq.responseText);          
}
var infomodell = Get("/administration/json-data/infomodell");

function download(content, fileName, contentType) {
    var a = document.createElement("a");
    var file = new Blob([content], {type: contentType});
    a.href = URL.createObjectURL(file);
    a.download = fileName;
    a.click();
}

let date = new Date();
date = date.toISOString().slice(0,10);

download(infomodell, window.location.hostname + "-" + date + ".json", 'text/plain');

 

Infomodell hochladen

Nach einem Klick auf das Bookmarklet wird ein Texteingabefeld angezeigt. Das oben heruntergeladene Infomodell wird in einem Editor geöffnet, in die Zwischenablage kopiert und im Anschluss in das Texteingabefeld des ausgeführten Bookmarklets einkopiert.

javascript:(function()%7Blet%20infomodell%20%3D%20prompt(%22Fuegen%20Sie%20hier%20das%20Infomodell%20aus%20ihrer%20Textdatei%20ein%22%2C%20%22%22)%3B%0Afetch(%22%2Fadministration%2Fjson-store%2Finfomodell%22%2C%20%7B%20method%3A%20%22POST%22%2C%20body%3A%20infomodell%2C%7D)%3B%7D)()%3B

 

Quellcode:

let infomodell = prompt("Fuegen Sie hier das Infomodell aus ihrer Textdatei ein", "");
fetch("/administration/json-store/infomodell", { method: "POST", body: infomodell,});

 

 

Beheben von: Leerer Kartenterminaldienst auf KocoBox nach KT Anmeldung

Manchmal kommt es vor, dass der Kartenterminaldienst in der KocoBox keine Kartenterminals mehr anzeigt. Ursache ist meist, dass ein KT mit einer neuen SMC-KT erneut gepairt wird, ohne das KT vorher herauszulöschen.
Das nachträgliche Löschen des neuesten, fehlerverursachenden KTs ist über die Oberfläche nicht mehr möglich, weil keine KTs angezeigt werden.

Ist die CT_ID bekannt, kann mit dem unten stehenden Bookmarklet der Lösch-Befehl abgesetzt werden. Meist ist das die letzte CTID im Infomodell + 1.

javascript: (() => { let CTID = prompt("Welche CT_ID soll geloescht werden?", "CT_ID_00XX"); data = '{"CTID":"'+CTID+'"}'; fetch("/administration/perform/delete-ct", { method: "POST", body: data,}); alert(CTID + ' vom Konnektor geloescht!') })();

 

Quellcode:

let CTID = prompt("Welche CT_ID soll geloescht werden?", "CT_ID_00XX");
data = '{"CTID":"'+CTID+'"}';
fetch("/administration/perform/delete-ct", { method: "POST", body: data,});
alert(CTID + ' vom Konnektor geloescht!') })();

 

Kocobox Logs mit jedem Browser herunterladen

(Obsolet mit neuester Firmware 5.5.16)

Behebt das Problem, dass der Download nur mit einem alten Firefox funktioniert.

javascript:(function()%7Blet%20logtype%20%3D%20prompt(%22Bitte%20geben%20Sie%20den%20Logtyp%20an%20ein%3A%20system%20%3A%20security%20%3A%20performance%22%2C%20%22system%22)%3B%0Alet%20logpath%20%3D%20%22%22%3B%0Aswitch%20(logtype)%20%7B%0A%20%20%20case%20%22system%22%3A%20%0A%20%20%20%20%20%20logpath%20%3D%20%22log%2Fsys%2Fsys%22%3B%0A%20%20%20%20%20%20break%3B%0A%20%20%20case%20%22security%22%3A%20%0A%20%20%20%20%20%20logpath%20%3D%20%22log%2Fsec%2Fsys%22%3B%0A%20%20%20%20%20%20break%3B%20%0A%20%20%20case%20%22performance%22%3A%20%0A%20%20%20%20%20%20logpath%20%3D%20%22log%2Fperf%2Fsys%22%3B%0A%20%20%20%20%20%20break%3B%20%0A%7D%20%0Alet%20xtoken%20%3D%20document.getElementById(%22x-token%22).value%3B%0Alet%20cert%20%3D%20%22%2Fadministration%2Fdownload%2F%22%2Blogpath.replace(%2F%5Cs%2Fg%2C%20'')%2B%22%2F%22%2Blogtype%2B%22.log%3Fxtoken%3D%22%2Bxtoken%3B%0Avar%20xhr%20%3D%20new%20XMLHttpRequest()%3B%0Axhr.responseType%20%3D%20'blob'%3B%0Axhr.open('GET'%2C%20cert%2C%20true)%3B%0Axhr.send(null)%3B%0Axhr.onload%20%3D%20function%20(e)%20%7B%0A%20%20%20%20var%20blob%20%3D%20e.currentTarget.response%3B%0A%20%20%20%20saveBlob(blob%2C%20logtype%2B%22.log%22)%3B%0A%7D%0Afunction%20saveBlob(blob%2C%20fileName)%20%7B%0A%20%20%20%20var%20a%20%3D%20document.createElement('a')%3B%0A%20%20%20%20a.href%20%3D%20window.URL.createObjectURL(blob)%3B%0A%20%20%20%20a.download%20%3D%20fileName%3B%0A%20%20%20%20a.dispatchEvent(new%20MouseEvent('click'))%3B%0A%7D%7D)()%3B

 

Quellcode:

let logtype = prompt("Bitte geben Sie den Logtyp an ein: system : security : performance", "system");
let logpath = "";
switch (logtype) {
   case "system": 
      logpath = "log/sys/sys";
      break;
   case "security": 
      logpath = "log/sec/sys";
      break; 
   case "performance": 
      logpath = "log/perf/sys";
      break; 
} 
let xtoken = document.getElementById("x-token").value;
let cert = "/administration/download/"+logpath.replace(/\s/g, '')+"/"+logtype+".log?xtoken="+xtoken;
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.open('GET', cert, true);
xhr.send(null);
xhr.onload = function (e) {
    var blob = e.currentTarget.response;
    saveBlob(blob, logtype+".log");
}
function saveBlob(blob, fileName) {
    var a = document.createElement('a');
    a.href = window.URL.createObjectURL(blob);
    a.download = fileName;
    a.dispatchEvent(new MouseEvent('click'));
}

 

Kocobox Clientzertifikat mit jedem Browser herunterladen

(Obsolet mit neuester Firmware 5.5.16)

Behebt das Problem, dass der Download nur mit einem alten Firefox funktioniert.

javascript:(function()%7Blet%20clientsystem%20%3D%20prompt(%22Bitte%20geben%20Sie%20die%20Clientsystem%20ID%20ein%22%2C%20%22%22)%3B%0Alet%20certtype%20%3D%20prompt(%22Bitte%20geben%20Sie%20den%20Zertifikatstyp%20ein%3A%20RSA_2048%20%3A%20RSA_3072%20%3A%20ECC_NIST%20%3A%20ECC_BRAINPOOL_P256_R1%22%2C%20%22RSA_2048%22)%3B%0Alet%20xtoken%20%3D%20document.getElementById(%22x-token%22).value%0Alet%20cert%20%3D%20%22%2Fadministration%2Fdownload%2Fgenerate-clientsystemcertificate%2F%22%2Bclientsystem%2B%22.zip%3Fxtoken%3D%22%2Bxtoken%2B%22%26certificateTyp%3D%22%2Bcerttype.replace(%2F%5Cs%2Fg%2C%20'')%3B%0Avar%20xhr%20%3D%20new%20XMLHttpRequest()%3B%0Axhr.responseType%20%3D%20'blob'%3B%0Axhr.open('GET'%2C%20cert%2C%20true)%3B%0Axhr.send(null)%3B%0Axhr.onload%20%3D%20function%20(e)%20%7B%0A%20%20%20%20var%20blob%20%3D%20e.currentTarget.response%3B%0A%20%20%20%20saveBlob(blob%2C%20clientsystem%2B%22.zip%22)%3B%0A%7D%0Afunction%20saveBlob(blob%2C%20fileName)%20%7B%0A%20%20%20%20var%20a%20%3D%20document.createElement('a')%3B%0A%20%20%20%20a.href%20%3D%20window.URL.createObjectURL(blob)%3B%0A%20%20%20%20a.download%20%3D%20fileName%3B%0A%20%20%20%20a.dispatchEvent(new%20MouseEvent('click'))%3B%0A%7D%7D)()%3B

 

Quellcode:

let clientsystem = prompt("Bitte geben Sie die Clientsystem ID ein", "");
let certtype = prompt("Bitte geben Sie den Zertifikatstyp ein: RSA_2048 : RSA_3072 : ECC_NIST : ECC_BRAINPOOL_P256_R1", "RSA_2048");
let xtoken = document.getElementById("x-token").value
let cert = "/administration/download/generate-clientsystemcertificate/"+clientsystem+".zip?xtoken="+xtoken+"&certificateTyp="+certtype.replace(/\s/g, '');
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.open('GET', cert, true);
xhr.send(null);
xhr.onload = function (e) {
    var blob = e.currentTarget.response;
    saveBlob(blob, clientsystem+".zip");
}
function saveBlob(blob, fileName) {
    var a = document.createElement('a');
    a.href = window.URL.createObjectURL(blob);
    a.download = fileName;
    a.dispatchEvent(new MouseEvent('click'));
}