JavaScript Shell in a Box (Webshell), Buttons mithilfe von JS triggern, Eingaben mithilfe von JS tätigen

_anonymous0815_

Lt. Commander
Registriert
Aug. 2020
Beiträge
1.308
Hallo liebes Forum,

ich (blutiger Anfänger bei Webprogrammierung) habe jetzt beschlossen, doch mal mein Projekt näher zu umschreiben, weil es ein paar Unklarheiten gibt.

Hier das jsfiddle vom Formular:

https://jsfiddle.net/ezxy6c52/

Die Website ist zweigeteilt, links werden die Eingaben getätigt, rechts (via iframe) soll Shell in a Box (nutzt einen eigenen Webserver) gestartet werden und gleichzeitig ein Skript welches auf dem Server liegt, sodass shell in the box die Ausgabe des Skripts live anzeigt..
Das sieht dann lokal so aus:
1672680200133.png


Soweit, so gut.
Jetzt gibt es aber zwei Probleme, Shell in the Box nutzt standardmäßig ein self-signed-certificate für https, das verhindert ein laden via iframe. So wie ich gelesen habe, gibt es keinen einfachen Weg, dies für ein lokales Webinterface zu umgehen, also bleibt da nur das Fallback auf http.
Welche Probleme damit einhergehen, ist mir soweit bewusst und dennoch würde ich das "Risiko" eingehen, diese Seite wird niemals das Internet sehen.

Das andere Problem ist, wie ich die Daten vom Formular am besten übergebe. Ich habe mich erst mal dafür entschieden, die Daten via POST-Methode und dann via php in eine File auf dem Server zu speichern. Denkbar wäre jetzt, das Formatieren dieser File und mit source <file> einzulesen.
Das ist denke ich mal das einfacher zu lösende Problem, das würde ich vermutlich hinbekommen, aber aktuell hänge ich noch an dem obigen Bild und zwar einmal an dem "Connect" Button, wenn der 60sec. Timeout greift. Diesen müsste man dann mit dem "Submit"-Button vom Formular erneut triggern.

Daher die Frage: Wie kann ich mithilfe von JavaScript, Buttons triggern?
Die Folgefrage: Wie kann ich, wenn danach der typische Linux-Login-Prompt kommt, den Benutzernamen übergeben, ein "virtuelles" Enter auslösen, das Passwort übergeben und erneut Enter auslösen?
Dass man den Login-Prompt manipulieren kann, scheint möglich, siehe:
Screenshot 2022-12-31 104933.png



Kann mir da jemand eine Quelle für js nennen oder gar ein Snippet teilen? Ich bin ja nicht ganz unbedarft, was Programmierung, bzw. Scripting angeht, mir fällt es als Web-Programmier-Anfänger allerdings schwer, diese erlernten Kenntnisse von z.B. Python auf js umzumünzen. Ich glaube schon ein Beispiel wäre da sehr hilfreich.

Falls noch Fragen aufkommen, werde ich sie beantworten, ansonsten wünsche ich einen guten Wochenstart!
 
Schau mal in deren offizielles Wiki rein. Da ist von zwei Dingen die Rede.
1, man kann eigene Zertifikate erstellen und mitgeben. Das ist in den allermeisten Fällen auch die bevorzugte Option. Geht auch ohne, Ja, aber nicht ohne Warnungen und mit Frames wie du festgestellt hast wird’s richtig interessant.
2, es gibt ein Ajax backend was SIAB nutzt. Eventuell kannst du das einbinden. Etwas mehr Aufwand, aber sauberer und bessere Integration, plus es löst alle angesprochenen Probleme.

Und fyi: Frames aller Art sind eher auf dem Weg nach draußen, die modularisierung geht weg vom Layout Modul hin zum funktionsmodul, zb eins für die Darstellung und eins für die Daten.
Das Ajax backend würde da helfen können.
 
  • Gefällt mir
Reaktionen: _anonymous0815_
ansonsten um die detailfrage zu beantworten:
Javascript:
var mein_button = document.querySelector('#meinbutton'); // id des buttons eintragen

document.addEventListener('dein_event', function(){ // event auf das reagiert werden soll eintragen, ggf statt document ein anderes Element auswählen(querySelector...)
  mein_button.click();
});

eigenes zertifikat oder mit der gleichen domain solltes du aber lösen.
 
  • Gefällt mir
Reaktionen: _anonymous0815_
Iqra schrieb:
1, man kann eigene Zertifikate erstellen und mitgeben. Das ist in den allermeisten Fällen auch die bevorzugte Option. Geht auch ohne, Ja, aber nicht ohne Warnungen und mit Frames wie du festgestellt hast wird’s richtig interessant.
Gut zu wissen, sprengt aber vermutlich den Rahmen für ein einfaches Webinterface/ Web-GUI. Dann käme ja nur Let's Encrypt in Frage und so wie ich es bisher verstanden habe, kann ich damit keine (signierten) Zertifikate für lokale Rechner erstellen.

Iqra schrieb:
2, es gibt ein Ajax backend was SIAB nutzt. Eventuell kannst du das einbinden. Etwas mehr Aufwand, aber sauberer und bessere Integration, plus es löst alle angesprochenen Probleme.
Danke für den Anreiz, ich werde mich da mal einlesen.
 
_anonymous0815_ schrieb:
Dann käme ja nur Let's Encrypt in Frage
damit machen das alle, das ist einfach mit certbot zu machen - du mußt nur die (lokale) domain richtig einstellen. ich kenne kein noch so einfaches web-gui für das dies nicht gemacht würde. diese zeiten sind eigentlich vorbei - ca 2017 war der turnarround.

E: ev gehts hier in die richtige richtung: https://r.je/guide-lets-encrypt-certificate-for-local-development
Als Alternative kannst du das self-signed zertifikat für alle clients im netzwerk als sicher erklären: https://letsencrypt.org/docs/certificates-for-localhost/

If you want a little more realism in your development certificates, you can use minica to generate your own local root certificate, and issue end-entity (aka leaf) certificates signed by it. You would then import the root certificate rather than a self-signed end-entity certificate.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: _anonymous0815_
Zurück
Oben