Files
uprightbass360 e6231bb4a4 feat: comprehensive module system and database management improvements
This commit introduces major enhancements to the module installation system,
database management, and configuration handling for AzerothCore deployments.

## Module System Improvements

### Module SQL Staging & Installation
- Refactor module SQL staging to properly handle AzerothCore's sql/ directory structure
- Fix SQL staging path to use correct AzerothCore format (sql/custom/db_*/*)
- Implement conditional module database importing based on enabled modules
- Add support for both cpp-modules and lua-scripts module types
- Handle rsync exit code 23 (permission warnings) gracefully during deployment

### Module Manifest & Automation
- Add automated module manifest generation via GitHub Actions workflow
- Implement Python-based module manifest updater with comprehensive validation
- Add module dependency tracking and SQL file discovery
- Support for blocked modules and module metadata management

## Database Management Enhancements

### Database Import System
- Add db-guard container for continuous database health monitoring and verification
- Implement conditional database import that skips when databases are current
- Add backup restoration and SQL staging coordination
- Support for Playerbots database (4th database) in all import operations
- Add comprehensive database health checking and status reporting

### Database Configuration
- Implement 10 new dbimport.conf settings from environment variables:
  - Database.Reconnect.Seconds/Attempts for connection reliability
  - Updates.AllowedModules for module auto-update control
  - Updates.Redundancy for data integrity checks
  - Worker/Synch thread settings for all three core databases
- Auto-apply dbimport.conf settings via auto-post-install.sh
- Add environment variable injection for db-import and db-guard containers

### Backup & Recovery
- Fix backup scheduler to prevent immediate execution on container startup
- Add backup status monitoring script with detailed reporting
- Implement backup import/export utilities
- Add database verification scripts for SQL update tracking

## User Import Directory

- Add new import/ directory for user-provided database files and configurations
- Support for custom SQL files, configuration overrides, and example templates
- Automatic import of user-provided databases and configs during initialization
- Documentation and examples for custom database imports

## Configuration & Environment

- Eliminate CLIENT_DATA_VERSION warning by adding default value syntax
- Improve CLIENT_DATA_VERSION documentation in .env.template
- Add comprehensive database import settings to .env and .env.template
- Update setup.sh to handle new configuration variables with proper defaults

## Monitoring & Debugging

- Add status dashboard with Go-based terminal UI (statusdash.go)
- Implement JSON status output (statusjson.sh) for programmatic access
- Add comprehensive database health check script
- Add repair-storage-permissions.sh utility for permission issues

## Testing & Documentation

- Add Phase 1 integration test suite for module installation verification
- Add comprehensive documentation for:
  - Database management (DATABASE_MANAGEMENT.md)
  - Module SQL analysis (AZEROTHCORE_MODULE_SQL_ANALYSIS.md)
  - Implementation mapping (IMPLEMENTATION_MAP.md)
  - SQL staging comparison and path coverage
  - Module assets and DBC file requirements
- Update SCRIPTS.md, ADVANCED.md, and troubleshooting documentation
- Update references from database-import/ to import/ directory

## Breaking Changes

- Renamed database-import/ directory to import/ for clarity
- Module SQL files now staged to AzerothCore-compatible paths
- db-guard container now required for proper database lifecycle management

## Bug Fixes

- Fix module SQL staging directory structure for AzerothCore compatibility
- Handle rsync exit code 23 gracefully during deployments
- Prevent backup from running immediately on container startup
- Correct SQL staging paths for proper module installation
2025-11-22 16:56:02 -05:00
..

Import Directory

This directory allows you to easily import custom database files and configuration overrides into your AzerothCore server.

📁 Directory Structure

import/
├── db/          # Database SQL files to import
└── conf/        # Configuration file overrides

🗄️ Database Import (import/db/)

Place your custom SQL files here to import them into the database on server startup or deployment.

Supported Files

  • auth.sql - Authentication database updates
  • characters.sql - Character database updates
  • world.sql - World database updates
  • *.sql - Any other SQL files will be imported automatically

Usage

  1. Place your SQL files in import/db/:

    cp my_custom_npcs.sql import/db/world.sql
    cp my_accounts.sql import/db/auth.sql
    
  2. Deploy or restart your server:

    ./scripts/bash/import-database-files.sh
    

Example Files

See import/db/examples/ for sample SQL files.

⚙️ Configuration Import (import/conf/)

Place module configuration files here to override default settings.

Supported Files

Any .conf file placed here will be copied to the server's config directory, overriding the default settings.

Common Configuration Files

  • worldserver.conf - Core world server settings
  • authserver.conf - Authentication server settings
  • playerbots.conf - Playerbot module settings
  • AutoBalance.conf - AutoBalance module settings
  • Any other module .conf file

Usage

  1. Create or copy a configuration file:

    cp storage/config/playerbots.conf.dist import/conf/playerbots.conf
    
  2. Edit the file with your custom settings:

    AiPlayerbot.MinRandomBots = 100
    AiPlayerbot.MaxRandomBots = 200
    
  3. Apply the configuration:

    ./scripts/bash/configure-server.sh
    

    Or use the Python config tool for advanced merging:

    python3 scripts/python/apply-config.py
    

Configuration Presets

Instead of manual configuration, you can use presets from config/server-overrides.conf:

[worldserver.conf]
Rate.XP.Kill = 2.0
Rate.XP.Quest = 2.0

[playerbots.conf]
AiPlayerbot.MinRandomBots = 100
AiPlayerbot.MaxRandomBots = 200

See config/CONFIG_MANAGEMENT.md for detailed preset documentation.

🔄 Automated Import

Both database and configuration imports are automatically handled during:

  • Initial Setup: ./setup.sh
  • Deployment: ./deploy.sh
  • Module Staging: ./scripts/bash/stage-modules.sh

📝 Notes

  • Files in import/ are preserved across deployments
  • SQL files are only imported once (tracked by filename hash)
  • Configuration files override defaults but don't replace them
  • Use .gitignore to keep sensitive files out of version control

🚨 Best Practices

  1. Backup First: Always backup your database before importing SQL
  2. Test Locally: Test imports on a dev server first
  3. Document Changes: Add comments to your SQL files explaining what they do
  4. Use Transactions: Wrap large imports in transactions for safety
  5. Version Control: Keep track of what you've imported