more admin stuff
This commit is contained in:
@ -24,8 +24,11 @@
|
||||
<button type="button" class="tab-btn active" data-tab="users">Benutzer</button>
|
||||
<button type="button" class="tab-btn" data-tab="groups">Benutzergruppen</button>
|
||||
<button type="button" class="tab-btn" data-tab="hosts">Hosts & Verbindungen</button>
|
||||
<button type="button" class="tab-btn" data-tab="credentials">Zugangsdaten</button>
|
||||
<button type="button" class="tab-btn" data-tab="roles">Rollen</button>
|
||||
<button type="button" class="tab-btn" data-tab="tokens">API-Tokens</button>
|
||||
<button type="button" class="tab-btn hidden" data-tab="tenants" id="tenants-tab-btn">Mandanten</button>
|
||||
<button type="button" class="tab-btn" data-tab="authlog">Login-Verlauf</button>
|
||||
<button type="button" class="tab-btn" data-tab="audit">Audit-Log</button>
|
||||
</div>
|
||||
|
||||
@ -42,9 +45,9 @@
|
||||
<label for="uc-password">Initiales Passwort (min. 12 Zeichen)</label>
|
||||
<input type="text" id="uc-password" required minlength="12" maxlength="256">
|
||||
</div>
|
||||
<div class="checkbox-row">
|
||||
<div class="checkbox-row" id="uc-is-admin-row">
|
||||
<input type="checkbox" id="uc-is-admin">
|
||||
<label for="uc-is-admin">Globaler Admin</label>
|
||||
<label for="uc-is-admin">Globaler Super-Admin</label>
|
||||
</div>
|
||||
<button type="submit">Anlegen</button>
|
||||
</form>
|
||||
@ -57,13 +60,32 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th><th>Benutzername</th><th>Admin</th><th>Aktiv</th>
|
||||
<th>TOTP</th><th>Erstellt</th><th></th>
|
||||
<th>TOTP</th><th>Mandant</th><th>Erstellt</th><th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden" id="user-edit-panel">
|
||||
<h2>Benutzer bearbeiten: <span id="user-edit-name"></span></h2>
|
||||
<form id="user-edit-form" class="form-grid">
|
||||
<div class="checkbox-row" id="ue-is-admin-row">
|
||||
<input type="checkbox" id="ue-is-admin">
|
||||
<label for="ue-is-admin">Globaler Super-Admin</label>
|
||||
</div>
|
||||
<div class="checkbox-row">
|
||||
<input type="checkbox" id="ue-is-active">
|
||||
<label for="ue-is-active">Aktiv</label>
|
||||
</div>
|
||||
<div>
|
||||
<label for="ue-new-password">Neues Passwort setzen (optional, min. 12 Zeichen)</label>
|
||||
<input type="text" id="ue-new-password" minlength="12" maxlength="256">
|
||||
</div>
|
||||
<button type="submit">Speichern</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ================= Benutzergruppen ================= -->
|
||||
@ -79,6 +101,10 @@
|
||||
<label for="gc-description">Beschreibung (optional)</label>
|
||||
<input type="text" id="gc-description" maxlength="1024">
|
||||
</div>
|
||||
<div id="gc-tenant-box">
|
||||
<label for="gc-tenant">Mandant</label>
|
||||
<select id="gc-tenant" required></select>
|
||||
</div>
|
||||
<button type="submit">Anlegen</button>
|
||||
</form>
|
||||
</div>
|
||||
@ -88,12 +114,27 @@
|
||||
<p class="hint">Rollen fuer eine Gruppe (= Verbindungen mit der ganzen Gruppe teilen) werden im Tab "Rollen" vergeben.</p>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="groups-table">
|
||||
<thead><tr><th>ID</th><th>Name</th><th>Beschreibung</th><th>Mitglieder</th><th></th></tr></thead>
|
||||
<thead><tr><th>ID</th><th>Name</th><th>Beschreibung</th><th>Mandant</th><th>Mitglieder</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden" id="group-edit-panel">
|
||||
<h2>Gruppe bearbeiten: <span id="group-edit-name"></span></h2>
|
||||
<form id="group-edit-form" class="form-grid">
|
||||
<div>
|
||||
<label for="ge-name">Name</label>
|
||||
<input type="text" id="ge-name" required maxlength="128">
|
||||
</div>
|
||||
<div>
|
||||
<label for="ge-description">Beschreibung</label>
|
||||
<input type="text" id="ge-description" maxlength="1024">
|
||||
</div>
|
||||
<button type="submit">Speichern</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden" id="group-members-panel">
|
||||
<h2>Mitglieder von <span id="group-members-name"></span></h2>
|
||||
<div class="table-wrap">
|
||||
@ -126,17 +167,36 @@
|
||||
<label for="hgc-description">Beschreibung (optional)</label>
|
||||
<input type="text" id="hgc-description" maxlength="1024">
|
||||
</div>
|
||||
<div id="hgc-tenant-box">
|
||||
<label for="hgc-tenant">Mandant</label>
|
||||
<select id="hgc-tenant" required></select>
|
||||
</div>
|
||||
<button type="submit">Anlegen</button>
|
||||
</form>
|
||||
<h3>Hostgruppen</h3>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="hostgroups-table">
|
||||
<thead><tr><th>ID</th><th>Name</th><th>Beschreibung</th></tr></thead>
|
||||
<thead><tr><th>ID</th><th>Name</th><th>Beschreibung</th><th>Mandant</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden" id="hostgroup-edit-panel">
|
||||
<h2>Hostgruppe bearbeiten: <span id="hostgroup-edit-name"></span></h2>
|
||||
<form id="hostgroup-edit-form" class="form-grid">
|
||||
<div>
|
||||
<label for="hge-name">Name</label>
|
||||
<input type="text" id="hge-name" required maxlength="128">
|
||||
</div>
|
||||
<div>
|
||||
<label for="hge-description">Beschreibung</label>
|
||||
<input type="text" id="hge-description" maxlength="1024">
|
||||
</div>
|
||||
<button type="submit">Speichern</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<h2>Neue Verbindung (Host) anlegen</h2>
|
||||
<form id="host-create-form" class="form-grid">
|
||||
@ -194,7 +254,7 @@
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="hosts-table">
|
||||
<thead>
|
||||
<tr><th>ID</th><th>Hostname</th><th>Adresse</th><th>Protokoll</th><th>OS</th><th>Hostgruppe</th><th></th></tr>
|
||||
<tr><th>ID</th><th>Hostname</th><th>Adresse</th><th>Protokoll</th><th>OS</th><th>Hostgruppe</th><th>Mandant</th><th>Status</th><th></th></tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
@ -203,33 +263,78 @@
|
||||
|
||||
<div class="panel hidden" id="host-detail-panel">
|
||||
<h2>Verbindung: <span id="host-detail-name"></span></h2>
|
||||
<div id="host-detail-banner"></div>
|
||||
|
||||
<h3>Felder bearbeiten</h3>
|
||||
<form id="host-edit-form" class="form-grid">
|
||||
<div>
|
||||
<label for="he-hostname">Hostname (Label)</label>
|
||||
<input type="text" id="he-hostname" required maxlength="128" pattern="[a-zA-Z0-9][a-zA-Z0-9._-]*">
|
||||
</div>
|
||||
<div>
|
||||
<label for="he-address">Adresse (IP/DNS)</label>
|
||||
<input type="text" id="he-address" required maxlength="255">
|
||||
</div>
|
||||
<div>
|
||||
<label for="he-port">Port</label>
|
||||
<input type="text" id="he-port" inputmode="numeric" required maxlength="5">
|
||||
</div>
|
||||
<div id="he-ssh-username-box">
|
||||
<label for="he-ssh-username">SSH-Benutzername</label>
|
||||
<input type="text" id="he-ssh-username" maxlength="128">
|
||||
</div>
|
||||
<div id="he-rdp-username-box" class="hidden">
|
||||
<label for="he-rdp-username">RDP-Benutzername</label>
|
||||
<input type="text" id="he-rdp-username" maxlength="128">
|
||||
</div>
|
||||
<div id="he-rdp-domain-box" class="hidden">
|
||||
<label for="he-rdp-domain">RDP-Domaene</label>
|
||||
<input type="text" id="he-rdp-domain" maxlength="128">
|
||||
</div>
|
||||
<div class="checkbox-row"><input type="checkbox" id="he-clipboard"><label for="he-clipboard">Zwischenablage erlaubt</label></div>
|
||||
<div class="checkbox-row"><input type="checkbox" id="he-filetransfer"><label for="he-filetransfer">Dateitransfer erlaubt</label></div>
|
||||
<div class="checkbox-row hidden" id="he-nla-box"><input type="checkbox" id="he-nla"><label for="he-nla">RDP: NLA erforderlich</label></div>
|
||||
<div class="checkbox-row"><input type="checkbox" id="he-active"><label for="he-active">Aktiv (verbindbar)</label></div>
|
||||
<button type="submit">Speichern</button>
|
||||
</form>
|
||||
|
||||
<div id="host-detail-ssh">
|
||||
<h3>SSH-Host-Key</h3>
|
||||
<p class="hint">Ermittelt den Host-Key EINMALIG ohne Pruefung (bewusste Trust-Entscheidung) und speichert den Fingerprint fuer kuenftiges Pinning. Wird prominent im Audit-Log vermerkt.</p>
|
||||
<button type="button" class="btn-secondary" id="host-discover-key-btn">Host-Key ermitteln</button>
|
||||
<div id="host-key-result" class="reveal-box hidden"></div>
|
||||
|
||||
<h3>SSH-Key zuordnen</h3>
|
||||
<h3>Zugeordnete SSH-Keys</h3>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="host-ssh-keys-table">
|
||||
<thead><tr><th>ID</th><th>Label</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<form id="host-key-map-form" class="form-grid">
|
||||
<div>
|
||||
<label for="hkm-key-select">SSH-Key</label>
|
||||
<label for="hkm-key-select">SSH-Key zuordnen</label>
|
||||
<select id="hkm-key-select" required></select>
|
||||
</div>
|
||||
<button type="submit">Zuordnen</button>
|
||||
</form>
|
||||
</div>
|
||||
<div id="host-detail-rdp" class="hidden">
|
||||
<h3>RDP-Zugangsdaten setzen</h3>
|
||||
<h3>RDP-Zugangsdaten</h3>
|
||||
<p class="hint" id="rdp-cred-status"></p>
|
||||
<form id="host-rdp-cred-form" class="form-grid">
|
||||
<div class="full-width">
|
||||
<label for="hrc-password">RDP-Passwort</label>
|
||||
<label for="hrc-password">RDP-Passwort setzen/aendern</label>
|
||||
<input type="text" id="hrc-password" required maxlength="512">
|
||||
</div>
|
||||
<button type="submit">Speichern</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ================= Zugangsdaten ================= -->
|
||||
<div class="tab-panel hidden" id="tab-credentials">
|
||||
<div class="panel">
|
||||
<h2>Neuen SSH-Key anlegen</h2>
|
||||
<form id="ssh-key-create-form" class="form-grid">
|
||||
@ -250,6 +355,10 @@
|
||||
<option value="ca-cert">ca-cert</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="skc-tenant-box">
|
||||
<label for="skc-tenant">Mandant</label>
|
||||
<select id="skc-tenant" required></select>
|
||||
</div>
|
||||
<div class="full-width">
|
||||
<label for="skc-private">Privater Schluessel (PEM)</label>
|
||||
<textarea id="skc-private" required></textarea>
|
||||
@ -263,7 +372,55 @@
|
||||
<h3>Vorhandene SSH-Keys</h3>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="ssh-keys-table">
|
||||
<thead><tr><th>ID</th><th>Label</th><th>Typ</th><th>Besitzer</th><th>Erstellt</th></tr></thead>
|
||||
<thead><tr><th>ID</th><th>Label</th><th>Typ</th><th>Besitzer</th><th>Mandant</th><th>Erstellt</th><th>Rotiert</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden" id="ssh-key-edit-panel">
|
||||
<h2>SSH-Key bearbeiten: <span id="ssh-key-edit-name"></span></h2>
|
||||
<form id="ssh-key-edit-form" class="form-grid">
|
||||
<div>
|
||||
<label for="ske-label">Label</label>
|
||||
<input type="text" id="ske-label" maxlength="128">
|
||||
</div>
|
||||
<div>
|
||||
<label for="ske-owner">Besitzer (User-ID, leer = keiner)</label>
|
||||
<input type="text" id="ske-owner" inputmode="numeric" maxlength="10">
|
||||
</div>
|
||||
<button type="submit">Speichern (nur Label/Besitzer)</button>
|
||||
</form>
|
||||
<h3>Schluessel rotieren</h3>
|
||||
<p class="hint">Ersetzt das Schluesselmaterial vollstaendig (neuer privater + oeffentlicher Schluessel). Bereits zugeordnete Hosts nutzen danach automatisch den neuen Schluessel.</p>
|
||||
<form id="ssh-key-rotate-form" class="form-grid">
|
||||
<div>
|
||||
<label for="skr-type">Key-Typ</label>
|
||||
<select id="skr-type">
|
||||
<option value="ed25519">ed25519</option>
|
||||
<option value="rsa-3072">rsa-3072</option>
|
||||
<option value="rsa-4096">rsa-4096</option>
|
||||
<option value="ca-cert">ca-cert</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="full-width">
|
||||
<label for="skr-private">Neuer privater Schluessel (PEM)</label>
|
||||
<textarea id="skr-private" required></textarea>
|
||||
</div>
|
||||
<div class="full-width">
|
||||
<label for="skr-public">Neuer oeffentlicher Schluessel</label>
|
||||
<textarea id="skr-public" required></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn-secondary">Rotieren</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<h2>RDP/Windows-Passwoerter</h2>
|
||||
<p class="hint">Uebersicht aller RDP-Hosts. Passwoerter werden AES-256-GCM-verschluesselt gespeichert und sind nach dem Setzen nicht mehr im Klartext abrufbar.</p>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="rdp-creds-table">
|
||||
<thead><tr><th>Host</th><th>Adresse</th><th>Hostgruppe</th><th>Status</th><th>Zuletzt gesetzt</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -273,7 +430,8 @@
|
||||
<!-- ================= Rollen ================= -->
|
||||
<div class="tab-panel hidden" id="tab-roles">
|
||||
<div class="panel">
|
||||
<h2>Rolle an Benutzer vergeben</h2>
|
||||
<h2>Rolle(n) an Benutzer vergeben</h2>
|
||||
<p class="hint">Mehrfachauswahl moeglich -- alle ausgewaehlten Rollen werden in einem Schritt vergeben.</p>
|
||||
<form id="role-grant-form" class="form-grid">
|
||||
<div>
|
||||
<label for="rg-user">Benutzer</label>
|
||||
@ -283,9 +441,9 @@
|
||||
<label for="rg-hostgroup">Hostgruppe</label>
|
||||
<select id="rg-hostgroup" required></select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="rg-role">Rolle</label>
|
||||
<select id="rg-role"></select>
|
||||
<div class="full-width">
|
||||
<label>Rollen</label>
|
||||
<div class="scope-grid" id="rg-role-grid"></div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="rg-expires">Ablaufdatum (optional, ISO)</label>
|
||||
@ -302,8 +460,8 @@
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<h2>Rolle an Benutzergruppe vergeben (Verbindung mit Gruppe teilen)</h2>
|
||||
<p class="hint">Volle Rollen-Vererbung: jedes aktuelle und zukuenftige Mitglied der Gruppe erhaelt diese Rolle automatisch.</p>
|
||||
<h2>Rolle(n) an Benutzergruppe vergeben (Verbindung mit Gruppe teilen)</h2>
|
||||
<p class="hint">Volle Rollen-Vererbung: jedes aktuelle und zukuenftige Mitglied der Gruppe erhaelt diese Rollen automatisch. Mehrfachauswahl moeglich.</p>
|
||||
<form id="group-role-grant-form" class="form-grid">
|
||||
<div>
|
||||
<label for="grg-group">Benutzergruppe</label>
|
||||
@ -313,9 +471,9 @@
|
||||
<label for="grg-hostgroup">Hostgruppe</label>
|
||||
<select id="grg-hostgroup" required></select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="grg-role">Rolle</label>
|
||||
<select id="grg-role"></select>
|
||||
<div class="full-width">
|
||||
<label>Rollen</label>
|
||||
<div class="scope-grid" id="grg-role-grid"></div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="grg-expires">Ablaufdatum (optional, ISO)</label>
|
||||
@ -336,7 +494,7 @@
|
||||
<div class="tab-panel hidden" id="tab-tokens">
|
||||
<div class="panel">
|
||||
<h2>Neues API-Token erstellen</h2>
|
||||
<p class="hint">Tokens wirken NUR auf die Verwaltungs-API (Benutzer/Hosts/Rollen/...), nie auf SSH-/RDP-Sitzungen selbst. "rw" schliesst "ro" auf derselben Ressource automatisch mit ein.</p>
|
||||
<p class="hint">Tokens wirken NUR auf die Verwaltungs-API (Benutzer/Hosts/Rollen/...), nie auf SSH-/RDP-Sitzungen selbst. "rw" schliesst "ro" auf derselben Ressource automatisch mit ein. Jedes Token gehoert genau einem Mandanten.</p>
|
||||
<form id="token-create-form" class="form-grid">
|
||||
<div>
|
||||
<label for="tc-label">Bezeichnung</label>
|
||||
@ -346,6 +504,10 @@
|
||||
<label for="tc-user">Fuer Benutzer</label>
|
||||
<select id="tc-user" required></select>
|
||||
</div>
|
||||
<div id="tc-tenant-box">
|
||||
<label for="tc-tenant">Mandant</label>
|
||||
<select id="tc-tenant" required></select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="tc-expires">Ablaufdatum (optional, ISO)</label>
|
||||
<input type="text" id="tc-expires" placeholder="2026-12-31T00:00:00.000Z" maxlength="40">
|
||||
@ -364,7 +526,7 @@
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="tokens-table">
|
||||
<thead>
|
||||
<tr><th>ID</th><th>Bezeichnung</th><th>Benutzer</th><th>Praefix</th><th>Scopes</th><th>Zuletzt genutzt</th><th>Status</th><th></th></tr>
|
||||
<tr><th>ID</th><th>Bezeichnung</th><th>Benutzer</th><th>Praefix</th><th>Mandant</th><th>Scopes</th><th>Zuletzt genutzt</th><th>Status</th><th></th></tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
@ -372,6 +534,79 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ================= Mandanten (nur Super-Admin) ================= -->
|
||||
<div class="tab-panel hidden" id="tab-tenants">
|
||||
<div class="panel">
|
||||
<h2>Neuen Mandanten anlegen</h2>
|
||||
<form id="tenant-create-form" class="form-grid">
|
||||
<div>
|
||||
<label for="tnc-name">Name</label>
|
||||
<input type="text" id="tnc-name" required maxlength="128">
|
||||
</div>
|
||||
<div>
|
||||
<label for="tnc-description">Beschreibung (optional)</label>
|
||||
<input type="text" id="tnc-description" maxlength="1024">
|
||||
</div>
|
||||
<button type="submit">Anlegen</button>
|
||||
</form>
|
||||
<h3>Mandanten</h3>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="tenants-table">
|
||||
<thead><tr><th>ID</th><th>Name</th><th>Beschreibung</th><th>Aktiv</th><th>Hostgruppen</th><th>Benutzergruppen</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden" id="tenant-edit-panel">
|
||||
<h2>Mandant bearbeiten: <span id="tenant-edit-name"></span></h2>
|
||||
<form id="tenant-edit-form" class="form-grid">
|
||||
<div>
|
||||
<label for="tne-name">Name</label>
|
||||
<input type="text" id="tne-name" required maxlength="128">
|
||||
</div>
|
||||
<div>
|
||||
<label for="tne-description">Beschreibung</label>
|
||||
<input type="text" id="tne-description" maxlength="1024">
|
||||
</div>
|
||||
<div class="checkbox-row"><input type="checkbox" id="tne-active"><label for="tne-active">Aktiv</label></div>
|
||||
<button type="submit">Speichern</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden" id="tenant-admins-panel">
|
||||
<h2>Mandanten-Admins von <span id="tenant-admins-name"></span></h2>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="tenant-admins-table">
|
||||
<thead><tr><th>User-ID</th><th>Benutzername</th><th>Seit</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3>Mandanten-Admin hinzufuegen</h3>
|
||||
<form id="tenant-admin-add-form" class="form-grid">
|
||||
<div>
|
||||
<label for="ta-user-select">Benutzer</label>
|
||||
<select id="ta-user-select" required></select>
|
||||
</div>
|
||||
<button type="submit">Hinzufuegen</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ================= Login-Verlauf ================= -->
|
||||
<div class="tab-panel hidden" id="tab-authlog">
|
||||
<div class="panel">
|
||||
<h2>Login-Verlauf</h2>
|
||||
<p class="hint">Authentifizierungs-Ereignisse (Login/Logout/TOTP/Passwortwechsel), gefiltert aus dem Audit-Log dieses/dieser Mandanten.</p>
|
||||
<div class="table-wrap">
|
||||
<table class="data-table" id="authlog-table">
|
||||
<thead><tr><th>Zeit</th><th>Benutzer</th><th>IP</th><th>Ereignis</th><th>Status</th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ================= Audit-Log ================= -->
|
||||
<div class="tab-panel hidden" id="tab-audit">
|
||||
<div class="panel">
|
||||
|
||||
@ -11,14 +11,41 @@
|
||||
<div class="session-shell" id="session-shell" data-host-id="{{ host_id }}">
|
||||
<div class="session-toolbar">
|
||||
<button id="fullscreen-btn">Vollbild</button>
|
||||
<button id="upload-btn">Datei hochladen</button>
|
||||
<input type="file" id="file-input" class="hidden">
|
||||
<button id="filetransfer-btn">Dateitransfer</button>
|
||||
<span class="spacer"></span>
|
||||
<span class="status" id="status">Verbinde ...</span>
|
||||
</div>
|
||||
<div id="terminal"></div>
|
||||
</div>
|
||||
|
||||
<div class="ft-overlay hidden" id="ft-overlay">
|
||||
<div class="ft-panel">
|
||||
<h2>Dateitransfer
|
||||
<button type="button" class="btn-secondary btn-small" id="ft-close-btn">Schliessen</button>
|
||||
</h2>
|
||||
|
||||
<h3>Hochladen</h3>
|
||||
<label for="ft-upload-remote-path">Zielpfad auf dem Server</label>
|
||||
<input type="text" id="ft-upload-remote-path" placeholder="/tmp/datei.txt">
|
||||
<input type="file" id="ft-upload-file-input" class="hidden">
|
||||
<div class="ft-btn-row">
|
||||
<button type="button" class="btn-secondary btn-small" id="ft-upload-pick-btn">Datei auswaehlen</button>
|
||||
<span class="hint" id="ft-upload-filename">Keine Datei ausgewaehlt</span>
|
||||
</div>
|
||||
<button type="button" class="btn-small" id="ft-upload-submit-btn">Hochladen</button>
|
||||
|
||||
<h3>Herunterladen</h3>
|
||||
<label for="ft-download-remote-path">Pfad auf dem Server</label>
|
||||
<input type="text" id="ft-download-remote-path" placeholder="/etc/hosts">
|
||||
<button type="button" class="btn-small" id="ft-download-submit-btn">Herunterladen</button>
|
||||
|
||||
<div class="error" id="ft-status"></div>
|
||||
|
||||
<h3>Letzte Transfers</h3>
|
||||
<div class="ft-list" id="ft-list"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/vendor/xterm.js"></script>
|
||||
<script src="/static/js/vendor/xterm-addon-fit.js"></script>
|
||||
<script src="/static/js/terminal.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user