feat: Add professional Python RDP client with GUI interface
- Complete rewrite of zenity-based bash script in Python - Modern tkinter GUI with Microsoft RDP Client-like design - Encrypted credential storage and connection management - Fixed STATUS_ACCOUNT_RESTRICTION authentication issues - Support for multiple monitors, sound, clipboard, drive sharing - Connection history and profile management - Keyboard shortcuts and professional interface - Comprehensive logging and error handling - Virtual environment auto-detection and setup - Full feature parity with original bash script - Enhanced security with Fernet encryption - Cross-platform compatibility and modern UX
This commit is contained in:
65
.gitignore
vendored
Normal file
65
.gitignore
vendored
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# Python
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
*.so
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# Virtual Environment
|
||||||
|
.venv/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env/
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# RDP Client specific
|
||||||
|
rdp_client.log
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Backup files
|
||||||
|
*.backup
|
||||||
|
*.bak
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Test files
|
||||||
|
test_*.sh
|
||||||
|
*.before_*
|
||||||
|
|
||||||
|
# Credentials (should not be committed)
|
||||||
|
credentials.json
|
||||||
|
*.cred
|
||||||
|
|
||||||
|
# Connection logs
|
||||||
|
rdp_client.log*
|
||||||
180
README.md
Normal file
180
README.md
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
# Professional RDP Client
|
||||||
|
|
||||||
|
A modern Python-based RDP client with GUI interface that replaces the zenity-based bash script with enhanced functionality and better user experience.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Professional GUI Interface**: Modern tkinter-based interface with Microsoft RDP Client-like design
|
||||||
|
- **Connection Management**: Save, load, and manage multiple RDP connections
|
||||||
|
- **Credential Storage**: Encrypted password storage with automatic credential management
|
||||||
|
- **Connection History**: Track and quickly access recently used connections
|
||||||
|
- **Full Feature Support**:
|
||||||
|
- Multiple monitor support
|
||||||
|
- Sound and microphone redirection
|
||||||
|
- Clipboard sharing
|
||||||
|
- Drive sharing
|
||||||
|
- Custom resolutions and color depths
|
||||||
|
- Various display options (wallpaper, themes, fonts)
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Python 3.6+
|
||||||
|
- xfreerdp (FreeRDP client)
|
||||||
|
- Required Python packages:
|
||||||
|
- tkinter (usually included with Python)
|
||||||
|
- cryptography
|
||||||
|
- threading
|
||||||
|
- subprocess
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Clone this repository:
|
||||||
|
```bash
|
||||||
|
git clone git@gitea.egonetix.de:root/rdp_client.git
|
||||||
|
cd rdp_client
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install dependencies:
|
||||||
|
```bash
|
||||||
|
# Install FreeRDP
|
||||||
|
sudo apt-get install freerdp2-x11 # Ubuntu/Debian
|
||||||
|
# or
|
||||||
|
sudo dnf install freerdp # Fedora/RHEL
|
||||||
|
|
||||||
|
# Install Python dependencies
|
||||||
|
pip install cryptography
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Make the script executable:
|
||||||
|
```bash
|
||||||
|
chmod +x rdp_client.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Running the Application
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./rdp_client.py
|
||||||
|
```
|
||||||
|
|
||||||
|
Or with Python directly:
|
||||||
|
```bash
|
||||||
|
python3 rdp_client.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Virtual Environment Support
|
||||||
|
|
||||||
|
The script automatically detects and uses a virtual environment if available in the same directory:
|
||||||
|
```bash
|
||||||
|
python3 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip install cryptography
|
||||||
|
./rdp_client.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Creating Connections
|
||||||
|
|
||||||
|
1. Click "New Connection" or press Ctrl+N
|
||||||
|
2. Fill in the connection details:
|
||||||
|
- Server/IP address
|
||||||
|
- Username and password
|
||||||
|
- Domain (optional)
|
||||||
|
- Display settings
|
||||||
|
- Feature options
|
||||||
|
3. Save the connection for future use
|
||||||
|
|
||||||
|
### Managing Connections
|
||||||
|
|
||||||
|
- **Connect**: Double-click a saved connection or select and click "Connect"
|
||||||
|
- **Edit**: Right-click a connection and select "Edit"
|
||||||
|
- **Delete**: Right-click a connection and select "Delete"
|
||||||
|
- **Recent Connections**: Access recently used connections from the history list
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Configuration files are stored in `~/.config/rdp-client/`:
|
||||||
|
- `connections.json`: Saved connection profiles
|
||||||
|
- `credentials.json`: Encrypted passwords
|
||||||
|
- `history.json`: Connection history
|
||||||
|
- `rdp_client.log`: Application logs
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
- Passwords are encrypted using Fernet (symmetric encryption)
|
||||||
|
- Encryption key is derived from username@hostname
|
||||||
|
- Credential files have restricted permissions (600)
|
||||||
|
|
||||||
|
## Keyboard Shortcuts
|
||||||
|
|
||||||
|
- **F1**: Show help and shortcuts
|
||||||
|
- **Ctrl+N**: New connection
|
||||||
|
- **Ctrl+Q**: Quit application
|
||||||
|
- **Delete**: Delete selected connection
|
||||||
|
- **Enter**: Connect to selected connection
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Connection Issues
|
||||||
|
|
||||||
|
1. Verify FreeRDP is installed: `which xfreerdp`
|
||||||
|
2. Test manual connection with generated command (shown in logs)
|
||||||
|
3. Check server accessibility: `ping your-server`
|
||||||
|
4. Verify credentials and domain settings
|
||||||
|
|
||||||
|
### Common Error Solutions
|
||||||
|
|
||||||
|
- **STATUS_ACCOUNT_RESTRICTION**: Usually resolved by the built-in security parameter handling
|
||||||
|
- **Connection timeout**: Check network connectivity and server availability
|
||||||
|
- **Authentication failure**: Verify username, password, and domain
|
||||||
|
|
||||||
|
### Logs
|
||||||
|
|
||||||
|
Check the log file for detailed error information:
|
||||||
|
```bash
|
||||||
|
tail -f ~/.config/rdp-client/rdp_client.log
|
||||||
|
```
|
||||||
|
|
||||||
|
## Migration from Bash Script
|
||||||
|
|
||||||
|
If migrating from the old zenity-based bash script:
|
||||||
|
|
||||||
|
1. Connection profiles are compatible and will be automatically detected
|
||||||
|
2. Encrypted credentials from the Python version will be used
|
||||||
|
3. The bash script's .cred files (if any) need to be recreated in the new interface
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
### File Structure
|
||||||
|
|
||||||
|
- `rdp_client.py`: Main application file
|
||||||
|
- `README.md`: Documentation
|
||||||
|
- `.venv/`: Virtual environment (if used)
|
||||||
|
|
||||||
|
### Contributing
|
||||||
|
|
||||||
|
1. Fork the repository
|
||||||
|
2. Create a feature branch
|
||||||
|
3. Make your changes
|
||||||
|
4. Test thoroughly
|
||||||
|
5. Submit a pull request
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License - see the LICENSE file for details.
|
||||||
|
|
||||||
|
## Author
|
||||||
|
|
||||||
|
Enhanced RDP Client with Professional GUI
|
||||||
|
- Replaces zenity-based bash script with modern Python interface
|
||||||
|
- Maintains compatibility with existing connection profiles
|
||||||
|
- Adds encrypted credential storage and connection management
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
|
||||||
|
- **v2.0**: Complete Python rewrite with GUI interface
|
||||||
|
- **v1.0**: Original bash script with zenity interface
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Note**: This client provides the same reliable RDP connectivity as the original bash script but with enhanced user experience and modern interface design.
|
||||||
1286
rdp_client.py
Executable file
1286
rdp_client.py
Executable file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user