Metadata-Version: 2.4
Name: windows-remote-desktop-dashboard
Version: 0.1.6
Summary: Python web dashboard for reserving and launching Windows Remote Desktop machines.
Author: Remote Desktop Dashboard Contributors
Project-URL: Homepage, https://pypi.org/project/windows-remote-desktop-dashboard/
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: fastapi
Requires-Dist: uvicorn[standard]
Requires-Dist: jinja2
Requires-Dist: python-multipart

# Windows Remote Desktop Dashboard

Python-based browser dashboard for reserving shared RDP machines.

## Install From Source

```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install .
$env:ADMIN_PIN = "change-me"
$env:RDP_DOMAIN = "FU"
windows-remote-desktop-dashboard
```

Open http://127.0.0.1:8000.

## Development

```powershell
pip install -r requirements.txt
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
```

## Features

- Screenshot-style dark dashboard with machine list, details panel, admin modal, and audit log.
- SQLite persistence under `%LOCALAPPDATA%\WindowsRemoteDesktopDashboard\data` by default on Windows.
- One active reservation per machine.
- Auto-release of expired reservations on refresh.
- Direct local `mstsc.exe` launch plus downloadable `.rdp` fallback.
- Open RDP automatically reserves the machine for the current dashboard user.
- Optional Windows Firewall enforcement can restrict direct RDP to the reserver's client IP.
- Automatic remote session refresh with `quser /server:<host>` when Windows permissions allow it.
- Admin PIN gate for adding machines.
- Admin unlock once per browser session, with single and bulk delete/release/session refresh controls.

The default admin PIN is `admin` if `ADMIN_PIN` is not set.

Set `RDD_DATA_DIR` to choose where the SQLite database is stored. Set `RDD_HOST=0.0.0.0` if one shared dashboard machine should serve multiple laptops on the network. The RDP Login button launches `C:\Windows\System32\mstsc.exe` on the Windows computer running this app.

Dashboard reservations prevent other dashboard users from opening the same machine. To also block direct native RDP outside this app, enable Windows Firewall enforcement:

```powershell
$env:RDD_HOST = "0.0.0.0"
$env:RDD_ENFORCE_WINDOWS_FIREWALL = "1"
windows-remote-desktop-dashboard
```

Requirements for firewall enforcement:

- Run the dashboard on Windows with admin rights that can manage the target PCs.
- Enable PowerShell remoting/WinRM to the target machine hostnames.
- Users must open the dashboard using the server LAN hostname/IP, not `localhost`, so the app can see their real client IP.

When a machine is reserved, the target PC's Remote Desktop inbound firewall rules are restricted to that reserver IP. Revoke/release/delete restores the Remote Desktop firewall rules to `Any`.
