Files
alt-mysql/tests/plugin_identity_test.sh
T
Marek Miklewicz abbeaf67ec Fix phpMyAdmin SSO ticket group ownership under SuExec (webapps)
Live testing on a real DirectAdmin/CustomBuild server showed the Apache
alias fix alone wasn't enough: the default vhost serving /var/www/html
uses `SuexecUserGroup webapps webapps`, so PHP for the private phpMyAdmin
copy actually executes as user/group "webapps" - not as Apache's own
httpd.conf "Group" (typically "apache"), which is what
detect_apache_group() was reading. SSO ticket files ended up owned
root:apache with mode 0640, unreadable by the webapps-executing
da_login.php, producing "The phpMyAdmin login ticket is not available
or has already been used." even though the ticket really was written.

detect_apache_group() now checks the default vhost's SuexecUserGroup
directive first (the actual PHP-execution identity under SuExec), and
only falls back to the plain Apache Group directive when no
SuexecUserGroup is configured.

Bump version to 1.2.13 and rebuild the release archive.
2026-07-04 20:05:14 +02:00

56 lines
2.1 KiB
Bash

#!/bin/bash
set -euo pipefail
PLUGIN_DIR="$(cd "$(dirname "$0")/.." && pwd)"
fail() {
echo "FAIL: $*" >&2
exit 1
}
case "$(basename "$PLUGIN_DIR")" in
alt-mysql|src) ;;
*) fail "plugin directory name is neither alt-mysql nor src" ;;
esac
grep -Fxq "name=alt-mysql" "$PLUGIN_DIR/plugin.conf" || fail "plugin.conf name is not alt-mysql"
grep -Fxq "id=alt-mysql" "$PLUGIN_DIR/plugin.conf" || fail "plugin.conf id is not alt-mysql"
grep -Fxq "version=1.2.13" "$PLUGIN_DIR/plugin.conf" || fail "plugin.conf version is not 1.2.13"
grep -Fq "return '/CMD_PLUGINS/alt-mysql';" "$PLUGIN_DIR/exec/lib/AppContext.php" \
|| fail "AppContext base URL is not alt-mysql"
grep -Fq "\$pluginId = 'alt-mysql';" "$PLUGIN_DIR/exec/lib/DirectAdminUser.php" \
|| fail "DirectAdmin plugin allow/deny id is not alt-mysql"
[ -x "$PLUGIN_DIR/scripts/install_db.sh" ] || fail "install_db.sh is not executable in scripts/"
[ ! -e "$PLUGIN_DIR/scripts/install-alt-mariadb.sh" ] || fail "install-alt-mariadb.sh still exists in plugin scripts/"
[ ! -e "$PLUGIN_DIR/../mysql-installer/install_db.sh" ] || fail "install_db.sh exists outside plugin scripts/"
[ ! -e "$PLUGIN_DIR/../mysql-installer/install-alt-mariadb.sh" ] || fail "install-alt-mariadb.sh still exists outside plugin scripts/"
BAD_REFS="$(
old_plugin_path="/usr/local/directadmin/plugins/"'mysql'
old_cmd_path="/CMD_PLUGINS/"'mysql'
find "$PLUGIN_DIR" -type f \
! -path '*/tests/plugin_identity_test.sh' \
! -path '*/data/*' \
-exec grep -HnE "$old_plugin_path|$old_cmd_path" {} + || true
)"
[ -z "$BAD_REFS" ] || {
printf '%s\n' "$BAD_REFS" >&2
fail "old DirectAdmin plugin path references remain"
}
LEGACY_REFS="$(
legacy_sudoers="/etc/sudoers.d/directadmin-"'mysql'"-plugin"
legacy_cron="/etc/cron.d/"'mysql'"-jobs"
legacy_csf="/etc/csf/"'mysql'"-plugin.allow"
find "$PLUGIN_DIR" -type f \
! -path '*/tests/plugin_identity_test.sh' \
! -path '*/data/*' \
-exec grep -HnE "$legacy_sudoers|$legacy_cron|$legacy_csf" {} + || true
)"
[ -z "$LEGACY_REFS" ] || {
printf '%s\n' "$LEGACY_REFS" >&2
fail "legacy mysql plugin artifact references remain"
}
echo "plugin_identity_test: OK"