q3a_rcon_gui/index.html

157 lines
6.5 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Q3A RCON Dashboard</title>
<link rel="stylesheet" href="styles/terminal.css" id="theme-stylesheet">
</head>
<body>
<div class="app">
<header class="toolbar">
<div class="toolbar-left">
<button id="btn-add-server" class="toolbar-btn">+ Add Server</button>
<button id="btn-servers" class="toolbar-btn">Servers</button>
</div>
<div class="toolbar-center">
<button class="theme-btn" data-theme="terminal">Terminal</button>
<button class="theme-btn" data-theme="dark">Dark</button>
<button class="theme-btn" data-theme="light">Light</button>
</div>
<div class="toolbar-right">
<button class="toolbar-btn" id="btn-reference">Reference</button>
<button class="toolbar-btn" id="btn-about">About</button>
</div>
</header>
<main class="main-content">
<div class="tabs-bar" id="tabs-bar">
<span class="tabs-placeholder" id="tabs-placeholder">No servers configured. Click "+ Add Server" to begin.</span>
</div>
<div class="server-content" id="server-content">
<div class="welcome-message">
<h1>Q3A RCON Dashboard</h1>
<p>Select or add a server to begin.</p>
</div>
</div>
</main>
<footer class="status-bar" id="status-bar">
<span>Ready</span>
</footer>
</div>
<div class="modal" id="modal-add-server">
<div class="modal-content">
<h2>Add / Edit Server</h2>
<form id="form-server">
<input type="hidden" id="server-id">
<div class="form-group">
<label for="server-name">Name</label>
<input type="text" id="server-name" placeholder="My Server" required>
</div>
<div class="form-group">
<label for="server-address">Address</label>
<input type="text" id="server-address" placeholder="192.168.1.100" required>
</div>
<div class="form-group">
<label for="server-port">Port</label>
<input type="number" id="server-port" value="27960" min="1" max="65535" required>
</div>
<div class="form-group">
<label for="server-password">RCON Password</label>
<input type="password" id="server-password" placeholder="********" required>
</div>
<div class="form-actions">
<button type="button" class="btn-cancel" id="btn-cancel-server">Cancel</button>
<button type="submit" class="btn-save">Save</button>
</div>
</form>
</div>
</div>
<div class="modal" id="modal-servers">
<div class="modal-content modal-large">
<h2>Manage Servers</h2>
<div id="server-list" class="server-list"></div>
<div class="form-actions">
<button type="button" class="btn-cancel" id="btn-close-servers">Close</button>
</div>
</div>
</div>
<div class="modal" id="modal-about">
<div class="modal-content">
<h2>About Q3A RCON Dashboard</h2>
<p>Version 1.0.0</p>
<p>A minimalist administration tool for Quake 3 Arena servers.</p>
<p>Supports: ioquake3, Q3ALight, and compatible engines.</p>
<div class="form-actions">
<button type="button" class="btn-cancel" id="btn-close-about">Close</button>
</div>
</div>
</div>
<div class="modal" id="modal-reference">
<div class="modal-content" style="max-width:600px;max-height:80vh;overflow-y:auto;">
<h2>Q3A RCON Command Reference</h2>
<h3>Server Management</h3>
<table class="ref-table">
<tr><td><code>map &lt;mapname&gt;</code></td><td>Change map (e.g., q3dm1)</td></tr>
<tr><td><code>devmap &lt;mapname&gt;</code></td><td>Change map with cheats enabled</td></tr>
<tr><td><code>map_restart &lt;sec&gt;</code></td><td>Restart map (default 5 sec)</td></tr>
<tr><td><code>killserver</code></td><td>Shutdown the server</td></tr>
</table>
<h3>Player Management</h3>
<table class="ref-table">
<tr><td><code>kick &lt;name&gt;</code></td><td>Kick player by name (or "all", "allbots")</td></tr>
<tr><td><code>kicknum &lt;num&gt;</code></td><td>Kick by slot number</td></tr>
<tr><td><code>kickall</code></td><td>Kick all players</td></tr>
<tr><td><code>kickbots</code></td><td>Kick all bots</td></tr>
</table>
<h3>Banning</h3>
<table class="ref-table">
<tr><td><code>banaddr &lt;ip[/subnet]&gt;</code></td><td>Ban IP or CIDR range</td></tr>
<tr><td><code>exceptaddr &lt;ip[/subnet]&gt;</code></td><td>Add ban exception</td></tr>
<tr><td><code>bandel &lt;range|num&gt;</code></td><td>Delete ban by range or number</td></tr>
<tr><td><code>exceptdel &lt;range|num&gt;</code></td><td>Delete exception</td></tr>
<tr><td><code>listbans</code></td><td>List all bans</td></tr>
<tr><td><code>rehashbans</code></td><td>Reload bans from file</td></tr>
<tr><td><code>flushbans</code></td><td>Delete all bans</td></tr>
</table>
<h3>Information</h3>
<table class="ref-table">
<tr><td><code>status</code></td><td>Player list with scores and pings</td></tr>
<tr><td><code>serverinfo</code></td><td>Server settings (gametype, fraglimit, etc.)</td></tr>
<tr><td><code>systeminfo</code></td><td>System info (OS, CPU)</td></tr>
<tr><td><code>dumpuser &lt;name&gt;</code></td><td>Player userinfo</td></tr>
</table>
<h3>Messaging</h3>
<table class="ref-table">
<tr><td><code>say &lt;message&gt;</code></td><td>Broadcast to all players</td></tr>
<tr><td><code>tell &lt;num&gt; &lt;msg&gt;</code></td><td>Message single player</td></tr>
<tr><td><code>sayto &lt;name&gt; &lt;text&gt;</code></td><td>Message player by name</td></tr>
</table>
<div class="form-actions">
<button type="button" class="btn-cancel" id="btn-close-reference">Close</button>
</div>
</div>
</div>
<div class="modal" id="modal-input">
<div class="modal-content">
<h2 id="modal-input-title">Enter Value</h2>
<div class="form-group">
<input type="text" id="modal-input-field" placeholder="">
</div>
<div class="form-actions">
<button type="button" class="btn-cancel" id="btn-cancel-input">Cancel</button>
<button type="button" class="btn-save" id="btn-submit-input">OK</button>
</div>
</div>
</div>
<script src="js/renderer.js"></script>
</body>
</html>