summaryrefslogtreecommitdiffstats
path: root/modules.d/dnbd3-rootfs/hooks/s3-copy-openslx-config.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/dnbd3-rootfs/hooks/s3-copy-openslx-config.sh')
-rwxr-xr-xmodules.d/dnbd3-rootfs/hooks/s3-copy-openslx-config.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/modules.d/dnbd3-rootfs/hooks/s3-copy-openslx-config.sh b/modules.d/dnbd3-rootfs/hooks/s3-copy-openslx-config.sh
new file mode 100755
index 00000000..bedceb85
--- /dev/null
+++ b/modules.d/dnbd3-rootfs/hooks/s3-copy-openslx-config.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+# -*- coding: utf-8 -*-
+type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
+
+source "/etc/openslx"
+
+# Merge search domain from server and from dhcp
+(
+ search="$SLX_NET_SEARCH"
+ source /run/openslx/network.conf
+ search="$SLX_NET_SEARCH $search" # DHCP > config vars
+ declare -a uniq
+ declare -A dups # Don't use keys for output later as order is undefined
+ for i in $search; do
+ [ -n "${dups["$i"]}" ] && continue
+ dups["$i"]=1
+ uniq+=( "$i" )
+ done
+ sed -i 's/^SLX_NET_SEARCH=/# &/' "/etc/openslx" "/run/openslx/network.conf"
+ echo "SLX_NET_SEARCH='${uniq[*]}'" >> "/run/openslx/network.conf"
+ if grep -q '^search' "/etc/resolv.conf"; then
+ sed -i "s/^search.*$/search ${uniq[*]}/" "/etc/resolv.conf"
+ else
+ echo "search ${uniq[*]}" "/etc/resolv.conf"
+ fi
+)
+
+
+mkdir --parents "${NEWROOT}/opt/openslx"
+{
+ cat "/etc/openslx"
+ echo "## Generated by '$0' in stage3"
+ cat "/run/openslx/network.conf"
+} > "${NEWROOT}/opt/openslx/config"
+ln -nfs "${NEWROOT}/opt/openslx/config" "/etc/openslx"
+
+# Set root/demo password for stage4, if set
+if [ -n "${SLX_ROOT_PASS}" ]; then
+ sed -i "s#^root:[^:]*:#root:$SLX_ROOT_PASS:#" "$NEWROOT/etc/shadow"
+fi
+if [ -n "${SLX_DEMO_PASS}" ] && grep -q '^demo:' "$NEWROOT/etc/shadow"; then
+ sed -i "s#^demo:[^:]*:#demo:$SLX_DEMO_PASS:#" "$NEWROOT/etc/shadow"
+fi