3.5 KiB
3.5 KiB
Sharey Configuration System
Overview
Sharey now features a comprehensive JSON-based configuration system that replaces environment variables with a more structured and feature-rich approach.
Configuration Files
Primary Configuration: config.json
{
"b2": {
"application_key_id": "your_key_id_here",
"application_key": "your_application_key_here",
"bucket_name": "your_bucket_name_here"
},
"flask": {
"host": "127.0.0.1",
"port": 8866,
"debug": true
},
"upload": {
"max_file_size_mb": 100,
"allowed_extensions": [".jpg", ".jpeg", ".png", ".gif", ".pdf", ".txt", ".doc", ".docx", ".zip", ".mp4", ".mp3"]
},
"paste": {
"max_length": 1000000
},
"security": {
"rate_limit_enabled": false,
"max_uploads_per_hour": 50
}
}
Fallback: Environment Variables
For backwards compatibility, Sharey still supports .env files and environment variables.
Configuration Management Tools
Setup Script: setup.py
- Creates
config.jsonfrom template - Sets up virtual environment
- Installs dependencies
- Validates configuration
Configuration Utility: config_util.py
python config_util.py show # Display current config
python config_util.py validate # Validate configuration
python config_util.py set # Interactive setup
python config_util.py reset # Reset to defaults
Test Utility: test_b2.py
- Tests B2 connection
- Validates credentials
- Shows configuration summary
New Features
File Upload Controls
- File size limits: Configurable max file size in MB
- File type restrictions: Whitelist of allowed extensions
- Validation: Automatic file type checking
Paste Controls
- Length limits: Configurable maximum paste length
- Validation: Automatic length checking
Flask Configuration
- Host/Port: Configurable server settings
- Debug mode: Environment-specific settings
Security Features (Future)
- Rate limiting: Configurable upload limits
- Extensible: Ready for additional security features
Configuration Loading Priority
- config.json (if exists)
- Environment variables (fallback)
- Built-in defaults (last resort)
Benefits of JSON Configuration
✅ Structured Data
- Hierarchical organization
- Type safety (strings, numbers, booleans, arrays)
- Better validation
✅ Feature Rich
- Upload restrictions
- File type filtering
- Paste length limits
- Server configuration
✅ User Friendly
- Interactive setup utility
- Configuration validation
- Clear error messages
- Comprehensive documentation
✅ Developer Friendly
- Easy to extend
- Version controllable (with secrets excluded)
- IDE support with syntax highlighting
- Better tooling support
✅ Backwards Compatible
- Still supports .env files
- Smooth migration path
- No breaking changes
Migration from .env
Old .env approach:
B2_APPLICATION_KEY_ID=key123
B2_APPLICATION_KEY=secret456
B2_BUCKET_NAME=mybucket
New config.json approach:
{
"b2": {
"application_key_id": "key123",
"application_key": "secret456",
"bucket_name": "mybucket"
}
}
Quick Start
- Run setup:
python setup.py - Configure:
python config_util.py set - Test:
python test_b2.py - Run:
python app.py
Security Considerations
config.jsonis excluded from git by default- Sensitive data can be hidden in display utilities
- Environment variable fallback for production deployments
- Configuration validation prevents common mistakes