mirror of
https://github.com/smittix/intercept.git
synced 2026-04-25 07:10:00 -07:00
Major changes: - Add utils/bluetooth/ package with DBus scanner, fallback scanners (bleak, hcitool, bluetoothctl), device aggregation, and heuristics - New unified API at /api/bluetooth/ with REST endpoints and SSE streaming - Device observation aggregation with RSSI statistics and range bands - Behavioral heuristics: new, persistent, beacon-like, strong+stable - Frontend components: DeviceCard, MessageCard, RSSISparkline - TSCM integration via get_tscm_bluetooth_snapshot() helper - Unit tests for aggregator, heuristics, and API endpoints Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
84 lines
4.3 KiB
HTML
84 lines
4.3 KiB
HTML
<!-- BLUETOOTH MODE -->
|
|
<div id="bluetoothMode" class="mode-content">
|
|
<!-- Capability Status -->
|
|
<div id="btCapabilityStatus" class="section" style="display: none;">
|
|
<!-- Populated by JavaScript with capability warnings -->
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Scanner Configuration</h3>
|
|
<div class="form-group">
|
|
<label>Adapter</label>
|
|
<select id="btAdapterSelect">
|
|
<option value="">Detecting adapters...</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Scan Mode</label>
|
|
<select id="btScanMode">
|
|
<option value="auto">Auto (Recommended)</option>
|
|
<option value="dbus">DBus/BlueZ</option>
|
|
<option value="bleak">Bleak Library</option>
|
|
<option value="hcitool">hcitool (Legacy)</option>
|
|
<option value="bluetoothctl">bluetoothctl</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Transport</label>
|
|
<select id="btTransport">
|
|
<option value="auto">Auto (BLE + Classic)</option>
|
|
<option value="le">BLE Only</option>
|
|
<option value="br_edr">Classic Only</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Duration (seconds, 0 = continuous)</label>
|
|
<input type="number" id="btScanDuration" value="0" min="0" max="300" placeholder="0">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Min RSSI Filter (dBm)</label>
|
|
<input type="number" id="btMinRssi" value="-100" min="-100" max="-20" placeholder="-100">
|
|
</div>
|
|
<button class="preset-btn" onclick="btCheckCapabilities()" style="width: 100%;">
|
|
Check Capabilities
|
|
</button>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Baseline</h3>
|
|
<div class="info-text" id="btBaselineStatus" style="margin-bottom: 8px;">
|
|
No baseline set
|
|
</div>
|
|
<div style="display: flex; gap: 8px;">
|
|
<button class="preset-btn" onclick="btSetBaseline()" style="flex: 1;">
|
|
Set Baseline
|
|
</button>
|
|
<button class="preset-btn" onclick="btClearBaseline()" style="flex: 1;">
|
|
Clear
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Message Container for status cards -->
|
|
<div id="btMessageContainer"></div>
|
|
|
|
<button class="run-btn" id="startBtBtn" onclick="btStartScan()">
|
|
Start Scanning
|
|
</button>
|
|
<button class="stop-btn" id="stopBtBtn" onclick="btStopScan()" style="display: none;">
|
|
Stop Scanning
|
|
</button>
|
|
|
|
<div class="section" style="margin-top: 10px;">
|
|
<h3>Export</h3>
|
|
<div style="display: flex; gap: 8px;">
|
|
<button class="preset-btn" onclick="btExport('csv')" style="flex: 1;">
|
|
Export CSV
|
|
</button>
|
|
<button class="preset-btn" onclick="btExport('json')" style="flex: 1;">
|
|
Export JSON
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|