A beautiful, secure web-based file transfer application with comprehensive cancellation system
Features β’ Quick Start β’ Documentation β’ API β’ Contributing
Any OS to Linux Servers SCP is a modern, web-based file transfer application designed for seamless and secure file transfers between clients and Linux servers using the SCP (Secure Copy Protocol) over SSH.
This major release introduces comprehensive transfer cancellation functionality, resolving critical issues where transfers would get stuck indefinitely. Now users can cancel transfers at any time, and the system automatically detects stuck transfers.
- π Transfer Cancellation: Cancel any transfer mid-process
- π Stuck Detection: Auto-detects transfers stuck for 2+ minutes
- β‘ Enhanced Monitoring: More responsive progress updates
- π‘οΈ Better Error Handling: Distinguishes cancellation from errors
- π± Professional UI: Glass morphism design with modern aesthetics
- Windows 7 Aero Theme: Beautiful glass-like interface with transparency effects
- Responsive Design: Works perfectly on desktop, tablet, and mobile devices
- Dual Panel Layout: Side-by-side local and remote file views
- Real-time Progress: Visual progress indicators with cancellation support
- Dual Authentication: Support for both password and SSH key authentication
- Encrypted Storage: Credentials encrypted with Fernet encryption
- Session Management: Secure session handling with automatic timeout
- SSH Key Support: Upload and use private key files (.pem, .ppk, .key)
- Full Filesystem Access: Browse from root directory to all subdirectories
- Bidirectional Transfer: Upload and download files seamlessly
- Batch Operations: Multiple file selection and transfer
- Drag & Drop: Intuitive drag-and-drop file operations
- File Operations: Create folders, rename, delete files and directories
- Intelligent Keep-Alive: 15-second lightweight pings with 1-hour idle timeout
- Transfer-Aware Logic: No interference during file uploads/downloads
- Auto-Reconnection: Smart reconnection with failure tolerance
- Activity Tracking: User interaction monitoring for optimal session management
- Immediate Cancellation: Cancel transfers instantly with API integration
- Stuck Transfer Detection: Automatic detection of transfers with no progress
- Smart Monitoring: Enhanced progress tracking with timeout handling
- User Feedback: Clear messages about cancellation status
- macOS Optimized: Native support for macOS with AirDrop conflict resolution
- Linux Server Support: Full compatibility with Linux servers
- Windows Support: Complete Windows compatibility with PowerShell scripts
- Smart Port Selection: Auto-selects from available ports (5000, 5001, 5002, 8000, 8080, 8888, 9000)
# Clone the repository
git clone https://github.com/yourusername/macos-to-linux-servers-scp.git
cd macos-to-linux-servers-scp
# Start with interactive port selection
./start.sh# Extract if using zip file
unzip macos-to-linux-scp-with-cancel-fix.zip
cd macos-to-linux-servers-scp
# Run the start script (auto-installs dependencies)
./start.sh# Install Python dependencies
pip3 install -r requirements.txt
# Start the application
python3 app_enhanced.py# Run the batch file
start.bat
# Or run PowerShell script
powershell -ExecutionPolicy Bypass -File start.ps1After starting, the application will be available at:
- Local:
http://localhost:5000(or next available port) - Network:
http://[your-ip]:5000
- Enter server IP/hostname and port (default: 22)
- Provide username and password
- Optionally save credentials securely
- Test connection and connect
- Upload your SSH private key file
- Enter server details and username
- Test and connect
- Left Panel: Local files (your system)
- Right Panel: Remote files (Linux server)
- Navigation Buttons: Back, Up, Users, Root, Refresh
- Breadcrumb: Click path segments for quick navigation
- Download: Select remote files β Click "β¬οΈ Download to Local"
- Upload: Select local files β Click "β¬οΈ Upload to Remote"
- Drag & Drop: Drag files between panels
- Cancel Transfer: Click "β Cancel Transfer" button anytime β NEW
- Create Folders: Use "π New Folder" button
- Rename: Select file/folder β Click "βοΈ Rename"
- Delete: Select items β Click "ποΈ Delete"
- Multiple Selection: Click multiple files for batch operations
- Start any file transfer (upload/download)
- Click the "β Cancel Transfer" button in the progress modal
- Transfer stops immediately with confirmation message
- System monitors progress every 5 seconds
- If no progress for 2 minutes, automatically offers cancellation
- Prevents indefinitely stuck transfers
- Flask Framework: Lightweight web server with RESTful API
- Paramiko Library: SSH/SCP protocol implementation
- Cryptography: Fernet encryption for credential storage
- Threading: Background keep-alive monitoring
- Session Management: Secure Flask sessions with connection tracking
- Vanilla JavaScript: No external dependencies for maximum compatibility
- Modern CSS: Glass effects with backdrop-filter and transparency
- Responsive Design: Mobile-friendly interface with touch support
- Real-time Updates: AJAX polling for progress with cancellation support
- Event Management: Proper cleanup to prevent memory leaks
- Encrypted Credentials: Fernet symmetric encryption for stored credentials
- Secure Sessions: Flask session management with timeout
- SSH Protocol: All transfers use encrypted SSH/SCP
- Path Validation: Directory traversal protection
- Memory Safety: SSH keys processed in memory only
- π Project Documentation: Complete feature overview with visual design
- π API Reference: Detailed API endpoint documentation
- π Git Workflow: Git setup, branching, and collaboration guidelines
- π Changelog: Complete version history and changes
- π₯οΈ Windows Setup: Windows-specific installation guide
# Test the new cancel functionality
python3 test_cancel_transfer.py
# Manual testing scenarios:
# 1. Start large file transfer
# 2. Click cancel button mid-transfer
# 3. Verify immediate cancellation
# 4. Test stuck transfer detectionPOST /api/login- Password authenticationPOST /api/login-key- SSH key authenticationPOST /api/test-connection- Test server connectivityPOST /api/disconnect- Disconnect from server
GET /api/list-local- List local directoryGET /api/list-remote- List remote directoryPOST /api/transfer-multiple- Transfer multiple filesPOST /api/upload- Upload single filePOST /api/download- Download single file
GET /api/transfer-progress- Get transfer progressPOST /api/cancel-transfer- Cancel active transfer
POST /api/keep-alive- Maintain sessionGET /api/connection-status- Get connection status
See API_DOCUMENTATION.md for complete endpoint details.
export FLASK_ENV=production
export SCP_PORT=5001
export SCP_DEBUG=false
export SCP_MAX_FILE_SIZE=10737418240 # 10GB# app_config.py
KEEP_ALIVE_INTERVAL = 15 # seconds
IDLE_TIMEOUT = 3600 # 1 hour
MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024 # 10GB
TRANSFER_TIMEOUT = 300 # 5 minutes- Firewall: Ensure application ports are open (5000-5002, 8000, 8080, 8888, 9000)
- SSH Access: Verify SSH service on target servers (port 22)
- Key Permissions: SSH keys should have 600 permissions (
chmod 600 keyfile)
- Optimized Transfers: 2GB window size, 1TB rekey threshold
- Progress Tracking: Real-time progress with completion callbacks
- Memory Efficient: Streaming transfers for large files (up to 10GB+)
- Compression: Configurable compression for better performance
- Smart Keep-Alive: Lightweight 15-second pings
- Transfer Awareness: No interference during file operations
- Failure Tolerance: Up to 4 consecutive failures before reconnection
- Activity Monitoring: User interaction resets idle timers
- Immediate Response: Transfers stop within seconds of cancellation
- Progress Monitoring: Enhanced with 200ms update intervals
- Stuck Detection: Automatic detection after 2 minutes of no progress
- Cleanup: Proper cleanup of resources and connections
# Test SSH connectivity
ssh username@server-ip
# Check port availability
telnet server-ip 22
# Verify SSH service
sudo systemctl status ssh # On Linux server- Stuck Transfers: Use the new cancel button or wait for auto-detection β
- Large Files: Ensure sufficient disk space on both systems
- Permissions: Check file/directory permissions on target system
- Network: Verify stable network connection for large transfers
- Port Conflicts: App automatically selects alternative ports
- SSH Keys: Ensure proper key format and permissions (600)
- Timeouts: New cancellation system handles stuck transfers
- Memory: Monitor system resources during large transfers
- OS: macOS 10.14+, Linux (any modern distro), Windows 10+
- Python: 3.6 or higher
- RAM: 512MB minimum (1GB recommended for large transfers)
- Network: Internet/LAN connectivity
- Browser: Modern browser with JavaScript enabled
- SSH Service: OpenSSH server running and accessible
- Port Access: SSH port (default 22) accessible from client
- User Account: Valid user account with appropriate permissions
- Disk Space: Sufficient space for file transfers
We welcome contributions! Please follow these steps:
# Fork and clone the repository
git clone https://github.com/yourusername/macos-to-linux-servers-scp.git
cd macos-to-linux-servers-scp
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip3 install -r requirements.txt
# Run in development mode
python3 app_enhanced.py --debug- Fork the repository and create your feature branch
- Follow the established code style and conventions
- Add comprehensive tests for new features
- Update documentation for user-facing changes
- Use semantic commit messages (see Git documentation)
- Submit a pull request with detailed description
See GIT_DOCUMENTATION.md for detailed Git workflow, branching strategy, and collaboration guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- β Commercial use allowed
- β Modification allowed
- β Distribution allowed
- β Private use allowed
- β No warranty provided
- β No liability assumed
- Paramiko: Excellent SSH/SCP implementation for Python
- Flask: Lightweight and powerful web framework
- Cryptography: Secure credential encryption library
- Community: Feedback, bug reports, and feature suggestions from users
- π Documentation: Check the comprehensive HTML documentation
- π Issues: Report bugs via GitHub Issues
- π¬ Discussions: Join GitHub Discussions
- π§ Email: shubhammuke@gmail.com
- π Star the Project: If you find this useful, please star the repository
- π΄ Fork: Create your own version or contribute improvements
- π’ Share: Help others discover this tool
The major highlight of this release is the comprehensive transfer cancellation system that resolves the critical issue where transfers would get stuck indefinitely.
- β Immediate Cancellation: Click cancel button to stop transfers instantly
- β Stuck Detection: Automatic detection of transfers with no progress for 2+ minutes
- β Enhanced Monitoring: More responsive progress updates (200ms intervals)
- β Better Error Handling: Clear distinction between cancellation and actual errors
- β Proper Cleanup: Complete cleanup of resources and connection state
- Backend: New
/api/cancel-transferendpoint with proper state management - Frontend: Enhanced cancel button with API integration and user feedback
- Monitoring: Improved progress polling with stuck transfer detection algorithm
- Error Handling: Separate handling for user cancellation vs system errors
π Any OS to Linux Servers SCP - Making secure file transfers beautiful, reliable, and cancellable!
Developed with β€οΈ for seamless Server file management