#!/bin/ash echo "Configuring stage 3.2 ..." # first a few variables CONFIG="${FUTURE_ROOT}/opt/openslx/config" UUID=$(dmidecode -s system-uuid | grep -m1 -E '^[0-9A-F\-]{36}$') ######################################################################### # # This function downloads the config containing environment variables # fetch_sysconfig() { [ -e "$CONFIG" ] && grep -E '^#_RCONFIG_TAG$' "$CONFIG" > /dev/null \ && echo "Config already fetched." && return 0 download "${SLX_BASE_PATH}/config?uuid=${UUID}" "${CONFIG}-remote" || return 1 echo "# Config fetched from $URL" >> "$CONFIG" echo "#_RCONFIG_TAG" >> "$CONFIG" cat "${CONFIG}-remote" >> "$CONFIG" } ######################################################################### # # This function downloads the config.tgz and unpacks it to $TARGET_PATH <-- no it doesn't! # fetch_config_files() { [ -e "${CONFIG}.tgz" ] && echo "config.tgz already downloaded." && return 0 download "${SLX_BASE_PATH}/config.tgz?uuid=${UUID}" "${CONFIG}.tgz" } ######################################################################### # # This function updates the downloaded config with the IP information # received from /inc/setup_network <-- plus 500 other things update_sysconfig() { # sanity checks [ ! -e "${CONFIG}" ] && { echo "Cannot update. '$CONFIG' does not exist."; return 1; } # write IP and SLX_SERVER configuration to $CONFIG cat >> "$CONFIG" </dev/null cd "${TEMP_EXTRACT_DIR}" # first we look for local config.tgz files, which we merge with the common # config.tgz files if [ -n "${SLX_LOCAL_CONFIG}" ]; then local MOD for MOD in ${SLX_LOCAL_CONFIG}; do local LOCAL_CONFIG_DIR="openslx-configs/${MOD}" if [ -d "${LOCAL_CONFIG_DIR}" ]; then tarcopy "${LOCAL_CONFIG_DIR}" "${TEMP_EXTRACT_DIR}" echo "Merged local configuration files for '${MOD}'" fi done fi # purge openslx-configs/* rm -rf -- "openslx-configs/" # now just tarcopy them to future root tarcopy "${TEMP_EXTRACT_DIR}" "${FUTURE_ROOT}" # cleanup the downloaded stuff cd / rm -rf -- "${TEMP_EXTRACT_DIR}" [ $DEBUG -eq 0 ] && rm -f -- "${CONFIG}.tgz" # Display branding logo if splash screen is shown [ "x${MUTED_OUTPUT}" = "x1" ] && [ -e "${FUTURE_ROOT}/etc/branding.ppm" ] && fbsplash -s "${FUTURE_ROOT}/etc/branding.ppm" & return 0 } ######################################################################### # # MAIN PART # fetch_sysconfig || drop_shell "Could not download remote config" . "${CONFIG}-remote" || drop_shell "Could not source remote config" fetch_config_files || drop_shell "Could not download config.tgz" update_sysconfig || drop_shell "Could not update sysconfig" true