diff --git a/locale/ublinux-init-02-journald-notify.pot b/locale/ublinux-init-02-journald-notify.pot index 40a11fc..ed5d071 100644 --- a/locale/ublinux-init-02-journald-notify.pot +++ b/locale/ublinux-init-02-journald-notify.pot @@ -1,7 +1,7 @@ -# Language translations for ublinux-init package and 02-journald-notify script. +# Language translations for ublinux-init package and '02-journald-notify' script. # Copyright (C) 2025, UBTech LLC -# This file is distributed under the same license as the ublinux-init package. -# UBLinux Team , 2025 +# This file is distributed under the same license as the 'ublinux-init' package. +# UBLinux , 2025 # #, fuzzy msgid "" @@ -10,8 +10,8 @@ msgstr "" "Report-Msgid-Bugs-To: support@ublinux.com\n" "POT-Creation-Date: 2025-01-01 00:00+0600\n" "PO-Revision-Date: 2025-01-01 00:00+0600\n" -"Last-Translator: UBLinux Team \n" -"Language-Team: UBLinux Team \n" +"Last-Translator: UBLinux \n" +"Language-Team: UBLinux \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/locale/ublinux-init-02-journald-notify_ru.po b/locale/ublinux-init-02-journald-notify_ru.po index e16a30e..ebd6454 100644 --- a/locale/ublinux-init-02-journald-notify_ru.po +++ b/locale/ublinux-init-02-journald-notify_ru.po @@ -1,17 +1,17 @@ -# Russian translations for ublinux-init package and 02-journald-notify script. +# Russian translations for ublinux-init package and '02-journald-notify' script. # Copyright (C) 2025, UBTech LLC -# This file is distributed under the same license as the ublinux-init package. -# UBLinux Team , 2025 +# This file is distributed under the same license as the 'ublinux-init' package. +# UBLinux , 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: ublinux-init-02-journald-notify 1.0\n" "Report-Msgid-Bugs-To: support@ublinux.com\n" -"POT-Creation-Date: 2025-04-25 15:27+0600\n" -"PO-Revision-Date: 2025-02-22 23:28+0600\n" +"POT-Creation-Date: 2025-01-01 00:00+0600\n" +"PO-Revision-Date: 2025-01-01 00:00+0600\n" "Last-Translator: ublinux \n" -"Language-Team: Russian - UBLinux Team \n" +"Language-Team: Russian - UBLinux \n" "Language: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/locale/ublinux-init-10-accounts.pot b/locale/ublinux-init-10-accounts.pot new file mode 100644 index 0000000..6f8a66f --- /dev/null +++ b/locale/ublinux-init-10-accounts.pot @@ -0,0 +1,22 @@ +# Language translations for ublinux-init package and '10-accounts' script. +# Copyright (C) 2025, UBTech LLC +# This file is distributed under the same license as the 'ublinux-init' package. +# UBLinux , 2025 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ublinux-init-10-accounts 1.0\n" +"Report-Msgid-Bugs-To: support@ublinux.com\n" +"POT-Creation-Date: 2025-01-01 00:00+0600\n" +"PO-Revision-Date: 2025-01-01 00:00+0600\n" +"Last-Translator: UBLinux \n" +"Language-Team: UBLinux \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "Administrator" +msgstr "" + diff --git a/locale/ublinux-init-10-accounts_ru.po b/locale/ublinux-init-10-accounts_ru.po new file mode 100644 index 0000000..d08e603 --- /dev/null +++ b/locale/ublinux-init-10-accounts_ru.po @@ -0,0 +1,22 @@ +# Russian translations for ublinux-init package and '10-accounts' script. +# Copyright (C) 2025, UBTech LLC +# This file is distributed under the same license as the 'ublinux-init' package. +# UBLinux , 2025 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ublinux-init-10-accounts 1.0\n" +"Report-Msgid-Bugs-To: support@ublinux.com\n" +"POT-Creation-Date: 2025-01-01 00:00+0600\n" +"PO-Revision-Date: 2025-01-01 00:00+0600\n" +"Last-Translator: ublinux \n" +"Language-Team: Russian - UBLinux \n" +"Language: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "Administrator" +msgstr "Администратор" + diff --git a/locale/ublinux-init-eula.pot b/locale/ublinux-init-eula.pot index 4898cd7..8614312 100644 --- a/locale/ublinux-init-eula.pot +++ b/locale/ublinux-init-eula.pot @@ -1,6 +1,6 @@ -# Russian translations for ublinux-init package and EULA. +# Russian translations for 'ublinux-init' package and EULA. # Copyright (C) 2025, UBSoft, Inc -# This file is distributed under the same license as the ublinux-init package. +# This file is distributed under the same license as the 'ublinux-init' package. # UBLinux , 2025 # #, fuzzy diff --git a/locale/ublinux-init-eula_ru.po b/locale/ublinux-init-eula_ru.po index db75281..3f805c1 100644 --- a/locale/ublinux-init-eula_ru.po +++ b/locale/ublinux-init-eula_ru.po @@ -1,6 +1,6 @@ -# Russian translations for ublinux-init package and EULA. +# Russian translations for 'ublinux-init' package and EULA. # Copyright (C) 2025, UBTech, Inc -# This file is distributed under the same license as the ublinux-init package. +# This file is distributed under the same license as the 'ublinux-init' package. # UBLinux , 2025 # #, fuzzy diff --git a/locale/ublinux-init-grub-functions.pot b/locale/ublinux-init-grub-functions.pot index a49c7b8..58b8de4 100644 --- a/locale/ublinux-init-grub-functions.pot +++ b/locale/ublinux-init-grub-functions.pot @@ -1,6 +1,6 @@ -# Language translations for ublinux-init package and grub-functions script. +# Language translations for ublinux-init package and 'grub-functions' script. # Copyright (C) 2025, UBTech LLC -# This file is distributed under the same license as the ublinux-init package. +# This file is distributed under the same license as the 'ublinux-init' package. # UBLinux , 2025 # #, fuzzy diff --git a/locale/ublinux-init-grub-functions_ru.po b/locale/ublinux-init-grub-functions_ru.po index 64cc8e7..b725cd6 100644 --- a/locale/ublinux-init-grub-functions_ru.po +++ b/locale/ublinux-init-grub-functions_ru.po @@ -1,6 +1,6 @@ -# Russian translations for ublinux-init package and grub-functions script. +# Russian translations for ublinux-init package and 'grub-functions' script. # Copyright (C) 2025, UBTech LLC -# This file is distributed under the same license as the ublinux-init package. +# This file is distributed under the same license as the 'ublinux-init' package. # UBLinux , 2025 # #, fuzzy diff --git a/locale/ublinux-init-license.pot b/locale/ublinux-init-license.pot index 30fd3b8..b80c033 100644 --- a/locale/ublinux-init-license.pot +++ b/locale/ublinux-init-license.pot @@ -1,6 +1,6 @@ -# Language translations for ublinux-init package and LICENSE. +# Language translations for 'ublinux-init' package and LICENSE. # Copyright (C) 2025, UBSoft, Inc -# This file is distributed under the same license as the ublinux-init package. +# This file is distributed under the same license as the 'ublinux-init' package. # UBLinux , 2025 # #, fuzzy diff --git a/locale/ublinux-init-license_ru.po b/locale/ublinux-init-license_ru.po index 0900b5a..43addf9 100644 --- a/locale/ublinux-init-license_ru.po +++ b/locale/ublinux-init-license_ru.po @@ -1,6 +1,6 @@ -# Russian translations for ublinux-init package and LICENSE. +# Russian translations for 'ublinux-init' package and LICENSE. # Copyright (C) 2025, UBSoft, Inc -# This file is distributed under the same license as the ublinux-init package. +# This file is distributed under the same license as the 'ublinux-init' package. # UBLinux , 2025 # #, fuzzy diff --git a/ublinux/functions b/ublinux/functions index 151a6b4..5772bdb 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -1069,7 +1069,7 @@ ubconfig_exec_system(){ return 0 2>/dev/null && return 0 [[ -d ${SSC_EXTRACT_DIR} ]] && rm -rf "${SSC_EXTRACT_DIR}" - [[ -n ${SSC_ARGV0} ]] && { [[ -f /usr/bin/bash && && /usr/bin/bash --version | grep -q ^"GNU bash" || exit 1; } + [[ -n ${SSC_ARGV0} ]] && { [[ -f /usr/bin/bash ]] && /usr/bin/bash --version | grep -q ^"GNU bash" || exit 1; } [[ -z ${SELF_FILE} ]] && [[ -n ${SSC_ARGV0} ]] && SELF_FILE=${SSC_ARGV0} && SELF_NAME=${SSC_ARGV0##*/} && SELF_PATH=${SSC_ARGV0%/*} || { SELF_FILE=${0} && SELF_NAME=${0##*/} && SELF_PATH=${0%/*}; } [[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; } SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 diff --git a/ublinux/rc.desktop/deonly/plank b/ublinux/rc.desktop/deonly/plank index af90786..a622f12 100755 --- a/ublinux/rc.desktop/deonly/plank +++ b/ublinux/rc.desktop/deonly/plank @@ -12,6 +12,7 @@ ENABLED=yes 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##*/} + [[ -n ${SSC_ARGV0} ]] && SELF_FILE=${SSC_ARGV0} && SELF_NAME=${SSC_ARGV0##*/} && SELF_PATH=${SSC_ARGV0%/*} || { SELF_FILE=${0} && SELF_NAME=${0##*/} && SELF_PATH=${0%/*}; } + NAME_EXEC=${SELF_NAME} which ${NAME_EXEC} >/dev/null 2>&1 || exit 0 [[ ${START_PLANK} == "yes" ]] && ${NAME_EXEC} & diff --git a/ublinux/rc.halt.pre/20-grub b/ublinux/rc.halt.pre/20-grub index d07d19f..9ae2f56 100755 --- a/ublinux/rc.halt.pre/20-grub +++ b/ublinux/rc.halt.pre/20-grub @@ -32,18 +32,18 @@ control_grub_var_cfg(){ local STR_SET_VALUE=${2} local STR_EXPORT=${3} if [[ -n ${STR_SET_VALUE} ]]; then - grep -q "${STR_EXPORT}" ${FILE_GRUB_VAR_USER} 2>/dev/null || echo -e "${STR_EXPORT}" >> ${FILE_GRUB_VAR_USER} - if ! grep -q "^\s*$(ere_quote_grep "${STR_SET}${STR_SET_VALUE}")\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - local QUOTA + grep -q "^[[:blank:]]*${STR_EXPORT}" ${FILE_GRUB_VAR_USER} 2>/dev/null || echo -e "${STR_EXPORT}" >> ${FILE_GRUB_VAR_USER} + if ! grep -q "^[[:blank:]]*$(ere_quote_grep "${STR_SET}${STR_SET_VALUE}")[[:blank:]]*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + local QUOTA= [[ ${STR_SET_VALUE} =~ " " ]] && QUOTA="\"" - if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed -E "s/^\s*(${STR_SET}).*/\1$(ere_quote_sed "${QUOTA}${STR_SET_VALUE}${QUOTA}")/" -i ${FILE_GRUB_VAR_USER} + if grep -q "^[[:blank:]]*${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed -E "s/^[[:blank:]]*(${STR_SET}).*/\1$(ere_quote_sed "${QUOTA}${STR_SET_VALUE}${QUOTA}")/" -i ${FILE_GRUB_VAR_USER} else - sed -E "/${STR_EXPORT}/i$(ere_quote_sed "${STR_SET}${QUOTA}${STR_SET_VALUE}${QUOTA}")" -i ${FILE_GRUB_VAR_USER} + sed -E "/^[[:blank:]]*${STR_EXPORT}/i$(ere_quote_sed "${STR_SET}${QUOTA}${STR_SET_VALUE}${QUOTA}")" -i ${FILE_GRUB_VAR_USER} fi fi - elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed "/^\s*${STR_SET}.*/d; /^\s*${STR_EXPORT}\s*$/d" -i ${FILE_GRUB_VAR_USER} + elif grep -q "^[[:blank:]]*${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed "/^[[:blank:]]*${STR_SET}.*/d; /^[[:blank:]]*${STR_EXPORT}[[:blank:]]*$/d" -i ${FILE_GRUB_VAR_USER} fi } exec_grub_lang(){ @@ -91,9 +91,9 @@ exec_grub_password(){ STR_SET_VALUE=$(echo -e "${STR_SET_VALUE}\n${STR_SET_VALUE}" | grub-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}') ubconfig --noexecute set boot GRUB_PASSWORD[${NAME_USER}]=${STR_SET_VALUE} fi - if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if ! grep -q "^[[:blank:]]*${STR_SET}${STR_SET_VALUE}$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + sed -E "s/^[[:blank:]]*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} else echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} fi @@ -101,10 +101,10 @@ exec_grub_password(){ done # Проверка по файлу ${FILE_GRUB_VAR_USER}, если пароль на пользователя присутствует, но его нет в конфигурации, то удалить из ${FILE_GRUB_VAR_USER} while read -r NAME_USER; do - [[ -n ${GRUB_PASSWORD[${NAME_USER}]} ]] || sed "/^\s*password_pbkdf2 ${NAME_USER}.*/d" -i ${FILE_GRUB_VAR_USER} - done < <(sed -En "s/^\s*password_pbkdf2 (.*) .*/\1/p" ${FILE_GRUB_VAR_USER}) - elif grep -q "^\s*password_pbkdf2" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed "/^\s*password_pbkdf2.*/d" -i ${FILE_GRUB_VAR_USER} + [[ -n ${GRUB_PASSWORD[${NAME_USER}]} ]] || sed "/^[[:blank:]]*password_pbkdf2 ${NAME_USER}.*/d" -i ${FILE_GRUB_VAR_USER} + done < <(sed -En "s/^[[:blank:]]*password_pbkdf2 (.*) .*/\1/p" ${FILE_GRUB_VAR_USER}) + elif grep -q "^[[:blank:]]*password_pbkdf2" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed "/^[[:blank:]]*password_pbkdf2.*/d" -i ${FILE_GRUB_VAR_USER} fi } exec_grub_boot_silent(){ @@ -117,20 +117,20 @@ exec_grub_terminal_input(){ [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TERMINAL_INPUT}" STR_SET="terminal_input " if [[ -n ${STR_SET_VALUE} ]]; then - if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if ! grep -q "^[[:blank:]]*${STR_SET}${STR_SET_VALUE}[[:blank:]]*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + sed -E "s/^[[:blank:]]*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} else echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} fi if [[ ${STR_SET_VALUE} =~ "serial" ]]; then - grep -q "^\s*serial\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null || sed "/${STR_SET}/iserial" -i ${FILE_GRUB_VAR_USER} + grep -q "^[[:blank:]]*serial[[:blank:]]*$" ${FILE_GRUB_VAR_USER} 2>/dev/null || sed "/${STR_SET}/iserial" -i ${FILE_GRUB_VAR_USER} else - grep -q "^\s*serial\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null && sed "/^serial$/d" -i ${FILE_GRUB_VAR_USER} + grep -q "^[[:blank:]]*serial[[:blank:]]*$" ${FILE_GRUB_VAR_USER} 2>/dev/null && sed "/^serial$/d" -i ${FILE_GRUB_VAR_USER} fi fi elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed "/^\s*${STR_SET}.*/d; /^\s*serial\s*$/d" -i ${FILE_GRUB_VAR_USER} + sed "/^[[:blank:]]*${STR_SET}.*/d; /^[[:blank:]]*serial[[:blank:]]*$/d" -i ${FILE_GRUB_VAR_USER} fi } exec_grub_terminal_output(){ @@ -138,15 +138,15 @@ exec_grub_terminal_output(){ [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TERMINAL_OUTPUT}" STR_SET="terminal_output " if [[ -n ${STR_SET_VALUE} ]]; then - if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if ! grep -q "^[[:blank:]]*${STR_SET}${STR_SET_VALUE}[[:blank:]]*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + sed -E "s/^[[:blank:]]*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} else echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} fi fi elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed "/^\s*${STR_SET}.*/d" -i ${FILE_GRUB_VAR_USER} + sed "/^[[:blank:]]*${STR_SET}.*/d" -i ${FILE_GRUB_VAR_USER} fi } exec_grub_play(){ @@ -154,15 +154,15 @@ exec_grub_play(){ [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_PLAY}" STR_SET="play " if [[ -n ${STR_SET_VALUE} ]]; then - if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if ! grep -q "^[[:blank:]]*${STR_SET}${STR_SET_VALUE}[[:blank:]]*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + sed -E "s/^[[:blank:]]*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} else echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} fi fi elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then - sed "/^\s*${STR_SET}.*/d" -i ${FILE_GRUB_VAR_USER} + sed "/^[[:blank:]]*${STR_SET}.*/d" -i ${FILE_GRUB_VAR_USER} fi } exec_grub_cmdline_linux(){ diff --git a/ublinux/rc.local.d/40-pacman b/ublinux/rc.local.d/40-pacman index 39cec9e..1b9b4c4 100755 --- a/ublinux/rc.local.d/40-pacman +++ b/ublinux/rc.local.d/40-pacman @@ -22,9 +22,30 @@ exec_01_init_pacman_gpg(){ } exec_02_install_pkg_tar(){ - find /memory/layer-base/*/install -maxdepth 1 -type f -name "*.pkg.tar.*" -exec pacman -U --noprogressbar --noconfirm {} + 2>/dev/null + #find /memory/layer-base/*/install -maxdepth 1 -type f -name "*.pkg.tar.*" -exec pacman -U --noprogressbar --noconfirm {} + 2>/dev/null + local FIND_PATH="/memory/layer-base/*/install" + local FIND_PATH_ONCE="/memory/layer-base/*/install/once" + local FIND_PKG_TAR=$(find ${FIND_PATH} ${FIND_PATH_ONCE} -maxdepth 1 -type f -name "*.pkg.tar.*" -print 2>/dev/null) + if [[ -n ${FIND_PKG_TAR} ]]; then + pacsync --updated + pacinstall --yolo --file ${FIND_PKG_TAR} + fi } +exec_03_remove_once_pkg_tar(){ + local FIND_PATH="/memory/layer-base/*/install/once" + local PKG_TAR_REMOVE= + while IFS= read -ru3 -d '' SELECT_PKG_TAR; do + [[ ${SELECT_PKG_TAR} =~ .*\/(.+)-([^-]*)-([^-]*)-(i686|x86_64|any)\.pkg\.tar\.(gz|xz|zst)$ ]] && paccheck --quiet --files ${BASH_REMATCH[1]} && PKG_TAR_REMOVE=yes || PKG_TAR_REMOVE= + if [[ -n ${PKG_TAR_REMOVE} ]]; then + rm -fv ${SELECT_PKG_TAR} + else + echo "WARNING: Package file '${SELECT_PKG_TAR}' not remove" + fi + done 3< <(find ${FIND_PATH} -maxdepth 1 -type f -name "*.pkg.tar.*" -print0 2>/dev/null) +} + + ################ ##### MAIN ##### ################ @@ -32,5 +53,6 @@ exec_02_install_pkg_tar(){ # Если файл подключен как ресурс с функциями, то выйти return 0 2>/dev/null && return 0 - exec_01_init_pacman_gpg $@ & - exec_02_install_pkg_tar $@ & + exec_01_init_pacman_gpg $@ + exec_02_install_pkg_tar $@ + exec_03_remove_once_pkg_tar $@ diff --git a/ublinux/rc.pamsession.d/02-journald-notify b/ublinux/rc.pamsession.d/02-journald-notify index 2c84c75..002782a 100755 --- a/ublinux/rc.pamsession.d/02-journald-notify +++ b/ublinux/rc.pamsession.d/02-journald-notify @@ -149,7 +149,7 @@ exec_01_journald_notify(){ [[ ${TYPE} == "--facility" ]] && { [[ ${TYPE_VALUE,,} == @(0|kern|1|user|2|mail|3|daemon|4|auth|5|syslog|6|lpr|7|news|8|uucp|9|10|authpriv|11|ftp|12|13|14|15|cron|16|local0|17|local1|18|local2|19|local3|20|local4|21|local5|22|local6|23|local7) ]] || continue; } [[ -n ${PRIORITY} && ${PRIORITY} == @(0|emerg|1|alert|2|crit|3|err|4|warning|5|notice|6|info|7|debug) ]] && PRIORITY="--priority ${PRIORITY}" FILTER=${JOURNALD_NOTIFY[${SELECT_JOURNALD_NOTIFY}]} - pkill -f "/usr/lib/ublinux/rc.pamsession.d/02-journald-notify ubconfig_journald_notify_live ${TYPE} ${TYPE_VALUE} ${PRIORITY} ${OPTIONS} ${FILTER}" + pkill -f "ubconfig_journald_notify_live ${TYPE} ${TYPE_VALUE} ${PRIORITY} ${OPTIONS} ${FILTER}" setsid -f /usr/lib/ublinux/rc.pamsession.d/02-journald-notify ubconfig_journald_notify_live "${TYPE}" "${TYPE_VALUE}" "${PRIORITY}" "${OPTIONS}" "${FILTER}" if [[ ${FILTER} =~ (^|,)"ip@conflict"(,|$) ]]; then # Включить таймаут обнаружения конфликтов IP на всех сетевых интерфейсах @@ -175,7 +175,7 @@ exec_01_journald_notify(){ [[ ${TYPE} == "--facility" ]] && { [[ ${TYPE_VALUE,,} == @(0|kern|1|user|2|mail|3|daemon|4|auth|5|syslog|6|lpr|7|news|8|uucp|9|10|authpriv|11|ftp|12|13|14|15|cron|16|local0|17|local1|18|local2|19|local3|20|local4|21|local5|22|local6|23|local7) ]] || continue; } [[ -n ${PRIORITY} && ${PRIORITY} == @(0|emerg|1|alert|2|crit|3|err|4|warning|5|notice|6|info|7|debug) ]] && PRIORITY="--priority ${PRIORITY}" FILTER=${JOURNALD_NOTIFY[${SELECT_JOURNALD_NOTIFY}]} - pkill -f "/usr/lib/ublinux/rc.pamsession.d/02-journald-notify ubconfig_journald_notify_live ${TYPE} ${TYPE_VALUE} ${PRIORITY} ${OPTIONS} ${FILTER}" + pkill -f "ubconfig_journald_notify_live ${TYPE} ${TYPE_VALUE} ${PRIORITY} ${OPTIONS} ${FILTER}" if [[ ${FILTER} =~ (^|,)"ip@conflict"(,|$) ]]; then # Выключить таймаут обнаружения конфликтов IP на всех сетевых интерфейсах [[ ${NETWORK[all@connmod]} =~ "ipv4.dad-timeout -1" ]] && ubconfig --quiet --target system set [network] NETWORK[all@connmod]-="ipv4.dad-timeout -1" @@ -188,7 +188,7 @@ ubconfig_journald_notify_live(){ local TYPE=$1 TYPE_VALUE=$2 PRIORITY=$3 OPTIONS=$4 FILTER=$5 NOTIFY_ICON="--icon dialog-information --urgency=normal" init(){ - export TEXTDOMAIN="ublinux-init-${0##*/}" + export TEXTDOMAIN="ublinux-init-${SELF_NAME}" export TEXTDOMAINDIR="${PATH_ROOT}/usr/share/locale" } i18n(){ @@ -265,6 +265,7 @@ ubconfig_journald_notify_live(){ # Если файл подключен как ресурс с функциями, то выйти return 0 2>/dev/null && return 0 + [[ -n ${SSC_ARGV0} ]] && SELF_FILE=${SSC_ARGV0} && SELF_NAME=${SSC_ARGV0##*/} && SELF_PATH=${SSC_ARGV0%/*} || { SELF_FILE=${0} && SELF_NAME=${0##*/} && SELF_PATH=${0%/*}; } if [[ -z $@ ]]; then while read -r FUNCTION; do $"${FUNCTION##* }" diff --git a/ublinux/rc.pamsession.d/04-user-locale b/ublinux/rc.pamsession.d/04-user-locale index 7b873b7..7f4dbff 100755 --- a/ublinux/rc.pamsession.d/04-user-locale +++ b/ublinux/rc.pamsession.d/04-user-locale @@ -67,12 +67,12 @@ get_fullname_lang(){ echo "${BASH_REMATCH[2]}" elif [[ ${SUPPORTED} =~ ($'\n'|^)("${NEWLANG,,}_"[:A-Z:]+)" ".*($'\n'|$) ]]; then echo "${BASH_REMATCH[2]}" - else + else echo "en_US.UTF-8" fi } -## При после авторизации пользователя проверяем праметр в USERADD[*] --land у текужего пользователя, если задан, +## При после авторизации пользователя проверяем праметр в USERADD[*] --land у текужего пользователя, если задан, ## то под указанную локал создаём файл "${HOME}/.config/locale.conf" exec_01_user_locale(){ [[ -n $1 ]] && SELECT_USERNAME="$1" diff --git a/ublinux/rc.preinit/10-accounts b/ublinux/rc.preinit/10-accounts index 1ab6080..4c96a8b 100755 --- a/ublinux/rc.preinit/10-accounts +++ b/ublinux/rc.preinit/10-accounts @@ -44,6 +44,16 @@ shopt -s extglob DEFAULT_HOME_USER="/home" NAME_REGEX="^[a-z_][-a-z0-9_]*\$" +init(){ + export TEXTDOMAIN="ublinux-init-${SELF_NAME}" + export TEXTDOMAINDIR="${PATH_ROOT}/usr/share/locale" +} +i18n(){ + local KEY="$1" + shift + printf "$(gettext -s "${KEY}")" "$@" +} + ##################################################################################### ### ### Функции управления пользователями и группами с помощью тектовых процессоров ### @@ -99,7 +109,7 @@ user_add(){ [[ ${DATA_FILE_LOGINDEFS} =~ ($'\n'|^)+PASS_MIN_DAYS[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && local DEFAULT_MINDAY=${BASH_REMATCH[2]:-0} [[ ${DATA_FILE_LOGINDEFS} =~ ($'\n'|^)+PASS_WARN_AGE[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && local DEFAULT_WARN=${BASH_REMATCH[2]:-7} get_free_uid(){ - local PARAM="$@" + local PARAM="$@" local UID_MIN= UID_MAX= UID_NEW= if [[ ${PARAM} == "@system" ]]; then # Свободный номер системного списка группы @@ -509,7 +519,7 @@ group_del(){ local DATA_FILE_GROUP=$(< ${FILE_GROUP}) local FILE_PASSWD="${ROOTFS}/etc/passwd" local DATA_FILE_PASSWD=$(< ${FILE_PASSWD}) - local PARAM="$@" + local PARAM="$@" local SELECT_GROUPNAME= SELECT_GID= NULL= IFS=: read -r SELECT_GROUPNAME SELECT_GID NULL <<< "${PARAM}" local VOL_FILEG_PLAINPASSWORD= VOL_FILEG_GID= VOL_FILEG_MEMBERS= @@ -709,13 +719,25 @@ create_home(){ [[ -n ${SELECT_USERNAME} && -n ${SELECT_GROUP} && -n ${SELECT_HOME} ]] || return 1 if [[ -d "${ROOTFS}${SELECT_HOME}" ]]; then if [[ -n ${SELECT_FORCESKEL} ]]; then - cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${SELECT_HOME}" [[ -e "${ROOTFS}${SELECT_HOME}/.cache" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.cache" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/autostart" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/autostart" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/dconf" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/dconf" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/gtk-3.0" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/gtk-3.0" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/gtk-4.0" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/gtk-4.0" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/KDE" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/KDE" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/kde.org" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/kde.org" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/kdedefaults" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/kdedefaults" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/menus" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/menus" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/session" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/session" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/xfce4" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/xfce4" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/xsettingsd" ]] && rm -rf "${ROOTFS}${SELECT_HOME}/.config/xsettingsd" + [[ -e "${ROOTFS}${SELECT_HOME}/.config/" ]] && rm -rf "${ROOTFS}${SELECT_HOME}"/.config/ubl-settings-* + cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${SELECT_HOME}" ${CMD_CHROOT} bash -c "cd /etc/skel && find . -exec chown -fh ${SELECT_USERNAME}:${SELECT_GROUP} ${SELECT_HOME}/{} \;" ${CMD_CHROOT} /usr/bin/chown -fh ${SELECT_USERNAME}:${SELECT_GROUP} "${SELECT_HOME}" ${CMD_CHROOT} /usr/bin/chmod -f u+rw,g-rwx,o-rwx "${SELECT_HOME}" fi - else + else ${CMD_CHROOT} install -dm700 -o ${SELECT_USERNAME} -g ${SELECT_GROUP} "${SELECT_HOME}" cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${SELECT_HOME}" ${CMD_CHROOT} /usr/bin/chown -fhRP ${SELECT_USERNAME}:${SELECT_GROUP} "${SELECT_HOME}" @@ -949,7 +971,7 @@ exec_05_neededusers(){ [[ ${PARAM} =~ ^[[:alnum:]_]+("="|"[".*"]=") ]] && eval "${PARAM%%=*}=\${PARAM#*=}" fi # Если по умолчанию нет ни одного пользователя, то создаём администратора - #[[ -z ${NEEDEDUSERS} ]] && NEEDEDUSERS="${DEFAULTUSER}:${ADMUID}:${DEFAULTPASSWD}:Administrator" + #[[ -z ${NEEDEDUSERS} ]] && NEEDEDUSERS="${DEFAULTUSER}:${ADMUID}:${DEFAULTPASSWD}:$(i18n "Administrator")" [[ -n ${ROOTFS} ]] && { [[ -z $(cmdline_value users) ]] || NEEDEDUSERS=$(cmdline_value users); } [[ ${NOSECUREROOTPASSWD} == ${DEFAULTROOTPASSWD} ]] && ADDADM=yes if [[ -n ${NEEDEDUSERS} ]]; then @@ -1078,8 +1100,7 @@ exec_06_useradd(){ [[ ${SELECT_USERNAME} != "" ]] && USERADD[${SELECT_USERNAME}]=":${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUP}::${SELECT_PASSWORD}" done 3< <(tr ';' '\n' <<< $(cmdline_value useradd)) if [[ ${#USERADD[@]} == 0 ]]; then - local DEFAULTUSER_GECOS="Administrator" - [[ ${LANG} =~ "ru_RU" ]] && DEFAULTUSER_GECOS="Администратор" + local DEFAULTUSER_GECOS=$(i18n "Administrator") USERADD[${DEFAULTUSER}]="${DEFAULTUSER_GECOS}:${ADMUID}::::${DEFAULTPASSWD}" fi if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then @@ -1451,10 +1472,12 @@ exec_99_dm_hint_password(){ ################ ##### MAIN ##### ################ - + # Если файл подключен как ресурс с функциями, то выйти return 0 2>/dev/null && return 0 #rm -f "${FILE_ROOT_USERS}" + [[ -n ${SSC_ARGV0} ]] && SELF_FILE=${SSC_ARGV0} && SELF_NAME=${SSC_ARGV0##*/} && SELF_PATH=${SSC_ARGV0%/*} || { SELF_FILE=${0} && SELF_NAME=${0##*/} && SELF_PATH=${0%/*}; } + init if [[ -z $@ ]]; then while read -r FUNCTION; do $"${FUNCTION##* }" diff --git a/ublinux/scripts/printers_setup b/ublinux/scripts/printers_setup index 743e19b..2290e10 100755 --- a/ublinux/scripts/printers_setup +++ b/ublinux/scripts/printers_setup @@ -17,8 +17,6 @@ ## sys/devices/pci0000:00/0000:00:14.0/usb1/1-8 ## -[[ -f /usr/bin/bash ]] && /usr/bin/bash --version | grep -q ^"GNU bash" || exit 1 - LIST_PPD=$(cat </dev/null)" DEV_IDPRODUCT="$(cat /${DEVNAME}/../idProduct)" @@ -48,14 +46,14 @@ init_printer(){ done # PRINTER_LP="/dev/$(cat /${DEVNAME}/usbmisc/*/uevent | grep DEVNAME | cut -d= -f2)" PRINTER_LP="/dev/usb/${PRINTER_LP}" - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : init_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : init_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" [[ ${PRINTER_CLS} == "PRINTER" ]] || exit 1 [[ -z ${PRINTER_NAME} ]] && exit 1 # PATH_LOG="/tmp/printer-${DEV_SERIAL}.log" } add_printer(){ - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : add_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : add_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" # echo "${LIST_PPD}" | while read STR_PRINTER; do # if [[ ${PRINTER_MDL} == $(echo ${STR_PRINTER} | cut -d":" -f1) ]]; then # NAME_URI=$(lpinfo -v | grep "direct" | grep "${DEV_SERIAL}" | cut -d" " -f2 | head -1) @@ -65,7 +63,7 @@ add_printer(){ # done if [[ ${PRINTER_CMD} == "CAPT" ]]; then # /usr/bin/bash -c "${PATH_SETUP_CAPT} ${DEVNAME} ${ACTION}" - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : Forward to CAPT script : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : Forward to CAPT script : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" /usr/lib/ublinux/scripts/printers_setup_capt ${ACTION} ${DEVNAME} else # NAME_URI=$(lpinfo -v | grep "direct" | grep "usb:" | grep "${DEV_SERIAL}" | cut -d" " -f2 | head -1) @@ -87,7 +85,7 @@ add_printer(){ cupsaccept -E "${PRINTER_NAME}" echo "export PRINTER=\"${PRINTER_NAME}\"" > /etc/profile.d/ublinux-default-printer.sh echo "export LPDEST=\"${PRINTER_NAME}\"" >> /etc/profile.d/ublinux-default-printer.sh - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : end add_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : end add_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" fi } @@ -105,7 +103,7 @@ remove_printer(){ cupsreject -E "${PRINTER_NAME}" 2>/dev/null # lpadmin -x "${PRINTER_NAME}" 2>/dev/null grep -q "${PRINTER_NAME}" /etc/profile.d/ublinux-default-printer.sh 2>/dev/null && rm -f /etc/profile.d/ublinux-default-printer.sh - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : remove_printer : ${ACTION} : ${DEVNAME} : ${PRINTER_NAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : remove_printer : ${ACTION} : ${DEVNAME} : ${PRINTER_NAME}" fi done <<< "$(LC_ALL=en_US.UTF-8 lpstat -v 2>/dev/null | grep "device for" | sed "s/device for //")" } @@ -114,11 +112,12 @@ remove_printer(){ ### ::: M A I N ::: ### ############################### + [[ -n ${SSC_ARGV0} ]] && { [[ -f /usr/bin/bash ]] && /usr/bin/bash --version | grep -q ^"GNU bash" || exit 1; } [[ -d ${SSC_EXTRACT_DIR} ]] && rm -rf "${SSC_EXTRACT_DIR}" - [[ -n ${SSC_ARGV0} ]] && PKGNAME=${SSC_ARGV0##*/} && PKGPATH=${SSC_ARGV0%/*} || { PKGNAME=${0##*/} && PKGPATH=${0%/*}; } + [[ -z ${SELF_FILE} ]] && [[ -n ${SSC_ARGV0} ]] && SELF_FILE=${SSC_ARGV0} && SELF_NAME=${SSC_ARGV0##*/} && SELF_PATH=${SSC_ARGV0%/*} || { SELF_FILE=${0} && SELF_NAME=${0##*/} && SELF_PATH=${0%/*}; } # Проверка на суперпользователя - #[[ $USER != 'root' ]] && exec sudo "${PKGNAME}" + #[[ $USER != 'root' ]] && exec sudo "${SELF_NAME}" PATH_SETUP_CAPT="/usr/lib/ublinux/scripts/printers_setup_capt" PATH_LOG="/var/log/cups/printers_setup.log" @@ -131,7 +130,7 @@ remove_printer(){ [[ -z ${DEVNAME} ]] && DEVNAME=$2 ([[ -z ${DEVNAME} || -z ${ACTION} ]]) && exit 0 echo; echo "-------------------------------------------------------------------------------------------------------------------" - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : Start : ${ACTION} : ${DEVNAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : Start : ${ACTION} : ${DEVNAME}" case "${ACTION}" in add) @@ -141,11 +140,11 @@ remove_printer(){ ;; remove) # echo "${DEVNAME}" -# echo ${PKGNAME} $@ called by $PPID +# echo ${SELF_NAME} $@ called by $PPID remove_printer ;; esac - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : Finish : ${ACTION} : ${DEVNAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : Finish : ${ACTION} : ${DEVNAME}" diff --git a/ublinux/scripts/printers_setup_capt b/ublinux/scripts/printers_setup_capt index 5cc4ff7..dc36cce 100755 --- a/ublinux/scripts/printers_setup_capt +++ b/ublinux/scripts/printers_setup_capt @@ -17,11 +17,10 @@ ## sys/devices/pci0000:00/0000:00:14.0/usb1/1-8 ## -[[ -f /usr/bin/bash ]] && /usr/bin/bash --version | grep -q ^"GNU bash" || exit 1 init_printer(){ 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') : ${PKGNAME} : ${ACTION} : ERROR : Not found DEVICE ${DEVNAME}"; [[ -z "${DEVNAME}" ]] && exit 1 + [[ -z "${DEVNAME}" ]] && echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : ${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)" @@ -40,7 +39,7 @@ init_printer(){ # PRINTER_LP="/dev/$(cat /${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') : ${PKGNAME} : init_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : init_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}" [[ ${PRINTER_MDL} ]] || exit 1 [[ ${PRINTER_CLS} == "PRINTER" ]] || exit 1 [[ ${PRINTER_CMD} == "CAPT" ]] || exit 1 @@ -49,28 +48,28 @@ init_printer(){ } auto_detect_capt_lp(){ - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : auto_detect_lp" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : auto_detect_lp" for DEV_LP in /dev/usb/lp*; do INFODEV="$(udevadm info -a -n ${DEV_LP} 2>/dev/null)" DEV_IEEE1284_ID="$(echo "${INFODEV}" | grep ATTRS{ieee1284_id} | head -1 | grep -o '".*"' | tr -d '"' | tr ";" "\n" 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)" - [[ ${PRINTER_CMD} == "CAPT" ]] && DEVNAME="$(udevadm info -a -n ${DEV_LP} | grep "looking at" | head -1 | cut -d\' -f2 | sed "s/\/usbmisc.*//")" && echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : Auto detect CAPT printer: ${DEV_LP}" || echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : Printer: ${DE_LP} is not CAPT !" + [[ ${PRINTER_CMD} == "CAPT" ]] && DEVNAME="$(udevadm info -a -n ${DEV_LP} | grep "looking at" | head -1 | cut -d\' -f2 | sed "s/\/usbmisc.*//")" && echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : Auto detect CAPT printer: ${DEV_LP}" || echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : Printer: ${DE_LP} is not CAPT !" done } # Удалить CAPT принтер, который определился и установился автоматически без CCPD remove_not_ccpdcapt(){ - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : remove_not_ccpdcapt : ${PRINTER_NAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : remove_not_ccpdcapt : ${PRINTER_NAME}" PRINTER_NOTCCP=$(LC_ALL=en_US.UTF-8 lpstat -v 2>/dev/null | grep " usb://.*${DEV_SERIAL}.*" | head -1 | cut -d: -f1 | cut -d" " -f3) - [[ -n ${PRINTER_NOTCCP} ]] && lpadmin -x "${PRINTER_NOTCCP}" && echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : remove_not_ccpdcapt : REMOVE : ${PRINTER_NOTCCP}" -# LC_ALL=en_US.UTF-8 lpstat -v "${PRINTER_NAME}" 2>/dev/null | grep -q " usb://.*${DEV_SERIAL}.*" | head -1 && lpadmin -x "${PRINTER_NAME}" && echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : remove_not_ccpdcapt : REMOVE : ${PRINTER_NAME}" + [[ -n ${PRINTER_NOTCCP} ]] && lpadmin -x "${PRINTER_NOTCCP}" && echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : remove_not_ccpdcapt : REMOVE : ${PRINTER_NOTCCP}" +# LC_ALL=en_US.UTF-8 lpstat -v "${PRINTER_NAME}" 2>/dev/null | grep -q " usb://.*${DEV_SERIAL}.*" | head -1 && lpadmin -x "${PRINTER_NAME}" && echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : remove_not_ccpdcapt : REMOVE : ${PRINTER_NAME}" } add_printer(){ # Сделать проверку, если принтер существует с одинаковым именем, но другой адрес ${PRINTER_LP} if ! LC_ALL=en_US.UTF-8 lpstat -v "${PRINTER_NAME}" &>/dev/null; then - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : add_printer : ${PRINTER_NAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : add_printer : ${PRINTER_NAME}" NAME_URI="ccp://localhost:59687" NAME_PPD=$(lpinfo --make-and-model ${PRINTER_NAME_PPD} -m | head -1 | cut -d" " -f1) # NAME_PPD=$(basename -- $(grep -H ${PRINTER_NAME} /usr/share/cups/model/*.ppd | head -1 | cut -d: -f1)) @@ -97,7 +96,7 @@ remove_printer(){ while read PRINTER_DEV_LP_CAPT; do if [[ ! -e "${PRINTER_DEV_LP_CAPT}" ]] || echo "${DEVNAME}" | grep -q "/dev/usb/lp"; then PRINTER_NAME=$(cat /etc/ccpd.conf | grep -B1 "^DevicePath" | head -1 | tr -d "<&>" | cut -d" " -f2) - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : remove_printer : ${ACTION} : ${DEVNAME} : ${PRINTER_DEV_LP_CAPT} : ${PRINTER_NAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : remove_printer : ${ACTION} : ${DEVNAME} : ${PRINTER_DEV_LP_CAPT} : ${PRINTER_NAME}" cupsdisable -E "${PRINTER_NAME}" 2>/dev/null cupsreject -E "${PRINTER_NAME}" 2>/dev/null ccpdadmin -x "${PRINTER_NAME}" 2>/dev/null @@ -110,7 +109,7 @@ remove_printer(){ done <<< "$(systemctl -q is-enabled ccpd.service && [[ -f /etc/ccpd.conf ]] && cat /etc/ccpd.conf | grep "^DevicePath" | cut -d" " -f2 | xargs)" # Удалить все принтеры CCP while read PRINTER_CCP; do - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : remove_printer : REMOVE PRINTER CCP: ${PRINTER_CCP}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : remove_printer : REMOVE PRINTER CCP: ${PRINTER_CCP}" # cupsdisable -E "${PRINTER_CCP}" 2>/dev/null # cupsreject -E "${PRINTER_CCP}" 2>/dev/null # ccpdadmin -x "${PRINTER_CCP}" @@ -124,7 +123,7 @@ start_captstatusui(){ DESKTOP_CAPTSTATUSUI="${NAME_CAPTSTATUSUI}.desktop" SERVICE_CAPTSTATUSUI="${NAME_CAPTSTATUSUI}.service" # Создаем кнопку запуска captstatusui - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : start_captstatusui : ${PATH_APPLICATION}/${DESKTOP_CAPTSTATUSUI}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : start_captstatusui : ${PATH_APPLICATION}/${DESKTOP_CAPTSTATUSUI}" echo '[Desktop Entry] Type=Application Exec=captstatusui -P '${PRINTER_NAME}' @@ -167,7 +166,7 @@ stop_captstatusui(){ NAME_CAPTSTATUSUI="captstatusui-${PRINTER_NAME}" DESKTOP_CAPTSTATUSUI="${NAME_CAPTSTATUSUI}.desktop" SERVICE_CAPTSTATUSUI="${NAME_CAPTSTATUSUI}.service" - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : stop_captstatusui : ${PATH_APPLICATION}/${DESKTOP_CAPTSTATUSUI}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : stop_captstatusui : ${PATH_APPLICATION}/${DESKTOP_CAPTSTATUSUI}" [[ -n ${LOGIN_USER} ]] && systemctl -q --machine=${LOGIN_USER}@.host --user disable --now ${SERVICE_CAPTSTATUSUI} 2>/dev/null systemctl --global disable ${SERVICE_CAPTSTATUSUI} # rm -f "${XDG_AUTOSTART}/${DESKTOP_CAPTSTATUSUI}" @@ -183,11 +182,12 @@ stop_captstatusui(){ ### ::: M A I N ::: ### ############################### + [[ -n ${SSC_ARGV0} ]] && { [[ -f /usr/bin/bash ]] && /usr/bin/bash --version | grep -q ^"GNU bash" || exit 1; } [[ -d ${SSC_EXTRACT_DIR} ]] && rm -rf "${SSC_EXTRACT_DIR}" - [[ -n ${SSC_ARGV0} ]] && PKGNAME=${SSC_ARGV0##*/} && PKGPATH=${SSC_ARGV0%/*} || { PKGNAME=${0##*/} && PKGPATH=${0%/*}; } + [[ -z ${SELF_FILE} ]] && [[ -n ${SSC_ARGV0} ]] && SELF_FILE=${SSC_ARGV0} && SELF_NAME=${SSC_ARGV0##*/} && SELF_PATH=${SSC_ARGV0%/*} || { SELF_FILE=${0} && SELF_NAME=${0##*/} && SELF_PATH=${0%/*}; } # Проверка на суперпользователя - #[[ $USER != 'root' ]] && exec sudo "${PKGNAME}" + #[[ $USER != 'root' ]] && exec sudo "${SELF_NAME}" PATH_LOG="/var/log/cups/printers_setup.log" exec 3>&1 4>&2 @@ -197,7 +197,7 @@ stop_captstatusui(){ [[ -n $1 ]] && ACTION="$1" || ACTION="add" [[ -n $2 ]] && DEVNAME="$2" || auto_detect_capt_lp - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : Start: ${ACTION} : ${DEVNAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : Start: ${ACTION} : ${DEVNAME}" # Пользователь под которым мы вошли в ситему LOGIN_USER=$(who | grep "(:[[:digit:]])" | grep "tty" | head -1 | cut -d" " -f1) #" @@ -225,7 +225,7 @@ stop_captstatusui(){ stop_captstatusui ;; esac - echo "$(date '+%m.%d.%Y %T') : ${PKGNAME} : Finish : ${ACTION} : ${DEVNAME}" + echo "$(date '+%m.%d.%Y %T') : ${SELF_NAME} : Finish : ${ACTION} : ${DEVNAME}" #udevadm info -a -n /dev/usb/lp0 | grep "ATTRS{ieee1284_id}" #lpstat -v diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 8bd8195..e74788d 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -356,6 +356,8 @@ VERSION= ## Обновлять домашний каталог при загрузке если он уже существует ## UPDATEHOME=*no|n|disable|yes|y|enable| +## UPDATEHOME[]=*no|n|disable|yes|y|enable| +## # Имя пользователя, необязательное поле. Если не указано, то применяется для всех пользователей ## UPDATEHOME=yes ## Добавить пользователя с ID 1000 в группу Администраторов 'wheel'