Import alt-mysql plugin

This commit is contained in:
Marek Miklewicz
2026-07-04 15:48:19 +02:00
commit d71fcf9ace
101 changed files with 18635 additions and 0 deletions
+106
View File
@@ -0,0 +1,106 @@
#!/bin/bash
set -euo pipefail
PLUGIN_DIR="$(cd "$(dirname "$0")/.." && pwd)"
CPIF="/usr/local/directadmin/data/admin/custom_package_items.conf"
SUDOERS_FILE="/etc/sudoers.d/directadmin-alt-mysql-plugin"
CRON_FILE="/etc/cron.d/alt-mysql-jobs"
CSF_ALLOW_FILE="/etc/csf/csf.allow"
CSF_MANAGED_ALLOW_FILE="/etc/csf/alt-mysql-plugin.allow"
DA_INTEGRATION_INSTALLER="$(cd "$(dirname "$0")/.." && pwd)/scripts/setup/da_integration_install.sh"
CUSTOMBUILD_HOOKS_INSTALLER="$(cd "$(dirname "$0")/.." && pwd)/scripts/setup/custombuild_hooks_install.sh"
read_plugin_setting() {
local key="$1"
local default="$2"
local file="$PLUGIN_DIR/plugin-settings.conf"
local line value
[ -r "$file" ] || {
printf '%s\n' "$default"
return 0
}
line="$(grep -E "^${key}=" "$file" | tail -n 1 || true)"
if [ -z "$line" ]; then
printf '%s\n' "$default"
return 0
fi
value="${line#*=}"
value="${value%%#*}"
value="${value%\"}"
value="${value#\"}"
value="${value%\'}"
value="${value#\'}"
value="$(printf '%s' "$value" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
printf '%s\n' "${value:-$default}"
}
cleanup_csf_managed_file() {
local managed_file="$1"
local tmp include_line changed=0
include_line="Include $managed_file"
if [ -f "$CSF_ALLOW_FILE" ]; then
tmp="$(mktemp)"
grep -Fxv "$include_line" "$CSF_ALLOW_FILE" > "$tmp" || true
if ! cmp -s "$tmp" "$CSF_ALLOW_FILE"; then
cat "$tmp" > "$CSF_ALLOW_FILE"
changed=1
fi
rm -f "$tmp"
fi
if [ -f "$managed_file" ]; then
rm -f "$managed_file"
changed=1
fi
return "$changed"
}
cleanup_csf_remote_mysql() {
local changed=0 configured_managed_allow
CSF_ALLOW_FILE="$(read_plugin_setting MYSQL_PLUGIN_CSF_ALLOW_FILE "$CSF_ALLOW_FILE")"
configured_managed_allow="$(read_plugin_setting MYSQL_PLUGIN_CSF_MANAGED_ALLOW_FILE "$CSF_MANAGED_ALLOW_FILE")"
cleanup_csf_managed_file "$configured_managed_allow" || changed=1
if [ "$changed" -eq 1 ] && command -v csf >/dev/null 2>&1; then
csf -r >/dev/null 2>&1 || true
fi
}
if [ "$(id -u)" -eq 0 ]; then
if [ -f "$CPIF" ]; then
sed -i '/^mysql_enabled=/d' "$CPIF" || true
sed -i '/^mysql=/d' "$CPIF" || true
sed -i '/^umysql=/d' "$CPIF" || true
sed -i '/^mysql_max_databases=/d' "$CPIF" || true
sed -i '/^mysql_unlimited=/d' "$CPIF" || true
sed -i '/^umysql_max_databases=/d' "$CPIF" || true
chown diradmin:diradmin "$CPIF" 2>/dev/null || true
chmod 640 "$CPIF" 2>/dev/null || true
fi
rm -f "$SUDOERS_FILE" "$CRON_FILE" || true
cleanup_csf_remote_mysql
if [ -x "$DA_INTEGRATION_INSTALLER" ]; then
"$DA_INTEGRATION_INSTALLER" uninstall || true
fi
if [ -x "$CUSTOMBUILD_HOOKS_INSTALLER" ]; then
"$CUSTOMBUILD_HOOKS_INSTALLER" uninstall || true
fi
else
echo "mysql: warning: uruchom jako root, aby usunąć wpisy z custom_package_items i sudoers" >&2
fi
if [ -f "$PLUGIN_DIR/plugin.conf" ]; then
sed -i 's/^active=.*/active=no/' "$PLUGIN_DIR/plugin.conf" || true
sed -i 's/^installed=.*/installed=no/' "$PLUGIN_DIR/plugin.conf" || true
fi
echo "mysql: deaktywowany."