#!/bin/bash
#
# Initial script for Live operating system
# This script are launching before starting init from linux-live script.
# Current dir allways must be set to root (/)
# All system path must be relative, except initrd dirs

ENABLED=yes
[ "$ENABLED" != "yes" ] && exit 0
DEBUGMODE=no

PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin

unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"

SYSCONF="${ROOTFS}/${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null

#PATHLIVEDATA=$(find /memory/layer-base/*/* -maxdepth 0 -type f -iname "ublinux-data*.sgn" -exec dirname {} \;)
PATHLIVEDATA=$(find /memory/data/from/*/* -maxdepth 0 -type d -iname "ublinux-data" -exec dirname {} \;)
[[ -d ${PATHLIVEDATA} ]] && [[ ! -d mnt/livedata ]] && ln -sf ${PATHLIVEDATA} mnt/livedata

ps | grep ntfsmount | awk '{ print $1 }' >> var/run/sendsigs.omit

#Setting up local time zone
[ -f ${SYSCONF}/clock ] && . ${SYSCONF}/clock
[ -f "usr/share/zoneinfo/$ZONE" ] && ln -sf "/usr/share/zoneinfo/$ZONE" etc/localtime

#Setting machine-id
if [[ ! -f etc/machine-id ]]; then
    echo "${MACHINEID}" | grep -qi ^random$ && MACHINEID=$(dd if=/dev/urandom count=1 bs=512 2>/dev/null | cat - /sys/class/net/*/address 2>/dev/null | md5sum | awk '{ print $1}')
    [ -z "${MACHINEID}" ] && MACHINEID=$(lspci -nmm  | grep ^00  | md5sum | awk '{ print $1}')
    echo "${MACHINEID}" > etc/machine-id
fi

#Setting UDEV 
mkdir -p etc/udev/rules.d
ln -sf /usr/lib/ublinux/udev/99-hide-partition.rules etc/udev/rules.d/
if [[ ${PRINTERADD} = "auto" ]] ;then
    ln -sf /usr/lib/ublinux/udev/70-printers-autosetup.rules etc/udev/rules.d/
fi

    STATE_MODE="$(cmdline_value ub.mode)"
    STATE_HOME="$(cmdline_value ub.home)"
    ## Полное сохранение ub.mode=changes
    if [[ ${STATE_MODE} =~ ^"changes"$ ]]; then
	echo "SYSTEMBOOT_STATEMODE=changes" >> ${SYSCONF}/config
    ## Сохранение в модуль ub.mode=toxzm ub.mode=machines
    elif [[ ${STATE_MODE} =~ ^("toxzm"|"machines")$ ]]; then
	echo "SYSTEMBOOT_STATEMODE=module" >> ${SYSCONF}/config
    ## Полная песочница RAM ub.mode= ; ub.home=
    elif [[ ${STATE_MODE} == "" && ${STATE_HOME} == "" ]]; then
	echo "SYSTEMBOOT_STATEMODE=sandbox" >> ${SYSCONF}/config
    ## Песочница с сохранением профиля пользователя ub.mode= ; ub.home=/ublinux-data/homes
    elif [[ ${STATE_MODE} == "" && ${STATE_HOME} =~ ^"/" ]]; then
	echo "SYSTEMBOOT_STATEMODE=sandbox_ram_home" >> ${SYSCONF}/config
    ## Полная песочница HDD ub.mode=clear ; ub.home=
    elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} == "" ]]; then
	echo "SYSTEMBOOT_STATEMODE=sandbox_hdd" >> ${SYSCONF}/config
    ## Полная песочница HDD с сохранением профиля пользователя ub.mode=clear ; ub.home=
    elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} =~ ^"/" ]]; then
	echo "SYSTEMBOOT_STATEMODE=sandbox_hdd_home" >> ${SYSCONF}/config
    fi
