Two clearly-labeled install methods at the top of the README so users know how to get the plugin without scrolling: - WordPress Admin GUI: 3-step ZIP upload - WP-CLI one-liner with --activate flag Both link directly to the v1.0.0 release ZIP on Gitea.
447 lines
13 KiB
Markdown
447 lines
13 KiB
Markdown
# TigerStyle Life9 - WordPress Backup Plugin
|
|
|
|
> Because cats have 9 lives, but servers don't - so they need backup-restore! 🐱⚡
|
|
|
|
A purr-fectly modern, secure WordPress backup and restore plugin built with Alpine.js, Astro, and enterprise-grade security practices. Created as a secure replacement for XCloner after identifying critical vulnerabilities. **Now with 100% more cat personality!** 🐾
|
|
|
|
## 📦 Installation
|
|
|
|
**Latest release:** [v1.0.0](https://git.supported.systems/tigerstyle/tigerstyle-life9/releases/tag/v1.0.0) · [All releases](https://git.supported.systems/tigerstyle/tigerstyle-life9/releases)
|
|
|
|
### Via WordPress Admin (GUI)
|
|
|
|
1. Download [tigerstyle-life9-1.0.0.zip](https://git.supported.systems/tigerstyle/tigerstyle-life9/releases/download/v1.0.0/tigerstyle-life9-1.0.0.zip)
|
|
2. In WordPress admin: **Plugins → Add New → Upload Plugin**, pick the ZIP
|
|
3. Click **Activate Plugin** — settings appear under **TigerStyle Life9** in the sidebar
|
|
|
|
### Via WP-CLI (terminal)
|
|
|
|
```bash
|
|
wp plugin install \
|
|
https://git.supported.systems/tigerstyle/tigerstyle-life9/releases/download/v1.0.0/tigerstyle-life9-1.0.0.zip \
|
|
--activate
|
|
```
|
|
|
|
**Requires:** WordPress 5.0+ · PHP 7.4+ · An S3-compatible storage backend for backups
|
|
|
|
---
|
|
|
|
## 🐾 **Why TigerStyle Life9?**
|
|
|
|
**Because your website deserves nine lives!**
|
|
|
|
Just like cats always land on their feet, TigerStyle Life9 ensures your website always bounces back from disasters. Our feline-inspired backup system provides:
|
|
|
|
- **🏠 Territory Mapping**: Smart scanning identifies what matters most in your digital domain
|
|
- **🛡️ Nine Lives Protection**: Multiple restore points for ultimate safety - just like a cat!
|
|
- **⚡ Cat Reflexes**: Lightning-fast backup and recovery operations with feline speed
|
|
- **🔒 Stealth Security**: Military-grade encryption keeps your data safe like a cat stalking prey
|
|
- **🎯 Hunter Precision**: Exactly what you need, when you need it - no wasted movements
|
|
|
|
## ✨ Cat-Powered Features
|
|
|
|
### 🛡️ **Nine Lives Protection System**
|
|
- **Stealth Mode Encryption**: Military-grade AES-256-GCM that guards your secrets like a cat in the shadows
|
|
- **Territory Defense**: Prevents path traversal attacks with comprehensive input validation
|
|
- **Memory Protection**: All database queries use prepared statements - no SQL injection can sneak past our cat reflexes
|
|
- **Hunter's Patience**: Rate limiting prevents attacks with the patience of a cat stalking prey
|
|
- **Pack Leadership**: Capability-based permissions with 2FA support for the alpha cats
|
|
|
|
### 📦 **Life Saver Engine**
|
|
- **Real-time stalking**: Live progress updates via Server-Sent Events as we hunt through your files
|
|
- **Multiple lairs**: Store your treasures locally, in Amazon S3 cloud hideouts, or Google Drive dens
|
|
- **Territory mapping**: Smart file scanning with configurable exclude patterns - we know what to ignore
|
|
- **Efficient packing**: Multiple compression levels with archive splitting for easy transport
|
|
- **Life verification**: Checksum validation ensures every saved life is purrfect
|
|
|
|
### 🎨 **Cat-Friendly Interface**
|
|
- **Lightning reflexes**: Alpine.js reactivity with the speed of a pouncing cat
|
|
- **Modern architecture**: Astro-powered pages that are as sleek as a cat's movement
|
|
- **Adaptive design**: Mobile-first, accessibility-compliant - works on any device a cat might walk across
|
|
- **Instant feedback**: Progress bars and status updates with cat personality and emojis
|
|
|
|
### ⚙️ **Territory Management Features**
|
|
- **Automatic life saving**: WordPress cron integration for scheduled backups while you nap
|
|
- **Multiple formats**: ZIP, TAR, SQL exports with configurable compression levels
|
|
- **Cloud integration**: Ready for S3, Google Drive, and custom lair backends
|
|
- **Communication system**: Email alerts and webhook integrations to keep you informed
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Installation
|
|
|
|
1. **Clone or download** the plugin to your WordPress plugins directory:
|
|
```bash
|
|
cd /path/to/wordpress/wp-content/plugins/
|
|
git clone https://github.com/tigerstyle/life9.git tigerstyle-life9
|
|
```
|
|
|
|
2. **Install dependencies** (optional - fallbacks included):
|
|
```bash
|
|
cd tigerstyle-life9
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
3. **Activate the plugin** in WordPress admin under Plugins → Installed Plugins
|
|
|
|
4. **Access the interface** via the new "TigerStyle Life9" menu in WordPress admin
|
|
|
|
### Your First Life Save
|
|
|
|
1. Navigate to **TigerStyle Life9 → 💾 Save a Life**
|
|
2. Choose your territory protection (Territory Files, Digital Memories, Treasure Collection)
|
|
3. Enable Nine Lives Protection with stealth mode encryption (highly recommended!)
|
|
4. Select your backup lair (Home Territory, Cloud Hideout, or Google Den)
|
|
5. Click **🐾 Pounce! Save This Life** and watch the cat-powered progress tracking
|
|
|
|
## 📋 System Requirements
|
|
|
|
### WordPress
|
|
- **WordPress**: 5.0 or higher
|
|
- **PHP**: 7.4 or higher
|
|
- **MySQL**: 5.6 or higher
|
|
|
|
### PHP Extensions
|
|
- `openssl` - For encryption functionality
|
|
- `zip` - For archive creation
|
|
- `json` - For data serialization
|
|
- `mysqli` - For database operations
|
|
- `curl` - For remote storage APIs (optional)
|
|
|
|
### Server Requirements
|
|
- **Memory**: 512MB minimum (1GB recommended)
|
|
- **Disk Space**: Varies by backup size
|
|
- **Execution Time**: Configurable (default: 300 seconds)
|
|
|
|
## 🏗️ Architecture
|
|
|
|
### Core Components
|
|
|
|
```
|
|
tigerstyle-life9/
|
|
├── tigerstyle-life9.php # Main plugin file
|
|
├── includes/ # Core PHP classes
|
|
│ ├── class-security.php # Security management
|
|
│ ├── class-backup-engine.php # Backup orchestration
|
|
│ ├── class-storage-manager.php # Storage abstraction
|
|
│ ├── class-admin.php # WordPress admin integration
|
|
│ └── storage/ # Storage backends
|
|
├── src/astro/ # Frontend components
|
|
│ ├── pages/ # Admin interface pages
|
|
│ ├── components/ # Reusable components
|
|
│ └── layouts/ # Page layouts
|
|
├── admin/assets/ # Compiled assets
|
|
└── build-tools/ # Development scripts
|
|
```
|
|
|
|
### Security Architecture
|
|
|
|
```mermaid
|
|
graph TD
|
|
A[User Request] --> B[Security Layer]
|
|
B --> C{Authentication}
|
|
C -->|Valid| D[Input Validation]
|
|
C -->|Invalid| E[Access Denied]
|
|
D --> F{Sanitization}
|
|
F -->|Clean| G[Business Logic]
|
|
F -->|Unsafe| H[Request Rejected]
|
|
G --> I[Encryption Layer]
|
|
I --> J[Storage Backend]
|
|
```
|
|
|
|
### Data Flow
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant U as User
|
|
participant A as Admin Interface
|
|
participant B as Backup Engine
|
|
participant S as Storage Backend
|
|
participant E as Encryption
|
|
|
|
U->>A: Start Backup
|
|
A->>B: Create Backup Job
|
|
B->>E: Encrypt Files
|
|
E->>S: Store Encrypted Data
|
|
S-->>B: Progress Updates
|
|
B-->>A: SSE Progress Events
|
|
A-->>U: Real-time Updates
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Basic Settings
|
|
|
|
Access **TigerStyle Life9 → Settings** to configure:
|
|
|
|
- **Security**: Encryption algorithms, access controls, rate limits
|
|
- **Storage**: Default backends, retention policies, cleanup rules
|
|
- **Scheduling**: Automatic backup frequency and retention
|
|
- **Notifications**: Email alerts, webhook integrations
|
|
|
|
### Environment Variables
|
|
|
|
Create a `.env` file for advanced configuration:
|
|
|
|
```env
|
|
# Security
|
|
TIGERSTYLE_ENCRYPTION_KEY=your-master-key-here
|
|
TIGERSTYLE_RATE_LIMIT_REQUESTS=100
|
|
TIGERSTYLE_RATE_LIMIT_PERIOD=3600
|
|
|
|
# Storage
|
|
TIGERSTYLE_DEFAULT_STORAGE=local
|
|
TIGERSTYLE_S3_BUCKET=your-bucket-name
|
|
TIGERSTYLE_S3_REGION=us-east-1
|
|
|
|
# Performance
|
|
TIGERSTYLE_MEMORY_LIMIT=1024M
|
|
TIGERSTYLE_TIME_LIMIT=600
|
|
TIGERSTYLE_CHUNK_SIZE=8192
|
|
```
|
|
|
|
### Advanced Configuration
|
|
|
|
#### Custom Storage Backend
|
|
|
|
```php
|
|
class Custom_Storage_Backend extends TigerStyle_Life9_Storage_Backend {
|
|
public function store($file_path, $config = []) {
|
|
// Implement custom storage logic
|
|
return [
|
|
'url' => $remote_url,
|
|
'remote_path' => $remote_path,
|
|
'storage_id' => $storage_id
|
|
];
|
|
}
|
|
|
|
public function retrieve($remote_path, $local_path, $config = []) {
|
|
// Implement retrieval logic
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Register the backend
|
|
add_filter('tigerstyle_life9_storage_backends', function($backends) {
|
|
$backends['custom'] = new Custom_Storage_Backend();
|
|
return $backends;
|
|
});
|
|
```
|
|
|
|
#### Custom Exclude Patterns
|
|
|
|
```php
|
|
add_filter('tigerstyle_life9_default_excludes', function($patterns) {
|
|
$patterns[] = 'custom-cache/*';
|
|
$patterns[] = '*.tmp';
|
|
$patterns[] = 'node_modules/*';
|
|
return $patterns;
|
|
});
|
|
```
|
|
|
|
## 🔌 API Reference
|
|
|
|
### REST API Endpoints
|
|
|
|
All endpoints require authentication and proper capabilities.
|
|
|
|
#### Create Backup
|
|
```http
|
|
POST /wp-json/tigerstyle-life9/v1/backup
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"include_files": true,
|
|
"include_database": true,
|
|
"encryption": {
|
|
"enabled": true,
|
|
"password": "secure-password"
|
|
},
|
|
"storage": {
|
|
"type": "local"
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Get Backup Status
|
|
```http
|
|
GET /wp-json/tigerstyle-life9/v1/backup/{backup_id}/status
|
|
```
|
|
|
|
#### List Backups
|
|
```http
|
|
GET /wp-json/tigerstyle-life9/v1/backups?limit=10&offset=0
|
|
```
|
|
|
|
### WordPress Hooks
|
|
|
|
#### Actions
|
|
|
|
```php
|
|
// Before backup starts
|
|
do_action('tigerstyle_life9_backup_started', $backup_id, $config);
|
|
|
|
// After backup completes
|
|
do_action('tigerstyle_life9_backup_completed', $backup_id, $result);
|
|
|
|
// Before restore starts
|
|
do_action('tigerstyle_life9_restore_started', $restore_id, $backup_id);
|
|
|
|
// After restore completes
|
|
do_action('tigerstyle_life9_restore_completed', $restore_id, $result);
|
|
```
|
|
|
|
#### Filters
|
|
|
|
```php
|
|
// Modify backup configuration
|
|
$config = apply_filters('tigerstyle_life9_backup_config', $config, $backup_id);
|
|
|
|
// Add storage backends
|
|
$backends = apply_filters('tigerstyle_life9_storage_backends', $backends);
|
|
|
|
// Modify exclude patterns
|
|
$patterns = apply_filters('tigerstyle_life9_exclude_patterns', $patterns);
|
|
```
|
|
|
|
## 🧪 Testing
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Install test dependencies
|
|
composer install --dev
|
|
|
|
# Run PHP unit tests
|
|
vendor/bin/phpunit
|
|
|
|
# Run integration tests
|
|
vendor/bin/phpunit --testsuite=integration
|
|
|
|
# Run security tests
|
|
npm run test:security
|
|
```
|
|
|
|
### Manual Testing
|
|
|
|
1. **Create test backups** with different configurations
|
|
2. **Test restore functionality** on a staging site
|
|
3. **Verify encryption** by examining backup files
|
|
4. **Test storage backends** with actual cloud services
|
|
5. **Load test** with large sites and files
|
|
|
|
## 🔒 Security Considerations
|
|
|
|
### Best Practices
|
|
|
|
1. **Use strong encryption passwords** (12+ characters, mixed case, symbols)
|
|
2. **Store backups off-site** for disaster recovery
|
|
3. **Test restore procedures** regularly
|
|
4. **Monitor backup logs** for suspicious activity
|
|
5. **Keep the plugin updated** for security patches
|
|
|
|
### Security Features
|
|
|
|
- **Input validation** on all user inputs
|
|
- **Output escaping** for XSS prevention
|
|
- **Nonce verification** for CSRF protection
|
|
- **Capability checks** for authorization
|
|
- **Secure file handling** with path validation
|
|
- **Encrypted storage** of sensitive settings
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### "Permission Denied" Errors
|
|
```bash
|
|
# Check WordPress file permissions
|
|
sudo chown -R www-data:www-data /path/to/wordpress/
|
|
sudo chmod -R 755 /path/to/wordpress/wp-content/uploads/
|
|
```
|
|
|
|
#### "Memory Limit" Errors
|
|
```php
|
|
// In wp-config.php
|
|
ini_set('memory_limit', '1024M');
|
|
set_time_limit(600);
|
|
```
|
|
|
|
#### "Backup Failed" Errors
|
|
1. Check PHP error logs
|
|
2. Verify disk space availability
|
|
3. Test file permissions
|
|
4. Review exclude patterns
|
|
|
|
### Debug Mode
|
|
|
|
Enable debug mode for detailed logging:
|
|
|
|
```php
|
|
// In wp-config.php
|
|
define('TIGERSTYLE_LIFE9_DEBUG', true);
|
|
define('WP_DEBUG_LOG', true);
|
|
```
|
|
|
|
Check logs at: `wp-content/debug.log`
|
|
|
|
## 🤝 Contributing
|
|
|
|
### Development Setup
|
|
|
|
1. **Clone the repository**:
|
|
```bash
|
|
git clone https://github.com/tigerstyle/life9.git
|
|
cd life9
|
|
```
|
|
|
|
2. **Install dependencies**:
|
|
```bash
|
|
npm install
|
|
composer install
|
|
```
|
|
|
|
3. **Set up development environment**:
|
|
```bash
|
|
npm run dev # Start Astro dev server
|
|
```
|
|
|
|
### Code Standards
|
|
|
|
- **PHP**: Follow WordPress Coding Standards
|
|
- **JavaScript**: ESLint with Airbnb config
|
|
- **CSS**: BEM methodology with CSS custom properties
|
|
- **Documentation**: PHPDoc for all methods
|
|
|
|
### Pull Request Process
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes with tests
|
|
4. Update documentation
|
|
5. Submit a pull request
|
|
|
|
## 📄 License
|
|
|
|
GPL v2 or later - see [LICENSE](LICENSE) file.
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
- **WordPress Community** for the excellent platform
|
|
- **Astro Team** for the modern build system
|
|
- **Alpine.js Community** for the reactive framework
|
|
- **Security Researchers** who identified XCloner vulnerabilities
|
|
|
|
## 📞 Support
|
|
|
|
- **Documentation**: [https://docs.tigerstyle.com/life9](https://docs.tigerstyle.com/life9)
|
|
- **Issues**: [GitHub Issues](https://github.com/tigerstyle/life9/issues)
|
|
- **Community**: [WordPress.org Support Forum](https://wordpress.org/support/plugin/tigerstyle-life9)
|
|
- **Enterprise**: [enterprise@tigerstyle.com](mailto:enterprise@tigerstyle.com)
|
|
|
|
---
|
|
|
|
**Built with ❤️ by TigerStyle Development**
|
|
|
|
*Remember: Cats have 9 lives, but servers don't - backup responsibly!* 🐱💾 |