Agent-Logs-Url: https://github.com/naturallaw777/staging_alpha/sessions/54981eb1-b1c5-4e1a-b587-730f41c59e01 Co-authored-by: naturallaw777 <99053422+naturallaw777@users.noreply.github.com>
180 lines
7.3 KiB
HTML
180 lines
7.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Sovran_SystemsOS Hub</title>
|
|
<link rel="stylesheet" href="/static/style.css?v={{ style_css_hash }}" />
|
|
</head>
|
|
<body>
|
|
|
|
<!-- Header bar -->
|
|
<header class="header-bar">
|
|
<span class="title">Sovran_SystemsOS Hub</span>
|
|
<span class="role-badge" id="role-badge">Loading…</span>
|
|
<button class="btn btn-update" id="btn-update" title="Run system update">
|
|
<span class="update-badge" id="update-badge"></span>
|
|
Update System
|
|
</button>
|
|
<button class="btn-icon" id="btn-refresh" title="Refresh service status">↺</button>
|
|
</header>
|
|
|
|
<!-- IP bar -->
|
|
<div class="ip-bar">
|
|
<span>
|
|
<span class="ip-label">Internal IP:</span>
|
|
<span class="ip-value" id="ip-internal">…</span>
|
|
</span>
|
|
<span class="ip-separator">|</span>
|
|
<span>
|
|
<span class="ip-label">External IP:</span>
|
|
<span class="ip-value" id="ip-external">…</span>
|
|
</span>
|
|
</div>
|
|
|
|
<!-- Service tiles -->
|
|
<main class="main-content">
|
|
<div id="tiles-area"></div>
|
|
</main>
|
|
|
|
<!-- Update modal -->
|
|
<div class="modal-overlay" id="update-modal" role="dialog" aria-modal="true" aria-labelledby="modal-title-text">
|
|
<div class="modal-dialog">
|
|
<div class="modal-header">
|
|
<span class="modal-title" id="modal-title-text">Sovran_SystemsOS Update</span>
|
|
<div class="modal-spinner" id="modal-spinner"></div>
|
|
<span class="modal-status" id="modal-status">Updating…</span>
|
|
</div>
|
|
<div class="modal-log" id="modal-log" aria-live="polite"></div>
|
|
<div class="modal-footer">
|
|
<button class="btn btn-save" id="btn-save-report" style="display:none">Save Error Report</button>
|
|
<button class="btn btn-reboot" id="btn-reboot" style="display:none">Reboot</button>
|
|
<button class="btn btn-close-modal" id="btn-close-modal" disabled>Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Credentials info modal -->
|
|
<div class="modal-overlay" id="creds-modal" role="dialog" aria-modal="true" aria-labelledby="creds-modal-title">
|
|
<div class="creds-dialog">
|
|
<div class="creds-header">
|
|
<span class="creds-title" id="creds-modal-title">Service Info</span>
|
|
<button class="creds-close-btn" id="creds-close-btn" title="Close">✕</button>
|
|
</div>
|
|
<div class="creds-body" id="creds-body">
|
|
<p class="creds-loading">Loading…</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Tech Support modal -->
|
|
<div class="modal-overlay" id="support-modal" role="dialog" aria-modal="true" aria-labelledby="support-modal-title">
|
|
<div class="creds-dialog">
|
|
<div class="creds-header">
|
|
<span class="creds-title" id="support-modal-title">Tech Support</span>
|
|
<button class="creds-close-btn" id="support-close-btn" title="Close">✕</button>
|
|
</div>
|
|
<div class="creds-body" id="support-body">
|
|
<p class="creds-loading">Loading…</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Domain Setup Modal -->
|
|
<div class="modal-overlay" id="domain-setup-modal" role="dialog" aria-modal="true" aria-labelledby="domain-setup-title">
|
|
<div class="creds-dialog">
|
|
<div class="creds-header">
|
|
<span class="creds-title" id="domain-setup-title">🌐 Domain Setup</span>
|
|
<button class="creds-close-btn" id="domain-setup-close-btn" title="Close">✕</button>
|
|
</div>
|
|
<div class="creds-body" id="domain-setup-body"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- SSL Email Modal -->
|
|
<div class="modal-overlay" id="ssl-email-modal" role="dialog" aria-modal="true" aria-labelledby="ssl-email-title">
|
|
<div class="creds-dialog domain-narrow-dialog">
|
|
<div class="creds-header">
|
|
<span class="creds-title" id="ssl-email-title">📧 SSL Certificate Email</span>
|
|
<button class="creds-close-btn" id="ssl-email-close-btn" title="Close">✕</button>
|
|
</div>
|
|
<div class="creds-body">
|
|
<p class="support-desc">Let's Encrypt needs an email address for SSL certificate notifications.</p>
|
|
<div class="domain-field-group">
|
|
<label class="domain-field-label" for="ssl-email-input">Email:</label>
|
|
<input class="domain-field-input" type="email" id="ssl-email-input" placeholder="you@example.com" />
|
|
</div>
|
|
<div class="domain-field-actions">
|
|
<button class="btn btn-close-modal" id="ssl-email-cancel-btn">Cancel</button>
|
|
<button class="btn btn-primary" id="ssl-email-save-btn">Save</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Feature Confirm Modal -->
|
|
<div class="modal-overlay" id="feature-confirm-modal" role="dialog" aria-modal="true" aria-labelledby="feature-confirm-title">
|
|
<div class="creds-dialog domain-narrow-dialog">
|
|
<div class="creds-header">
|
|
<span class="creds-title" id="feature-confirm-title">Confirm Action</span>
|
|
<button class="creds-close-btn" id="feature-confirm-close-btn" title="Close">✕</button>
|
|
</div>
|
|
<div class="creds-body">
|
|
<p class="support-desc" id="feature-confirm-message"></p>
|
|
<div class="domain-field-actions">
|
|
<button class="btn btn-close-modal" id="feature-confirm-cancel-btn">Cancel</button>
|
|
<button class="btn btn-primary" id="feature-confirm-ok-btn">Continue</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Port Requirements Modal -->
|
|
<div class="modal-overlay" id="port-requirements-modal" role="dialog" aria-modal="true" aria-labelledby="port-req-title">
|
|
<div class="creds-dialog">
|
|
<div class="creds-header">
|
|
<span class="creds-title" id="port-req-title">🔌 Router / Firewall Port Requirements</span>
|
|
<button class="creds-close-btn" id="port-req-close-btn" title="Close">✕</button>
|
|
</div>
|
|
<div class="creds-body" id="port-req-body"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Rebuild Modal -->
|
|
<div class="modal-overlay" id="rebuild-modal" role="dialog" aria-modal="true" aria-labelledby="rebuild-modal-title">
|
|
<div class="modal-dialog">
|
|
<div class="modal-header">
|
|
<span class="modal-title" id="rebuild-modal-title">Sovran_SystemsOS Rebuild</span>
|
|
<div class="modal-spinner" id="rebuild-spinner"></div>
|
|
<span class="modal-status" id="rebuild-status">Rebuilding…</span>
|
|
</div>
|
|
<div class="modal-log" id="rebuild-log" aria-live="polite"></div>
|
|
<div class="modal-footer">
|
|
<button class="btn btn-save" id="rebuild-save-report" style="display:none">Save Error Report</button>
|
|
<button class="btn btn-reboot" id="rebuild-reboot-btn" style="display:none">Reboot</button>
|
|
<button class="btn btn-close-modal" id="rebuild-close-btn" disabled>Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Reboot overlay -->
|
|
<div class="reboot-overlay" id="reboot-overlay">
|
|
<div class="reboot-card">
|
|
<div class="reboot-icon">↻</div>
|
|
<h2 class="reboot-title">System Rebooting</h2>
|
|
<p class="reboot-message">
|
|
Sovran_SystemsOS is now restarting.<br />
|
|
This page will automatically reconnect once the system is back online.
|
|
</p>
|
|
<div class="reboot-dots">
|
|
<span class="reboot-dot"></span>
|
|
<span class="reboot-dot"></span>
|
|
<span class="reboot-dot"></span>
|
|
</div>
|
|
<p class="reboot-submessage">Stay tuned…</p>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/static/app.js?v={{ app_js_hash }}"></script>
|
|
</body>
|
|
</html> |