feat: add import/ directory for user database and config files

- Created import/db/ for custom SQL files
- Created import/conf/ for configuration overrides
- Added comprehensive README with usage examples
- Created example files for NPCs and playerbots config
- Updated import-database-files.sh to support new directory
- Maintains backward compatibility with database-import/
- Includes .gitignore to prevent accidental commits of sensitive data
This commit is contained in:
uprightbass360
2025-11-17 02:33:27 -05:00
parent d3484a3aea
commit 2aadbcc2a1
5 changed files with 186 additions and 2 deletions

11
import/.gitignore vendored Normal file
View File

@@ -0,0 +1,11 @@
# Ignore all files in import directories by default
db/*
conf/*
# But keep the directory structure and examples
!db/examples/
!db/examples/**
!conf/examples/
!conf/examples/**
!.gitignore
!README.md

123
import/README.md Normal file
View File

@@ -0,0 +1,123 @@
# 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/`:
```bash
cp my_custom_npcs.sql import/db/world.sql
cp my_accounts.sql import/db/auth.sql
```
2. Deploy or restart your server:
```bash
./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:
```bash
cp storage/config/playerbots.conf.dist import/conf/playerbots.conf
```
2. Edit the file with your custom settings:
```ini
AiPlayerbot.MinRandomBots = 100
AiPlayerbot.MaxRandomBots = 200
```
3. Apply the configuration:
```bash
./scripts/bash/configure-server.sh
```
Or use the Python config tool for advanced merging:
```bash
python3 scripts/python/apply-config.py
```
### Configuration Presets
Instead of manual configuration, you can use presets from `config/server-overrides.conf`:
```ini
[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
## 📚 Related Documentation
- [Database Management](../docs/DATABASE_MANAGEMENT.md)
- [Configuration Management](../config/CONFIG_MANAGEMENT.md)
- [Module Management](../docs/ADVANCED.md#module-management)

View File

@@ -0,0 +1,24 @@
# Example Playerbots Configuration Override
# Copy this file to import/conf/playerbots.conf and customize
[worldserver]
###################################################################################################
# PLAYERBOTS SETTINGS
###################################################################################################
# Number of random bots
AiPlayerbot.MinRandomBots = 100
AiPlayerbot.MaxRandomBots = 200
# Bot movement speed modifier (1.0 = normal speed)
AiPlayerbot.BotActiveAlone = 1
# Allow bots to form groups with players
AiPlayerbot.AllowPlayerBots = 1
# Bot gear update frequency (in seconds)
AiPlayerbot.BotGearScoreUpdateTime = 600
# Enable random bot login
AiPlayerbot.EnableRandomBots = 1

View File

@@ -0,0 +1,18 @@
-- Example: Add a custom NPC vendor
-- This file demonstrates how to add a custom NPC to your world database
-- Add the NPC template
INSERT INTO `creature_template` (`entry`, `name`, `subname`, `minlevel`, `maxlevel`, `faction`, `npcflag`, `scale`, `unit_class`, `unit_flags`, `type`, `type_flags`, `InhabitType`, `RegenHealth`, `flags_extra`, `ScriptName`)
VALUES
(900000, 'Custom Vendor', 'Example NPC', 80, 80, 35, 128, 1, 1, 0, 7, 0, 3, 1, 2, '');
-- Add the NPC spawn location (Stormwind Trade District)
INSERT INTO `creature` (`guid`, `id1`, `map`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`)
VALUES
(900000, 900000, 0, -8833.38, 628.628, 94.0066, 0.715585, 300, 0);
-- Add some items to sell (optional)
-- INSERT INTO `npc_vendor` (`entry`, `item`, `maxcount`, `incrtime`, `ExtendedCost`)
-- VALUES
-- (900000, 2901, 0, 0, 0), -- Mining Pick
-- (900000, 5956, 0, 0, 0); -- Blacksmith Hammer

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# Copy user database files or full backup archives from database-import/ to backup system # Copy user database files or full backup archives from import/db/ or database-import/ to backup system
set -euo pipefail set -euo pipefail
# Source environment variables # Source environment variables
@@ -9,7 +9,15 @@ if [ -f ".env" ]; then
set +a set +a
fi fi
IMPORT_DIR="./database-import" # Support both new (import/db) and legacy (database-import) directories
IMPORT_DIR_NEW="./import/db"
IMPORT_DIR_LEGACY="./database-import"
# Prefer new directory if it has files, otherwise fall back to legacy
IMPORT_DIR="$IMPORT_DIR_NEW"
if [ ! -d "$IMPORT_DIR" ] || [ -z "$(ls -A "$IMPORT_DIR" 2>/dev/null)" ]; then
IMPORT_DIR="$IMPORT_DIR_LEGACY"
fi
STORAGE_PATH="${STORAGE_PATH:-./storage}" STORAGE_PATH="${STORAGE_PATH:-./storage}"
STORAGE_PATH_LOCAL="${STORAGE_PATH_LOCAL:-./local-storage}" STORAGE_PATH_LOCAL="${STORAGE_PATH_LOCAL:-./local-storage}"
BACKUP_ROOT="${STORAGE_PATH}/backups" BACKUP_ROOT="${STORAGE_PATH}/backups"