A secure client-server application for file management with SSL/TLS encryption, user authentication, and a modern GUI interface.
-
Secure Communication
- SSL/TLS encryption for all data transfers
- Self-signed certificate support
- Encrypted file storage
- Secure user authentication
-
User Management
- Multiple user support
- Password hashing with SHA-256
- User-specific storage directories
- Session management
-
File Operations
- Upload files
- Download files
- Delete files
- View file previews
- List files
- Real-time file list updates
-
Modern GUI Client
- Tkinter-based graphical interface
- Intuitive file operations
- Progress indicators
- Status updates
- File preview window
-
Robust Server
- Multi-threaded connection handling
- Graceful shutdown
- Comprehensive logging
- Error handling
- Connection management
# Required Python packages
pip install cryptography
pip install pyOpenSSL
pip install tkinter
distributed-file-orchestration-and-synchronization/
├── config.py # Configuration settings
├── create_credentials.py # User credential management
├── generate_certificate.py # SSL certificate generation
├── gui_client.py # GUI client application
├── ssl_server.py # Secure server implementation
├── server_storage/ # File storage directory
├── logs/ # Log files
└── temp/ # Temporary files
- Generate SSL Certificates
python generate_certificate.py
- Create User Credentials
python create_credentials.py
- Start the Server
python ssl_server.py
- Launch the GUI Client
python gui_client.py
OR
Run the Script file
chmod +x run.sh
./run.sh
-
Admin User:
- Username:
admin
- Password:
admin123
- Username:
-
Regular User:
- Username:
user1
- Password:
user123
- Username:
The config.py
file contains various settings:
-
Server Configuration
- Host and Port
- Maximum Connections
- Buffer Sizes
- Storage Paths
-
Security Settings
- Login Attempt Limits
- Session Timeouts
- Password Requirements
-
Logging Configuration
- Log Levels
- Log Formats
- Log File Locations
-
Data Protection
- SSL/TLS encryption for transport
- Fernet encryption for stored files
- Secure password hashing
-
Access Control
- User authentication
- User-specific directories
- Session management
-
System Security
- Input validation
- Error handling
- Secure file operations
-
Login
- Launch the GUI client
- Enter credentials
- Connect to server
-
File Operations
- Upload: Select file to upload
- Download: Select file and save location
- Delete: Select file to remove
- View: Preview file contents
- Refresh: Update file list
The system includes comprehensive error handling for:
- Connection issues
- Authentication failures
- File operation errors
- Encryption/decryption problems
- Invalid inputs
Detailed logging is implemented for:
- Server operations
- Client connections
- File transfers
- Security events
- Error conditions
To extend the system:
-
Add New Features
- Implement new command in server
- Add corresponding client function
- Update GUI as needed
-
Modify Security
- Edit SSL configuration
- Update encryption methods
- Enhance authentication
-
Custom Configuration
- Modify config.py settings
- Update server parameters
- Adjust client behavior
- Fork the repository
- Create a feature branch
- Commit changes
- Push to the branch
- Create a Pull Request
- Snigdha SV
- Sujay SC
- Subham R Bhuyan
- Vaishnavi R
- Python SSL/TLS implementation
- Cryptography library
- Tkinter GUI framework