# RustDesk Client Generator ## Overview The Client Generator is an integrated feature of the BetterDesk Console that allows you to create custom RustDesk clients with pre-configured settings. This eliminates the need for users to manually configure their clients and ensures consistent deployment across your organization. ## Features ### Platform Support - **Windows 64-bit** - Standard Windows desktop client - **Windows 32-bit** - Legacy Windows systems - **Linux** - AppImage for universal Linux compatibility - **Android** - APK for Android devices - **macOS** - DMG installer for Apple devices ### Configuration Options #### General Settings - Custom configuration name - Custom application name - Connection type (Incoming, Outgoing, Bidirectional) - Enable/disable installation - Enable/disable settings menu - Custom Android App ID #### Custom Server - Pre-configure server host - Embed public key - Set API endpoint - Custom branding URLs - Company copyright information #### Security - Password approval mode - Permanent password - LAN discovery control - Direct IP access - Auto-close on inactivity - Hide connection window option #### Visual Customization - Custom app icon (.png) - Custom app logo (.png) - Theme selection (Follow System, Light, Dark) - Theme override options #### Permissions - Granular control over features: - Keyboard/mouse control - Clipboard sharing - File transfer - Audio transmission - TCP tunneling - Remote restart - Session recording - Block user input - Remote configuration - Remote printer - Remote camera - Remote terminal #### Code Changes - Monitor cycling button - Offline device indicators - Version notification control #### Other Options - Wallpaper removal during sessions - Default settings (JSON) - Override settings (JSON) ## How to Use ### 1. Access the Generator Navigate to "Client Generator" in the sidebar menu of the BetterDesk Console. ### 2. Select Platform Click on the desired platform icon (Windows, Linux, Android, or macOS). ### 3. Choose Version Select the RustDesk version you want to customize. ### 4. Configure Settings Fill in the configuration options based on your requirements: - Enter server details if using a custom server - Set security options - Upload custom icons/logos if desired - Configure permissions - Add any custom settings in JSON format ### 5. Generate Client Click the "Generate Custom Client" button. The system will: 1. Download the base RustDesk client 2. Apply your configuration 3. Package the customized client 4. Provide a download link ### 6. Download and Deploy Once generation is complete, download the custom client and distribute it to your users. ## Technical Details ### How It Works 1. **Download Base Client**: The generator fetches the official RustDesk client from GitHub releases. 2. **Configuration Injection**: Your settings are converted to RustDesk's configuration format (TOML). 3. **Client Modification**: The configuration is embedded or packaged with the client. 4. **Output Generation**: The customized client is packaged and made available for download. ### File Storage - Generated clients are stored in `/tmp/rustdesk_builds/` - Uploaded icons/logos are stored in `/tmp/rustdesk_uploads/` - Files older than 24 hours are automatically cleaned up ### Security - Only authenticated users can access the generator - All actions are logged in the audit log - File uploads are restricted to .png format - Maximum file size: 5MB - Filenames are sanitized to prevent directory traversal ## Configuration Format ### Default Settings (JSON) ```json { "view_style": "original", "scroll_style": "scrollauto", "image_quality": "balanced" } ``` ### Override Settings (JSON) ```json { "options": { "enable-audio": "N", "enable-clipboard": "Y" } } ``` ## Limitations ### Current Implementation The current implementation provides basic configuration embedding. For production use, consider: 1. **Code Signing**: Sign the executables with your organization's certificate 2. **Advanced Customization**: Modify source code for deeper changes 3. **Branding**: Replace icons and resources in the executable 4. **Compilation**: Build from source for maximum customization ### Platform-Specific Notes - **Windows**: Configuration can be embedded as a companion .toml file - **Linux**: AppImage allows configuration overlay - **Android**: APK modification requires signing with your certificate - **macOS**: DMG modification may require code signing ## Best Practices 1. **Test First**: Always test generated clients in a safe environment before deployment 2. **Version Control**: Keep track of which configurations you've deployed 3. **Security**: Use strong permanent passwords if enabling this feature 4. **Permissions**: Only grant minimum necessary permissions 5. **Updates**: Regularly generate new clients with latest RustDesk versions ## Troubleshooting ### Generation Fails - Check internet connection (required to download base clients) - Verify RustDesk version is available on GitHub - Check disk space in `/tmp/` ### Client Doesn't Connect - Verify server host is correct - Check public key matches your server - Ensure firewall allows required ports ### Configuration Not Applied - Verify JSON syntax in default/override settings - Check that settings keys are valid - Review generated metadata file (.json) ## API Integration The generator can be accessed programmatically: ### Generate Client ```bash POST /api/generate-client Authorization: Bearer Content-Type: multipart/form-data # Form fields: platform, version, config_name, server_host, etc. ``` ### Download Client ```bash GET /api/download-client/ Authorization: Bearer ``` ## Future Enhancements Planned improvements: - Source code compilation for full customization - Code signing integration - Batch generation for multiple platforms - Configuration templates - Version tracking and rollback - Client update management ## Support For issues or questions about the Client Generator: 1. Check the main BetterDesk Console documentation 2. Review RustDesk official documentation 3. Submit issues on the project repository ## Credits This generator integrates with [RustDesk](https://github.com/rustdesk/rustdesk), an open-source remote desktop software.