feat: publish Alta Local Camera Discovery
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# Alta Local Camera Discovery
|
||||
|
||||
Standalone Electron utility for discovering Alta cloud-native cameras on the technician's current LAN. It listens for `_vaioncam._tcp.local` mDNS announcements and reports each camera's Alta Key, IP address, and hostname Web UI URL without Alta credentials or camera configuration changes.
|
||||
|
||||
The original Python web prototype remains available in `app.py`; the Electron app performs discovery directly in its main process through a narrow, isolated preload bridge. `src/scan-session.js` owns the single-flight scan lifecycle, defensive result snapshot, and latest-scan camera URL authorization so Electron bootstrap code remains small and testable.
|
||||
|
||||
## Run the Electron app
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
## Use
|
||||
|
||||
1. Connect the computer to the same LAN/VLAN as the cameras.
|
||||
2. Select **Start discovery**.
|
||||
3. Copy an individual Alta Key or select **Export CSV**.
|
||||
4. Select a camera hostname to open its local HTTPS Web UI.
|
||||
|
||||
The CSV filename is `alta-camera-keys.csv` and its columns are:
|
||||
|
||||
```csv
|
||||
Alta Key,IP Address,Hostname URL
|
||||
```
|
||||
|
||||
## Download
|
||||
|
||||
The current Windows x64 portable release is available from GitPeji:
|
||||
|
||||
- [Download Alta Local Camera Discovery for Windows](https://git.pejicorp.com/peji/AltaNetowrkScanner/releases/download/v1.0.0/AltaLocalCameraDiscovery-1.0.0-portable.exe)
|
||||
- [View source and release notes](https://git.pejicorp.com/peji/AltaNetowrkScanner)
|
||||
|
||||
No installer or Alta credentials are required. The current Windows release is unsigned and may trigger Microsoft Defender SmartScreen; verify its SHA-256 against the checksum published with the release.
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
npm run build:win # Windows x64 portable EXE
|
||||
npm run build:linux # Linux x64 AppImage
|
||||
```
|
||||
|
||||
Artifacts are written under `dist/`. The Electron app icon is `assets/icon.png` / `assets/icon.ico`: the approved radar artwork in the Alta colourway with the Alta A layered above it. Release artifacts are built from clean, tagged source revisions and are not committed to the repository.
|
||||
|
||||
## Verify
|
||||
|
||||
```bash
|
||||
npm run check
|
||||
npm run scan
|
||||
npm run build-test
|
||||
npm run build-test:win
|
||||
```
|
||||
|
||||
`npm run scan` exercises the same Node mDNS engine used by Electron. The legacy Python scanner can still be checked with:
|
||||
|
||||
```bash
|
||||
.venv/bin/python -m unittest -v test_app.py
|
||||
```
|
||||
|
||||
## Security and limits
|
||||
|
||||
- Renderer Node integration is disabled; context isolation and sandboxing are enabled.
|
||||
- The UI is served from an allowlisted `app://` protocol; arbitrary local files and renderer permissions are denied.
|
||||
- IPC accepts only the app's main frame at the exact packaged application URL.
|
||||
- Discovery requires matching Alta Key/hostname, HTTPS port 443, and a valid private or link-local address; scans are concurrency- and result-bounded.
|
||||
- External navigation is denied except a root HTTPS camera URL from the latest successful scan.
|
||||
- CSV content is generated in the main process and written only through a native save dialog.
|
||||
- Release builds are configured to disable Electron's Node/inspection/file-privilege fuses and enable ASAR integrity enforcement.
|
||||
- mDNS normally does not cross VLANs or routed boundaries.
|
||||
- mDNS advertisements are not cryptographically authenticated; results are correlated and constrained local announcements, not proof of device identity.
|
||||
- Only powered, reachable cameras advertising `_vaioncam._tcp.local` are shown.
|
||||
Reference in New Issue
Block a user