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

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 · All releases

Via WordPress Admin (GUI)

  1. Download 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)

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:

    cd /path/to/wordpress/wp-content/plugins/
    git clone https://github.com/tigerstyle/life9.git tigerstyle-life9
    
  2. Install dependencies (optional - fallbacks included):

    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

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

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:

# 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

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

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

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

GET /wp-json/tigerstyle-life9/v1/backup/{backup_id}/status

List Backups

GET /wp-json/tigerstyle-life9/v1/backups?limit=10&offset=0

WordPress Hooks

Actions

// 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

// 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

# 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

# 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

// 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:

// 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:

    git clone https://github.com/tigerstyle/life9.git
    cd life9
    
  2. Install dependencies:

    npm install
    composer install
    
  3. Set up development environment:

    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 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


Built with ❤️ by TigerStyle Development

Remember: Cats have 9 lives, but servers don't - backup responsibly! 🐱💾

Description
Because cats have 9 lives, but servers don't — so they need backup-restore! Complete backup with S3/MinIO.
Readme 345 KiB
2026-05-27 20:32:45 +00:00
Languages
PHP 68.5%
Astro 22.2%
JavaScript 5.3%
CSS 3.6%
Shell 0.4%