Uploaded code
This commit is contained in:
147
docs/CONFIG_SYSTEM.md
Normal file
147
docs/CONFIG_SYSTEM.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# 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`
|
||||
```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.json` from template
|
||||
- Sets up virtual environment
|
||||
- Installs dependencies
|
||||
- Validates configuration
|
||||
|
||||
### Configuration Utility: `config_util.py`
|
||||
```bash
|
||||
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
|
||||
|
||||
1. **config.json** (if exists)
|
||||
2. **Environment variables** (fallback)
|
||||
3. **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:
|
||||
```env
|
||||
B2_APPLICATION_KEY_ID=key123
|
||||
B2_APPLICATION_KEY=secret456
|
||||
B2_BUCKET_NAME=mybucket
|
||||
```
|
||||
|
||||
New `config.json` approach:
|
||||
```json
|
||||
{
|
||||
"b2": {
|
||||
"application_key_id": "key123",
|
||||
"application_key": "secret456",
|
||||
"bucket_name": "mybucket"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. **Run setup**: `python setup.py`
|
||||
2. **Configure**: `python config_util.py set`
|
||||
3. **Test**: `python test_b2.py`
|
||||
4. **Run**: `python app.py`
|
||||
|
||||
## Security Considerations
|
||||
|
||||
- `config.json` is excluded from git by default
|
||||
- Sensitive data can be hidden in display utilities
|
||||
- Environment variable fallback for production deployments
|
||||
- Configuration validation prevents common mistakes
|
||||
Reference in New Issue
Block a user