Files
AzerothCore-RealmMaster/scripts/bash/configure-server.sh
2025-11-09 02:49:26 -05:00

162 lines
5.1 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Simple wrapper script for server configuration management
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m' # No Color
print_header() {
echo -e "\n${BLUE}🔧 AzerothCore Configuration Manager${NC}\n"
}
show_usage() {
cat << EOF
Usage: $(basename "$0") [COMMAND] [OPTIONS]
Commands:
apply Apply configuration overrides from config/server-overrides.conf
preset <name> Apply a preset configuration
list List available presets
edit Open server-overrides.conf in editor
status Show current configuration status
Examples:
$(basename "$0") apply # Apply custom overrides
$(basename "$0") preset fast-leveling # Apply fast-leveling preset
$(basename "$0") list # Show available presets
$(basename "$0") edit # Edit configuration file
EOF
}
edit_config() {
local config_file="$PROJECT_DIR/config/server-overrides.conf"
local editor="${EDITOR:-nano}"
echo -e "${YELLOW}📝 Opening configuration file in $editor...${NC}"
if [[ ! -f "$config_file" ]]; then
echo -e "${YELLOW}⚠️ Configuration file doesn't exist. Creating template...${NC}"
mkdir -p "$(dirname "$config_file")"
# Create a minimal template if it doesn't exist
cat > "$config_file" << 'EOF'
# AzerothCore Server Configuration Overrides
# Edit this file and run './scripts/bash/configure-server.sh apply' to update settings
[worldserver.conf]
# Example settings - uncomment and modify as needed
# Rate.XP.Kill = 2.0
# Rate.XP.Quest = 2.0
# MaxPlayerLevel = 80
[playerbots.conf]
# Example playerbot settings
# AiPlayerbot.MinRandomBots = 100
# AiPlayerbot.MaxRandomBots = 300
EOF
echo -e "${GREEN}✅ Created template configuration file${NC}"
fi
"$editor" "$config_file"
echo -e "\n${YELLOW}Would you like to apply these changes now? (y/N)${NC}"
read -r response
if [[ "$response" =~ ^[Yy]$ ]]; then
python3 "$SCRIPT_DIR/apply-config.py"
else
echo -e "${BLUE} Run '$(basename "$0") apply' when ready to apply changes${NC}"
fi
}
show_status() {
echo -e "${BLUE}📊 Configuration Status${NC}\n"
# Check if config files exist
local storage_path="${STORAGE_PATH:-./storage}"
local config_dir="$storage_path/config"
if [[ -d "$config_dir" ]]; then
echo -e "${GREEN}✅ Config directory found: $config_dir${NC}"
local conf_count
conf_count=$(find "$config_dir" -name "*.conf" -type f | wc -l)
echo -e "${GREEN}📄 Configuration files: $conf_count${NC}"
# Show some key files
for conf in worldserver.conf authserver.conf playerbots.conf; do
if [[ -f "$config_dir/$conf" ]]; then
echo -e "${GREEN}$conf${NC}"
else
echo -e "${YELLOW} ⚠️ $conf (missing)${NC}"
fi
done
else
echo -e "${RED}❌ Config directory not found: $config_dir${NC}"
echo -e "${YELLOW} Run './deploy.sh' first to initialize storage${NC}"
fi
# Check override file
local override_file="$PROJECT_DIR/config/server-overrides.conf"
if [[ -f "$override_file" ]]; then
echo -e "${GREEN}✅ Override file: $override_file${NC}"
else
echo -e "${YELLOW}⚠️ Override file not found${NC}"
echo -e "${BLUE} Run '$(basename "$0") edit' to create one${NC}"
fi
# Show available presets
echo -e "\n${BLUE}📋 Available Presets:${NC}"
python3 "$SCRIPT_DIR/apply-config.py" --list-presets
}
main() {
print_header
case "${1:-}" in
"apply")
echo -e "${YELLOW}🔄 Applying configuration overrides...${NC}"
python3 "$SCRIPT_DIR/apply-config.py" "${@:2}"
echo -e "\n${GREEN}✅ Configuration applied!${NC}"
echo -e "${YELLOW} Restart your server to apply changes:${NC} docker compose restart"
;;
"preset")
if [[ -z "${2:-}" ]]; then
echo -e "${RED}❌ Please specify a preset name${NC}"
echo -e "Available presets:"
python3 "$SCRIPT_DIR/apply-config.py" --list-presets
exit 1
fi
echo -e "${YELLOW}🎯 Applying preset: $2${NC}"
python3 "$SCRIPT_DIR/apply-config.py" --preset "$2" "${@:3}"
echo -e "\n${GREEN}✅ Preset '$2' applied!${NC}"
echo -e "${YELLOW} Restart your server to apply changes:${NC} docker compose restart"
;;
"list")
python3 "$SCRIPT_DIR/apply-config.py" --list-presets
;;
"edit")
edit_config
;;
"status")
show_status
;;
"help"|"--help"|"-h"|"")
show_usage
;;
*)
echo -e "${RED}❌ Unknown command: $1${NC}"
show_usage
exit 1
;;
esac
}
main "$@"