mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 00:58:34 +00:00
consolidate module configs
This commit is contained in:
@@ -140,8 +140,6 @@ else
|
|||||||
sed -i "s|^LoginDatabaseInfo *=.*|LoginDatabaseInfo = \"${MYSQL_HOST};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_AUTH_NAME}\"|" /azerothcore/config/worldserver.conf || true
|
sed -i "s|^LoginDatabaseInfo *=.*|LoginDatabaseInfo = \"${MYSQL_HOST};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_AUTH_NAME}\"|" /azerothcore/config/worldserver.conf || true
|
||||||
sed -i "s|^WorldDatabaseInfo *=.*|WorldDatabaseInfo = \"${MYSQL_HOST};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_WORLD_NAME}\"|" /azerothcore/config/worldserver.conf || true
|
sed -i "s|^WorldDatabaseInfo *=.*|WorldDatabaseInfo = \"${MYSQL_HOST};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_WORLD_NAME}\"|" /azerothcore/config/worldserver.conf || true
|
||||||
sed -i "s|^CharacterDatabaseInfo *=.*|CharacterDatabaseInfo = \"${MYSQL_HOST};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_CHARACTERS_NAME}\"|" /azerothcore/config/worldserver.conf || true
|
sed -i "s|^CharacterDatabaseInfo *=.*|CharacterDatabaseInfo = \"${MYSQL_HOST};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_CHARACTERS_NAME}\"|" /azerothcore/config/worldserver.conf || true
|
||||||
update_playerbots_conf /azerothcore/config/playerbots.conf
|
|
||||||
update_playerbots_conf /azerothcore/config/playerbots.conf.dist
|
|
||||||
update_playerbots_conf /azerothcore/config/modules/playerbots.conf
|
update_playerbots_conf /azerothcore/config/modules/playerbots.conf
|
||||||
update_playerbots_conf /azerothcore/config/modules/playerbots.conf.dist
|
update_playerbots_conf /azerothcore/config/modules/playerbots.conf.dist
|
||||||
|
|
||||||
|
|||||||
@@ -209,35 +209,103 @@ install_enabled_modules(){
|
|||||||
|
|
||||||
update_playerbots_db_info(){
|
update_playerbots_db_info(){
|
||||||
local target="$1"
|
local target="$1"
|
||||||
if [ ! -f "$target" ]; then
|
if [ ! -f "$target" ] && [ ! -L "$target" ]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local host
|
local env_file="${ENV_PATH:-}"
|
||||||
host="$(read_env_value CONTAINER_MYSQL)"
|
local resolved
|
||||||
if [ -z "$host" ]; then
|
|
||||||
host="$(read_env_value MYSQL_HOST)"
|
|
||||||
fi
|
|
||||||
host="${host:-ac-mysql}"
|
|
||||||
|
|
||||||
local port
|
resolved="$(
|
||||||
port="$(read_env_value MYSQL_PORT "3306")"
|
python3 - "$target" "${env_file}" <<'PY'
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
|
import sys
|
||||||
|
|
||||||
local user
|
def load_env_file(path):
|
||||||
user="$(read_env_value MYSQL_USER "root")"
|
data = {}
|
||||||
|
if not path:
|
||||||
|
return data
|
||||||
|
candidate = pathlib.Path(path)
|
||||||
|
if not candidate.is_file():
|
||||||
|
return data
|
||||||
|
for raw in candidate.read_text(encoding="utf-8", errors="ignore").splitlines():
|
||||||
|
if not raw or raw.lstrip().startswith("#"):
|
||||||
|
continue
|
||||||
|
if "=" not in raw:
|
||||||
|
continue
|
||||||
|
key, val = raw.split("=", 1)
|
||||||
|
key = key.strip()
|
||||||
|
val = val.strip()
|
||||||
|
if not key:
|
||||||
|
continue
|
||||||
|
if val and val[0] == val[-1] and val[0] in {"'", '"'}:
|
||||||
|
val = val[1:-1]
|
||||||
|
if "#" in val:
|
||||||
|
# Strip inline comments
|
||||||
|
val = val.split("#", 1)[0].rstrip()
|
||||||
|
data[key] = val
|
||||||
|
return data
|
||||||
|
|
||||||
local pass
|
def resolve_key(env_map, key, default=""):
|
||||||
pass="$(read_env_value MYSQL_ROOT_PASSWORD)"
|
value = os.environ.get(key)
|
||||||
|
if value:
|
||||||
|
return value
|
||||||
|
return env_map.get(key, default)
|
||||||
|
|
||||||
local db
|
def update_config(path_in, replacement):
|
||||||
db="$(read_env_value DB_PLAYERBOTS_NAME "acore_playerbots")"
|
if not (os.path.exists(path_in) or os.path.islink(path_in)):
|
||||||
local value="${host};${port};${user};${pass};${db}"
|
return False
|
||||||
|
path = os.path.realpath(path_in)
|
||||||
|
try:
|
||||||
|
with open(path, "r", encoding="utf-8", errors="ignore") as fh:
|
||||||
|
lines = fh.read().splitlines()
|
||||||
|
except FileNotFoundError:
|
||||||
|
lines = []
|
||||||
|
|
||||||
if grep -qE '^[[:space:]]*PlayerbotsDatabaseInfo[[:space:]]*=' "$target"; then
|
key = "PlayerbotsDatabaseInfo"
|
||||||
sed -i "s|^[[:space:]]*PlayerbotsDatabaseInfo[[:space:]]*=.*|PlayerbotsDatabaseInfo = \"${value}\"|" "$target" || return
|
replacement_line = f'{key} = "{replacement}"'
|
||||||
else
|
changed = False
|
||||||
printf '\nPlayerbotsDatabaseInfo = "%s"\n' "$value" >> "$target" || return
|
|
||||||
fi
|
for idx, raw in enumerate(lines):
|
||||||
|
if raw.strip().startswith(key):
|
||||||
|
if raw.strip() != replacement_line:
|
||||||
|
lines[idx] = replacement_line
|
||||||
|
changed = True
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
lines.append(replacement_line)
|
||||||
|
changed = True
|
||||||
|
|
||||||
|
if changed:
|
||||||
|
output = "\n".join(lines)
|
||||||
|
if output and not output.endswith("\n"):
|
||||||
|
output += "\n"
|
||||||
|
with open(path, "w", encoding="utf-8") as fh:
|
||||||
|
fh.write(output)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
target_path, env_path = sys.argv[1:3]
|
||||||
|
env_map = load_env_file(env_path)
|
||||||
|
|
||||||
|
host = resolve_key(env_map, "CONTAINER_MYSQL") or resolve_key(env_map, "MYSQL_HOST", "ac-mysql") or "ac-mysql"
|
||||||
|
port = resolve_key(env_map, "MYSQL_PORT", "3306") or "3306"
|
||||||
|
user = resolve_key(env_map, "MYSQL_USER", "root") or "root"
|
||||||
|
password = resolve_key(env_map, "MYSQL_ROOT_PASSWORD", "")
|
||||||
|
database = resolve_key(env_map, "DB_PLAYERBOTS_NAME", "acore_playerbots") or "acore_playerbots"
|
||||||
|
|
||||||
|
value = ";".join([host, port, user, password, database])
|
||||||
|
update_config(target_path, value)
|
||||||
|
|
||||||
|
print(value)
|
||||||
|
PY
|
||||||
|
)" || return 0
|
||||||
|
|
||||||
|
local host port
|
||||||
|
host="${resolved%%;*}"
|
||||||
|
port="${resolved#*;}"
|
||||||
|
port="${port%%;*}"
|
||||||
|
|
||||||
if [ "$PLAYERBOTS_DB_UPDATE_LOGGED" = "0" ]; then
|
if [ "$PLAYERBOTS_DB_UPDATE_LOGGED" = "0" ]; then
|
||||||
info "Updated PlayerbotsDatabaseInfo to use host ${host}:${port}"
|
info "Updated PlayerbotsDatabaseInfo to use host ${host}:${port}"
|
||||||
@@ -279,17 +347,12 @@ manage_configuration_files(){
|
|||||||
unset patterns
|
unset patterns
|
||||||
done
|
done
|
||||||
|
|
||||||
local module_dir
|
|
||||||
for key in "${MODULE_KEYS[@]}"; do
|
|
||||||
module_dir="${MODULE_NAME[$key]:-}"
|
|
||||||
[ -n "$module_dir" ] || continue
|
|
||||||
[ -d "$module_dir" ] || continue
|
|
||||||
find "$module_dir" -name "*.conf.dist" -exec cp {} "$env_target"/ \; 2>/dev/null || true
|
|
||||||
done
|
|
||||||
|
|
||||||
local modules_conf_dir="${env_target%/}/modules"
|
local modules_conf_dir="${env_target%/}/modules"
|
||||||
mkdir -p "$modules_conf_dir"
|
mkdir -p "$modules_conf_dir"
|
||||||
|
rm -rf "${modules_conf_dir}.backup"
|
||||||
rm -f "$modules_conf_dir"/*.conf "$modules_conf_dir"/*.conf.dist 2>/dev/null || true
|
rm -f "$modules_conf_dir"/*.conf "$modules_conf_dir"/*.conf.dist 2>/dev/null || true
|
||||||
|
|
||||||
|
local module_dir
|
||||||
for key in "${MODULE_KEYS[@]}"; do
|
for key in "${MODULE_KEYS[@]}"; do
|
||||||
module_dir="${MODULE_NAME[$key]:-}"
|
module_dir="${MODULE_NAME[$key]:-}"
|
||||||
[ -n "$module_dir" ] || continue
|
[ -n "$module_dir" ] || continue
|
||||||
@@ -297,8 +360,26 @@ manage_configuration_files(){
|
|||||||
while IFS= read -r conf_file; do
|
while IFS= read -r conf_file; do
|
||||||
[ -n "$conf_file" ] || continue
|
[ -n "$conf_file" ] || continue
|
||||||
base_name="$(basename "$conf_file")"
|
base_name="$(basename "$conf_file")"
|
||||||
dest_name="${base_name%.dist}"
|
# Ensure previous copies in root config are removed to keep modules/ canonical
|
||||||
cp "$conf_file" "$modules_conf_dir/$dest_name"
|
main_conf_path="${env_target}/${base_name}"
|
||||||
|
if [ -f "$main_conf_path" ]; then
|
||||||
|
rm -f "$main_conf_path"
|
||||||
|
fi
|
||||||
|
if [[ "$base_name" == *.conf.dist ]]; then
|
||||||
|
root_conf="${env_target}/${base_name%.dist}"
|
||||||
|
if [ -f "$root_conf" ]; then
|
||||||
|
rm -f "$root_conf"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dest_path="${modules_conf_dir}/${base_name}"
|
||||||
|
cp "$conf_file" "$dest_path"
|
||||||
|
if [[ "$base_name" == *.conf.dist ]]; then
|
||||||
|
dest_conf="${modules_conf_dir}/${base_name%.dist}"
|
||||||
|
if [ ! -f "$dest_conf" ]; then
|
||||||
|
cp "$conf_file" "$dest_conf"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
done < <(find "$module_dir" -path "*/conf/*" -type f \( -name "*.conf" -o -name "*.conf.dist" \) 2>/dev/null)
|
done < <(find "$module_dir" -path "*/conf/*" -type f \( -name "*.conf" -o -name "*.conf.dist" \) 2>/dev/null)
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -308,8 +389,6 @@ manage_configuration_files(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$playerbots_enabled" = "1" ]; then
|
if [ "$playerbots_enabled" = "1" ]; then
|
||||||
update_playerbots_db_info "$env_target/playerbots.conf"
|
|
||||||
update_playerbots_db_info "$env_target/playerbots.conf.dist"
|
|
||||||
update_playerbots_db_info "$modules_conf_dir/playerbots.conf"
|
update_playerbots_db_info "$modules_conf_dir/playerbots.conf"
|
||||||
update_playerbots_db_info "$modules_conf_dir/playerbots.conf.dist"
|
update_playerbots_db_info "$modules_conf_dir/playerbots.conf.dist"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user