Fix many problem and add new functions

master v2.66
Dmitry Razumov 2 years ago
parent d713e757b6
commit 0eedabf42c
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -807,7 +807,7 @@ ubconfig_exec_system(){
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}" ;;
HOSTNAME) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/30-network-hostname ;;
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}"
@ -819,7 +819,7 @@ ubconfig_exec_system(){
;;
"[${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}" ;;
HOSTNAME) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/30-network-hostname ;;
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}"
@ -882,8 +882,8 @@ ubconfig_exec_system(){
;;
"[${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}" ;;
STORAGE_CONTAINERS_PATH) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/80-server-containers-storage ;;
STORAGE_LIBVIRT_PATH) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/81-server-libvirt-storage ;;
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}" ;;
@ -892,30 +892,30 @@ ubconfig_exec_system(){
;;
"[${SYSCONF}/desktop]"|"[desktop]")
case "${NAME_VAR}" in
MULTISEAT_SIMPLE) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/55-multiseat ;;
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;;
LIGHTDM_XDMCP) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_xdmcp "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
LIGHTDM_XDMCP\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_xdmcp "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
LIGHTDM_GREETER\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_greeter "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
*) 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}" ;;
SAVE_ROOTCOPY_CHANGES) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/76-save-rootcopy ;;
SAVE_ROOTCOPY_INCLUDE) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/76-save-rootcopy ;;
SAVE_ROOTCOPY_EXCLUDE) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/76-save-rootcopy ;;
*) NO_FIND_EXCUTE=1 ;;
esac
;;
"[${SYSCONF}/network]"|"[network]")
case "${NAME_VAR}" in
DOMAIN) export PARENT="${PKGNAME}"
if [[ "${COMMAND_MODE_VAR}" == 'set' ]]; then
if [[ "${COMMAND_MODE_VAR}" =~ 'set' ]]; then
${ROOTFS}/usr/bin/ubdomain-client -q configure
elif [[ "${COMMAND_MODE_VAR}" == 'remove' ]]; then
elif [[ "${COMMAND_MODE_VAR}" =~ 'remove' ]]; then
${ROOTFS}/usr/bin/ubdomain-client -q unconfigure
fi
;;
@ -935,12 +935,20 @@ ubconfig_exec_system(){
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 ;;
MOUNT_QUOTA\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/45-disk-quota "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
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
;;
"[${SYSCONF}/kiosk]"|"[kiosk]")
case "${NAME_VAR}" in
XFCE4_KIOSK\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/8-kiosk-xfce4-kioskrc ;;
XFCE4_KIOSK_USER_LOCKED) ${ROOTFS}/usr/lib/ublinux/rc.post.d/8-kiosk-xfce4-kioskrc ;;
XFCE4_KIOSK_USER_UNLOCKED) ${ROOTFS}/usr/lib/ublinux/rc.post.d/8-kiosk-xfce4-kioskrc ;;
*) NO_FIND_EXCUTE=1 ;;
esac
;;
\[*\])
case "${NAME_VAR}" in
*) NO_FIND_EXCUTE=1 ;;

@ -55,12 +55,13 @@ exec_autoexec_remove(){
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
if [[ -z $@ || $1 == @("set="|"set+="|"set++=") ]]; then
shift
exec_autoexec_set $@
KERNEL_AUTOEXEC="$(cmdline_value autoexec)"
[[ -n ${KERNEL_AUTOEXEC} ]] && exec_autoexec_set AUTOEXEC="${KERNEL_AUTOEXEC}"
elif [[ $1 == remove ]]; then
elif [[ $1 == @("set-="|"set--="|"remove") ]]; then
shift
exec_autoexec_remove $@
fi

@ -8,17 +8,17 @@ SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/save; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/network; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
PATH_ROOT=""
ROOTFS=""
PATH_CHANGES="/memory/changes"
NAME_ROOTCOPY="rootcopy"
PATH_ROOTCOPY=$(find ${PATH_ROOT}/memory/layer-base/*/ -maxdepth 1 -type d -name "${NAME_ROOTCOPY}" | head -1)
[[ -n ${PATH_ROOTCOPY} ]] || PATH_ROOTCOPY="$(find ${PATH_ROOT}/memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)"
PATH_ROOTCOPY=$(find ${ROOTFS}/memory/layer-base/*/ -maxdepth 1 -type d -name "${NAME_ROOTCOPY}" | head -1)
[[ -n ${PATH_ROOTCOPY} ]] || PATH_ROOTCOPY="$(find ${ROOTFS}/memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)"
[[ -n ${PATH_ROOTCOPY} ]] && PATH_ROOTCOPY="${PATH_ROOTCOPY%/*}/${NAME_ROOTCOPY}" || exit 0
NAME_MODULES="modules"
PATH_MODULES=$(find ${PATH_ROOT}/memory/layer-base/*/ -maxdepth 1 -type d -name "${NAME_MODULES}" | head -1)
[[ -n ${PATH_MODULES} ]] || PATH_MODULES="$(find ${PATH_ROOT}/memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)"
PATH_MODULES=$(find ${ROOTFS}/memory/layer-base/*/ -maxdepth 1 -type d -name "${NAME_MODULES}" | head -1)
[[ -n ${PATH_MODULES} ]] || PATH_MODULES="$(find ${ROOTFS}/memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)"
[[ -n ${PATH_MODULES} ]] && PATH_MODULES="${PATH_MODULES%/*}/${NAME_MODULES}" || exit 0
[[ -n ${PATH_ROOTCOPY} ]] || install -dm0755 -o root -g root "${PATH_ROOTCOPY}"
@ -40,13 +40,4 @@ PATH_MODULES=$(find ${PATH_ROOT}/memory/layer-base/*/ -maxdepth 1 -type d -name
cp -af etc/pacman.d ${PATH_ROOTCOPY}/etc/
cp -af etc/ssh ${PATH_ROOTCOPY}/etc/
fi
# Save DOMAIN settings
if [[ -n ${DOMAIN} && -w ${PATH_ROOTCOPY} ]]; then
cd ${PATH_CHANGES}
find etc/ -type f -name krb5.conf -exec install -CDm644 {} ${PATH_ROOTCOPY}/{} \;
find etc/ -type f -name krb5.keytab -exec install -CDm600 {} ${PATH_ROOTCOPY}/{} \;
find etc/ -type f -name realmd.conf -exec install -CDm600 {} ${PATH_ROOTCOPY}/{} \;
find etc/sssd/ -type f -name "*.conf" -exec install -CDm600 {} ${PATH_ROOTCOPY}/{} \;
fi

@ -12,6 +12,7 @@ debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/save; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/network; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
PATH_CHANGES="/memory/changes"
NAME_ROOTCOPY="rootcopy"
@ -46,9 +47,29 @@ exec_save_rootcopy(){
fi
}
exec_save_sssd_rootcopy(){
PATH_ROOTCOPY=$(find ${ROOTFS}/memory/layer-base/*/ -maxdepth 1 -type d -name "${NAME_ROOTCOPY}" | head -1)
[[ -n ${PATH_ROOTCOPY} ]] || PATH_ROOTCOPY="$(find ${ROOTFS}/memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)"
[[ -n ${PATH_ROOTCOPY} ]] && PATH_ROOTCOPY="${PATH_ROOTCOPY%/*}/${NAME_ROOTCOPY}" || exit 0
# Save DOMAIN settings
if [[ -n ${DOMAIN} && -w ${PATH_ROOTCOPY} ]]; then
[[ -f ${PATH_ROOTCOPY}/etc/krb5.conf ]] && rm -f ${PATH_ROOTCOPY}/etc/krb5.conf
[[ -f ${PATH_ROOTCOPY}/etc/krb5.keytab ]] && rm -f ${PATH_ROOTCOPY}/etc/krb5.keytab
[[ -f ${PATH_ROOTCOPY}/etc/realmd.conf ]] && rm -f ${PATH_ROOTCOPY}/etc/realmd.conf
find ${PATH_ROOTCOPY}/etc/sssd/ -type f -name "*.conf" -delete
cd ${PATH_CHANGES}
find etc/ -type f -name "krb5.conf" -exec install -CDm644 {} ${PATH_ROOTCOPY}/{} \;
find etc/ -type f -name "krb5.keytab" -exec install -CDm600 {} ${PATH_ROOTCOPY}/{} \;
find etc/ -type f -name "realmd.conf" -exec install -CDm600 {} ${PATH_ROOTCOPY}/{} \;
find etc/sssd/ -type f -name "*.conf" -exec install -CDm600 {} ${PATH_ROOTCOPY}/{} \;
fi
}
################
##### MAIN #####
################
[[ ${SYSTEMBOOT_STATEMODE} == "changes" ]] && exit 0
exec_save_rootcopy $@
exec_save_sssd_rootcopy $@

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
@ -11,19 +11,22 @@ SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@"
if [[ ${DOMAIN} != "" ]]; then
LOG_UBDOMAIN="/var/log/ubdomain-client.log"
if [[ -n ${DOMAIN} ]]; then
## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM
systemctl --quiet --wait is-system-running
ls -d /home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts org.freedesktop.Accounts.CacheUser string:{}
cp -af /memory/layer-base/1/ublinux-data/rootcopy/etc/krb5.conf /etc/
# ls -d /home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch /var/lib/AccountsService/users/{}
if /usr/bin/systemctl --wait is-active network-online.target; then
touch /var/log/ubdomain-client.log
date >> /var/log/ubdomain-client.log
# /usr/bin/ubdomain-client configure &>> /var/log/ubdomain-client.log
if /usr/bin/systemctl --quiet --wait is-active network-online.target &>/dev/null; then
sleep 2
touch ${LOG_UBDOMAIN}
date >> ${LOG_UBDOMAIN}
# /usr/bin/ubdomain-client configure &>> ${LOG_UBDOMAIN}
# /usr/bin/systemctl enable sssd.service
# /usr/bin/systemctl restart sssd.service
# /usr/bin/adcli update -v --domain=${DOMAIN} --show-details &>> /var/log/ubdomain-client.log
/usr/bin/adcli update -v --domain=${DOMAIN} --show-details &>> ${LOG_UBDOMAIN}
echo &>> ${LOG_UBDOMAIN}
sleep 2
ls -d /home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts org.freedesktop.Accounts.CacheUser string:{} &>> ${LOG_UBDOMAIN}
# ls -d /home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch /var/lib/AccountsService/users/{}
fi
fi
fi

@ -121,6 +121,20 @@ exec_autoupdate(){
true
}
## Удалить старые версии дубликато пакетов в базе pacman
exec_remove_duplicated_pacman(){
PATH_PACMAN_DB="/var/lib/pacman/local/"
# Из всех дубликатов приложений в базе pacman удалить старые версии
cd ${PATH_PACMAN_DB}; rm -rdfv $(ls -1vr ${PATH_PACMAN_DB} | sed -En 's/((.*)-([^-]+)-([^-]+))/\2|\1/p' | awk -F '|' 'prefixes[$1]++ {print $2}') #'
# Ситуация для которой нет обработки
# Если в полном сохранении пользователь обновиляет систему и в очередное обновление обновил только модули, то изменения останутся старыми, т.к. /changes/ имеет верхний слой
# т.е. по факту прилложения останутся старыми. Новые файлы из модуля будут видны, и далее могут не дать обновить на новые пакеты. Поэтому старые пакеты из базы pacman удаляем
# т.е. в базе pacman будут новые пакеты, а по факту файлы/бинарники старые
# Одно из решений - после установки модулей проверять какие пакеты в базе дублируются и эти файлы этих приложений из модуля переписать в корень
#sudo rsync -hrlptgoDHAXEU --existing --update --exclude ".wh.*" --progress /memory/bundles/010-core-2204-2-x86_64.ubm/ /
}
################
##### MAIN #####
################

@ -11,11 +11,20 @@ debug_mode "$0" "$@"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/kiosk; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
KIOSKRC="/etc/xdg/xfce4/kiosk/kioskrc"
## Настройка /etc/xdg/xfce4/kiosk/kioskrc
if [[ -n ${XFCE4_KIOSK[@]} ]]; then
## Режим киоска XFCE4, запретить изменять параметры пользователям и группам
## XFCE4_KIOSK[<channel>:<property>]=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =ALL # Разрешить всем
## =NONE # Запретить
## =@whell,@users # Разрешить группам
## =superadmin,user-1 # Разрешить пользователям
## =@wheel,user-1 # Разрешить группе и пользователю
#XFCE4_KIOSK[xfce4-panel:CustomizePanel]=@wheel
KIOSKRC="/etc/xdg/xfce4/kiosk/kioskrc"
if [[ ${#XFCE4_KIOSK[@]} -ne 0 ]]; then
[[ -d ${KIOSKRC%/*} ]] || install -dm0755 -o root -g root "${KIOSKRC%/*}"
[[ -f ${KIOSKRC} ]] && true > ${KIOSKRC}
true > ${KIOSKRC}
for SELECT in "${!XFCE4_KIOSK[@]}"; do
SECTION=$(cut -d: -f1 <<< ${SELECT})
PROPERTY=$(cut -d: -f2 <<< ${SELECT})
@ -29,4 +38,43 @@ KIOSKRC="/etc/xdg/xfce4/kiosk/kioskrc"
done
fi
## Назначить настройки киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_LOCKED=disable
## disable # Снять все ограничения
## XFCE4_KIOSK_USER_LOCKED=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =* # Все пользователи
## =@whell;@users # Указанные группы
## =superadmin;user-1 # Указанным пользователям
## =@wheel;user-1 # Указанным группам и пользователям
## XFCE4_KIOSK_USER_LOCKED="*"
## Назначить исключения настроек киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_UNLOCKED=disable
## disable # Снять все ограничения
## XFCE4_KIOSK_USER_UNLOCKED=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =* # Все пользователи
## =@whell;@users # Указанные группы
## =superadmin;user-1 # Указанным пользователям
## =@wheel;user-1 # Указанным группам и пользователям
## XFCE4_KIOSK_USER_UNLOCKED="root,@wheel"
PATH_XDG_XFCE_CHANNEL="/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/"
PARAM_LOCKED=
PARAM_UNLOCKED=
if [[ -n ${XFCE4_KIOSK_USER_LOCKED} || -n ${XFCE4_KIOSK_USER_UNLOCKED} ]]; then
if [[ ${XFCE4_KIOSK_USER_LOCKED} == "disable" || ${XFCE4_KIOSK_USER_UNLOCKED} == "disable" ]]; then
for FILE_CHANNEL_XML in ${PATH_XDG_XFCE_CHANNEL}/*.xml; do
sed -E "s/^<channel name=\"([^\"]+)\" version=\"([^\"]+)\"[^>]*>/<channel name=\"\1\" version=\"\2\">/" -i ${FILE_CHANNEL_XML}
done
else
[[ -n ${XFCE4_KIOSK_USER_LOCKED} ]] && PARAM_LOCKED=" locked=\"${XFCE4_KIOSK_USER_LOCKED//,/;}\""
[[ -n ${XFCE4_KIOSK_USER_UNLOCKED} ]] && PARAM_UNLOCKED=" unlocked=\"${XFCE4_KIOSK_USER_UNLOCKED//,/;}\""
for FILE_CHANNEL_XML in ${PATH_XDG_XFCE_CHANNEL}/*.xml; do
sed -E "s/^<channel name=\"([^\"]+)\" version=\"([^\"]+)\"[^>]*>/<channel name=\"\1\" version=\"\2\"${PARAM_LOCKED}${PARAM_UNLOCKED}>/" -i ${FILE_CHANNEL_XML}
done
fi
fi

@ -314,7 +314,7 @@ exec_disk_quota_get(){
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
if [[ -z $@ || $1 == @("set="|"set+="|"set++=") ]]; then
shift
exec_disk_quota $@
elif [[ $1 == get ]]; then

@ -61,10 +61,10 @@ exec_cgroup_quota_remove(){
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
if [[ -z $@ || $1 == @("set="|"set+="|"set++=") ]]; then
shift
exec_cgroup_quota_set "$@"
elif [[ $1 == remove ]]; then
elif [[ $1 == @("set-="|"set--="|"remove") ]]; then
shift
exec_cgroup_quota_remove "$@"
fi

@ -88,10 +88,10 @@ exec_ntp_servers_stop(){
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
if [[ -z $@ || $1 == @("set="|"set+="|"set++=") ]]; then
shift
exec_ntp_servers_set $@
elif [[ $1 == remove ]]; then
elif [[ $1 == @("set-="|"set--="|"remove") ]]; then
shift
exec_ntp_servers_stop $@
fi

@ -10,8 +10,8 @@ ENABLED=yes
DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
[[ -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" "$@"
@ -40,7 +40,7 @@ SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
#fi
if [[ -n ${DOMAIN} && ${DOMAIN[client]} == "realmd_sssd" ]]; then
if [[ -f ${ROOTFS}/etc/krb5.keytab ]]; then
[[ -f etc/krb5.conf && -f sssd/sssd.conf ]] || chroot . usr/bin/ubdomain-client -q configure 2>/dev/null
[[ -f ${ROOTFS}/etc/krb5.conf && -f ${ROOTFS}/etc/sssd/sssd.conf ]] || ${CMD_CHROOT} /usr/bin/ubdomain-client -q configure 2>/dev/null
[[ -f ${ROOTFS}/usr/lib/systemd/system/sssd.service ]] && ln -sf /usr/lib/systemd/system/sssd.service ${ROOTFS}/etc/systemd/system/multi-user.target.wants/sssd.service
fi
fi

@ -22,78 +22,70 @@ 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
exec_hostname(){
local PARAM="$@"
[[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'"
SET_HOSTNAME="${HOSTNAME}"
[[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live
set_hostname(){
local SET_HOSTNAME=$1
# Удалить предыдущее имя хоста
OLD_HOSTNAME=$(tail -1 ${ROOTFS}/etc/hostname); OLD_HOSTNAME=${OLD_HOSTNAME%%.*}
sed -E -e "s/\s${OLD_HOSTNAME}(\s|$)/ /g" -e "s/\s${OLD_HOSTNAME}\.[-0-9a-zA-Z.]*(\s|$)/ /g" -e "/^\s*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s*$/d" -i ${ROOTFS}/etc/hosts
sed -E -e "s/\s${OLD_HOSTNAME}(\s|$)/ /g" -e "s/\s${OLD_HOSTNAME}(\s|$)/ /g" -e "s/\s${OLD_HOSTNAME}\.[-0-9a-zA-Z.]*(\s|$)/ /g" -e "/^\s*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s*$/d" -i ${ROOTFS}/etc/hosts
# Если нет новой строки, то вставить
tail -c1 -- ${ROOTFS}/etc/hosts | grep -qx $'\n' || echo >> ${ROOTFS}/etc/hosts
HOSTS_1="127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com"
HOSTS_1="127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com"
grep -q "^\s*${HOSTS_1}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_1}" >> ${ROOTFS}/etc/hosts
HOSTS_2="127.0.0.1 ${SET_HOSTNAME%%.*}"
HOSTS_2="127.0.0.1 ${SET_HOSTNAME%%.*}"
grep -q "^\s*${HOSTS_2}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_2}" >> ${ROOTFS}/etc/hosts
[[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}"
if [[ ${DOMAIN} != "" ]]; then
SET_HOSTNAME="${SET_HOSTNAME%%.*}.${DOMAIN}"
echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname
HOSTS_3="127.0.0.1 ${SET_HOSTNAME}"
echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname
if [[ -n ${DOMAIN} ]]; then
HOSTS_3="127.0.0.1 ${SET_HOSTNAME}"
grep -q "^\s*${HOSTS_3}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_3}" >> ${ROOTFS}/etc/hosts
## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM
ls -d ${ROOTFS}/home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch ${ROOTFS}/var/lib/AccountsService/users/{}
## Домен для сервера dhcpd
if [[ -f ${ROOTFS}/etc/dhcpd.conf ]]; then
sed s/"option domain-name .*"/"option domain-name \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf
sed s/"option nis-domain .*"/"option nis-domain \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf
fi
## Имя хоста записать в конфиг с постфиксом домена
## Имя хоста записать в конфиг с суфиксом домена
[[ -f ${ROOTFS}/etc/ublinux/system ]] && { grep -q "^\s*HOSTNAME=${SET_HOSTNAME}\s*$" ${ROOTFS}/etc/ublinux/system || sed "s/^\s*HOSTNAME=.*/HOSTNAME=${SET_HOSTNAME}/g" -i ${ROOTFS}/etc/ublinux/system; }
else
echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname
fi
}
exec_hostname_live(){
# Если выполнение в initrd, то выход
[[ -z ${ROOTFS} ]] || return 0
local PARAM="$@"
[[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'"
SET_HOSTNAME="${HOSTNAME}"
[[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live
[[ ${DOMAIN} != "" ]] && SET_HOSTNAME="${SET_HOSTNAME%%.*}.${DOMAIN}"
set_hostname_live(){
local SET_HOSTNAME=$1
hostnamectl set-hostname ${SET_HOSTNAME}
## Если меняется имя хоста в запущенных X, то новое имя добавляем в xauth
who | grep "(:[0-9.]*)$" | cut -d' ' -f1 | xargs -ri su {} -c "xauth list | sed 's|^.*/|su {} -c \\\\\"xauth add ${SET_HOSTNAME}/|;s|$|\\\\\"|'" | xargs -ri sh -c '{}'
# Если указан домен, то задаём переменную DOMAIN=
# Примечание: Имя сервера контроллера домена включает постфикс домена, но в домен не входит
# Примечание: Невозможно определить, какой уровень именно домен, следовательно отключаю
#[[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}"
#[[ ${DOMAIN} != "" ]] && ubconfig -q set network DOMAIN="${DOMAIN}"
}
exec_hostname(){
DEFAULT_HOSTNAME="ublinux-live"
KERNEL_HOSTNAME=$(cmdline_value hostname)
[[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME}
[[ -z ${HOSTNAME} ]] && HOSTNAME="${DEFAULT_HOSTNAME}"
if [[ -n ${DOMAIN} ]]; then
HOSTNAME="${HOSTNAME%%.*}.${DOMAIN}"
else
# Если в имени хоста
[[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}"
fi
set_hostname ${HOSTNAME}
# Если выполнение в initrd, то пропустить
[[ -n ${ROOTFS} ]] || set_hostname_live ${HOSTNAME}
}
################
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
shift
KERNEL_HOSTNAME=$(cmdline_value hostname)
[[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME}
exec_hostname $@
exec_hostname_live $@
elif [[ $1 == remove ]]; then
shift
exec_hostname $@
exec_hostname_live $@
fi
exec_hostname $@

@ -44,10 +44,4 @@ EOF
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
shift
exec_multiseat $@
elif [[ $1 == remove ]]; then
shift
exec_multiseat $@
fi
exec_multiseat $@

@ -33,10 +33,17 @@ SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
## <value> # Значение параметра
#LIGHTDM_XDMCP=enable
exec_lightdm_xdmcp(){
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND="set="
local PARAM="$@"
if [[ -n ${PARAM} ]]; then
local LIGHTDM_XDMCP=
declare -A LIGHTDM_XDMCP
[[ ${PARAM%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]] || eval "${PARAM%%=*}=\${PARAM#*=}"
fi
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
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${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]
@ -46,7 +53,7 @@ EOF
[[ ${LIGHTDM_PARAM} == 0 ]] && continue
echo "${LIGHTDM_PARAM}=${LIGHTDM_XDMCP[${LIGHTDM_PARAM}]}" >> "${FILE_LIGHTDM_XDMCP_CONF}"
done
else
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
rm -f "${FILE_LIGHTDM_XDMCP_CONF}"
fi
}
@ -65,18 +72,37 @@ EOF
## <value> # Значение параметра
#LIGHTDM_GREETER[greeter-session]=io.elementary.greeter
exec_lightdm_greeter(){
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND="set="
local PARAM="$@"
if [[ -n ${PARAM} ]]; then
local LIGHTDM_GREETER=
declare -A LIGHTDM_GREETER
[[ ${PARAM%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]] || eval "${PARAM%%=*}=\${PARAM#*=}"
fi
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
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#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
[[ -z ${PARAM} && ${LIGHTDM_PARAM} == "greeter-session" ]] && { [[ -f ${ROOTFS}/usr/share/xgreeters/${LIGHTDM_GREETER[${LIGHTDM_PARAM}]}.desktop ]] || continue; }
if [[ ${LIGHTDM_PARAM} == "greeter-session" ]]; then
if [[ -n ${PARAM} ]]; then
# Если с входящим параметром, т.е. вполнение через ubconfig, то перевыполнить подготовку фона
${ROOTFS}/usr/lib/ublinux/rc.post.d/12-dm-background
else
# Если без входящего параметра, т.е. вполнение при загрузке, то проверить наличие гритера в системе
[[ -f ${ROOTFS}/usr/share/xgreeters/${LIGHTDM_GREETER[${LIGHTDM_PARAM}]}.desktop ]] || continue
fi
fi
echo "${LIGHTDM_PARAM}=${LIGHTDM_GREETER[${LIGHTDM_PARAM}]}" >> "${FILE_LIGHTDM_GREETER_CONF}"
done
else
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
rm -f "${FILE_LIGHTDM_GREETER_CONF}"
fi
}

@ -736,15 +736,26 @@ GRUB_BOOT_SILENT="splash"
################################################################################
## Domain configuration
## Подключение к AD серверу
#DOMAIN=ublinux.ru
## DOMAIN=<domain>
## <domain> # Имя домена
## DOMAIN=ubdc.ru
## Сервер контроллера домена/kerberos
## Отключить автопоиск сервера контроллера домена/kerberos и задать статический
## DOMAIN[server]=<domain_server>
## <domain_server> # DNS имя сервера домена
## DOMAIN[server]=pdc.ublinux.ru
## Клиент для подключения к домену [ *realmd_sssd | realmd_winbind | samba | none ]
## Клиент для подключения к домену
## DOMAIN[client]=<client>
## <client> # Клиент, допустимые значение: *realmd_sssd,realmd_winbind,samba,none
## DOMAIN[client]=realmd_sssd
## Клиент для подключения к домену [ *realmd_sssd|realmd_winbind|samba|none ]
## DOMAIN[dns]=<ip_address>
## <ip_address> # IP адрес сервера DNS, который имеет информацию о домене. При наличии нескольких DNS или разных DNS в сети.
## DOMAIN[dns]=192.168.1.1
## Пользователь имеющий права ввода в домен.
## Применяется, если необходимо автоматизировать ввод в домен с большого числа ПК, или при работе в режиме полной песочницы, где невозможно сохранить
## Пароль кодировать в base64: echo 'password' | base64
@ -1154,8 +1165,27 @@ NSSWITCHWINBIND=yes
#XFCE4_KIOSK[xfdesktop:CustomizeWindowlist]=NONE
#XFCE4_KIOSK[xfdesktop:CustomizeDesktopIcons]=@wheel
## Назначить настройки XFCE4 по умолчанию
#XFCE4_KIOSK_DEFAULT="user-1,user-2"
## Назначить настройки киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_LOCKED=disable
## disable # Снять все ограничения
## XFCE4_KIOSK_USER_LOCKED=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =* # Все пользователи
## =@whell;@users # Указанные группы
## =superadmin;user-1 # Указанным пользователям
## =@wheel;user-1 # Указанным группам и пользователям
## XFCE4_KIOSK_USER_LOCKED="*"
## Назначить исключения настроек киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_UNLOCKED=disable
## disable # Снять все ограничения
## XFCE4_KIOSK_USER_UNLOCKED=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =* # Все пользователи
## =@whell;@users # Указанные группы
## =superadmin;user-1 # Указанным пользователям
## =@wheel;user-1 # Указанным группам и пользователям
## XFCE4_KIOSK_USER_UNLOCKED="root,@wheel"
## Назначить настройки XFCE4 через xfconf-query
## XFCE4_XFCONF[<users>,<@groups>:<channel>:<property>]=<type>:<value>

Loading…
Cancel
Save