diff --git a/.cargo/config.toml b/.cargo/config.toml index d01c04f..9438e74 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,6 +1,6 @@ -# GuruConnect Cargo Configuration +# GuruConnect Cargo Configuration (Windows Development) -# Default to 64-bit Windows MSVC +# Default to 64-bit Windows MSVC for local dev [build] target = "x86_64-pc-windows-msvc" @@ -10,10 +10,8 @@ target = "x86_64-pc-windows-msvc" b64 = "build --release --target x86_64-pc-windows-msvc" # Build 32-bit release b32 = "build --release --target i686-pc-windows-msvc" -# Build both architectures -ball = ["b64", "b32"] -# Target-specific settings +# Target-specific settings - static CRT for standalone binaries [target.x86_64-pc-windows-msvc] rustflags = ["-C", "target-feature=+crt-static"] diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index b6b59b5..c28c711 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -8,6 +8,270 @@ --- +## End-User Portal (connect.azcomputerguru.com) + +### Unauthenticated View + +When a user visits the portal without being logged in: + +``` +┌─────────────────────────────────────────────────────┐ +│ │ +│ [Company Logo] │ +│ │ +│ Enter your support code: │ +│ ┌─────────────────────────┐ │ +│ │ 8 4 7 2 9 1 │ │ +│ └─────────────────────────┘ │ +│ │ +│ [ Connect ] │ +│ │ +│ ───────────────────────────────────────────────── │ +│ │ +│ Instructions will appear here after clicking │ +│ Connect, based on your browser. │ +│ │ +└─────────────────────────────────────────────────────┘ +``` + +### Connection Flow + +1. **User enters code** → Click "Connect" +2. **Server validates code** → Returns session info or error +3. **Attempt app launch** via custom protocol: + - `guruconnect://session/{code}` + - If app is installed, it launches and connects +4. **If app doesn't launch** (timeout ~3 seconds): + - Auto-download small EXE (`GuruConnect-{code}.exe`) + - Show browser-specific instructions + +### Browser-Specific Instructions + +Detect browser via User-Agent and show appropriate guidance: + +**Chrome:** +> "Click the download in the bottom-left corner of your screen, then click 'Open'" +> [Screenshot of Chrome download bar] + +**Firefox:** +> "Click 'Save File', then open your Downloads folder and double-click the file" +> [Screenshot of Firefox download dialog] + +**Edge:** +> "Click 'Open file' in the download notification at the top of your screen" +> [Screenshot of Edge download prompt] + +**Safari:** +> "Click the download icon in the toolbar, then double-click the file" +> [Screenshot of Safari downloads] + +**Generic/Unknown:** +> "Your download should start automatically. Look for the file in your Downloads folder and double-click to run it." + +### Custom Protocol Handler + +**Protocol:** `guruconnect://` + +**Format:** `guruconnect://session/{code}` + +**Registration:** +- Permanent agent registers protocol handler on install +- One-time agent does NOT register (to avoid clutter) + +**Behavior:** +- If registered: OS launches installed agent with session code +- If not registered: Browser shows "nothing happened" → triggers download fallback + +### One-Time Session Agent (Temp/Support) + +**Key Requirements:** +- Runs in **user space** - NO admin elevation required +- Downloads as `GuruConnect-{code}.exe` (code baked in) +- ~3-5MB executable +- Self-contained (no installer, no dependencies) +- Connects directly to session on launch +- Self-deletes after session ends (or on next reboot) + +**Elevation Note:** +- Basic screen sharing works without admin +- Some features (input to elevated windows, UAC dialogs) need admin +- Show optional "Run as Administrator" button for full access + +--- + +## Technician Dashboard (Logged-In View) + +### Visual Style + +Follow GuruRMM dashboard design: +- HSL CSS variables for theming (dark/light mode support) +- Sidebar navigation with lucide-react icons +- Card-based content areas +- Responsive layout (mobile hamburger menu) +- Consistent component library (Button, Card, Input) + +### Navigation Structure + +``` +┌──────────────────────────────────────────────────────────────┐ +│ ┌──────────┐ │ +│ │GuruConnect│ │ +│ └──────────┘ │ +│ │ +│ 📋 Support ← Active temp sessions │ +│ 🖥️ Access ← Unattended/permanent sessions │ +│ 🔧 Build ← Installer builder │ +│ ⚙️ Settings ← Preferences, groupings, appearance │ +│ │ +│ ───────────── │ +│ 👤 Mike S. │ +│ Admin │ +│ [Sign out] │ +└──────────────────────────────────────────────────────────────┘ +``` + +### Support Tab (Active Temporary Sessions) + +**Layout:** +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ Support Sessions [ + Generate Code ] │ +├─────────────────────────────────────────────────────────────────────┤ +│ │ +│ ▼ My Sessions (3) │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ 847291 │ John's PC │ Connected │ 00:15:32 │ [Join] [End] │ │ +│ │ 293847 │ Waiting │ Pending │ - │ [Cancel] │ │ +│ │ 182736 │ Sarah-PC │ Connected │ 00:45:10 │ [Join] [End] │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ +│ ▼ Team Sessions (2) [Howard's sessions] │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ 928374 │ DESKTOP-A │ Connected │ 00:05:22 │ [View] [Join] │ │ +│ │ 746382 │ Laptop-01 │ Connected │ 01:20:15 │ [View] │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ +│ ▶ Support Requests (1) [End-user initiated] │ +│ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +**Features:** +- Sessions grouped by technician (own first, then team) +- Real-time status updates (WebSocket) +- Duration timer for active sessions +- Quick actions: Join, View (spectate), End, Cancel +- Support request queue from end-user tray icon requests + +### Access Tab (Unattended/Permanent Sessions) + +**Layout:** +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ Access 🔍 [Search...] [ + Build ] │ +├──────────────┬──────────────────────────────────────────────────────┤ +│ │ │ +│ ▼ By Company │ All Machines by Company 1083 machines │ +│ (empty) 120│ ─────────────────────────────────────────────────── │ +│ 4 Paws 1│ ┌──────────────────────────────────────────────┐ │ +│ ACG 10│ │ ● PC-FRONT01 │ Glaztech │ Win 11 │ Online │ │ +│ Glaztech 224 │ ● SERVER-DC01 │ Glaztech │ Svr 22 │ Online │ │ +│ AirPros 2│ │ ○ LAPTOP-SALES │ Glaztech │ Win 10 │ 2h ago │ │ +│ ... │ │ ● WORKSTATION-3 │ ACG │ Win 11 │ Online │ │ +│ │ │ ... │ │ +│ ▶ By Site │ └──────────────────────────────────────────────┘ │ +│ ▶ By OS │ │ +│ ▶ By Tag │ ──────────────── Machine Detail ───────────────── │ +│ │ Name: PC-FRONT01 │ +│ ──────────── │ Company: Glaztech Industries │ +│ Smart Groups │ Site: Phoenix Office │ +│ ──────────── │ OS: Windows 11 Pro (23H2) │ +│ Attention 1│ User: jsmith │ +│ Online 847 IP: 192.168.1.45 / 72.194.62.4 │ +│ Offline 30d 241 Serial: 8XKJF93 │ +│ Offline 1yr 238 Last Seen: Now │ +│ Outdated 516│ │ +│ Recent 5│ [ Connect ] [ Wake ] [ Tools ▼ ] │ +│ │ │ +│ ▶ My Filters │ │ +│ + New Filter│ │ +└──────────────┴──────────────────────────────────────────────────────┘ +``` + +**Left Sidebar - Groupings:** +- By Company (with counts, expandable) +- By Site +- By OS +- By Tag +- By Device Type +- Smart Groups (auto-generated) +- Custom Filters (user-created) + +**Main Panel:** +- Machine list with status indicators (● online, ○ offline) +- Quick info columns (configurable) +- Click to select → shows detail panel + +**Right Panel - Machine Detail:** +- Full machine info (Session, Device, Network sections) +- Action buttons: Connect, Wake (if offline), Tools dropdown + +### Build Tab (Installer Builder) + +**Layout:** +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ Build Installer │ +├─────────────────────────────────────────────────────────────────────┤ +│ │ +│ Name: [ Use Machine Name ▼ ] │ +│ Company: [ __________________________ ] (autocomplete) │ +│ Site: [ __________________________ ] (autocomplete) │ +│ Department: [ __________________________ ] │ +│ Device Type: [ Workstation ▼ ] │ +│ Tag: [ __________________________ ] │ +│ │ +│ Platform: ○ Windows 64-bit (recommended) │ +│ ○ Windows 32-bit │ +│ ○ Linux (coming soon) │ +│ │ +│ ───────────────────────────────────────────────────────────────── │ +│ │ +│ [ Download EXE ] [ Download MSI ] [ Copy URL ] [ Send Link ] │ +│ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### Settings Tab + +**Sections:** + +**Appearance:** +- Theme: Light / Dark / System +- Sidebar: Expanded / Collapsed by default +- Default landing tab: Support / Access + +**Groupings:** +- Default grouping for Access tab +- Show/hide specific smart groups +- Configure custom filter defaults + +**Notifications:** +- Browser notifications: On/Off +- Sound alerts: On/Off +- Email alerts for support requests: On/Off + +**Session Defaults:** +- Default session visibility: Private / Team / Company +- Auto-accept from specific companies + +**Account:** +- Change password +- Two-factor authentication +- API keys (for integrations) + +--- + ## Session Types ### 1. Support Sessions (Attended/One-Time)