Add disconnect/uninstall for persistent sessions
- Server: Add DELETE /api/sessions/:id endpoint to disconnect agents - Server: SessionManager.disconnect_session() sends Disconnect message - Agent: Handle ADMIN_DISCONNECT to trigger uninstall - Agent: Add startup::uninstall() to remove from startup and schedule exe deletion - Dashboard: Add Disconnect button in Access tab machine details - Dashboard: Add Chat button for persistent sessions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -709,7 +709,9 @@
|
||||
'<div class="detail-section">' +
|
||||
'<div class="detail-section-title">Actions</div>' +
|
||||
'<button class="btn btn-primary" style="width: 100%; margin-bottom: 8px;" onclick="connectToMachine(\'' + m.id + '\')">Connect</button>' +
|
||||
'<button class="btn btn-outline" style="width: 100%;" disabled>Transfer Files</button>' +
|
||||
'<button class="btn btn-outline" style="width: 100%; margin-bottom: 8px;" onclick="openChat(\'' + m.id + '\', \'' + (m.agent_name || 'Client').replace(/'/g, "\\'") + '\')">Chat</button>' +
|
||||
'<button class="btn btn-outline" style="width: 100%; margin-bottom: 8px;" disabled>Transfer Files</button>' +
|
||||
'<button class="btn btn-outline" style="width: 100%; color: hsl(0, 62.8%, 50%);" onclick="disconnectMachine(\'' + m.id + '\', \'' + (m.agent_name || m.agent_id).replace(/'/g, "\\'") + '\')">Disconnect</button>' +
|
||||
'</div>';
|
||||
}
|
||||
|
||||
@@ -718,6 +720,22 @@
|
||||
alert("Viewer not yet implemented.\\n\\nSession ID: " + sessionId + "\\n\\nWebSocket: wss://connect.azcomputerguru.com/ws/viewer?session_id=" + sessionId);
|
||||
}
|
||||
|
||||
async function disconnectMachine(sessionId, machineName) {
|
||||
if (!confirm("Disconnect " + machineName + "?\\n\\nThis will end the remote session.")) return;
|
||||
try {
|
||||
const response = await fetch("/api/sessions/" + sessionId, { method: "DELETE" });
|
||||
if (response.ok) {
|
||||
selectedMachine = null;
|
||||
renderMachineDetail();
|
||||
loadMachines();
|
||||
} else {
|
||||
alert("Failed to disconnect: " + await response.text());
|
||||
}
|
||||
} catch (err) {
|
||||
alert("Error disconnecting machine");
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh machines every 5 seconds
|
||||
loadMachines();
|
||||
setInterval(loadMachines, 5000);
|
||||
|
||||
Reference in New Issue
Block a user