From 634091d3447d95a33b34f851c496c715fb5eff5c Mon Sep 17 00:00:00 2001 From: asmeron Date: Sun, 14 Apr 2024 23:51:11 +0600 Subject: [PATCH] Add new function --- ublinux/functions | 192 ++++++++++++++++-- ublinux/rc.desktop/all/keyboard | 2 +- .../deonly/gnome-network-proxy-system | 2 +- ublinux/rc.desktop/deonly/plank | 11 + ublinux/rc.halt.pre/20-grub | 6 +- ublinux/rc.halt.pre/25-accounts-sync | 10 +- ublinux/rc.halt.pre/76-save-rootcopy | 2 +- ublinux/rc.local.d/20-pwgr-check | 4 +- ublinux/rc.local.d/43-repository | 4 +- ublinux/rc.local.d/52-consolesetup | 2 +- ublinux/rc.local.d/98-ubpile | 4 +- ublinux/rc.network.d/10-network | 4 +- ublinux/rc.post.d/02-hwclock | 2 +- ublinux/rc.post.d/09-automount | 6 +- ublinux/rc.post.d/42-access-suid-sgid | 17 +- ublinux/rc.post.d/43-access-exec | 2 +- ublinux/rc.post.d/44-mountattr | 2 +- ublinux/rc.post.d/45-disk-quota | 2 +- ublinux/rc.post.d/46-cgroup-quota | 2 +- ublinux/rc.preinit.d/01-depmod | 2 +- ublinux/rc.preinit.d/03-ldconfig | 2 +- ublinux/rc.preinit.d/10-system | 6 +- ublinux/rc.preinit.d/13-release | 2 +- ublinux/rc.preinit.d/20-services | 6 +- ublinux/rc.preinit.d/21-ntp | 2 +- ublinux/rc.preinit.d/22-samba | 2 +- ublinux/rc.preinit.d/23-realmd | 2 +- ublinux/rc.preinit.d/24-logging | 6 +- ublinux/rc.preinit.d/30-network-hostname | 2 +- ublinux/rc.preinit.d/31-network-proxy-system | 2 +- ublinux/rc.preinit.d/32-network | 2 +- ublinux/rc.preinit.d/40-authpam | 2 +- ublinux/rc.preinit.d/50-xorg | 2 +- ublinux/rc.preinit.d/51-autologin | 70 ++++--- ublinux/rc.preinit.d/52-desktop | 5 +- ublinux/rc.preinit.d/55-multiseat | 2 +- ublinux/rc.preinit.d/56-openssl-engine | 2 +- ublinux/rc.preinit.d/57-access-denied-vtx11 | 2 +- ublinux/rc.preinit.d/58-access-login | 6 +- ublinux/rc.preinit.d/59-polkit | 2 +- ublinux/rc.preinit.d/60-lightdm-settings | 101 +++++++++ ublinux/rc.preinit.d/60-lightdm-xdmcp | 54 ----- ublinux/rc.preinit.d/63-xorg-dpi | 2 +- .../rc.preinit.d/80-server-containers-storage | 2 +- .../rc.preinit.d/81-server-libvirt-storage | 2 +- ublinux/rc.preinit.d/90-apparmor | 2 +- ublinux/rc.preinit.d/99-osinstall | 2 +- ublinux/rc.preinit/10-accounts | 10 +- ublinux/rc.xorg/10-fixkeyboard_layout | 2 +- ublinux/rc.xorg/20-video-xorg-dpi | 2 +- ublinux/scripts/grub-functions | 18 +- ublinux/scripts/printers_setup_capt.sh | 14 +- ublinux/templates/ublinux-data.ini | 48 +++-- 53 files changed, 470 insertions(+), 194 deletions(-) create mode 100755 ublinux/rc.desktop/deonly/plank create mode 100755 ublinux/rc.preinit.d/60-lightdm-settings delete mode 100755 ublinux/rc.preinit.d/60-lightdm-xdmcp diff --git a/ublinux/functions b/ublinux/functions index d42d95f..2ba8c32 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -2,7 +2,7 @@ [[ -d /usr/lib/ublinux ]] && { unset ROOTFS; unset CMD_CHROOT; } || { ROOTFS="/sysroot"; CMD_CHROOT="chroot ${ROOTFS}"; } SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" export TEXTDOMAINDIR=/usr/share/locale export TEXTDOMAIN=ublinux_functions @@ -381,7 +381,6 @@ get_conf_usershadow_from_system(){ done <<< "${PARAM_ALL// /$'\n'}" } -############################################################################################################ # Получить запись вида конфигурации GROUPADD из систеных групп # $1 # Варианты групп, можно указывать несколько через пробел, кроме nobody # <пусто> # Эквивалентно '@groups @systems' @@ -431,7 +430,7 @@ get_conf_groupadd_from_system(){ GID_MAX=$([[ $(cat "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*GID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") while IFS= read -r SELECT_GROUP; do show_group "${SELECT_GROUP}" - done < <(awk -F':' -v GROUP_MIN=${GID_MIN:=1000} -v GROUP_MAX=${GID_MAX:=65534} '$3 >= GROUP_MIN && $3 <= GROUP_MAX && $1 != "nobody" { print $1}' ${FILE_GROUP}) + done < <(awk -F':' -v GROUP_MIN=${GID_MIN:=1000} -v GROUP_MAX=${GID_MAX:=60000} '$3 >= GROUP_MIN && $3 <= GROUP_MAX && $1 != "nobody" { print $1}' ${FILE_GROUP}) elif [[ ${SELECT_PARAM} == "@systems" ]]; then # Группы системные GID_MIN=$([[ $(cat "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*SYS_GID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") @@ -450,7 +449,7 @@ get_conf_groupadd_from_system(){ [[ -n ${GID_MAX} ]] || GID_MAX=${GID_MIN} while IFS= read -r SELECT_GROUP; do show_group "${SELECT_GROUP}" - done < <(awk -F':' -v GROUP_MIN=${GID_MIN:=1000} -v GROUP_MAX=${GID_MAX:=65534} '$3 >= GROUP_MIN && $3 <= GROUP_MAX && $1 != "nobody" { print $1}' ${FILE_GROUP}) + done < <(awk -F':' -v GROUP_MIN=${GID_MIN:=1000} -v GROUP_MAX=${GID_MAX:=60000} '$3 >= GROUP_MIN && $3 <= GROUP_MAX && $1 != "nobody" { print $1}' ${FILE_GROUP}) elif grep -q ^"${SELECT_PARAM}:" ${FILE_GROUP} &>/dev/null; then show_group "${SELECT_PARAM}" fi @@ -470,20 +469,23 @@ detectDE(){ [[ -z ${SESSION} && ${DESKTOP_SESSION} == i3term ]] && SESSION=i3term [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == i3term ]] && SESSION=i3term [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == MATE ]] && SESSION=mate + [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == Pantheon ]] && SESSION=pantheon if [[ -z ${SESSION} ]]; then - ps -A | grep -q " xfce4-session$" && SESSION=xfce - ps -A | grep -q " kdeinit$" && SESSION=kde - ps -A | grep -q " i3$" && SESSION=i3 - ps -A | grep -q " i3term$" && SESSION=i3term - ps -A | grep -q " gnome-panel$" && SESSION=gnome - ps -A | grep -q " gnome-shell$" && SESSION=gnome-shell - ps -A | grep -q " plasmashell$" && SESSION=plasma + SESSION_COMMANDS=$(ps xo args) + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+"xfce4-session"($'\n'|$)+ ]] && SESSION=xfce + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+([^$'\n']*)"kdeinit"($'\n'|$)+ ]] && SESSION=kde + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+([^$'\n']*)"i3"($'\n'|$)+ ]] && SESSION=i3 + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+([^$'\n']*)"i3term"($'\n'|$)+ ]] && SESSION=i3term + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+([^$'\n']*)"gnome-panel"($'\n'|$)+ ]] && SESSION=gnome + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+([^$'\n']*)"gnome-shell"($'\n'|$)+ ]] && SESSION=gnome-shell + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+([^$'\n']*)"plasmashell"($'\n'|$)+ ]] && SESSION=plasma + [[ -z ${SESSION} && ${SESSION_COMMANDS} =~ ($'\n'|^)+([^$'\n']*)" --session=pantheon"([^$'\n']*)($'\n'|$)+ ]] && SESSION=pantheon fi - [[ -z ${SESSION} && -x /usr/bin/startxfce4 ]] && SESSION=xfce - [[ -z ${SESSION} && -x /usr/bin/startlxde ]] && SESSION=lxde - [[ -z ${SESSION} && -x /usr/bin/startlxqt ]] && SESSION=lxqt + [[ -z ${SESSION} && -x /usr/bin/startxfce4 ]] && SESSION=xfce + [[ -z ${SESSION} && -x /usr/bin/startlxde ]] && SESSION=lxde + [[ -z ${SESSION} && -x /usr/bin/startlxqt ]] && SESSION=lxqt [[ -z ${SESSION} && -x /usr/bin/plasmashell ]] && SESSION=plasma - [[ ${SESSION} == kde && -x /usr/bin/plasmashell ]] && SESSION=plasma + [[ ${SESSION} == "kde" && -x /usr/bin/plasmashell ]] && SESSION=plasma # SESSION=budgie # SESSION=cinnamon # SESSION=sway @@ -792,6 +794,163 @@ screen_scale(){ fi } +##################################### +### ::: UBCONFIG EXEC ::: ### +##################################### +ubconfig_exec_system(){ + SYSCONF=${SYSCONF//${ROOTFS}/} + local SECTION_NAME=$1 + local COMMAND_MODE_VAR=$2 + local NAME_VAR=$3 + local VALUE_VAR=$4 + local NO_FIND_EXCUTE= + case "[${SECTION_NAME}]" in + "[${SYSCONF}/config]"|"[config]") + case "${NAME_VAR}" in + HOSTNAME) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/30-network-hostname "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + SERVICESSTART|SERVICESNOSTART|SERVICESMASK|SERVICESUNMASK|\ + SERVICES_ENABLE|SERVICES_DISABLE|SERVICES_MASK|SERVICES_UNMASK) + ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/20-services exec_services_enabledisable "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" + ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/20-services exec_services_startstop_live "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" + ;; + FIRSTSTART) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_99_firststart "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/system]"|"[system]") + case "${NAME_VAR}" in + HOSTNAME) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/30-network-hostname "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + SERVICESSTART|SERVICESNOSTART|SERVICESMASK|SERVICESUNMASK|\ + SERVICES_ENABLE|SERVICES_DISABLE|SERVICES_MASK|SERVICES_UNMASK) + ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/20-services exec_services_enabledisable "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" + ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/20-services exec_services_startstop_live "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" + ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/users]"|"[users]") + case "${NAME_VAR}" in + DEFAULTROOTPASSWD) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_00_defaultrootpasswd "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + DEFAULTPASSWD) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_00_defaultpasswd "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + DEFAULTGROUP) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_01_add_groups "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + ADMGROUPS) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_01_add_groups "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + USERGROUPS) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_01_add_groups "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + NEEDEDUSERS) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_02_neededusers "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + USERADD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_03_useradd "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + USERSHADOW\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_04_usershadow "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + GROUPADD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_05_groupadd "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + USERADD_SYNC) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_useradd_sync ;; + GROUPADD_SYNC) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_groupadd_sync ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/boot]"|"[boot]") + case "${NAME_VAR}" in + GRUB_TIMEOUT) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_timeout ;; + GRUB_DEFAULT) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_default ;; + GRUB_SUPERUSERS) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_superusers ;; + GRUB_PASSWORD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_password ;; + GRUB_BOOT_SILENT) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_boot_silent ;; + GRUB_TERMINAL_INPUT) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_terminal_input ;; + GRUB_TERMINAL_OUTPUT) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_terminal_output ;; + GRUB_PLAY) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_play ;; + GRUB_CMDLINE_LINUX) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_cmdline_linux ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/logging]"|"[logging]") + case "${NAME_VAR}" in + AUDITD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/24-logging exec_auditd "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" + setsid ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/24-logging exec_auditd_live & ;; + JOURNALD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/24-logging exec_journald "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" + setsid ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/24-logging exec_journald_live & ;; + LOGROTATE\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/24-logging exec_logrotate "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" + setsid ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/24-logging exec_logrotate_live "${NAME_VAR}" & ;; + SYSTEMD_COREDUMP\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/24-logging exec_systemd_coredump "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/clock]"|"[clock]") + case "${NAME_VAR}" in + ZONE) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/10-system exec_timezone ;; + HWCLOCK_SYNC) + ${ROOTFS}/usr/lib/ublinux/rc.halt/20-timesave + ${ROOTFS}/usr/lib/ublinux/rc.post.d/02-hwclock + ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/server]"|"[server]") + case "${NAME_VAR}" in + STORAGE_CONTAINERS_PATH) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/80-server-containers-storage "${COMMAND_MODE_VAR}" ;; + STORAGE_LIBVIRT_PATH) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/81-server-libvirt-storage "${COMMAND_MODE_VAR}" ;; + UBPILE) ${ROOTFS}/usr/lib/ublinux/rc.local.d/98-ubpile exec_01_ubpile "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + UBPILE\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/98-ubpile exec_01_ubpile "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + UBPILE_REVERSE_PROXY_PORT) ${ROOTFS}/usr/lib/ublinux/rc.local.d/98-ubpile exec_02_reverse_proxy_port "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/desktop]"|"[desktop]") + case "${NAME_VAR}" in + MULTISEAT_SIMPLE) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/55-multiseat ;; + AUTOEXEC) ${ROOTFS}/usr/lib/ublinux/rc.desktop/all/autoexec "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + AUTOEXEC\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.desktop/all/autoexec "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + LIGHTDM_XDMCP) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_xdmcp ;; + LIGHTDM_XDMCP\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_xdmcp ;; + LIGHTDM_GREETER\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_greeter;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/save]"|"[save]") + case "${NAME_VAR}" in + SAVE_ALL_CACHE) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/75-save-cache ;; + SAVE_ROOTCOPY_CHANGES) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/76-save-rootcopy "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + SAVE_ROOTCOPY_INCLUDE) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/76-save-rootcopy "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + SAVE_ROOTCOPY_EXCLUDE) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/76-save-rootcopy "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/network]"|"[network]") + case "${NAME_VAR}" in + DOMAIN) export PARENT="${PKGNAME}" + if [[ "${COMMAND_MODE_VAR}" == 'set' ]]; then + ${ROOTFS}/usr/bin/ubdomain-client -q configure + elif [[ "${COMMAND_MODE_VAR}" == 'remove' ]]; then + ${ROOTFS}/usr/bin/ubdomain-client -q unconfigure + fi + ;; + 'DOMAIN[server]') true ;; + NTPSERVERS) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/21-ntp "${COMMAND_MODE_VAR}" ;; + PROXY_SYSTEM\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/31-network-proxy-system ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + "[${SYSCONF}/security]"|"[security]") + case "${NAME_VAR}" in + OPENSSL_ENGINE) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/56-openssl-engine ;; + ACCESS_DENIED_VTX11) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/57-access-denied-vtx11 ;; + ACCESS_ALLOWED_LOGIN) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/58-access-login exec_access_allowed_login ;; + ACCESS_DENIED_LOGIN) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/58-access-login exec_access_denied_login ;; + ACCESS_ALLOWED_SUID\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/42-access-suid-sgid exec_access_allowed_suid ;; + ACCESS_ALLOWED_SGID\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/42-access-suid-sgid exec_access_allowed_sgid ;; + ACCESS_ALLOWED_INTERPRETER\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/43-access-interpreter ;; + MOUNT_ATTR\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/44-mountattr ;; + MOUNT_QUOTA\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/45-disk-quota ;; + CGROUP_QUOTA\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/46-cgroup-quota "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + POLKIT\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/59-polkit ;; + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + \[*\]) + case "${NAME_VAR}" in + *) NO_FIND_EXCUTE=1 ;; + esac + ;; + *) NO_FIND_EXCUTE=1 ;; + esac + [[ $? -eq 0 ]] && return 0 || return 1 +} + ################ ##### MAIN ##### ################ @@ -803,7 +962,8 @@ screen_scale(){ done < <(declare -F | grep "declare -f exec_") else while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" '${1}'" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.desktop/all/keyboard b/ublinux/rc.desktop/all/keyboard index 6da4383..0c54253 100755 --- a/ublinux/rc.desktop/all/keyboard +++ b/ublinux/rc.desktop/all/keyboard @@ -7,7 +7,7 @@ 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/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/keyboard; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.desktop/deonly/gnome-network-proxy-system b/ublinux/rc.desktop/deonly/gnome-network-proxy-system index d4a5b8d..55d3802 100755 --- a/ublinux/rc.desktop/deonly/gnome-network-proxy-system +++ b/ublinux/rc.desktop/deonly/gnome-network-proxy-system @@ -7,7 +7,7 @@ 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/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.desktop/deonly/plank b/ublinux/rc.desktop/deonly/plank new file mode 100755 index 0000000..03ff613 --- /dev/null +++ b/ublinux/rc.desktop/deonly/plank @@ -0,0 +1,11 @@ +#!/bin/bash + +ENABLED=yes +[[ ${ENABLED} == "yes" ]] || exit 0 + +SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null + + NAME_EXEC=${0##*/} + which ${NAME_EXEC} >/dev/null 2>&1 || exit 0 + [[ ${START_PLANK} == @("no"|"none"|"disable") ]] || ${NAME_EXEC} & diff --git a/ublinux/rc.halt.pre/20-grub b/ublinux/rc.halt.pre/20-grub index 774509a..75cfcc7 100755 --- a/ublinux/rc.halt.pre/20-grub +++ b/ublinux/rc.halt.pre/20-grub @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/boot; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null @@ -173,8 +173,10 @@ exec_grub_cmdline_linux(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" \"${1}\"" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.halt.pre/25-accounts-sync b/ublinux/rc.halt.pre/25-accounts-sync index 76e8340..2cb6fb4 100755 --- a/ublinux/rc.halt.pre/25-accounts-sync +++ b/ublinux/rc.halt.pre/25-accounts-sync @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null @@ -24,8 +24,8 @@ exec_useradd_sync(){ local PARAM=$1 local GET_USERADD=$(get_conf_useradd_from_system ${PARAM}) local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM}) - ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[*] - ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERSHADOW[*] + ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_USERADD} + ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_USERSHADOW} [[ -n ${GET_USERADD} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERADD} [[ -n ${GET_USERSHADOW} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERSHADOW} } @@ -95,8 +95,10 @@ exec_groupadd_sync(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" \"${1}\"" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.halt.pre/76-save-rootcopy b/ublinux/rc.halt.pre/76-save-rootcopy index 050b160..5dfa80d 100755 --- a/ublinux/rc.halt.pre/76-save-rootcopy +++ b/ublinux/rc.halt.pre/76-save-rootcopy @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/save; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.local.d/20-pwgr-check b/ublinux/rc.local.d/20-pwgr-check index 1267754..5dda413 100755 --- a/ublinux/rc.local.d/20-pwgr-check +++ b/ublinux/rc.local.d/20-pwgr-check @@ -50,8 +50,10 @@ exec_check_user_group(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" '${1}'" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.local.d/43-repository b/ublinux/rc.local.d/43-repository index 2d26f1c..4473d91 100755 --- a/ublinux/rc.local.d/43-repository +++ b/ublinux/rc.local.d/43-repository @@ -132,8 +132,10 @@ exec_autoupdate(){ $"${FUNCTION##* }" done 3< <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" '${1}'" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.local.d/52-consolesetup b/ublinux/rc.local.d/52-consolesetup index 887612b..70034ee 100755 --- a/ublinux/rc.local.d/52-consolesetup +++ b/ublinux/rc.local.d/52-consolesetup @@ -7,7 +7,7 @@ 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/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/keyboard; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.local.d/98-ubpile b/ublinux/rc.local.d/98-ubpile index 494c779..e2aa40a 100755 --- a/ublinux/rc.local.d/98-ubpile +++ b/ublinux/rc.local.d/98-ubpile @@ -184,8 +184,10 @@ message_motd(){ $"${FUNCTION##* }" done 3< <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" '${1}'" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.network.d/10-network b/ublinux/rc.network.d/10-network index 06de437..0c9a1e8 100755 --- a/ublinux/rc.network.d/10-network +++ b/ublinux/rc.network.d/10-network @@ -102,8 +102,10 @@ exec_network(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.post.d/02-hwclock b/ublinux/rc.post.d/02-hwclock index 05803f7..d6aa290 100755 --- a/ublinux/rc.post.d/02-hwclock +++ b/ublinux/rc.post.d/02-hwclock @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/clock; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.post.d/09-automount b/ublinux/rc.post.d/09-automount index e198c23..17e0efb 100755 --- a/ublinux/rc.post.d/09-automount +++ b/ublinux/rc.post.d/09-automount @@ -11,7 +11,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/server; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null @@ -25,7 +25,7 @@ OPTSDEF="" exec_mount_direct(){ if [[ -n "${AUTOMOUNT_SHARE[@]}" ]]; then #typeset -p AUTOMOUNT_SHARE - for SELECT_SHARE in ${!AUTOMOUNT_SHARE[@]}; do + for SELECT_SHARE in "${!AUTOMOUNT_SHARE[@]}"; do #while IFS=' ' read -r -d $'\n' SELECT_SHARE; do IFS=: read -r MOUNT_MODE SOURCE_MOUNT GROUP MOD OPTS NULL <<< "${AUTOMOUNT_SHARE[${SELECT_SHARE}]}" if [[ ${MOUNT_MODE} == "direct" ]]; then @@ -43,7 +43,7 @@ exec_mount_direct(){ [[ -n ${GROUP} ]] && chown -f root:${GROUP} "${SELECT_SHARE}" [[ -n ${MOD} ]] && chmod -f ${MOD} "${SELECT_SHARE}" fi - #done <<< ${!AUTOMOUNT_SHARE[@]} + #done <<< "${!AUTOMOUNT_SHARE[@]}" done fi } diff --git a/ublinux/rc.post.d/42-access-suid-sgid b/ublinux/rc.post.d/42-access-suid-sgid index b3b74bc..764d82f 100755 --- a/ublinux/rc.post.d/42-access-suid-sgid +++ b/ublinux/rc.post.d/42-access-suid-sgid @@ -11,7 +11,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null @@ -41,20 +41,21 @@ exec_access_allowed_sgid(){ ##### MAIN ##### ################ -# Возможность подключить как source из любого скрипта и вызов встроенных функций - - if [[ ${0##*/} == ${SELF_NAME} && -z $@ ]]; then + # Если файл подключен как ресурс с функциями, то выйти + return 0 2>/dev/null && return 0 + if [[ -z $@ ]]; then while read -r FUNCTION; do $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") - elif [[ ${0##*/} == ${SELF_NAME} ]]; then + else + FUNCTION= # for FUNCTION in $@; do # declare -f ${FUNCTION} &>/dev/null && ${FUNCTION} # done while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } - else - true fi + diff --git a/ublinux/rc.post.d/43-access-exec b/ublinux/rc.post.d/43-access-exec index 980eea6..4ae14ac 100755 --- a/ublinux/rc.post.d/43-access-exec +++ b/ublinux/rc.post.d/43-access-exec @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.post.d/44-mountattr b/ublinux/rc.post.d/44-mountattr index 78020ef..0d8512a 100755 --- a/ublinux/rc.post.d/44-mountattr +++ b/ublinux/rc.post.d/44-mountattr @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.post.d/45-disk-quota b/ublinux/rc.post.d/45-disk-quota index 04fd2e9..7cf13a2 100755 --- a/ublinux/rc.post.d/45-disk-quota +++ b/ublinux/rc.post.d/45-disk-quota @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.post.d/46-cgroup-quota b/ublinux/rc.post.d/46-cgroup-quota index 39af92c..8647092 100755 --- a/ublinux/rc.post.d/46-cgroup-quota +++ b/ublinux/rc.post.d/46-cgroup-quota @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/01-depmod b/ublinux/rc.preinit.d/01-depmod index 6d216ce..01c0cca 100755 --- a/ublinux/rc.preinit.d/01-depmod +++ b/ublinux/rc.preinit.d/01-depmod @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/hardware; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/03-ldconfig b/ublinux/rc.preinit.d/03-ldconfig index f263ec1..36f3afa 100755 --- a/ublinux/rc.preinit.d/03-ldconfig +++ b/ublinux/rc.preinit.d/03-ldconfig @@ -9,7 +9,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/hardware; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/10-system b/ublinux/rc.preinit.d/10-system index 509d7b0..29c57d1 100755 --- a/ublinux/rc.preinit.d/10-system +++ b/ublinux/rc.preinit.d/10-system @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/hardware; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null @@ -143,8 +143,10 @@ exec_enviroment(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.preinit.d/13-release b/ublinux/rc.preinit.d/13-release index bab46df..9f58396 100755 --- a/ublinux/rc.preinit.d/13-release +++ b/ublinux/rc.preinit.d/13-release @@ -15,7 +15,7 @@ unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null PATH_LIB_UBBOOT="${ROOTFS}/usr/lib/ubboot" diff --git a/ublinux/rc.preinit.d/20-services b/ublinux/rc.preinit.d/20-services index 7b4f2ba..7fee405 100755 --- a/ublinux/rc.preinit.d/20-services +++ b/ublinux/rc.preinit.d/20-services @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null @@ -222,8 +222,10 @@ exec_services_startstop_live(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" \"${1}\"" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.preinit.d/21-ntp b/ublinux/rc.preinit.d/21-ntp index c2351cb..41fd090 100755 --- a/ublinux/rc.preinit.d/21-ntp +++ b/ublinux/rc.preinit.d/21-ntp @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/22-samba b/ublinux/rc.preinit.d/22-samba index 7bc3388..7e64e17 100755 --- a/ublinux/rc.preinit.d/22-samba +++ b/ublinux/rc.preinit.d/22-samba @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/23-realmd b/ublinux/rc.preinit.d/23-realmd index 0e3ed80..472ee62 100755 --- a/ublinux/rc.preinit.d/23-realmd +++ b/ublinux/rc.preinit.d/23-realmd @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/24-logging b/ublinux/rc.preinit.d/24-logging index f2372db..a6005aa 100755 --- a/ublinux/rc.preinit.d/24-logging +++ b/ublinux/rc.preinit.d/24-logging @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/logging; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null @@ -280,8 +280,10 @@ exec_logrotate_live(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" \"${1}\"" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.preinit.d/30-network-hostname b/ublinux/rc.preinit.d/30-network-hostname index bef6922..91a76e6 100755 --- a/ublinux/rc.preinit.d/30-network-hostname +++ b/ublinux/rc.preinit.d/30-network-hostname @@ -17,7 +17,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/31-network-proxy-system b/ublinux/rc.preinit.d/31-network-proxy-system index 3bf7fc2..1a8c3cf 100755 --- a/ublinux/rc.preinit.d/31-network-proxy-system +++ b/ublinux/rc.preinit.d/31-network-proxy-system @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/32-network b/ublinux/rc.preinit.d/32-network index 91746a2..9e86c78 100755 --- a/ublinux/rc.preinit.d/32-network +++ b/ublinux/rc.preinit.d/32-network @@ -18,7 +18,7 @@ debug_mode "$0" "$@" HOSTNAME=ublinux-live -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/40-authpam b/ublinux/rc.preinit.d/40-authpam index 8181e10..bf0176d 100755 --- a/ublinux/rc.preinit.d/40-authpam +++ b/ublinux/rc.preinit.d/40-authpam @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/50-xorg b/ublinux/rc.preinit.d/50-xorg index b54b611..92a6b9c 100755 --- a/ublinux/rc.preinit.d/50-xorg +++ b/ublinux/rc.preinit.d/50-xorg @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/video; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/51-autologin b/ublinux/rc.preinit.d/51-autologin index c32ac5b..6444d5c 100755 --- a/ublinux/rc.preinit.d/51-autologin +++ b/ublinux/rc.preinit.d/51-autologin @@ -16,45 +16,16 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +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]}") - UID_MIN=$([[ $(cat "${ROOTFS}/etc/login.defs") =~ [^#[^:space:]]*UID_MIN[[:space:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") - MORE_ONE_USER=$(awk -F':' -v USER_MIN=${UID_MIN} '$3 > USER_MIN && $1 != "nobody" { print $1}' ${ROOTFS}/etc/passwd) - # Если в системе всего один пользователь и FIRSTSATART, то автологин - [[ -z ${MORE_ONE_USER} && -n ${FIRSTSTART} ]] && 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 + autologin_enable(){ + grep -q "^${AUTOLOGINUSER}:" ${ROOTFS}/etc/passwd 2>/dev/null || 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 @@ -73,5 +44,40 @@ EOF ${CMD_CHROOT} /usr/bin/groupadd -f ${ARG_AUTOLOGIN_IDGROUP} autologin >/dev/null 2>&1 ${CMD_CHROOT} /usr/bin/gpasswd -M ${AUTOLOGINUSER} autologin >/dev/null 2>&1 fi + } + autologin_disable(){ + [[ -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 + } + + if [[ -z ${AUTOLOGINUSER} ]]; then + #PASS_ADMUID=$(grep "^$(grep ":${ADMUID}:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1):" ${ROOTFS}/etc/shadow | cut -d: -f2) #" + [[ $(cat "${ROOTFS}/etc/login.defs") =~ ($'\n'|^)+UID_MIN[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && UID_MIN=${BASH_REMATCH[2]:-1000} + MORE_ONE_USER=$(awk -F':' -v USER_MIN=${UID_MIN} '$3 > USER_MIN && $1 != "nobody" {print $1}' ${ROOTFS}/etc/passwd) + # Если в системе всего один пользователь и FIRSTSATART, то автологин + [[ -z ${MORE_ONE_USER} && -n ${FIRSTSTART} ]] && AUTOLOGINUSER=yes + fi + + if [[ ${AUTOLOGINUSER} == @("yes"|"enable") && -n ${DISPLAYMANAGER_DEFAULTUSER} ]]; then + AUTOLOGINUSER="${DISPLAYMANAGER_DEFAULTUSER}" + elif [[ ${AUTOLOGINUSER} == @("yes"|"enable") ]]; then + AUTOLOGINUSER=$(grep ":${ADMUID}:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1) fi + if [[ -n ${AUTOLOGINUSER} ]]; then + [[ ${AUTOLOGINUSER} == @("no"|"none"|"disable") ]] && autologin_disable || autologin_enable ${AUTOLOGINUSER} + else + # Если параметр не задан, то всегда отключать автологин + #autologin_disable + true + fi + + diff --git a/ublinux/rc.preinit.d/52-desktop b/ublinux/rc.preinit.d/52-desktop index a891df9..8f2e416 100755 --- a/ublinux/rc.preinit.d/52-desktop +++ b/ublinux/rc.preinit.d/52-desktop @@ -123,6 +123,7 @@ for i in $(cmdline_value desktop | tr , " " ) ;do plasma) DESKTOP=plasma ;; mate) DESKTOP=mate ;; ukui) DESKTOP=ukui ;; + pantheon) DESKTOP=pantheon ;; none) DISPLAYMANAGER=none && DESKTOP=none ;; lightdm) DISPLAYMANAGER=lightdm ;; kdm) DISPLAYMANAGER=kdm ;; @@ -148,7 +149,7 @@ done # Autodetect Display Environment # /usr/share/xsessions/*.desktop for X's sessions and /usr/share/wayland-sessions/*.desktop for Wayland's. - [[ -z "${DESKTOP}" ]] && for i in i3 ukui steam lxde lxqt kde4 xfce mate gnome gnomeshell plasma; do + [[ -z "${DESKTOP}" ]] && for i in i3 ukui steam lxde lxqt kde4 xfce pantheon mate gnome gnomeshell plasma; do [[ -f usr/share/wayland-sessions/$i.desktop ]] && DESKTOP=$i [[ -f usr/share/xsessions/$i.desktop ]] && DESKTOP=$i done @@ -157,7 +158,7 @@ done [[ -z "${DISPLAYMANAGER}" && -z "${DESKTOP}" ]] && disabledmde # Set default user to Display Manager - if [[ "${DISPLAYMANAGER}" == "lightdm" && ${DISPLAYMANAGER_DEFAULTUSER} ]]; then + if [[ ${DISPLAYMANAGER} == "lightdm" && -n ${DISPLAYMANAGER_DEFAULTUSER} ]]; then sed -i /DISPLAYMANAGER_DEFAULTUSER=/d ${SYSCONF}/desktop echo "DISPLAYMANAGER_DEFAULTUSER=${DISPLAYMANAGER_DEFAULTUSER}" >> ${SYSCONF}/desktop mkdir -p var/lib/lightdm/.cache/lightdm-gtk-greeter/ diff --git a/ublinux/rc.preinit.d/55-multiseat b/ublinux/rc.preinit.d/55-multiseat index 9bc2f40..714d16e 100755 --- a/ublinux/rc.preinit.d/55-multiseat +++ b/ublinux/rc.preinit.d/55-multiseat @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/desktop; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/56-openssl-engine b/ublinux/rc.preinit.d/56-openssl-engine index 3b7d284..e20e1d4 100755 --- a/ublinux/rc.preinit.d/56-openssl-engine +++ b/ublinux/rc.preinit.d/56-openssl-engine @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/57-access-denied-vtx11 b/ublinux/rc.preinit.d/57-access-denied-vtx11 index 62be5c0..988af7e 100755 --- a/ublinux/rc.preinit.d/57-access-denied-vtx11 +++ b/ublinux/rc.preinit.d/57-access-denied-vtx11 @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/58-access-login b/ublinux/rc.preinit.d/58-access-login index 95943fe..2f480a9 100755 --- a/ublinux/rc.preinit.d/58-access-login +++ b/ublinux/rc.preinit.d/58-access-login @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null @@ -54,8 +54,10 @@ exec_access_denied_login(){ $"${FUNCTION##* }" done < <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.preinit.d/59-polkit b/ublinux/rc.preinit.d/59-polkit index 9fa181d..abd65b7 100755 --- a/ublinux/rc.preinit.d/59-polkit +++ b/ublinux/rc.preinit.d/59-polkit @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/60-lightdm-settings b/ublinux/rc.preinit.d/60-lightdm-settings new file mode 100755 index 0000000..482c517 --- /dev/null +++ b/ublinux/rc.preinit.d/60-lightdm-settings @@ -0,0 +1,101 @@ +#!/usr/bin/env bash +# +# Initial script for UBLinux +# This script are launching before starting init from initrd 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/default; [[ -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 + +## Сервер XDMCP Lightdm +## LIGHTDM_XDMCP=yes|no|enable|disable +## yes|enable # Включить XDMCP с параметрами по умолчанию +## no|disable # Выключить XDMCP +## LIGHTDM_XDMCP[]= +## # Название параметра, примеры в /etc/lightdm/lightdm.conf +## port # Порт подключения UDP/IP. По умолчанию: 177 +## address # Адрес хоста соединения XDMCP. По умолчанию: все адреса +## key # Ключ аутентификации, используемый для XDM-AUTHENTICATION-1, или пустой, чтобы не использовать аутентификацию (хранится в файлеkeys.conf) +## hostname # Имя хоста для отправки отчета клиентам XDMCP. По умолчанию: системное имя хоста +## # Значение параметра +#LIGHTDM_XDMCP=enable +exec_lightdm_xdmcp(){ + FILE_LIGHTDM_CONF="${ROOTFS}/etc/lightdm/lightdm.conf" + FILE_LIGHTDM_XDMCP_CONF="${ROOTFS}/etc/lightdm/lightdm.conf.d/99-xdmcp-ubconfig.conf" + + if [[ ${LIGHTDM_XDMCP} == @("enable"|"yes") && ${#LIGHTDM_XDMCP[@]} -ne 0 ]]; then + [[ -d ${ROOTFS}/etc/lightdm/${FILE_LIGHTDM_XDMCP_CONF%/*} ]] || mkdir -p ${FILE_LIGHTDM_XDMCP_CONF%/*} + cat <<-EOF | sed 's/^\s*\t*//' > "${FILE_LIGHTDM_XDMCP_CONF}" + [XDMCPServer] + enabled=true +EOF + for LIGHTDM_PARAM in "${!LIGHTDM_XDMCP[@]}"; do + [[ ${LIGHTDM_PARAM} == 0 ]] && continue + echo "${LIGHTDM_PARAM}=${LIGHTDM_XDMCP[${LIGHTDM_PARAM}]}" >> "${FILE_LIGHTDM_XDMCP_CONF}" + done + else + rm -f "${FILE_LIGHTDM_XDMCP_CONF}" + fi +} + +## Настройка гритера для менеджера диспелея Lightdm +## По умолчанию если не выбрано, то любой доступный, обычно 'lightdm-gtk-greeter' +## LIGHTDM_GREETER[]= +## # Название параметра, примеры в /etc/lightdm/lightdm.conf +## greeter-session # Название установленного гритера в каталоге /usr/share/xgreeters/*.desktop +## =lightdm-gtk-greeter # LightDM GTK+ гритер +## =io.elementary.greeter # Pantheon гритер +## greeter-hide-users # Скрыть список пользователей, значения (true|false) +## greeter-allow-guest # В списке пользователей показывать Гостя, значения (true|false) +## greeter-show-manual-login # Разрешить вводить произвольного пользователя, значения (true|false) +## greeter-show-remote-login # Разрешить выбрать удалённого пользователя, значения (true|false) +## # Значение параметра +#LIGHTDM_GREETER[greeter-session]=io.elementary.greeter +exec_lightdm_greeter(){ + FILE_LIGHTDM_CONF="${ROOTFS}/etc/lightdm/lightdm.conf" + FILE_LIGHTDM_GREETER_CONF="${ROOTFS}/etc/lightdm/lightdm.conf.d/99-greeter-ubconfig.conf" + if [[ ${#LIGHTDM_GREETER[@]} -ne 0 ]]; then + [[ -d ${ROOTFS}/etc/lightdm/${FILE_LIGHTDM_GREETER_CONF%/*} ]] || mkdir -p ${FILE_LIGHTDM_GREETER_CONF%/*} + cat <<-EOF | sed 's/^\s*\t*//' > "${FILE_LIGHTDM_GREETER_CONF}" + [Seat:*] +EOF + for LIGHTDM_PARAM in "${!LIGHTDM_GREETER[@]}"; do + [[ ${LIGHTDM_PARAM} == 0 ]] && continue + echo "${LIGHTDM_PARAM}=${LIGHTDM_GREETER[${LIGHTDM_PARAM}]}" >> "${FILE_LIGHTDM_GREETER_CONF}" + done + else + rm -f "${FILE_LIGHTDM_GREETER_CONF}" + fi +} + + +################ +##### MAIN ##### +################ + # Если файл подключен как ресурс с функциями, то выйти + return 0 2>/dev/null && return 0 + if [[ -z $@ ]]; then + while read -r FUNCTION; do + $"${FUNCTION##* }" + done < <(declare -F | grep "declare -f exec_") + else + FUNCTION= + while [[ $# -gt 0 ]]; do + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift + done + eval ${FUNCTION#*; } + fi diff --git a/ublinux/rc.preinit.d/60-lightdm-xdmcp b/ublinux/rc.preinit.d/60-lightdm-xdmcp deleted file mode 100755 index b86bc7e..0000000 --- a/ublinux/rc.preinit.d/60-lightdm-xdmcp +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env bash -# -# Initial script for UBLinux -# This script are launching before starting init from initrd 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/default; [[ -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 - -## Сервер XDMCP Lightdm -## LIGHTDM_XDMCP=yes|no|enable|disable -## yes|enable # Включить XDMCP -## no|disable # Выключить XDMCP -## LIGHTDM_XDMCP[port]= -## # Порт подключения UDP/IP. По умолчанию: 177 -## LIGHTDM_XDMCP[listen-address]=
-##
# Адрес хоста соединения XDMCP. По умолчанию: все адреса -## LIGHTDM_XDMCP[key]= -## # Ключ аутентификации, используемый для XDM-AUTHENTICATION-1, или пустой, чтобы не использовать аутентификацию (хранится в файлеkeys.conf) -## LIGHTDM_XDMCP[hostname]= -## # Имя хоста для отправки отчета клиентам XDMCP. По умолчанию: системное имя хоста - - declare -A LIGHTDM_XDMCP - - FILE_LIGHTDM_CONF="${ROOTFS}/etc/lightdm/lightdm.conf" - FILE_LIGHTDM_XDMCP_CONF="${ROOTFS}/etc/lightdm/lightdm.conf.d/99-xdmcp-ubconfig.conf" - - if [[ ${LIGHTDM_XDMCP} == @(""|"disable"|"no") ]]; then - rm -f "${FILE_LIGHTDM_XDMCP_CONF}" - else - [[ -d ${ROOTFS}/etc/lightdm/${FILE_LIGHTDM_XDMCP_CONF%/*} ]] || mkdir -p ${FILE_LIGHTDM_XDMCP_CONF%/*} - cat <<-EOF | sed 's/^\s*\t*//' > "${FILE_LIGHTDM_XDMCP_CONF}" - [XDMCPServer] - enabled=true -EOF - [[ -z ${LIGHTDM_XDMCP[port]} ]] || printf "port=${LIGHTDM_XDMCP[port]}\n" >> "${FILE_LIGHTDM_XDMCP_CONF}" - [[ -z ${LIGHTDM_XDMCP[listen-address]} ]] || printf "listen-address=${LIGHTDM_XDMCP[listen-address]}\n" >> "${FILE_LIGHTDM_XDMCP_CONF}" - [[ -z ${LIGHTDM_XDMCP[key]} ]] || printf "key=${LIGHTDM_XDMCP[key]}\n" >> "${FILE_LIGHTDM_XDMCP_CONF}" - [[ -z ${LIGHTDM_XDMCP[hostname]} ]] || printf "hostname=${LIGHTDM_XDMCP[hostname]}\n" >> "${FILE_LIGHTDM_XDMCP_CONF}" - fi - diff --git a/ublinux/rc.preinit.d/63-xorg-dpi b/ublinux/rc.preinit.d/63-xorg-dpi index f2f0bf2..2e6d23e 100755 --- a/ublinux/rc.preinit.d/63-xorg-dpi +++ b/ublinux/rc.preinit.d/63-xorg-dpi @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/video; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/80-server-containers-storage b/ublinux/rc.preinit.d/80-server-containers-storage index 67c339e..6178cbc 100755 --- a/ublinux/rc.preinit.d/80-server-containers-storage +++ b/ublinux/rc.preinit.d/80-server-containers-storage @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/server; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/81-server-libvirt-storage b/ublinux/rc.preinit.d/81-server-libvirt-storage index 7752872..6b1fe57 100755 --- a/ublinux/rc.preinit.d/81-server-libvirt-storage +++ b/ublinux/rc.preinit.d/81-server-libvirt-storage @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/server; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/90-apparmor b/ublinux/rc.preinit.d/90-apparmor index 292ea00..3b935df 100755 --- a/ublinux/rc.preinit.d/90-apparmor +++ b/ublinux/rc.preinit.d/90-apparmor @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.preinit.d/99-osinstall b/ublinux/rc.preinit.d/99-osinstall index 542e02e..c599417 100755 --- a/ublinux/rc.preinit.d/99-osinstall +++ b/ublinux/rc.preinit.d/99-osinstall @@ -16,7 +16,7 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null if [ "$(cmdline_parameter ub.osinstall)" ]; then diff --git a/ublinux/rc.preinit/10-accounts b/ublinux/rc.preinit/10-accounts index 351553d..068175d 100755 --- a/ublinux/rc.preinit/10-accounts +++ b/ublinux/rc.preinit/10-accounts @@ -814,9 +814,9 @@ exec_99_firststart(){ [[ ${PARAM%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]] || eval "${PARAM%%=*}=\${PARAM#*=}" fi if [[ -n ${ROOTFS} ]]; then - if grep -q "^root:${DEFAULTROOTPASSWD}:" ${ROOTFS}/etc/shadow \ - && grep -q "^$(grep ".*:x:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1):${DEFAULTPASSWD}:" ${ROOTFS}/etc/shadow; then - grep -q "^FIRSTSTART$" ${SYSCONF}/config 2>/dev/null || echo "FIRSTSTART=yes" >> ${SYSCONF}/config + if [[ ${NOSECUREROOTPASSWD} == ${DEFAULTROOTPASSWD} ]] \ + && grep -q "^$(grep ".*:x:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1):${NOSECUREROOTPASSWD}:" ${ROOTFS}/etc/shadow; then + [[ $(cat ${SYSCONF}/config 2>/dev/null) =~ ($'\n'|^)+'FIRSTSTART=' ]] || echo "FIRSTSTART=yes" >> ${SYSCONF}/config fi elif [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ -n ${FIRSTSTART} ]]; then [[ $(cat ${SYSCONF}/config 2>/dev/null) =~ ($'\n'|^)+'FIRSTSTART=' ]] || echo "FIRSTSTART=yes" >> ${SYSCONF}/config @@ -838,8 +838,10 @@ exec_99_firststart(){ $"${FUNCTION##* }" done 3< <(declare -F | grep "declare -f exec_") else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" '${1}'" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } fi diff --git a/ublinux/rc.xorg/10-fixkeyboard_layout b/ublinux/rc.xorg/10-fixkeyboard_layout index 6da4383..0c54253 100755 --- a/ublinux/rc.xorg/10-fixkeyboard_layout +++ b/ublinux/rc.xorg/10-fixkeyboard_layout @@ -7,7 +7,7 @@ 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/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/keyboard; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/rc.xorg/20-video-xorg-dpi b/ublinux/rc.xorg/20-video-xorg-dpi index 274c72b..d2dac64 100755 --- a/ublinux/rc.xorg/20-video-xorg-dpi +++ b/ublinux/rc.xorg/20-video-xorg-dpi @@ -7,7 +7,7 @@ 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/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SYSCONF="${ROOTFS}/${SYSCONF}" +SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/video; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null diff --git a/ublinux/scripts/grub-functions b/ublinux/scripts/grub-functions index e46d706..2dc54e9 100755 --- a/ublinux/scripts/grub-functions +++ b/ublinux/scripts/grub-functions @@ -56,13 +56,19 @@ exec_get_last_menuentry(){ ##### MAIN ##### ################ -# Возможность подключить как source из любого скрипта и вызов встроенных функций - - if [[ ${0##*/} == ${SELF_NAME} ]]; then + # Если файл подключен как ресурс с функциями, то выйти + return 0 2>/dev/null && return 0 + if [[ -z $@ ]]; then + true +# while read -r FUNCTION; do +# $"${FUNCTION##* }" +# done < <(declare -F | grep "declare -f exec_") + else + FUNCTION= while [[ $# -gt 0 ]]; do - declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; } + [[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; } + shift done eval ${FUNCTION#*; } - else - true fi + diff --git a/ublinux/scripts/printers_setup_capt.sh b/ublinux/scripts/printers_setup_capt.sh index 552636a..aab3ab7 100755 --- a/ublinux/scripts/printers_setup_capt.sh +++ b/ublinux/scripts/printers_setup_capt.sh @@ -15,12 +15,12 @@ #[[ $USER != 'root' ]] && exec sudo "$0" init_printer(){ - echo "${DEVNAME}" | grep -q "/dev/usb/lp" && DEVNAME="sys$(udevadm info -a -n ${DEVNAME} 2>/dev/null | grep "looking at" | head -1 | cut -d\' -f2 | sed "s/\/usbmisc.*//")" + echo "${DEVNAME}" | grep -q "/dev/usb/lp" && DEVNAME="$(udevadm info -a -n ${DEVNAME} 2>/dev/null | grep "looking at" | head -1 | cut -d\' -f2 | sed "s/\/usbmisc.*//")" [[ -z "${DEVNAME}" ]] && echo "$(date '+%m.%d.%Y %T') : $0 : ${ACTION} : ERROR : Not found DEVICE ${DEVNAME}"; [[ -z "${DEVNAME}" ]] && exit 1 - DEV_IDPRODUCT="$(cat /${DEVNAME}/../idProduct)" - DEV_IDVENDOR="$(cat /${DEVNAME}/../idVendor)" - DEV_SERIAL="$(cat /${DEVNAME}/../serial)" - DEV_IEEE1284_ID="$(cat /${DEVNAME}/ieee1284_id | head -1 | tr ";" "\n")" + DEV_IDPRODUCT="$(cat /sys/${DEVNAME}/../idProduct)" + DEV_IDVENDOR="$(cat /sys/${DEVNAME}/../idVendor)" + DEV_SERIAL="$(cat /sys/${DEVNAME}/../serial)" + DEV_IEEE1284_ID="$(cat /sys/${DEVNAME}/ieee1284_id | head -1 | tr ";" "\n")" PRINTER_MFG="$(echo "${DEV_IEEE1284_ID}" | grep MFG | head -1 | cut -d: -f2 2>/dev/null)" PRINTER_MDL="$(echo "${DEV_IEEE1284_ID}" | grep MDL | head -1 | cut -d: -f2 2>/dev/null)" PRINTER_CMD="$(echo "${DEV_IEEE1284_ID}" | grep CMD | head -1 | cut -d: -f2 2>/dev/null)" @@ -29,10 +29,10 @@ init_printer(){ PRINTER_NAME="$(echo "${PRINTER_MDL}" | tr "/" "-" | tr " " "-" 2>/dev/null)" PRINTER_NAME_PPD="$(echo "${PRINTER_MDL}" | tr " " "-" 2>/dev/null)" for WAIT_TIME in 1 2 3 4; do - PRINTER_LP=$(basename $(ls -Udb /${DEVNAME}/usbmisc/lp* 2>/dev/null | head -1) 2>/dev/null) + PRINTER_LP=$(basename $(ls -Udb /sys/${DEVNAME}/usbmisc/lp* 2>/dev/null | head -1) 2>/dev/null) [[ -z ${PRINTER_LP} ]] && sleep ${WAIT_TIME} || break done -# PRINTER_LP="/dev/$(cat /${DEVNAME}/usbmisc/*/uevent | grep DEVNAME | cut -d= -f2)" +# PRINTER_LP="/dev/$(cat /sys/${DEVNAME}/usbmisc/*/uevent | grep DEVNAME | cut -d= -f2)" PRINTER_LP="/dev/usb/${PRINTER_LP}" [[ ${PRINTER_MDL} == "LBP810" ]] && PRINTER_MDL="LBP1120" echo "$(date '+%m.%d.%Y %T') : $0 : init_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 5e4fd9d..b9a2787 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -194,6 +194,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket ## # Поле GECOS, с подробным описанием пользователя, можно локализованное, не обязательное ## # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' ## # Если не указан и существует каталог /home/ , то будет взят у этого каталога +## # Если указано 's' или 'system', то свободный uid системного пользователя ## # Основная группа пользователя, номер или имя, если выбрано пусто или 'x', то 'user_group=user_name' ## # Если не указан и существует каталог /home/ , то будет взят у этого каталога ## # Дополнительные группы пользователя. Дополнительные к USERGROUPS @@ -201,7 +202,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket ## # Дополнительные параметры, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique' ## --home-dir <ДОМ_КАТ> # Домашний каталог новой учётной записи ## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи -## -r, --system # Создать системную группу +## -r, --system # Создать системного пользователя ## -M, --no-create-home # Не создавать домашний каталог пользователя ## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя ## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID, использовать только совместно с параметром @@ -242,8 +243,8 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket ## shutdown@- # При завершении работы системы синхронизировать диапазон UID пользователей в системе с глобальной конфигурацией ## shutdown@ # При завершении работы системы синхронизировать UID пользователя в системе с глобальной конфигурацией ## -## USERADD_SYNC[user_name]='boot,shutdown' -## user_name # Имя пользователя, необязательное поле. Если не указано, то применяется для всех пользователей +## USERADD_SYNC[]='boot,shutdown' +## # Имя пользователя, необязательное поле. Если не указано, то применяется для всех пользователей ## boot # При загрузке системы принудительно применить глобальную конфигурацию на пользователя ## shutdown # При завершении работы системы синхронизировать указанного пользователя в системе с глобальной конфигурацией ## USERADD_SYNC=boot @@ -254,6 +255,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket ## group_name # Имя группы ## group_users # Пользователи группы, перечисление через запятую, если выбрано 'x' то пусто. Может быть пусто. ## gid # GID группы, если необходимо автоматически рассчитывать, то оставить пустым или 'x' +## # Если указано 's' или 'system', то свободный gid системной группы ## optional # Дополнительные параметры, например: '--system --non-unique', если выбрано 'x' то пусто ## -o, --non-unique # Разрешить создание групп с повторяющимися (не уникальными) GID, использовать только совместно с параметром ## -r, --system # Cоздавать системную группу @@ -608,6 +610,12 @@ GRUB_BOOT_SILENT="splash" ## ipv6.disable=1 # Отключить глобально ipv6 ## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" +## Выбор загрузки версии ядра +## Если параметр не задан, то загружаемся с самой последней установленной версией +## KERNEL_BOOT=<пакет> +## <пакет> # Имя пакета с требуемой версией ядра, с которого необходимо загрузиться +## # Варианты: linux49, linux420, linux54, linux510, linux515, linux517, linux519, linux61, linux66, linux68 + [/etc/ublinux/server] ## Настройка сервера ################################################################################ @@ -1213,6 +1221,7 @@ NSSWITCHWINBIND=yes ## lxde # Быстрая среда для слабых компьютеров ## gnome # Альтернативная среда для средних и мощных машин ## plasma # Альтернативная среда для мощных машин +## pantheon # Pantheon альтернативная среда для средних и мощных машин ## # Любая среда установленная в систему ## DESKTOP=none @@ -1282,16 +1291,29 @@ NSSWITCHWINBIND=yes ## Сервер XDMCP Lightdm ## LIGHTDM_XDMCP=yes|no|enable|disable -## yes|enable # Включить XDMCP -## no|disable # Выключить XDMCP -## LIGHTDM_XDMCP[port]= -## # Порт подключения UDP/IP. По умолчанию: 177 -## LIGHTDM_XDMCP[listen-address]=
-##
# Адрес хоста соединения XDMCP. По умолчанию: все адреса -## LIGHTDM_XDMCP[key]= -## # Ключ аутентификации, используемый для XDM-AUTHENTICATION-1, или пустой, чтобы не использовать аутентификацию (хранится в файлеkeys.conf) -## LIGHTDM_XDMCP[hostname]= -## # Имя хоста для отправки отчета клиентам XDMCP. По умолчанию: системное имя хоста +## yes|enable # Включить XDMCP с параметрами по умолчанию +## no|disable # Выключить XDMCP +## LIGHTDM_XDMCP[]= +## # Название параметра, примеры в /etc/lightdm/lightdm.conf +## port # Порт подключения UDP/IP. По умолчанию: 177 +## address # Адрес хоста соединения XDMCP. По умолчанию: все адреса +## key # Ключ аутентификации, используемый для XDM-AUTHENTICATION-1, или пустой, чтобы не использовать аутентификацию (хранится в файлеkeys.conf) +## hostname # Имя хоста для отправки отчета клиентам XDMCP. По умолчанию: системное имя хоста +## # Значение параметра + +## Настройка гритера для менеджера диспелея Lightdm +## По умолчанию если не выбрано, то любой доступный, обычно 'lightdm-gtk-greeter' +## LIGHTDM_GREETER[]= +## # Название параметра, примеры в /etc/lightdm/lightdm.conf +## greeter-session # Название установленного гритера в каталоге /usr/share/xgreeters/*.desktop +## =lightdm-gtk-greeter # LightDM GTK+ гритер +## =io.elementary.greeter # Pantheon гритер +## greeter-hide-users # Скрыть список пользователей, значения (true|false) +## greeter-allow-guest # В списке пользователей показывать Гостя, значения (true|false) +## greeter-show-manual-login # Разрешить вводить произвольного пользователя, значения (true|false) +## greeter-show-remote-login # Разрешить выбрать удалённого пользователя, значения (true|false) +## # Значение параметра +#LIGHTDM_GREETER[greeter-session]=io.elementary.greeter [/etc/ublinux/video] ## Настройка видеоподсистемы