mirror of
https://github.com/kasperfriend/tortoise-docker.git
synced 2026-08-18 18:44:25 +02:00
2a9d9fa157
Packages Shyalya/tortoise-wow with MariaDB, one-shot DB init, and nightly image builds for playerbots and no-bots tags.
103 lines
3.7 KiB
Bash
103 lines
3.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ETC="${TURTLE_HOME:-/opt/turtle}/etc"
|
|
DATA_DIR="${DATA_DIR:-/opt/turtle/data}"
|
|
LOGS_DIR="${LOGS_DIR:-/opt/turtle/logs}"
|
|
SQL_DIR="${SQL_DIR:-/opt/turtle/sql}"
|
|
|
|
DB_HOST="${DB_HOST:-db}"
|
|
DB_PORT="${DB_PORT:-3306}"
|
|
DB_USER="${DB_USER:-mangos}"
|
|
DB_PASSWORD="${DB_PASSWORD:-mangos}"
|
|
DB_LOGIN="${DB_LOGIN:-tw_logon}"
|
|
DB_WORLD="${DB_WORLD:-tw_world}"
|
|
DB_CHAR="${DB_CHAR:-tw_char}"
|
|
DB_LOGS="${DB_LOGS:-tw_logs}"
|
|
|
|
WORLD_PORT="${WORLD_PORT:-8090}"
|
|
REALM_PORT="${REALM_PORT:-3724}"
|
|
REALM_ID="${REALM_ID:-1}"
|
|
BIND_IP="${BIND_IP:-0.0.0.0}"
|
|
|
|
LOG_SQL="${LOG_SQL:-0}"
|
|
AUTO_UPDATE="${DATABASE_AUTOUPDATE_ENABLED:-1}"
|
|
LFT_BOTFILL="${LFT_BOTFILL_ENABLE:-1}"
|
|
SOLO_DUNGEON_REPOP="${SOLO_DUNGEON_REPOP_ALIVE_ENABLE:-1}"
|
|
LEECH_ENABLE="${LEECH_ENABLE:-1}"
|
|
|
|
AI_PLAYERBOT_ENABLED="${AI_PLAYERBOT_ENABLED:-1}"
|
|
AI_MIN_RANDOM_BOTS="${AI_MIN_RANDOM_BOTS:-10}"
|
|
AI_MAX_RANDOM_BOTS="${AI_MAX_RANDOM_BOTS:-10}"
|
|
|
|
DB_INFO() {
|
|
local db="$1"
|
|
printf '%s;%s;%s;%s;%s' "${DB_HOST}" "${DB_PORT}" "${DB_USER}" "${DB_PASSWORD}" "${db}"
|
|
}
|
|
|
|
set_conf() {
|
|
local file="$1" key="$2" value="$3"
|
|
if grep -qE "^[[:space:]]*${key}[[:space:]]*=" "${file}"; then
|
|
sed -i -E "s|^[[:space:]]*${key}[[:space:]]*=.*|${key} = ${value}|" "${file}"
|
|
else
|
|
printf '\n%s = %s\n' "${key}" "${value}" >> "${file}"
|
|
fi
|
|
}
|
|
|
|
ensure_conf() {
|
|
local dist="$1" conf="$2"
|
|
if [[ ! -f "${conf}" ]]; then
|
|
if [[ ! -f "${dist}" ]]; then
|
|
echo "Missing config template: ${dist}" >&2
|
|
exit 1
|
|
fi
|
|
cp "${dist}" "${conf}"
|
|
fi
|
|
}
|
|
|
|
mkdir -p "${ETC}"
|
|
|
|
ensure_conf "${ETC}/mangosd.conf.dist" "${ETC}/mangosd.conf"
|
|
ensure_conf "${ETC}/realmd.conf.dist" "${ETC}/realmd.conf"
|
|
|
|
if [[ -f "${ETC}/aiplayerbot.conf.dist" ]]; then
|
|
ensure_conf "${ETC}/aiplayerbot.conf.dist" "${ETC}/aiplayerbot.conf"
|
|
fi
|
|
if [[ -f "${ETC}/ahbot.conf.dist" ]]; then
|
|
ensure_conf "${ETC}/ahbot.conf.dist" "${ETC}/ahbot.conf"
|
|
fi
|
|
|
|
# mangosd
|
|
set_conf "${ETC}/mangosd.conf" "LoginDatabase.Info" "\"$(DB_INFO "${DB_LOGIN}")\""
|
|
set_conf "${ETC}/mangosd.conf" "WorldDatabase.Info" "\"$(DB_INFO "${DB_WORLD}")\""
|
|
set_conf "${ETC}/mangosd.conf" "CharacterDatabase.Info" "\"$(DB_INFO "${DB_CHAR}")\""
|
|
set_conf "${ETC}/mangosd.conf" "LogsDatabase.Info" "\"$(DB_INFO "${DB_LOGS}")\""
|
|
set_conf "${ETC}/mangosd.conf" "DataDir" "\"${DATA_DIR}\""
|
|
set_conf "${ETC}/mangosd.conf" "LogsDir" "\"${LOGS_DIR}\""
|
|
set_conf "${ETC}/mangosd.conf" "WorldServerPort" "${WORLD_PORT}"
|
|
set_conf "${ETC}/mangosd.conf" "BindIP" "\"${BIND_IP}\""
|
|
set_conf "${ETC}/mangosd.conf" "RealmID" "${REALM_ID}"
|
|
set_conf "${ETC}/mangosd.conf" "LogSQL" "${LOG_SQL}"
|
|
set_conf "${ETC}/mangosd.conf" "Database.AutoUpdate.Enabled" "${AUTO_UPDATE}"
|
|
set_conf "${ETC}/mangosd.conf" "Database.AutoUpdate.Path" "\"${SQL_DIR}/\""
|
|
set_conf "${ETC}/mangosd.conf" "LFT.BotFill.Enable" "${LFT_BOTFILL}"
|
|
set_conf "${ETC}/mangosd.conf" "SoloDungeonRepopAlive.Enable" "${SOLO_DUNGEON_REPOP}"
|
|
set_conf "${ETC}/mangosd.conf" "Leech.Enable" "${LEECH_ENABLE}"
|
|
|
|
# realmd (note: key name has no dots between LoginDatabase and Info)
|
|
set_conf "${ETC}/realmd.conf" "LoginDatabaseInfo" "\"$(DB_INFO "${DB_LOGIN}")\""
|
|
set_conf "${ETC}/realmd.conf" "RealmServerPort" "${REALM_PORT}"
|
|
set_conf "${ETC}/realmd.conf" "BindIP" "\"${BIND_IP}\""
|
|
|
|
if [[ -f "${ETC}/aiplayerbot.conf" ]]; then
|
|
set_conf "${ETC}/aiplayerbot.conf" "AiPlayerbot.Enabled" "${AI_PLAYERBOT_ENABLED}"
|
|
set_conf "${ETC}/aiplayerbot.conf" "AiPlayerbot.MinRandomBots" "${AI_MIN_RANDOM_BOTS}"
|
|
set_conf "${ETC}/aiplayerbot.conf" "AiPlayerbot.MaxRandomBots" "${AI_MAX_RANDOM_BOTS}"
|
|
fi
|
|
|
|
mkdir -p "${LOGS_DIR}"
|
|
# Writable for the turtle user (configs may be regenerated each start).
|
|
chown -R turtle:turtle "${ETC}" "${LOGS_DIR}" 2>/dev/null || true
|
|
|
|
echo "Configs rendered under ${ETC}"
|