2025-07-20 10:13:38 +01:00
# Enhanced SME Server Password Change Application
2025-07-16 14:13:26 +01:00
## Overview
2025-07-20 10:13:38 +01:00
An advanced Python Flask web application for SME Server password management with configurable strength validation and enhanced user experience features.
2025-07-16 14:13:26 +01:00
2025-07-20 10:13:38 +01:00
## ✨ New Features
2025-07-16 14:13:26 +01:00
2025-07-20 10:13:38 +01:00
### 🔒 Configurable Password Strength Validation
- **Three Levels**: None, Normal, Strong
- **Database Driven**: Controlled by `Passwordstrength` DB entry
- **Real-time Validation**: Instant feedback as users type
2025-07-16 14:13:26 +01:00
2025-07-20 10:13:38 +01:00
#### Password Strength Levels:
- **None**: Basic validation only
- **Normal**: 12+ characters with uppercase, lowercase, number, and special character
- **Strong**: Normal requirements + protection against common passwords, keyboard patterns, and dictionary words
### 👁️ Password Visibility Toggles
- **Show/Hide Buttons**: For all password fields
- **Accessibility**: Proper ARIA labels and keyboard support
- **Security**: Passwords cleared on page load
### 📊 Real-time Password Strength Indicator
- **Visual Feedback**: Color-coded strength levels
- **Detailed Requirements**: Shows exactly what's missing
- **Live Updates**: Changes as user types
### ⚙️ Admin Configuration Panel
- **Web Interface**: Easy password strength configuration
- **Live Updates**: Changes apply immediately
- **Visual Selection**: Clear indication of current setting
## 🔧 Technical Specifications
### Compatibility
- ✅ **Python 3.6.8** - Fully compatible
- ✅ **Flask 2.0.3** - Tested and verified
- ✅ **SME Server Integration** - Full database and signal-event support
### Enhanced Validation Features
- **Crypto Testing**: Protection against common passwords
- **Pattern Detection**: Keyboard sequences and repeated patterns
- **Dictionary Checking**: Common word detection
- **Configurable Requirements**: Adjustable via database setting
## 📋 Requirements
2025-07-16 14:13:26 +01:00
```
Flask==2.0.3
Flask-CORS==3.0.10
Werkzeug==2.0.3
```
2025-07-20 10:13:38 +01:00
## 🚀 Quick Installation
### Automated Installation
```bash
# Extract and install
tar -xzf smeserver-password-app-enhanced.tar.gz
cd smeserver-password-app-enhanced
sudo ./install.sh
```
### Manual Installation
2025-07-16 14:13:26 +01:00
```bash
2025-07-20 10:13:38 +01:00
# Install dependencies
pip3 install -r requirements.txt
# Copy to system directory
sudo cp -r . /opt/smeserver-password-app-enhanced/
# Create systemd service (see install.sh for details)
sudo systemctl enable smeserver-password-enhanced
sudo systemctl start smeserver-password-enhanced
```
## 🎯 Usage
### User Interface
1. **Access** : `http://your-server:5000`
2. **Enter Credentials** : Username and current password
3. **Set New Password** : With real-time strength feedback
4. **Toggle Visibility** : Use Show/Hide buttons as needed
### Admin Configuration
1. **Access Admin Panel** : `http://your-server:5000/admin`
2. **Select Strength Level** : None, Normal, or Strong
3. **Apply Changes** : Click "Update Password Strength Setting"
4. **Verify** : Changes apply immediately to all users
### Database Configuration
```bash
# View current setting
db configuration getprop passwordstrength Passwordstrength
# Set password strength level
db configuration setprop passwordstrength Passwordstrength strong
db configuration setprop passwordstrength Passwordstrength normal
db configuration setprop passwordstrength Passwordstrength none
```
## 🧪 Testing
### Demo Mode
```bash
# Start demo application
2025-07-16 14:13:26 +01:00
python3 demo_mode.py
2025-07-20 10:13:38 +01:00
# Access demo at http://localhost:5002
# Demo users: testuser/oldpassword123, admin/adminpass456, john/johnpass789
2025-07-16 14:13:26 +01:00
```
2025-07-20 10:13:38 +01:00
### API Endpoints
- **GET/POST** `/api/password-config` - Manage password strength settings
- **POST** `/api/password-strength` - Real-time password validation
- **GET** `/health` - Application health check
- **GET** `/demo-info` - Demo mode information
2025-07-16 14:13:26 +01:00
2025-07-20 10:13:38 +01:00
## 📁 File Structure
2025-07-16 14:13:26 +01:00
```
2025-07-20 10:13:38 +01:00
smeserver-password-app-enhanced/
├── app.py # Main Flask application
├── smeserver_utils.py # Enhanced SME Server utilities
├── demo_mode.py # Demo version with all features
├── requirements.txt # Python dependencies
├── install.sh # Installation script
2025-07-16 14:13:26 +01:00
├── templates/
2025-07-20 10:13:38 +01:00
│ ├── password_change.html # Enhanced password form
│ └── admin_panel.html # Admin configuration interface
2025-07-16 14:13:26 +01:00
├── static/
│ └── css/
2025-07-20 10:13:38 +01:00
│ └── style.css # Enhanced styling with toggles
└── README.md # This documentation
```
## 🔍 Enhanced Validation Examples
### Normal Strength (12+ chars, complexity)
- ✅ `MySecure123!` - Valid
- ❌ `password123` - Missing uppercase and special char
- ❌ `MySecure!` - Too short (less than 12 chars)
### Strong Strength (Normal + crypto protection)
- ✅ `MyUniqueP@ssw0rd2024` - Valid
- ❌ `MyPassword123!` - Contains common word "Password"
- ❌ `Qwerty123456!` - Keyboard pattern detected
- ❌ `MySecure123123!` - Repeated sequence detected
## 🛡️ Security Features
### Enhanced Protection
- **Common Password Detection**: 50+ common passwords blocked
- **Keyboard Pattern Detection**: QWERTY, number sequences, etc.
- **Repeated Sequence Detection**: Prevents patterns like "123123"
- **Dictionary Word Detection**: Common English words blocked
### Secure Implementation
- **Password Masking**: Default hidden with optional visibility
- **Memory Clearing**: Passwords cleared on page load
- **Secure Transmission**: HTTPS recommended for production
- **Input Validation**: Server-side validation for all inputs
## 🔧 Configuration Options
### Password Strength Database Entry
```bash
# Set in SME Server configuration database
db configuration setprop passwordstrength Passwordstrength [none|normal|strong]
# Signal configuration change (if needed)
signal-event password-policy-update
```
### Customization
- **Strength Levels**: Modify validation rules in `smeserver_utils.py`
- **UI Styling**: Update CSS in `static/css/style.css`
- **Common Passwords**: Add to list in `PasswordStrengthValidator`
- **Patterns**: Modify regex patterns for additional protection
## 🐛 Troubleshooting
### Common Issues
1. **Service Won't Start** : Check Python version and dependencies
2. **Database Errors** : Verify SME Server tools are available
3. **Permission Issues** : Ensure proper file ownership and permissions
4. **Port Conflicts** : Check if port 5000 is available
### Debug Commands
```bash
# Check service status
systemctl status smeserver-password-enhanced
# View logs
journalctl -u smeserver-password-enhanced -f
# Test database connectivity
db configuration show passwordstrength
# Verify signal-event works
signal-event password-update testuser
2025-07-16 14:13:26 +01:00
```
2025-07-20 10:13:38 +01:00
## 📈 Performance
### Optimizations
- **Client-side Validation**: Reduces server load
- **Efficient Patterns**: Optimized regex for pattern detection
- **Minimal Dependencies**: Only essential packages included
- **Caching**: Password strength settings cached
### Resource Usage
- **Memory**: ~50MB typical usage
- **CPU**: Minimal impact on password validation
- **Network**: Lightweight AJAX for real-time features
## 🔄 Migration from Previous Version
### Upgrade Process
1. **Backup Current** : Save existing configuration
2. **Stop Service** : `systemctl stop smeserver-password-web`
3. **Install Enhanced** : Follow installation instructions
4. **Migrate Settings** : Password strength defaults to "normal"
5. **Test Functionality** : Verify all features work
### Compatibility
- **Existing Users**: No impact on existing accounts
- **Database**: Fully compatible with existing SME Server DB
- **Templates**: Enhanced but backward compatible
## 📞 Support
### Features Included
- ✅ Configurable password strength validation
- ✅ Password visibility toggles
- ✅ Real-time strength checking
- ✅ Admin configuration panel
- ✅ Enhanced crypto validation
- ✅ Python 3.6.8 compatibility
- ✅ SME Server integration
- ✅ Responsive design
- ✅ Accessibility features
This enhanced version provides enterprise-grade password management with user-friendly features and administrative control.
2025-07-16 14:13:26 +01:00