Metadata-Version: 2.4
Name: windows-remote-desktop-dashboard
Version: 0.2.0
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. The app binds to `0.0.0.0` by default so one shared dashboard machine can serve multiple laptops on the network. Browser launch is controlled separately by `RDD_BROWSER_HOST` and defaults to `127.0.0.1`, so the app opens `http://127.0.0.1:8000` locally. The RDP Login button launches `C:\Windows\System32\mstsc.exe` on the Windows computer running this app.

Remote session checks run after the dashboard loads so slow or unreachable machines do not block the page. Set `RDD_AUTO_REFRESH_SESSIONS=0` to disable background session checks.

Dashboard reservations prevent other dashboard users from opening the same machine. Windows Firewall enforcement is enabled by default for new installs and can be controlled from Admin with the `RDP lock OFF/ON` button. You can force it off before startup:

```powershell
$env:RDD_ENFORCE_WINDOWS_FIREWALL = "0"
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`.
