#!/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

[[ -d /usr/lib/ublinux ]] && { unset ROOTFS; unset CMD_CHROOT; } || { ROOTFS='.'; CMD_CHROOT='chroot . '; }
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
SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null

    AUTOLOGINUSER_CMDLINE=$(cmdline_value autologin) && [[ -n ${AUTOLOGINUSER_CMDLINE} ]] && AUTOLOGINUSER=${AUTOLOGINUSER_CMDLINE}

    if [[ -z ${AUTOLOGINUSER} ]]; then
	PASS_ADMUID=$(grep "^$(grep ":${ADMUID}:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1):" ${ROOTFS}/etc/shadow | cut -d: -f2) #"
	#UID_MIN=$(grep "^UID_MIN" ${ROOTFS}/etc/login.defs | cut -d' ' -f2)
	UID_MIN=$(read -d '' < "${ROOTFS}/etc/login.defs"; [[ "${REPLY}" =~ [^#[^:space:]]*UID_MIN[[:space:]]+([[:digit:]]+)  ]]; echo -n "${BASH_REMATCH[1]}")
	ONLY_ONE_USER=$(awk -F':' -v USER_MIN=${UID_MIN} '$3 > USER_MIN && $1 != "nobody" { print $1}' ${ROOTFS}/etc/passwd)
	# Если в системе всего один пользователь и пароль пользователя = паролю по умолчанию = паролю по умолчанию рута ublinux, то автологин
	[[ -z ${ONLY_ONE_USER} && ${PASS_ADMUID} == ${NOSECUREROOTPASSWD} && ${PASS_ADMUID} == ${DEFAULTPASSWD} ]] && AUTOLOGINUSER=yes
    fi

    FILE_LIGHTDM_CONF="${ROOTFS}/etc/lightdm/lightdm.conf"
    FILE_LIGHTDM_AUTOLOGIN_CONF="${ROOTFS}/etc/lightdm/lightdm.conf.d/100-autologin-ubconfig.conf"
    if [[ -z "${AUTOLOGINUSER}" ]]; then
	unset AUTOLOGINUSER
	[[ -f ${ROOTFS}/etc/X11/gdm/custom.conf ]] && sed -i "s/^AutomaticLogin=.*//g" ${ROOTFS}/etc/X11/gdm/custom.conf
	[[ -f ${ROOTFS}/usr/share/ublinux/kde4/share/config/kdm/kdmrc ]] && sed -i "s/^AutoLoginUser=.*//g" ${ROOTFS}/usr/share/ublinux/kde4/share/config/kdm/kdmrc
	[[ -f ${ROOTFS}/etc/sddm.conf ]] && sed -i "s/^User=.*//g" ${ROOTFS}/etc/sddm.conf
	[[ -f ${ROOTFS}/etc/slim.conf ]] && sed -i "s/^default_user[[:space:]].*//g" ${ROOTFS}/etc/slim.conf
	[[ -f ${ROOTFS}/etc/X11/slim/slim.conf ]] && sed -i "s/^default_user[[:space:]].*//g" ${ROOTFS}/etc/X11/slim/slim.conf
	[[ -f ${ROOTFS}/etc/lxdm/lxdm.conf ]] && sed -i "s/^autologin=.*//g" ${ROOTFS}/etc/lxdm/lxdm.conf
	if [[ -f ${FILE_LIGHTDM_CONF} ]]; then
	    sed "/^autologin-user=.*/d" -i ${FILE_LIGHTDM_CONF}
	    rm -f "${FILE_LIGHTDM_AUTOLOGIN_CONF}"
	fi
    else
	if [[ ${AUTOLOGINUSER} == yes && -z ${DISPLAYMANAGER_DEFAULTUSER} ]]; then
	    unset AUTOLOGINUSER
	    AUTOLOGINUSER=$(grep ":${ADMUID}:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1)
	elif [[ ${AUTOLOGINUSER} == yes && -n ${DISPLAYMANAGER_DEFAULTUSER} ]]; then
	    AUTOLOGINUSER="${DISPLAYMANAGER_DEFAULTUSER}"
	fi	
	grep -q "^${AUTOLOGINUSER}:" ${ROOTFS}/etc/passwd || exit 0

	[[ -f ${ROOTFS}/etc/X11/gdm/custom.conf ]] && sed -i "s/^AutomaticLogin=.*/AutomaticLogin=${AUTOLOGINUSER}/g" ${ROOTFS}/etc/X11/gdm/custom.conf
	[[ -f ${ROOTFS}/usr/share/ublinux/kde4/share/config/kdm/kdmrc ]] && sed -i "s/^AutoLoginUser=.*/AutoLoginUser=${AUTOLOGINUSER}/g" ${ROOTFS}/usr/share/ublinux/kde4/share/config/kdm/kdmrc
	[[ -f ${ROOTFS}/etc/sddm.conf ]] && sed -i "s/^User=.*/User=${AUTOLOGINUSER}/g" ${ROOTFS}/etc/sddm.conf
	[[ -f ${ROOTFS}/etc/slim.conf ]] && sed -i "s/^default_user[[:space:]].*/default_user        ${AUTOLOGINUSER}/g" ${ROOTFS}/etc/slim.conf
	[[ -f ${ROOTFS}/etc/X11/slim/slim.conf ]] && sed -i "s/^default_user[[:space:]].*/default_user        ${AUTOLOGINUSER}/g" ${ROOTFS}/etc/X11/slim/slim.conf
	[[ -f ${ROOTFS}/etc/lxdm/lxdm.conf ]] && sed -i "s/^#autologin=.*/autologin=${AUTOLOGINUSER}/g" ${ROOTFS}/etc/lxdm/lxdm.conf
	if [[ -f ${FILE_LIGHTDM_CONF} ]]; then
	    sed "/^autologin-user=.*/d" -i ${FILE_LIGHTDM_CONF}
	    mkdir -p ${FILE_LIGHTDM_AUTOLOGIN_CONF%/*}
	    cat <<-EOF | sed 's/^\s*\t*//' > "${FILE_LIGHTDM_AUTOLOGIN_CONF}"
		[Seat:*]
		autologin-user=${AUTOLOGINUSER}
EOF
	    AUTOLOGIN_IDGROUP=$(grep -i "g\s*autologin\s*[[:digit:]]\s*" ${ROOTFS}/usr/share/ublinux-sysusers/*.sysusers | cut -d: -f2 | xargs | cut -d " " -f3 | head -1)
	    [[ -n ${AUTOLOGIN_IDGROUP} ]] && ARG_AUTOLOGIN_IDGROUP="-g ${AUTOLOGIN_IDGROUP}"
	    ${CMD_CHROOT} ${ROOTFS}/usr/bin/groupadd -f ${ARG_AUTOLOGIN_IDGROUP} autologin >/dev/null 2>&1
    	    ${CMD_CHROOT} ${ROOTFS}/usr/bin/gpasswd -M ${AUTOLOGINUSER} autologin >/dev/null 2>&1
	fi
    fi

