From 598ff994f6302b95cd14c1b93592eeeb05e5ec97 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 21 Jul 2026 14:23:58 +0200 Subject: [PATCH] fix: Remove local account configuration when AD is used (#1924) --- src/answer.sh | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/answer.sh b/src/answer.sh index 87127fb9..27eb2fe2 100644 --- a/src/answer.sh +++ b/src/answer.sh @@ -440,6 +440,11 @@ updateXML() { sed -i -E "s|[^<]*|$HEIGHT|g" "$asset" || return 1 sed -i -E "s|[^<]*|$WIDTH|g" "$asset" || return 1 + if [ -n "$HOST" ]; then + host=$(escapeXMLSed "$HOST") || return 1 + sed -i -E "s|[^<]*|$host|g" "$asset" || return 1 + fi + culture=$(getLanguage "$language" "culture") || return 1 if [ -n "$culture" ] && [[ "${culture,,}" != "en-us" ]]; then @@ -465,11 +470,6 @@ updateXML() { sed -i "s|0409:00000409|$value|g" "$asset" || return 1 fi - if [ -n "$HOST" ]; then - host=$(escapeXMLSed "$HOST") || return 1 - sed -i -E "s|[^<]*|$host|g" "$asset" || return 1 - fi - domain="$DOMAIN" workgroup="$WORKGROUP" @@ -544,19 +544,16 @@ updateXML() { sed -i "s|Docker|$user_xml|g" "$asset" || return 1 fi - fi - - if [ -n "$domain" ]; then - pass="admin" - else [ -n "$PASSWORD" ] && pass="$PASSWORD" || pass="admin" + + pw=$(printf '%s' "${pass}Password" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1 + admin=$(printf '%s' "${pass}AdministratorPassword" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1 + + sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$pw#g" "$asset" || return 1 + sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$admin#g" "$asset" || return 1 + fi - pw=$(printf '%s' "${pass}Password" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1 - admin=$(printf '%s' "${pass}AdministratorPassword" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1 - - sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$pw#g" "$asset" || return 1 - sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$admin#g" "$asset" || return 1 sed -i -E "s|[^<]*</PlainText>|<PlainText>false</PlainText>|g" "$asset" || return 1 if [ -n "$domain" ]; then @@ -569,6 +566,14 @@ updateXML() { return 1 fi + if ! sed -i -E \ + -e '/^[[:space:]]*<LocalAccounts([[:space:]>])/,/^[[:space:]]*<\/LocalAccounts>[[:space:]]*$/d' \ + -e '/^[[:space:]]*<AdministratorPassword([[:space:]>])/,/^[[:space:]]*<\/AdministratorPassword>[[:space:]]*$/d' \ + "$asset"; then + error "Failed to remove local account configuration from answer file!" + return 1 + fi + elif [ -n "$workgroup" ]; then if ! updateWorkgroup "$asset" "$workgroup"; then @@ -697,6 +702,8 @@ detectLegacy() { local dir="$1" local find + [[ "${PLATFORM,,}" != "x64" ]] && return 1 + find=$(find "$dir" -maxdepth 1 -type d -iname WIN95 -print -quit) [ -n "$find" ] && DETECTED="win95" && return 0