How fsquirt/freewpfshell works
FreeWPFShell is a Windows WPF SSH client paired with a Rust Linux monitoring agent. The main workflow is user → host/session connection → interactive terminal, with session-level branches for SFTP, monitoring, and tunnels; users can also open system-management and network tools. The graph includes documented agent capabilities whose Rust dispatch is visible, while some WPF wiring and fallback details are supported by the README rather than sampled implementation. Optional IP geolocation is shown separately.
Main entry points: SshSessionService.cs SSH session · main.rs Agent protocol · KeyRepository.cs Key repository · SshTerminalConnection.cs Terminal connection
Components 24
SSH client
- Main window
Views/MainForm.xaml.cs - SSH session
Services/SshSessionService.cs - Terminal connection
Share/SshTerminalConnection.cs - Terminal view
ViewModels/TerminalViewModel.cs
File transfer
- SFTP page
Views/SftpTransferPage.xaml.cs - Remote files
Services/RemoteFileService.cs - Transfer manager
Services/SftpTransferManager.cs
Monitoring agent
- Monitor service
Services/SshMonitorService.cs - Agent protocol
linux-monitor/src/main.rs - Stats collector
linux-monitor/src/stats_collector.rs - System management
ViewModels/SystemManagementViewModel.cs - Service manager
linux-monitor/src/service_manager.rs - Cron manager
linux-monitor/src/cron_manager.rs - Login records
linux-monitor/src/utmp_parser.rs
Network tools
- Traceroute view
ViewModels/TracerouteViewModel.cs - IP geolocation
Share/IpGeoService.cs - Tunnel service
Services/TunnelService.cs - Active tunnels
Share/SshTunnelManager.cs
Credentials
- Key manager
UserForm/KeyManagerWindow.xaml.cs - Key repository
Repositories/KeyRepository.cs - Local key data
- Windows credentials
Other components
- User
- SSH host
Connections 24
- User → Main window: opens
- Main window → SSH session: starts session
- SSH session → SSH host: connects
- SSH session → Terminal connection: creates
- Terminal view → Terminal connection: sends input
- Terminal connection → Terminal view: streams output
- SSH session → Remote files: uses
- SFTP page → Remote files: requests files
- SFTP page → Transfer manager: tracks transfers
- SSH session → Monitor service: starts monitoring
- Monitor service → Agent protocol: requests status
- Agent protocol → Stats collector: collects stats
- System management → Monitor service: requests operations
- Agent protocol → Service manager: dispatches service ops
- Agent protocol → Cron manager: dispatches cron ops
- Agent protocol → Login records: reads login records
- User → Traceroute view: starts trace
- Traceroute view → IP geolocation: looks up hops
- SSH session → Tunnel service: manages forwards
- Tunnel service → Active tunnels: registers tunnels
- Key manager → Key repository: imports and deletes
- SSH session → Key repository: loads key
- Key repository → Local key data: reads and writes
- Key repository → Windows credentials: protects passphrase