Ryan Malloy 0a06e25e7f docs(readme): Add Installation section with ZIP download and WP-CLI command
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.
2026-05-30 15:02:40 -06:00

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!* 🐱💾