Fix executed

master
Dmitry Razumov 4 months ago
parent 68979929c4
commit f5f5f2ee4e
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -6,13 +6,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
#
[[ -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}"
export TEXTDOMAINDIR="${ROOTFS}/usr/share/locale"
export TEXTDOMAIN="ublinux_functions"
ere_quote_grep() {
# Что экранировать
sed 's/[][\.|$(){}?+*^]/\\&/g' <<< "$*"
@ -105,6 +98,8 @@ return_hash_password(){
echo "${BLOCK_PASSWORD}${HASH_PASSWORD}"
}
# External: ubl-settings-usergroups
#
# Если параметр $1 известный хеш, то вернуть true, иначе false
# Применяется ubl-settings-usergroup
is_hash_password(){
@ -113,6 +108,8 @@ is_hash_password(){
[[ ${HASH_PASSWORD} =~ ^('!*'|'!'|'!!'|'*')*'$'(_|1|2|2a|2b|2x|2y|3|4|5|6|7|md5|sha1|gy|y|argon2d|argon2i|argon2ds|argon2id)'$' ]] || return 1
}
# External: ubl-settings-usergroups
#
# Remove user home directories. Used ubl-settings-usergroup
# $1 # Users name a comma separated list
# TODO: Запросить хомяк по умолчанию из /etc/default/useradd HOME=
@ -120,10 +117,12 @@ remove_userhome(){
local LIST_USERNAME="$@"
[[ ${LIST_USERNAME} != "" ]] || return 1
while IFS= read -r SELECT_USERNAME; do
rm -rdf ${ROOTFS}/home/"${SELECT_USERNAME}"
rm -rf ${ROOTFS}/home/"${SELECT_USERNAME}"
done < <(tr ',;' '\n' <<< ${LIST_USERNAME})
}
# External: ubl-settings-usergroups
#
# Convert plain passwords to a hash in the global configuration
# Конвертировать не шифрованные пароли в шифрованные для глобальных переменных USERADD GROUPADD DEFAULTPASSWD DEFAULTROOTPASSWD
# $1 # Параметр конфигурации, где содержится пароль который нужно конвертировать, если первые символы %%, то пароль останется не шифрованным
@ -211,611 +210,6 @@ globalconf_convert_pass_plain_to_hash(){
fi
}
#####################################################################################
###
### Функции управления пользователями и группами с помощью тектовых процессоров ###
###
#####################################################################################
# Добавить пользователя в /etc/passwd /etc/shadow
# user_add $1:$2:$3:$4:$5:$6:$7:$8:$9:$10:$11:$12:$13
# $1 # Имя пользователя
# $2 # GECOS пользователя
# $3 # UID идентификатор пользователя
# # = 's' | 'system' # Вычисляется автоматически, первый свободный системного диапазона
# # Если не задан, то вычисляется автоматически, первый свободный пользовательского диапазона
# $4 # GID первичной группы пользователя
# # Если не задана, то создать группу по имени пользователя и взять GID
# $5 # Зашифрованный пароль
# # = '' # Если не задано, то пароль '!*' запрет авторизации
# # = ' ' # Если пробел, то без пароля
# # = 'lock' | 'l' # Заблокировать авторизация, добавив '!' перед хешем
# # = 'unlock' | 'u' # Разблокировать авторизация, убрав '!' или '!!' или '!*' или '*' перед хешем
# $6 # HOME пользователя
# $7 # SHELL пользователя
# $8 # LASTCHANGED
# $9 # MINDAY
# $10 # MAXDAY
# $11 # WARN
# $12 # INACTIVE
# $13 # EXPIRE
# Для изменения параметров существующего пользователя, обязательный параметр: $1 или $3 пользователя
# Если одно из полей содержит "+" то значение поля не менять в файле
# Пример: user_add user-1:Пользователь-1
# Пример: user_add user-1:Пользователь-1:1001:1001
# Пример: user_add user-1:Пользователь-1:1001:1001:!*:/home/user-1:/bin/bash:19788:0:99999:7:2:19800
# Пример: user_add root:+:+:+:!*:+:+::+:+:+:+:+
user_add(){
[[ $1 == @("-v"|"--verbose") ]] && local VERBOSE='yes' && shift
local FILE_PASSWD="${ROOTFS}/etc/passwd"
local FILE_SHADOW="${ROOTFS}/etc/shadow"
local FILE_LOGINDEFS="${ROOTFS}/etc/login.defs"
local FILE_DEFAULT_USERADD="${ROOTFS}/etc/default/useradd"
local DATA_FILE_PASSWD=$(< ${FILE_PASSWD})
local DATA_FILE_SHADOW=$(< ${FILE_SHADOW})
local DATA_FILE_LOGINDEFS=$(< ${FILE_LOGINDEFS})
local DATA_FILE_DEFAULT_USERADD=$(< ${FILE_DEFAULT_USERADD})
[[ ${DATA_FILE_DEFAULT_USERADD} =~ ($'\n'|^)+HOME=([^$'\n']*)($'\n'|$)+ ]] && local DEFAULT_HOME_USER=${BASH_REMATCH[2]:-/home}
[[ ${DATA_FILE_DEFAULT_USERADD} =~ ($'\n'|^)+SHELL=([^$'\n']*)($'\n'|$)+ ]] && local DEFAULT_SHELL_USER=${BASH_REMATCH[2]:-/bin/bash}
local DEFAULT_HOME_SYSTEM="/"
local DEFAULT_SHELL_SYSTEM="/usr/bin/nologin"
[[ ${DATA_FILE_LOGINDEFS} =~ ($'\n'|^)+PASS_MAX_DAYS[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && local DEFAULT_MAXDAY=${BASH_REMATCH[2]:-99999}
[[ ${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 UID_MIN= UID_MAX= UID_NEW=
if [[ ${PARAM} == "@system" ]]; then
# Свободный номер системного списка группы
#UID_MIN=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*SYS_UID_MIN[[:blank:]]+([[:digit:]]+) ]]; printf "%d" "${BASH_REMATCH[1]}")
[[ ${DATA_FILE_LOGINDEFS} =~ ($'\n'|^)+SYS_UID_MIN[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && UID_MIN=${BASH_REMATCH[2]:-500}
#UID_MAX=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*SYS_UID_MAX[[:blank:]]+([[:digit:]]+) ]]; printf "%d" "${BASH_REMATCH[1]}")
[[ ${DATA_FILE_LOGINDEFS} =~ ($'\n'|^)+SYS_UID_MAX[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && UID_MAX=${BASH_REMATCH[2]:-999}
UID_NEW=$(awk -F':' -v USER_MIN=${UID_MIN} -v USER_MAX=${UID_MAX} '{ uid[$3]=USER_MAX } END {for (x=USER_MAX; x>=USER_MIN; x--) if (!uid[x]) {print x; exit}}' ${FILE_PASSWD}) #'
[[ ${UID_NEW} == "" ]] && UID_NEW=${UID_MAX}
else
# Свободный номер списка групп, кроме системного списка
#UID_MIN=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*UID_MIN[[:blank:]]+([[:digit:]]+) ]]; printf "%d" "${BASH_REMATCH[1]}")
[[ ${DATA_FILE_LOGINDEFS} =~ ($'\n'|^)+UID_MIN[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && UID_MIN=${BASH_REMATCH[2]:-1000}
#UID_MAX=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*UID_MAX[[:blank:]]+([[:digit:]]+) ]]; printf "%d" "${BASH_REMATCH[1]}")
[[ ${DATA_FILE_LOGINDEFS} =~ ($'\n'|^)+UID_MAX[[:blank:]]+([[:digit:]]+)($'\n'|$)+ ]] && UID_MAX=${BASH_REMATCH[2]:-60000}
UID_NEW=$(awk -F':' -v USER_MIN=${UID_MIN} -v USER_MAX=${UID_MAX} '{ uid[$3]=USER_MIN } END {for (x=USER_MIN; x<=USER_MAX; x++) if (!uid[x]) {print x; exit}}' ${FILE_PASSWD}) #'
[[ ${UID_NEW} == "" ]] && UID_NEW=${UID_MIN}
fi
printf "%d" "${UID_NEW}"
}
is_uid_system(){
local UID_MIN=
UID_MIN=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*UID_MIN[[:blank:]]+([[:digit:]]+) ]]; printf "%d" "${BASH_REMATCH[1]}")
[[ ${SELECT_UID} -lt ${UID_MIN:=1000} ]] && printf "%d" "1" || printf "%d" "0"
}
local PARAM="$@"
# Получаем из аргумента значения
local IS_USER_SYSTEM=
local SELECT_NOUSE=
local SELECT_USERNAME= SELECT_GECOS= SELECT_UID= SELECT_GID= SELECT_PASSWORD= SELECT_HOME= SELECT_SHELL= SELECT_LASTCHANGED= SELECT_MINDAY= SELECT_MAXDAY= SELECT_WARN= SELECT_INACTIVE= SELECT_EXPIRE= NULL=
IFS=: read -r SELECT_USERNAME SELECT_GECOS SELECT_UID SELECT_GID SELECT_PASSWORD SELECT_HOME SELECT_SHELL SELECT_LASTCHANGED SELECT_MINDAY SELECT_MAXDAY SELECT_WARN SELECT_INACTIVE SELECT_EXPIRE NULL <<< "${PARAM}"
[[ ${SELECT_USERNAME} == "" && ${SELECT_UID} == "" ]] && { >&2 echo "ERROR: not added/changed '${SELECT_USERNAME}' username"; return 1; }
# Получаем из файла значения
local VOL_FILEP_PLAINPASSWORD= VOL_FILEP_UID= VOL_FILEP_GID= VOL_FILEP_GECOS= VOL_FILEP_HOME= VOL_FILEP_SHELL= VOL_FILEP_USERNAME=
if [[ ${SELECT_USERNAME} != @(""|"+") ]]; then
[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEP_PLAINPASSWORD=${BASH_REMATCH[2]} \
&& VOL_FILEP_UID=${BASH_REMATCH[3]} \
&& VOL_FILEP_GID=${BASH_REMATCH[4]} \
&& VOL_FILEP_GECOS=${BASH_REMATCH[5]} \
&& VOL_FILEP_HOME=${BASH_REMATCH[6]} \
&& VOL_FILEP_SHELL=${BASH_REMATCH[7]}
VOL_FILEP_USERNAME=${SELECT_USERNAME}
elif [[ ${SELECT_USERNAME} == @(""|"+") && ${SELECT_UID} =~ ^[[:digit:]]+$ ]]; then
[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_UID}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEP_USERNAME=${BASH_REMATCH[2]} \
&& VOL_FILEP_PLAINPASSWORD=${BASH_REMATCH[3]} \
&& VOL_FILEP_GID=${BASH_REMATCH[4]} \
&& VOL_FILEP_GECOS=${BASH_REMATCH[5]} \
&& VOL_FILEP_HOME=${BASH_REMATCH[6]} \
&& VOL_FILEP_SHELL=${BASH_REMATCH[7]}
VOL_FILEP_UID=${SELECT_UID}
SELECT_USERNAME=${VOL_FILEP_USERNAME}
fi
[[ ${SELECT_USERNAME} == @(""|"+") ]] && { >&2 echo "ERROR: not added/changed empty username"; return 1; }
[[ ${SELECT_PASSWORD} == "+" ]] && SELECT_PLAINPASSWORD=${VOL_FILEP_PLAINPASSWORD}
[[ ${SELECT_PLAINPASSWORD} == "" ]] && SELECT_PLAINPASSWORD='x'
if [[ ${SELECT_UID} == "+" && ${VOL_FILEP_UID} != "" ]]; then
SELECT_UID=${VOL_FILEP_UID}
elif [[ ${SELECT_UID} == @("s"|"system") ]]; then
SELECT_UID=$(get_free_uid @system)
elif [[ ${SELECT_UID} =~ ^[[:digit:]]+$ ]]; then
true
else
# Если UID не задан, то берём первый свободный
SELECT_UID=$(get_free_uid)
fi
if [[ ${SELECT_GID} == "+" && ${VOL_FILEP_GID} != "" ]]; then
SELECT_GID=${VOL_FILEP_GID}
elif [[ ${SELECT_GID} =~ ^[[:digit:]]+$ ]]; then
true
else
# Если GID не задан, то создаём группу по имени пользователя ${SELECT_UID} и получаем GID от созданной группы
IFS=: read -r NULL SELECT_GID NULL NULL NULL NULL <<< $(group_add --verbose "${SELECT_USERNAME}:+:+:+:+")
[[ ${SELECT_GID} == "" ]] && SELECT_GID=${SELECT_UID}
fi
[[ ${SELECT_GECOS} == "+" ]] && SELECT_GECOS=${VOL_FILEP_GECOS}
if [[ ${SELECT_HOME} == "+" && ${VOL_FILEP_HOME} != "" ]]; then
SELECT_HOME=${VOL_FILEP_HOME}
elif [[ ${SELECT_HOME} == @(""|"+") ]]; then
[[ $(is_uid_system) == 1 ]] && SELECT_HOME=${DEFAULT_HOME_SYSTEM} || SELECT_HOME="${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
fi
if [[ ${SELECT_SHELL} == "+" && ${VOL_FILEP_SHELL} != "" ]]; then
SELECT_SHELL=${VOL_FILEP_SHELL}
elif [[ ${SELECT_SHELL} == @(""|"+") ]]; then
[[ $(is_uid_system) == 1 ]] && SELECT_SHELL=${DEFAULT_SHELL_SYSTEM} || SELECT_SHELL=${DEFAULT_SHELL_USER}
fi
local VOL_FILEPS_PASSWORD= VOL_FILEPS_LASTCHANGED= VOL_FILEPS_MINDAY= VOL_FILEPS_MAXDAY= VOL_FILEPS_WARN= VOL_FILEPS_INACTIVE= VOL_FILEPS_EXPIRE= VOL_FILEPS_NOUSE=
[[ ${DATA_FILE_SHADOW} =~ ($'\n'|^)+"${SELECT_USERNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEPS_PASSWORD=${BASH_REMATCH[2]} \
&& VOL_FILEPS_LASTCHANGED=${BASH_REMATCH[3]} \
&& VOL_FILEPS_MINDAY=${BASH_REMATCH[4]} \
&& VOL_FILEPS_MAXDAY=${BASH_REMATCH[5]} \
&& VOL_FILEPS_WARN=${BASH_REMATCH[6]} \
&& VOL_FILEPS_INACTIVE=${BASH_REMATCH[7]} \
&& VOL_FILEPS_EXPIRE=${BASH_REMATCH[8]} \
&& VOL_FILEPS_NOUSE=${BASH_REMATCH[9]}
if [[ ${SELECT_PASSWORD} == "+" && ${VOL_FILEPS_PASSWORD} != "" ]]; then
SELECT_PASSWORD=${VOL_FILEPS_PASSWORD}
elif [[ ${SELECT_PASSWORD} == @("lock"|"l") && ${VOL_FILEPS_PASSWORD} != "" ]]; then
if [[ ${VOL_FILEPS_PASSWORD:0:1} == "!" ]]; then
SELECT_PASSWORD=${VOL_FILEPS_PASSWORD}
else
SELECT_PASSWORD="!${VOL_FILEPS_PASSWORD}"
fi
elif [[ ${SELECT_PASSWORD} == @("unlock"|"u") && ${VOL_FILEPS_PASSWORD} != "" ]]; then
if [[ ${VOL_FILEPS_PASSWORD:0:2} == "!!" ]]; then
SELECT_PASSWORD="${VOL_FILEPS_PASSWORD:2}"
elif [[ ${VOL_FILEPS_PASSWORD:0:2} == "!*" ]]; then
SELECT_PASSWORD="${VOL_FILEPS_PASSWORD:2}"
elif [[ ${VOL_FILEPS_PASSWORD:0:1} == "*" ]]; then
SELECT_PASSWORD="${VOL_FILEPS_PASSWORD:1}"
elif [[ ${VOL_FILEPS_PASSWORD:0:1} == "!" ]]; then
SELECT_PASSWORD="${VOL_FILEPS_PASSWORD:1}"
else
SELECT_PASSWORD="${VOL_FILEPS_PASSWORD}"
fi
elif [[ ${SELECT_PASSWORD} == " " ]]; then
SELECT_PASSWORD=
elif [[ ${SELECT_PASSWORD} == @(""|"+") ]]; then
SELECT_PASSWORD="!*"
fi
if [[ ${SELECT_LASTCHANGED} == "+" && ${VOL_FILEPS_LASTCHANGED} != "" ]]; then
SELECT_LASTCHANGED=${VOL_FILEPS_LASTCHANGED}
elif [[ ${SELECT_LASTCHANGED} =~ ^[[:digit:]]{4,4}'-'[[:digit:]]{1,2}'-'[[:digit:]]{1,2}$ ]]; then
SELECT_LASTCHANGED=$(( $(${CMD_CHROOT} date --date="${SELECT_LASTCHANGED} 0000" +"%s")/(60*60*24) ))
elif [[ ${SELECT_LASTCHANGED} =~ ^[[:digit:]]{1,5}$ ]]; then
true
else
SELECT_LASTCHANGED=$(( $(${CMD_CHROOT} date +%s)/(60*60*24) )) # (60*60*24)=18400 second on day
fi
if [[ ${SELECT_MINDAY} == "+" && ${VOL_FILEPS_MINDAY} != "" ]]; then
SELECT_MINDAY=${VOL_FILEPS_MINDAY}
elif [[ ${SELECT_MINDAY} =~ ^[[:digit:]]+$ ]]; then
true
else
[[ $(is_uid_system) == 1 ]] && SELECT_MINDAY= || SELECT_MINDAY=${DEFAULT_MINDAY}
fi
if [[ ${SELECT_MAXDAY} == "+" && ${VOL_FILEPS_MAXDAY} != "" ]]; then
SELECT_MAXDAY=${VOL_FILEPS_MAXDAY}
elif [[ ${SELECT_MAXDAY} =~ ^[[:digit:]]+$ ]]; then
true
else
[[ $(is_uid_system) == 1 ]] && SELECT_MAXDAY= || SELECT_MAXDAY=${DEFAULT_MAXDAY}
fi
if [[ ${SELECT_WARN} == "+" && ${VOL_FILEPS_WARN} != "" ]]; then
SELECT_WARN=${VOL_FILEPS_WARN}
elif [[ ${SELECT_WARN} =~ ^[[:digit:]]+$ ]]; then
true
else
[[ $(is_uid_system) == 1 ]] && SELECT_WARN= || SELECT_WARN=${DEFAULT_WARN}
fi
if [[ ${SELECT_INACTIVE} == "+" && ${VOL_FILEPS_INACTIVE} != "" ]]; then
SELECT_INACTIVE=${VOL_FILEPS_INACTIVE}
elif [[ ${SELECT_INACTIVE} =~ (-1|^[[:digit:]]+$) ]]; then
true
else
SELECT_INACTIVE=
fi
if [[ ${SELECT_EXPIRE} == "+" && ${VOL_FILEPS_EXPIRE} != "" ]]; then
SELECT_EXPIRE=${VOL_FILEPS_EXPIRE}
elif [[ ${SELECT_EXPIRE} =~ ^[[:digit:]]{4,4}'-'[[:digit:]]{1,2}'-'[[:digit:]]{1,2}$ ]]; then
SELECT_EXPIRE=$(( $(${CMD_CHROOT} date --date="${SELECT_EXPIRE} 0000" +"%s")/(60*60*24) ))
elif [[ ${SELECT_EXPIRE} =~ ^[[:digit:]]{1,5}$ ]]; then
true
else
SELECT_EXPIRE=
fi
SELECT_NOUSE=""
# Если нет изменений, то ничего не делать
if [[ "${SELECT_USERNAME}" != "${VOL_FILEP_USERNAME}" && "${SELECT_PLAINPASSWORD}" != "${VOL_FILEP_PLAINPASSWORD}" || "${SELECT_UID}" != "${VOL_FILEP_UID}" || "${SELECT_GID}" != "${VOL_FILEP_GID}" || "${SELECT_GECOS}" != "${VOL_FILEP_GECOS}" \
|| "${SELECT_HOME}" != "${VOL_FILEP_HOME}" || "${SELECT_SHELL}" != "${VOL_FILEP_SHELL}" ]]; then
#sed "/^${SELECT_USERNAME}:/d" -i "${FILE_PASSWD}"
#printf "%s:%s:%d:%d:%s:%s:%s\n" "${SELECT_USERNAME}" "${SELECT_PLAINPASSWORD}" "${SELECT_UID}" "${SELECT_GID}" "${SELECT_GECOS}" "${SELECT_HOME}" "${SELECT_SHELL}" >> "${FILE_PASSWD}"
#sed -e "/^${SELECT_USERNAME}:/d" -e "\$a${SELECT_USERNAME}:${SELECT_PLAINPASSWORD}:${SELECT_UID}:${SELECT_GID}:${SELECT_GECOS}:${SELECT_HOME}:${SELECT_SHELL}" -i "${FILE_PASSWD}"
#sed -e "\$a${SELECT_USERNAME}:${SELECT_PLAINPASSWORD}:${SELECT_UID}:${SELECT_GID}:${SELECT_GECOS}:${SELECT_HOME}:${SELECT_SHELL}" -i "${FILE_PASSWD}"
while [[ ${DATA_FILE_PASSWD} =~ ^(.*)(^|$'\n')"${SELECT_USERNAME}:"([^$'\n'])+($'\n'|$)(.*)$ ]]; do DATA_FILE_PASSWD="${BASH_REMATCH[1]}${BASH_REMATCH[5]}"; done
[[ ${DATA_FILE_PASSWD} =~ ^(.*)($'\n')+$ ]] && DATA_FILE_PASSWD="${BASH_REMATCH[1]}"
printf "%s\n%s:%s:%d:%d:%s:%s:%s\n" "${DATA_FILE_PASSWD}" "${SELECT_USERNAME}" "${SELECT_PLAINPASSWORD}" "${SELECT_UID}" "${SELECT_GID}" "${SELECT_GECOS}" "${SELECT_HOME}" "${SELECT_SHELL}" > "${FILE_PASSWD}"
fi
if [[ "${SELECT_PASSWORD}" != "${VOL_FILEPS_PASSWORD}" || "${SELECT_LASTCHANGED}" != "${VOL_FILEPS_LASTCHANGED}" || "${SELECT_MINDAY}" != "${VOL_FILEPS_MINDAY}" || "${SELECT_MAXDAY}" != "${VOL_FILEPS_MAXDAY}" \
|| "${SELECT_WARN}" != "${VOL_FILEPS_WARN}" || "${SELECT_INACTIVE}" != "${VOL_FILEPS_INACTIVE}" || "${SELECT_EXPIRE}" != "${VOL_FILEPS_EXPIRE}" ]]; then
#sed "/^${SELECT_USERNAME}:/d" -i "${FILE_SHADOW}"
#printf "%s:%s:%d:%s:%s:%s:%s:%s:%s\n" "${SELECT_USERNAME}" "${SELECT_PASSWORD}" "${SELECT_LASTCHANGED}" "${SELECT_MINDAY}" "${SELECT_MAXDAY}" "${SELECT_WARN}" "${SELECT_INACTIVE}" "${SELECT_EXPIRE}" "${SELECT_NOUSE}" >> "${FILE_SHADOW}"
#sed -e "/^${SELECT_USERNAME}:/d" -e "\$a${SELECT_USERNAME}:${SELECT_PASSWORD}:${SELECT_LASTCHANGED}:${SELECT_MINDAY}:${SELECT_MAXDAY}:${SELECT_WARN}:${SELECT_INACTIVE}:${SELECT_EXPIRE}:${SELECT_NOUSE}" -i "${FILE_SHADOW}"
#sed -e "\$a${SELECT_USERNAME}:${SELECT_PASSWORD}:${SELECT_LASTCHANGED}:${SELECT_MINDAY}:${SELECT_MAXDAY}:${SELECT_WARN}:${SELECT_INACTIVE}:${SELECT_EXPIRE}:${SELECT_NOUSE}" -i "${FILE_SHADOW}"
while [[ ${DATA_FILE_SHADOW} =~ ^(.*)(^|$'\n')"${SELECT_USERNAME}:"([^$'\n'])+($'\n'|$)(.*)$ ]]; do DATA_FILE_SHADOW="${BASH_REMATCH[1]}${BASH_REMATCH[5]}"; done
[[ ${DATA_FILE_SHADOW} =~ ^(.*)($'\n')+$ ]] && DATA_FILE_SHADOW="${BASH_REMATCH[1]}"
printf "%s\n%s:%s:%d:%s:%s:%s:%s:%s:%s\n" "${DATA_FILE_SHADOW}" "${SELECT_USERNAME}" "${SELECT_PASSWORD}" "${SELECT_LASTCHANGED}" "${SELECT_MINDAY}" "${SELECT_MAXDAY}" "${SELECT_WARN}" "${SELECT_INACTIVE}" "${SELECT_EXPIRE}" "${SELECT_NOUSE}" > "${FILE_SHADOW}"
fi
[[ -z ${VERBOSE} ]] || printf "%s:%s:%d:%d:%s:%s:%s:%d:%s:%s:%s:%s:%s\n" "${SELECT_USERNAME}" "${SELECT_GECOS}" "${SELECT_UID}" "${SELECT_GID}" "${SELECT_PASSWORD}" "${SELECT_HOME}" "${SELECT_SHELL}" "${SELECT_LASTCHANGED}" "${SELECT_MINDAY}" "${SELECT_MAXDAY}" "${SELECT_WARN}" "${SELECT_INACTIVE}" "${SELECT_EXPIRE}"
}
# Удалить пользователя из /etc/passwd /etc/shadow
# user_del $1:$2
# $1 # Имя пользователя
# $2 # UID идентификатор пользователя
# Что-бы удалить пользователя можно указать $1 или $2 или оба одновременно $1:$2
# Пример: user_del user-1
# user_del :1001
# user_del user-2:1002
user_del(){
local FILE_PASSWD="${ROOTFS}/etc/passwd"
local FILE_SHADOW="${ROOTFS}/etc/shadow"
local DATA_FILE_PASSWD=$(< ${FILE_PASSWD})
local FILE_GROUP="${ROOTFS}/etc/group"
local FILE_GSHADOW="${ROOTFS}/etc/gshadow"
local DATA_FILE_GROUP=$(< ${FILE_GROUP})
local PARAM="$@"
local SELECT_USERNAME= SELECT_UID=
IFS=: read -r SELECT_USERNAME SELECT_UID NULL <<< "${PARAM}"
[[ ${SELECT_USERNAME} == "" && ${SELECT_UID} == "" ]] && { >&2 echo "ERROR: not delete '${SELECT_USERNAME}' username"; return 1; }
SELECT_USERNAME=$@
local VOL_FILEP_PLAINPASSWORD VOL_FILEP_UID VOL_FILEP_GID VOL_FILEP_GECOS VOL_FILEP_HOME VOL_FILEP_SHELL
# Ищем пользователя вначале по имени, после по UID
[[ -n ${SELECT_USERNAME} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEP_PLAINPASSWORD=${BASH_REMATCH[2]} \
&& VOL_FILEP_UID=${BASH_REMATCH[3]} \
&& VOL_FILEP_GID=${BASH_REMATCH[4]} \
&& VOL_FILEP_GECOS=${BASH_REMATCH[5]} \
&& VOL_FILEP_HOME=${BASH_REMATCH[6]} \
&& VOL_FILEP_SHELL=${BASH_REMATCH[7]}
[[ -n ${SELECT_UID} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_UID}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& SELECT_USERNAME=${BASH_REMATCH[2]} \
&& VOL_FILEP_PLAINPASSWORD=${BASH_REMATCH[3]} \
&& VOL_FILEP_UID=${SELECT_UID} \
&& VOL_FILEP_GID=${BASH_REMATCH[4]} \
&& VOL_FILEP_GECOS=${BASH_REMATCH[5]} \
&& VOL_FILEP_HOME=${BASH_REMATCH[6]} \
&& VOL_FILEP_SHELL=${BASH_REMATCH[7]}
sed "/^${SELECT_USERNAME}:/d" -i "${FILE_PASSWD}"
sed "/^${SELECT_USERNAME}:/d" -i "${FILE_SHADOW}"
# Если имеется группа с таким же именем пользователя и она является основной группой указанного пользователя и в ней нет других пользователей
local VOL_FILEG_PLAINPASSWORD= VOL_FILEG_GID= VOL_FILEG_MEMBERS= OTHER_USERNAME=
[[ ${DATA_FILE_GROUP} =~ ($'\n'|^)+"${SELECT_USERNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEG_PLAINPASSWORD=${BASH_REMATCH[2]} \
&& VOL_FILEG_GID=${BASH_REMATCH[3]} \
&& VOL_FILEG_MEMBERS=${BASH_REMATCH[4]}
# и она не является основной у других пользователей
[[ -n ${VOL_FILEP_GID} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):([^$'\n']*):"${VOL_FILEP_GID}":([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& OTHER_USERNAME=${BASH_REMATCH[2]}
# то удаляем группу
if [[ ${VOL_FILEP_GID} == ${VOL_FILEG_GID} && -z ${VOL_FILEG_MEMBERS} && -z ${OTHER_USERNAME} ]]; then
sed /^${SELECT_USERNAME}:/d -i "${FILE_GROUP}"
sed /^${SELECT_USERNAME}:/d -i "${FILE_GSHADOW}"
fi
# Удаляем пользователя из всех групп
sed "s/:${SELECT_USERNAME}$/:/g;s/:${SELECT_USERNAME},/:/g;s/,${SELECT_USERNAME}$//g;s/,${SELECT_USERNAME},/,/g" -i "${FILE_GROUP}"
sed "s/:${SELECT_USERNAME}$/:/g;s/:${SELECT_USERNAME},/:/g;s/,${SELECT_USERNAME}$//g;s/,${SELECT_USERNAME},/,/g" -i "${FILE_GSHADOW}"
}
# Добавить группу в /etc/group /etc/gshadow
# group_add $1:$2:$3:$4:$5
# $1 # Имя группы
# $2 # GID идентификатор группы
# # = 's' | 'system' # Вычисляется автоматически, первый свободный системного диапазона
# # Если не задан, то вычисляется автоматически, первый свободный пользовательского диапазона
# $3 # Члены группы, разделённые запятыми
# $4 # Зашифрованный пароль
# # = '' # Если не задано, то пароль '!*' запрет авторизации
# # = ' ' # Если пробел, то без пароля
# # = 'lock' | 'l' # Заблокировать авторизация, добавив '!' перед хешем
# # = 'unlock' | 'u' # Разблокировать авторизация, убрав '!' или '!!' или '!*' или '*' перед хешем
# $5 # Администраторы группы, разделённые запятыми
# Для изменения параметров существующей группы, обязательный параметр: $1 или $2 пользователя
# Если одно из полей содержит "+" то значение поля не менять в файле
# Пример: g_department_1
# Пример: g_department_1:1010
# Пример: g_department_1:1010:user-1,user-2::superadmin
# Пример: g_department_1:+:+:+:+
# Пример: g_department_1:1010:+:+:+
group_add(){
[[ $1 == @("-v"|"--verbose") ]] && local VERBOSE='yes' && shift
local FILE_GROUP="${ROOTFS}/etc/group"
local FILE_GSHADOW="${ROOTFS}/etc/gshadow"
local FILE_LOGINDEFS="${ROOTFS}/etc/login.defs"
local DATA_FILE_GROUP=$(< ${FILE_GROUP})
local DATA_FILE_GSHADOW=$(< ${FILE_GSHADOW})
local DATA_FILE_LOGINDEFS=$(< ${FILE_LOGINDEFS})
get_free_gid(){
local PARAM="$@"
local GID_MIN= GID_MAX= GID_NEW=
if [[ ${PARAM} == "@system" ]]; then
# Свободный номер системного списка группы
GID_MIN=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*SYS_GID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
GID_MAX=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*SYS_GID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
GID_NEW=$(awk -F':' -v GROUP_MIN=${GID_MIN:=500} -v GROUP_MAX=${GID_MAX:=999} '{ gid[$3]=GROUP_MAX } END {for (x=GROUP_MAX; x>=GROUP_MIN; x--) if (!gid[x]) {print x; exit}}' ${FILE_GROUP}) #'
[[ ${GID_NEW} == "" ]] && GID_NEW=${GID_MAX}
else
# Свободный номер списка групп, кроме системного списка
GID_MIN=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*GID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
GID_MAX=$([[ ${DATA_FILE_LOGINDEFS} =~ [^#[^:blank:]]*GID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
# Предоставить свободный номер с начала списка
GID_NEW=$(awk -F':' -v GROUP_MIN=${GID_MIN:=1000} -v GROUP_MAX=${GID_MAX:=6000} '{ gid[$3]=GROUP_MIN } END {for (x=GROUP_MIN; x<=GROUP_MAX; x++) if (!gid[x]) {print x; exit}}' ${FILE_GROUP}) #'
[[ ${GID_NEW} == "" ]] && GID_NEW=${GID_MIN}
# Предоставить свободный номер с конца списка
#GID_NEW=$(awk -F':' -v GROUP_MIN=${GID_MIN:=1000} -v GROUP_MAX=${GID_MAX:=60000} '{ gid[$3]=GROUP_MAX } END {for (x=GROUP_MAX; x>=GROUP_MIN; x--) if (!gid[x]) {print x; exit}}' ${FILE_GROUP}) #'
#[[ ${GID_NEW} == "" ]] && GID_NEW=${GID_MAX}
fi
printf "%d" "${GID_NEW}"
}
local PARAM="$@"
# Получаем из аргумента значения
local SELECT_GROUPNAME= SELECT_GID= SELECT_MEMBERS= SELECT_PASSWORD= SELECT_ADMINISTRATORS= NULL=
IFS=: read -r SELECT_GROUPNAME SELECT_GID SELECT_MEMBERS SELECT_PASSWORD SELECT_ADMINISTRATORS NULL <<< "${PARAM}"
[[ ${SELECT_GROUPNAME} == "" && ${SELECT_GID} == "" ]] && { >&2 echo "ERROR: not added/changed '${SELECT_GROUPNAME}' groupname"; return 1; }
# Получаем из файла значения
local VOL_FILEG_PLAINPASSWORD= VOL_FILEG_GID= VOL_FILEG_MEMBERS= VOL_FILEG_GROUPNAME=
local SELECT_PLAINPASSWORD=
if [[ ${SELECT_GROUPNAME} != @(""|"+") ]]; then
[[ ${DATA_FILE_GROUP} =~ ($'\n'|^)+"${SELECT_GROUPNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEG_PLAINPASSWORD=${BASH_REMATCH[2]} \
&& VOL_FILEG_GID=${BASH_REMATCH[3]} \
&& VOL_FILEG_MEMBERS=${BASH_REMATCH[4]}
VOL_FILEG_GROUPNAME=${SELECT_GROUPNAME}
elif [[ ${SELECT_GROUPNAME} == @(""|"+") && ${SELECT_GID} =~ ^[[:digit:]]+$ ]]; then
[[ ${DATA_FILE_GROUP} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_GID}":([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEG_GROUPNAME=${BASH_REMATCH[2]} \
&& VOL_FILEG_PLAINPASSWORD=${BASH_REMATCH[3]} \
&& VOL_FILEG_MEMBERS=${BASH_REMATCH[4]}
VOL_FILEG_GID=${SELECT_GID}
SELECT_GROUPNAME=${VOL_FILEG_GROUPNAME}
fi
[[ ${SELECT_GROUPNAME} == @(""|"+") ]] && { >&2 echo "ERROR: not added/changed empty groupname"; return 1; }
[[ ${SELECT_PASSWORD} == "+" ]] && SELECT_PLAINPASSWORD=${VOL_FILEG_PLAINPASSWORD} || SELECT_PLAINPASSWORD='x'
[[ ${SELECT_PASSWORD} == "" || ${SELECT_PLAINPASSWORD} == "" ]] && SELECT_PLAINPASSWORD='x'
if [[ ${SELECT_GID} == "+" && ${VOL_FILEG_GID} != "" ]]; then
SELECT_GID=${VOL_FILEG_GID}
elif [[ ${SELECT_GID} == @("s"|"system") ]]; then
SELECT_GID=$(get_free_gid @system)
elif [[ ${SELECT_GID} =~ ^[[:digit:]]+$ ]]; then
true
else
SELECT_GID=$(get_free_gid)
fi
[[ ${SELECT_MEMBERS} == "+" ]] && SELECT_MEMBERS=${VOL_FILEG_MEMBERS}
local VOL_FILEGS_PASSWORD= VOL_FILEGS_ADMINISTRATORS= VOL_FILEGS_MEMBERS=
[[ ${DATA_FILE_GSHADOW} =~ ($'\n'|^)+"${SELECT_GROUPNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEGS_PASSWORD=${BASH_REMATCH[2]} \
&& VOL_FILEGS_ADMINISTRATORS=${BASH_REMATCH[3]} \
&& VOL_FILEGS_MEMBERS=${BASH_REMATCH[4]}
if [[ ${SELECT_PASSWORD} == "+" && ${VOL_FILEGS_PASSWORD} != "" ]]; then
SELECT_PASSWORD=${VOL_FILEGS_PASSWORD}
elif [[ ${SELECT_PASSWORD} == @("lock"|"l") && ${VOL_FILEGS_PASSWORD} != "" ]]; then
if [[ ${VOL_FILEGS_PASSWORD:0:1} == "!" ]]; then
SELECT_PASSWORD=${VOL_FILEGS_PASSWORD}
else
SELECT_PASSWORD="!${VOL_FILEGS_PASSWORD}"
fi
elif [[ ${SELECT_PASSWORD} == @("unlock"|"u") && ${VOL_FILEGS_PASSWORD} != "" ]]; then
if [[ ${VOL_FILEGS_PASSWORD:0:2} == "!!" ]]; then
SELECT_PASSWORD="${VOL_FILEGS_PASSWORD:2}"
elif [[ ${VOL_FILEGS_PASSWORD:0:2} == "!*" ]]; then
SELECT_PASSWORD="${VOL_FILEGS_PASSWORD:2}"
elif [[ ${VOL_FILEGS_PASSWORD:0:1} == "*" ]]; then
SELECT_PASSWORD="${VOL_FILEGS_PASSWORD:1}"
elif [[ ${VOL_FILEGS_PASSWORD:0:1} == "!" ]]; then
SELECT_PASSWORD="${VOL_FILEGS_PASSWORD:1}"
else
SELECT_PASSWORD="${VOL_FILEGS_PASSWORD}"
fi
elif [[ ${SELECT_PASSWORD} == " " ]]; then
SELECT_PASSWORD=
elif [[ ${SELECT_PASSWORD} == @(""|"+") ]]; then
SELECT_PASSWORD="!*"
fi
[[ ${SELECT_ADMINISTRATORS} == "+" ]] && SELECT_ADMINISTRATORS=${VOL_FILEGS_ADMINISTRATORS}
# Если нет изменений, то ничего не делать
if [[ "${SELECT_GROUPNAME}" != "${VOL_FILEG_GROUPNAME}" && "${SELECT_PLAINPASSWORD}" != "${VOL_FILEG_PLAINPASSWORD}" || "${SELECT_GID}" != "${VOL_FILEG_GID}" || "${SELECT_MEMBERS}" != "${VOL_FILEG_MEMBERS}" ]]; then
#sed /^${SELECT_GROUPNAME}:/d -i "${FILE_GROUP}"
#printf "%s:%s:%d:%s\n" "${SELECT_GROUPNAME}" "${SELECT_PLAINPASSWORD}" "${SELECT_GID}" "${SELECT_MEMBERS}" >> "${FILE_GROUP}"
#sed -e "/^${SELECT_GROUPNAME}:/d" -e "\$a${SELECT_GROUPNAME}:${SELECT_PLAINPASSWORD}:${SELECT_GID}:${SELECT_MEMBERS}" -i "${FILE_GROUP}"
while [[ ${DATA_FILE_GROUP} =~ ^(.*)(^|$'\n')"${SELECT_GROUPNAME}:"([^$'\n'])+($'\n'|$)(.*)$ ]]; do DATA_FILE_GROUP="${BASH_REMATCH[1]}${BASH_REMATCH[5]}"; done
[[ ${DATA_FILE_GROUP} =~ ^(.*)($'\n')+$ ]] && DATA_FILE_GROUP="${BASH_REMATCH[1]}"
printf "%s\n%s:%s:%d:%s\n" "${DATA_FILE_GROUP}" "${SELECT_GROUPNAME}" "${SELECT_PLAINPASSWORD}" "${SELECT_GID}" "${SELECT_MEMBERS}" > "${FILE_GROUP}"
#printf "%s:%s:%d:%s\n" "${SELECT_GROUPNAME}" "${SELECT_PLAINPASSWORD}" "${SELECT_GID}" "${SELECT_MEMBERS}"
fi
if [[ "${SELECT_PASSWORD}" != "${VOL_FILEGS_PASSWORD}" || "${SELECT_ADMINISTRATORS}" != "${VOL_FILEGS_ADMINISTRATORS}" || "${SELECT_MEMBERS}" != "${VOL_FILEGS_MEMBERS}" ]]; then
#sed /^${SELECT_GROUPNAME}:/d -i "${FILE_GSHADOW}"
#printf "%s:%s:%s:%s\n" "${SELECT_GROUPNAME}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}" "${SELECT_MEMBERS}" >> "${FILE_GSHADOW}"
#sed -e "/^${SELECT_GROUPNAME}:/d" -e "\$a${SELECT_GROUPNAME}:${SELECT_PASSWORD}:${SELECT_ADMINISTRATORS}:${SELECT_MEMBERS}" -i "${FILE_GSHADOW}"
while [[ ${DATA_FILE_GSHADOW} =~ ^(.*)(^|$'\n')"${SELECT_GROUPNAME}:"([^$'\n'])+($'\n'|$)(.*)$ ]]; do DATA_FILE_GSHADOW="${BASH_REMATCH[1]}${BASH_REMATCH[5]}"; done
[[ ${DATA_FILE_GSHADOW} =~ ^(.*)($'\n')+$ ]] && DATA_FILE_GSHADOW="${BASH_REMATCH[1]}"
printf "%s\n%s:%s:%s:%s\n" "${DATA_FILE_GSHADOW}" "${SELECT_GROUPNAME}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}" "${SELECT_MEMBERS}" > "${FILE_GSHADOW}"
#printf "%s:%s:%s:%s\n" "${SELECT_GROUPNAME}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}" "${SELECT_MEMBERS}"
fi
[[ -z ${VERBOSE} ]] || printf "%s:%d:%s:%s:%s\n" "${SELECT_GROUPNAME}" "${SELECT_GID}" "${SELECT_MEMBERS}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}"
}
# Удалить группу из /etc/group /etc/gshadow
# group_del $1
# $1 # Имя группы
# $2 # GID идентификатор группы
# Что-бы удалить группу можно указать $1 или $2 или оба одновременно $1:$2
# Пример: group_del user-1
# group_del :1001
# group_del user-2:1002
group_del(){
local FILE_GROUP="${ROOTFS}/etc/group"
local FILE_GSHADOW="${ROOTFS}/etc/gshadow"
local DATA_FILE_GROUP=$(< ${FILE_GROUP})
local FILE_PASSWD="${ROOTFS}/etc/passwd"
local DATA_FILE_PASSWD=$(< ${FILE_PASSWD})
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=
[[ -n ${SELECT_GROUPNAME} && ${DATA_FILE_GROUP} =~ ($'\n'|^)+"${SELECT_GROUPNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEG_PLAINPASSWORD=${BASH_REMATCH[2]} \
&& VOL_FILEG_GID=${BASH_REMATCH[3]} \
&& VOL_FILEG_MEMBERS=${BASH_REMATCH[4]}
[[ -n ${SELECT_GID} && ${DATA_FILE_GROUP} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_GID}":([^$'\n']*)($'\n'|$)+ ]] \
&& SELECT_GROUPNAME=${BASH_REMATCH[2]} \
&& VOL_FILEG_PLAINPASSWORD=${BASH_REMATCH[3]} \
&& VOL_FILEG_GID=${SELECT_GID} \
&& VOL_FILEG_MEMBERS=${BASH_REMATCH[4]}
local VOL_FILEP_PLAINPASSWORD VOL_FILEP_UID VOL_FILEP_GID VOL_FILEP_GECOS VOL_FILEP_HOME VOL_FILEP_SHELL
[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):([^$'\n']*):"${VOL_FILEG_GID}":([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEP_USERNAME=${BASH_REMATCH[2]} \
&& VOL_FILEP_PLAINPASSWORD=${BASH_REMATCH[3]} \
&& VOL_FILEP_UID=${BASH_REMATCH[4]} \
&& VOL_FILEP_GECOS=${BASH_REMATCH[5]} \
&& VOL_FILEP_HOME=${BASH_REMATCH[6]} \
&& VOL_FILEP_SHELL=${BASH_REMATCH[7]}
if [[ -n ${VOL_FILEP_USERNAME} ]]; then
>&2 echo "ERROR: cannot remove the primary group of user '${VOL_FILEP_USERNAME}'"
else
sed "/^${SELECT_GROUPNAME}:/d" -i "${FILE_GROUP}"
sed "/^${SELECT_GROUPNAME}:/d" -i "${FILE_GSHADOW}"
fi
}
# Добавить пользователей в группы /etc/group /etc/gshadow
# user_add_group $1,$1,... $2,$2,$2,...
# $1 # Имя пользователя и/или UID. Разделённых ','
# # <username_1>:<uid_1>,<username_1>:<uid_1>,...
# $2 # Имена групп разделённых ','
# Пример: user_add_group user-1 wheel,lp,disk
# Пример: user_add_group user-1,user-2 wheel,lp,disk
# Пример: user_add_group :1001 wheel,lp,disk
# Пример: user_add_group user-1:1001 wheel,lp,disk
user_add_group(){
local FILE_PASSWD="${ROOTFS}/etc/passwd"
local DATA_FILE_PASSWD=$(< ${FILE_PASSWD})
local FILE_GROUP="${ROOTFS}/etc/group"
local FILE_GSHADOW="${ROOTFS}/etc/gshadow"
local DATA_FILE_GROUP=$(< ${FILE_GROUP})
local DATA_FILE_GSHADOW=$(< ${FILE_GSHADOW})
local SELECT_USERNAME_UID_LIST=$1
local SELECT_GROUPS=$2
while IFS= read -r SELECT_USERNAME_UID; do
[[ ${SELECT_USERNAME_UID_LIST} == "" ]] && continue
local SELECT_USERNAME= SELECT_UID= NULL=
IFS=: read -ru3 SELECT_USERNAME SELECT_UID NULL 3<<< "${SELECT_USERNAME_UID}"
local SELECT_GID= SELECT_GROUPNAME= VOL_FILEP_GID=
# Ищем пользователя вначале по имени, после по UID
[[ -n ${SELECT_USERNAME} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& VOL_FILEP_GID=${BASH_REMATCH[4]}
[[ -n ${SELECT_UID} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_UID}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& SELECT_USERNAME=${BASH_REMATCH[2]} \
&& VOL_FILEP_GID=${BASH_REMATCH[4]}
[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}": ]] || { >&2 echo "ERROR: user '${SELECT_USERNAME}' not found"; return 1; }
[[ -n ${SELECT_GROUPS} ]] || { >&2 echo "ERROR: groups should not be empty"; return 1; }
SELECT_GID=${VOL_FILEP_GID}
[[ -n ${SELECT_GID} && ${DATA_FILE_GROUP} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_GID}":([^$'\n']*)($'\n'|$)+ ]] \
&& SELECT_GROUPNAME=${BASH_REMATCH[2]}
# Убираем дубликаты групп
SELECT_GROUPS=$(sort -u <<< ${SELECT_GROUPS//,/$'\n'}); SELECT_GROUPS=${SELECT_GROUPS//$'\n'/,}
# Проверяем, если группа является основной у пользователя, то исключить из списка групп
SELECT_GROUPS=$(sed "s/^${SELECT_GROUPNAME}$//g;s/^${SELECT_GROUPNAME},//g;s/,${SELECT_GROUPNAME}$//g;s/,${SELECT_GROUPNAME},/,/g" <<< "${SELECT_GROUPS}")
while IFS= read -ru4 SELECT_GROUPNAME; do
[[ ${SELECT_GROUPNAME} == "" ]] && continue
if [[ ! ${DATA_FILE_GROUP} =~ ($'\n'|^)+"${SELECT_GROUPNAME}":([^$'\n']*):([^$'\n']*)(:|:[-a-z0-9_,]+,)"${SELECT_USERNAME}"(,|$'\n'|$)+ ]]; then
DATA_FILE_GROUP=$(sed "/^${SELECT_GROUPNAME}:.*[^:]$/ s/$/,${SELECT_USERNAME}/" <<< ${DATA_FILE_GROUP})
DATA_FILE_GROUP=$(sed "/^${SELECT_GROUPNAME}:.*:$/ s/$/${SELECT_USERNAME}/" <<< ${DATA_FILE_GROUP})
fi
if [[ ! ${DATA_FILE_GSHADOW} =~ ($'\n'|^)+"${SELECT_GROUPNAME}":([^$'\n']*):([^$'\n']*)(:|:[-a-z0-9_,]+,)"${SELECT_USERNAME}"(,|$'\n'|$)+ ]]; then
DATA_FILE_GSHADOW=$(sed "/^${SELECT_GROUPNAME}:.*[^:]$/ s/$/,${SELECT_USERNAME}/" <<< ${DATA_FILE_GSHADOW})
DATA_FILE_GSHADOW=$(sed "/^${SELECT_GROUPNAME}:.*:$/ s/$/${SELECT_USERNAME}/" <<< ${DATA_FILE_GSHADOW})
fi
done 4<<< ${SELECT_GROUPS//,/$'\n'}
done <<< ${SELECT_USERNAME_UID_LIST//,/$'\n'}
echo "${DATA_FILE_GROUP}" > "${FILE_GROUP}"
echo "${DATA_FILE_GSHADOW}" > "${FILE_GSHADOW}"
}
# Удалить пользователя из групп /etc/group /etc/gshadow
# user_remove_group $1,$1,$1 $2,$2,$2,...
# $1 # Список имён пользователей и/или UID. Разделитель ','
# # <username1>:<uid1>,<username2>:<uid2>,...
# $2 # Имена групп разделённых ','
# # Если указано '%all' то все группы
# Пример: user_remove_group user-1 wheel,lp,disk
# Пример: user_remove_group user-1,user-2 wheel,lp,disk
# Пример: user_remove_group :1001 wheel,lp,disk
# Пример: user_remove_group user-1:1001 %all
user_remove_group(){
local FILE_PASSWD="${ROOTFS}/etc/passwd"
local DATA_FILE_PASSWD=$(< ${FILE_PASSWD})
local FILE_GROUP="${ROOTFS}/etc/group"
local FILE_GSHADOW="${ROOTFS}/etc/gshadow"
local DATA_FILE_GROUP=$(< ${FILE_GROUP})
local DATA_FILE_GSHADOW=$(< ${FILE_GSHADOW})
local SELECT_USERNAME_UID_LIST=$1
local SELECT_GROUPS=$2
local SELECT_USERNAME_UID=
while IFS= read -r SELECT_USERNAME_UID; do
[[ ${SELECT_USERNAME_UID} == "" ]] && continue
local SELECT_USERNAME= SELECT_UID= NULL=
IFS=: read -ru3 SELECT_USERNAME SELECT_UID NULL 3<<< "${SELECT_USERNAME_UID}"
if [[ ${SELECT_GROUPS} == '%all' ]]; then
DATA_FILE_GROUP=$(sed "s/:${SELECT_USERNAME}$/:/g;s/:${SELECT_USERNAME},/:/g;s/,${SELECT_USERNAME}$//g;s/,${SELECT_USERNAME},/,/g" <<< ${DATA_FILE_GROUP})
DATA_FILE_GSHADOW=$(sed "s/:${SELECT_USERNAME}$/:/g;s/:${SELECT_USERNAME},/:/g;s/,${SELECT_USERNAME}$//g;s/,${SELECT_USERNAME},/,/g" <<< ${DATA_FILE_GSHADOW})
else
# Ищем пользователя вначале по имени, после по UID
#[[ -n ${SELECT_USERNAME} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]]
[[ -n ${SELECT_UID} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_UID}":([^$'\n']*):([^$'\n']*):([^$'\n']*):([^$'\n']*)($'\n'|$)+ ]] \
&& SELECT_USERNAME=${BASH_REMATCH[2]}
# Если пользователя нет среди пользователей. Отключил, чтобы всех без проверки удалять.
#[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}": ]] || { >&2 echo "ERROR: user '${SELECT_USERNAME}' not found"; continue; }
[[ -n ${SELECT_GROUPS} ]] || { >&2 echo "ERROR: groups should not be empty"; return 1; }
#[[ ${SELECT_GROUPS} == '%all' ]] && SELECT_GROUPS=$(sed -En 's/^([^:]+):.*/\1/p' <<< ${DATA_FILE_GROUP}) #'
locale SELECT_GROUPNAME=
while IFS= read -ru4 SELECT_GROUPNAME; do
[[ ${SELECT_GROUPNAME} == "" ]] && continue
if [[ ${DATA_FILE_GROUP} =~ ($'\n'|^)+"${SELECT_GROUPNAME}":([^$'\n']*):([^$'\n']*)(:|:[-a-z0-9_,]+,)"${SELECT_USERNAME}"(,|$'\n'|$)+ ]]; then
DATA_FILE_GROUP=$(sed "/^${SELECT_GROUPNAME}:/ s/:${SELECT_USERNAME}$/:/g;\
/^${SELECT_GROUPNAME}:/ s/:${SELECT_USERNAME},/:/g;\
/^${SELECT_GROUPNAME}:/ s/,${SELECT_USERNAME}$//g;\
/^${SELECT_GROUPNAME}:/ s/,${SELECT_USERNAME},/,/g" <<< ${DATA_FILE_GROUP})
fi
if [[ ${DATA_FILE_GSHADOW} =~ ($'\n'|^)+"${SELECT_GROUPNAME}":([^$'\n']*):([^$'\n']*)(:|:[-a-z0-9_,]+,)"${SELECT_USERNAME}"(,|$'\n'|$)+ ]]; then
DATA_FILE_GSHADOW=$(sed "/^${SELECT_GROUPNAME}:/ s/:${SELECT_USERNAME}$/:/g;\
/^${SELECT_GROUPNAME}:/ s/:${SELECT_USERNAME},/:/g;\
/^${SELECT_GROUPNAME}:/ s/,${SELECT_USERNAME}$//g;\
/^${SELECT_GROUPNAME}:/ s/,${SELECT_USERNAME},/,/g" <<< ${DATA_FILE_GSHADOW})
fi
done 4<<< "${SELECT_GROUPS//,/$'\n'}"
fi
done <<< "${SELECT_USERNAME_UID_LIST//,/$'\n'}"
echo "${DATA_FILE_GROUP}" > "${FILE_GROUP}"
echo "${DATA_FILE_GSHADOW}" > "${FILE_GSHADOW}"
}
#####################################################################################
###
@ -823,6 +217,8 @@ user_remove_group(){
###
#####################################################################################
# External: ubl-settings-usergroups
#
# Получить запись вида конфигурации USERADD из системного пользователя
# Если системный пользователь имеет настройки аналогичные настройкам создаваемого пользователя через .sysusers, то не выводим
# $1 # Опции не обязательные
@ -954,6 +350,8 @@ get_conf_useradd_from_system(){
done <<< "${PARAM_ALL// /$'\n'}"
}
# External: ubl-settings-usergroups
#
# Получить запись вида конфигурации USERSHADOW из системного пользователя: USERSHADOW[superadmin]='2024-03-06:0:99999:7::'
# Если системный пользователь имеет настройки аналогичные настройкам создаваемого пользователя через .sysusers, то не выводим
# $1 # Опции не обязательные
@ -1032,6 +430,8 @@ get_conf_usershadow_from_system(){
done <<< "${PARAM_ALL// /$'\n'}"
}
# External: ubl-settings-usergroups
#
# Получить запись вида конфигурации GROUPADD из систеных групп
# Если системная группа имеет настройки аналогичные настройкам создаваемой группы через .sysusers, то не выводим
# $1 # Опции не обязательные
@ -1182,14 +582,13 @@ log(){
debug_mode(){
if [[ $(cmdline_parameter debug) || ${DEBUGMODE} == "yes" ]]; then
name=$(basename $0)
slash="/"
[[ "$(pwd)" == "/union" ]] && slash=""
if [[ ! -f ${slash}var/log/ublinux/${name}.log ]]; then
echo "$0 -- debug mode enabled"
test -d ${slash}var/log/ublinux || mkdir -p ${slash}var/log/ublinux
echo $(date) > ${slash}var/log/ublinux/${name}.log || echo "can not create log file"
$0 "$@" 2>&1 | tee -a ${slash}var/log/ublinux/${name}.log
[[ -n ${SELF_FILE} && -n ${SELF_NAME} ]] || { local SELF_FILE=$0; local SELF_NAME=${0##*/}; }
[[ ${PWD} == "/union" ]] && local ROOTFS="." || local ROOTFS=
if [[ ! -f ${ROOTFS}/var/log/ublinux/${SELF_NAME}.log ]]; then
echo "${SELF_NAME} -- debug mode enabled"
[[ -d ${ROOTFS}/var/log/ublinux ]] || mkdir -p ${ROOTFS}/var/log/ublinux
echo $(date) > ${ROOTFS}/var/log/ublinux/${SELF_NAME}.log || echo "ERROR: Can not create log file"
${SELF_FILE} "$@" 2>&1 | tee -a ${ROOTFS}/var/log/ublinux/${SELF_NAME}.log
exit 0
fi
fi
@ -1208,15 +607,15 @@ echodebug(){
fi
}
##########################
##########################
# Create module
# call mksquashfs with apropriate arguments
# $1 = directory which will be compressed to squashfs module
# $2 = output filesystem module file
# $3..$9 = optional arguments like -keep-as-directory or -b 123456789
create_module(){
[[ -d /usr/lib/ublinux ]] && { 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
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
[[ $(< $@) =~ (^| )("-comp"|"-noD")( |$) ]] && MKSQFS_OPTS=
@ -1263,7 +662,7 @@ find_n_run_scripts(){
}
allow_only_root(){
[[ ${UID} == 0 ]] || { echo "Only root can run $(basename $0)"; exit 1; }
[[ ${UID} == 0 ]] || { echo "Only root can run ${SELF_NAME}"; exit 1; }
}
@ -1668,15 +1067,26 @@ 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; }
[[ -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
SYSCONF="${ROOTFS}${SYSCONF}"
#export TEXTDOMAINDIR="${ROOTFS}/usr/share/locale"
#export TEXTDOMAIN="ublinux_functions"
if [[ -z $@ ]]; then
while read -r FUNCTION; do
$"${FUNCTION##* }"
done < <(declare -F | grep "declare -f exec_")
else
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] ||
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }
fi

@ -15,15 +15,20 @@ SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
DE=$(get_de)
cd "${HOME}"
for SCRIPT in /usr/lib/ublinux/rc.desktop/${DE}/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} & 2>/dev/null
done
PATH_FIND="/usr/lib/ublinux/rc.desktop/${DE}"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
RC_DESKTOP_NOEXEC=${RC_DESKTOP_NOEXEC//,/ }; RC_DESKTOP_NOEXEC=${RC_DESKTOP_NOEXEC//;/ }
for SCRIPT in /usr/lib/ublinux/rc.desktop/all/*; do
[[ ${RC_DESKTOP_NOEXEC} =~ (^| |/)"${SCRIPT##*/}"( |$) ]] && continue
[[ ${RC_DESKTOP_NOEXEC} =~ (^| |/)"${DE}:${SCRIPT##*/}"( |$) ]] && continue
[[ -x ${SCRIPT} ]] && ${SCRIPT} & 2>/dev/null
done
PATH_FIND="/usr/lib/ublinux/rc.desktop/all"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
[[ ${RC_DESKTOP_NOEXEC} =~ (^| |/)"${SELECT_FILE##*/}"( |$) ]] && continue
[[ ${RC_DESKTOP_NOEXEC} =~ (^| |/)"${DE}:${SELECT_FILE##*/}"( |$) ]] && continue
#${SELECT_FILE} 2>/dev/null &
${SELECT_FILE} &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
echo 1 > /run/ublinux_started

@ -9,8 +9,9 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
for SCRIPT in /usr/lib/ublinux/rc.halt/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null
done
PATH_FIND="/usr/lib/ublinux/rc.halt"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -9,8 +9,9 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
for SCRIPT in /usr/lib/ublinux/rc.halt.pre/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null
done
PATH_FIND="/usr/lib/ublinux/rc.halt.pre"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -16,9 +16,10 @@ SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@"
for SCRIPT in /usr/lib/ublinux/rc.local.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null &
done
PATH_FIND="/usr/lib/ublinux/rc.local.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
echo -ne > /run/ublinux_started
chmod 664 /run/ublinux_started

@ -16,8 +16,10 @@ SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@"
for SCRIPT in /usr/lib/ublinux/rc.network.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null &
done
PATH_FIND="/usr/lib/ublinux/rc.network.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
#${SELECT_FILE} 2>/dev/null &
${SELECT_FILE} &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -13,8 +13,10 @@ SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
for SCRIPT in /usr/lib/ublinux/rc.pamaccount.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} &
done
PATH_FIND="/usr/lib/ublinux/rc.pamaccount.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
#${SELECT_FILE} 2>/dev/null &
${SELECT_FILE} &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -13,8 +13,10 @@ SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
for SCRIPT in /usr/lib/ublinux/rc.pamauth.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} &
done
PATH_FIND="/usr/lib/ublinux/rc.pamauth.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
#${SELECT_FILE} 2>/dev/null &
${SELECT_FILE} &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -13,8 +13,10 @@ SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
for SCRIPT in /usr/lib/ublinux/rc.pampassword.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} &
done
PATH_FIND="/usr/lib/ublinux/rc.pampassword.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
#${SELECT_FILE} 2>/dev/null &
${SELECT_FILE} &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -13,8 +13,10 @@ SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
for SCRIPT in /usr/lib/ublinux/rc.pamsession.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} &
done
PATH_FIND="/usr/lib/ublinux/rc.pamsession.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
#${SELECT_FILE} 2>/dev/null &
${SELECT_FILE} &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -12,21 +12,25 @@ DEBUGMODE=no
SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@"
for SCRIPT in /usr/lib/ublinux/rc.post.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null &
done
for SCRIPT in /usr/lib/ublinux/rc.post/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null
done
PATH_FIND="/usr/lib/ublinux/rc.post.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
PATH_FIND="/usr/lib/ublinux/rc.post"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
# We have to launch some rc scripts from external modules
LOCKDIR=/var/lock/ublinux/rc.runonce
[[ -d ${LOCKDIR} ]] || mkdir -p "${LOCKDIR}"
for SCRIPT in /usr/lib/ublinux/rc.runonce/*; do
[[ -f "${LOCKDIR}/$(basename ${SCRIPT})" || ! -x "${SCRIPT}" ]] && continue
${SCRIPT} start 2>/dev/null
touch "${LOCKDIR}/${SCRIPT##*/}"
done
PATH_FIND="/usr/lib/ublinux/rc.runonce"
LOCKDIR="/var/lock/ublinux/rc.runonce"
[[ -d ${LOCKDIR} ]] || install -dm0700 "${LOCKDIR}"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
[[ -f "${LOCKDIR}/${SELECT_FILE##*/}" ]] && continue
${SELECT_FILE} start 2>/dev/null
touch "${LOCKDIR}/${SELECT_FILE##*/}"
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
readlink -fq /usr/bin/init 2>/dev/null | grep -q "lib/systemd/systemd$" && wait

@ -8,25 +8,29 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
DEBUGMODE=no
. /liblinuxlive 2>/dev/null || . /mnt/live/liblinuxlive 2>/dev/null
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
SOURCE="/liblinuxlive" && [[ -r ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || SOURCE="/mnt/live/liblinuxlive" && [[ -r ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@"
debug_log "Starting rc.preinit"
debug_shell
# Install systemd services
[[ ! -h usr/lib/systemd/system/ublinux-postinit.service ]] && bash usr/lib/ublinux/rootfs-patches/ublinux/ublinux-00-install.sh
for SCRIPT in usr/lib/ublinux/rc.preinit/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null
done
for SCRIPT in usr/lib/ublinux/rc.preinit.d/*; do
[[ -x ${SCRIPT} ]] && ${SCRIPT} 2>/dev/null &
done
[[ ! -h ${ROOTFS}/usr/lib/systemd/system/ublinux-postinit.service ]] && ${ROOTFS}/usr/lib/ublinux/rootfs-patches/ublinux/ublinux-00-install
PATH_FIND="${ROOTFS}/usr/lib/ublinux/rc.preinit"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
PATH_FIND="${ROOTFS}/usr/lib/ublinux/rc.preinit.d"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
${SELECT_FILE} 2>/dev/null &
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
wait
true

@ -9,8 +9,9 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
for SCRIPT in /usr/lib/ublinux/rc.xorg/*; do
[[ -x ${SCRIPT} ]] && . ${SCRIPT} 2>/dev/null
done
PATH_FIND="/usr/lib/ublinux/rc.xorg"
while IFS= LC_ALL=C read -ru3 -d '' SELECT_FILE; do
. ${SELECT_FILE} 2>/dev/null
done 3< <(find "${PATH_FIND}" -type f -executable -print0 | sort -Vz)
true

@ -9,10 +9,8 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
. /usr/lib/ublinux/functions
. /usr/lib/ublinux/default
debug_mode "$0" "$@"
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/hardware; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null

@ -9,10 +9,8 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
. /usr/lib/ublinux/functions
. /usr/lib/ublinux/default
debug_mode "$0" "$@"
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/update; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null

@ -15,5 +15,5 @@ ENABLED=no
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
which $(basename $0) >/dev/null 2>&1 || exit 0
which cryptkeeper >/dev/null 2>&1 || exit 0
[[ ${CRYPTKEEPERSTART} != "no" ]] && cryptkeeper &

@ -9,7 +9,7 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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

@ -9,7 +9,7 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
ROOTFS=
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SYSCONF="${ROOTFS}${SYSCONF}"

@ -16,10 +16,9 @@ HALT_PROCESSES_KILL=""
HALT_SERVICES_STOP=""
HALT_EXCLUDE_STOP=""
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null

@ -8,12 +8,12 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
#DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
#debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
@ -233,7 +233,8 @@ exec_grub_kernel_boot(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -10,12 +10,12 @@ shopt -s extglob
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
#DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
#debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
@ -270,7 +270,8 @@ exec_02_groupadd_sync(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -8,12 +8,12 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
#DEBUGMODE=no
[[ -d /usr/lib/ublinux ]] && { unset ROOTFS; unset CMD_CHROOT; } || { ROOTFS="/sysroot"; CMD_CHROOT="chroot ${ROOTFS}"; }
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
debug_mode "$0" "$@"
#debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"

@ -8,12 +8,12 @@
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
#DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
#debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
@ -66,8 +66,8 @@ exec_save_sssd_rootcopy(){
[[ -f "${PATH_CHANGES}/etc/krb5.conf" ]] && cp -af -t "${PATH_ROOTCOPY}/etc/" "${PATH_CHANGES}/etc/krb5.conf" 2>/dev/null || rm -f "${PATH_ROOTCOPY}/etc/krb5.conf" 2>/dev/null
[[ -f "${PATH_CHANGES}/etc/krb5.keytab" ]] && cp -af -t "${PATH_ROOTCOPY}/etc/" "${PATH_CHANGES}/etc/krb5.keytab" 2>/dev/null || rm -f "${PATH_ROOTCOPY}/etc/krb5.keytab" 2>/dev/null
[[ -f "${PATH_CHANGES}/etc/realmd.conf" ]] && cp -af -t "${PATH_ROOTCOPY}/etc/" "${PATH_CHANGES}/etc/realmd.conf" 2>/dev/null || rm -f "${PATH_ROOTCOPY}/etc/realmd.conf" 2>/dev/null
[[ -d "${PATH_CHANGES}/etc/sssd" ]] && rsync -aAXUH --delete "${PATH_CHANGES}/etc/sssd" "${PATH_ROOTCOPY}/etc/" 2>/dev/null || rm -rdf "${PATH_ROOTCOPY}/etc/sssd" 2>/dev/null
[[ -d "${PATH_CHANGES}/var/lib/sss" ]] && rsync -aAXUH --delete "${PATH_CHANGES}/var/lib/sss" "${PATH_ROOTCOPY}/var/lib/" 2>/dev/null || rm -rdf "${PATH_ROOTCOPY}/var/lib/sss" 2>/dev/null
[[ -d "${PATH_CHANGES}/etc/sssd" ]] && rsync -aAXUH --delete "${PATH_CHANGES}/etc/sssd" "${PATH_ROOTCOPY}/etc/" 2>/dev/null || rm -rf "${PATH_ROOTCOPY}/etc/sssd" 2>/dev/null
[[ -d "${PATH_CHANGES}/var/lib/sss" ]] && rsync -aAXUH --delete "${PATH_CHANGES}/var/lib/sss" "${PATH_ROOTCOPY}/var/lib/" 2>/dev/null || rm -rf "${PATH_ROOTCOPY}/var/lib/sss" 2>/dev/null
# cd ${PATH_CHANGES}
# find etc/ -type f -name "krb5.conf" -exec install -CDm644 {} ${PATH_ROOTCOPY}/{} \;

@ -58,7 +58,8 @@ exec_check_user_group(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -4,7 +4,7 @@ ENABLED=no
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -15,7 +15,7 @@ SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@"
exec_01_init_pacman_gpg(){
/usr/bin/pacman-key -l &>/dev/null 2>&1 || rm -rdf /etc/pacman.d/gnupg
/usr/bin/pacman-key -l &>/dev/null 2>&1 || rm -rf /etc/pacman.d/gnupg
pacman-key --init &>/dev/null
pacman-key --populate $(ls /usr/share/pacman/keyrings/*.gpg | sed 's%.*/%%;s%\.[^.]*$%%') &>/dev/null
#usr/bin/pacman-key --updatedb

@ -308,13 +308,13 @@ exec_03_repopublic_web(){
elif [[ ${SELECT_STATUS} == @("disable"|"no"|"none") ]]; then
kill_web_service "${REPOPUBLIC_WEB_PATH}"
umount "${PATH_NEW_REPOPUBLIC_WEB_PATH}"/* 2>/dev/null
rm -rdf "${PATH_NEW_REPOPUBLIC_WEB_PATH}"
rm -rf "${PATH_NEW_REPOPUBLIC_WEB_PATH}"
fi
done 3< <(printf "%s\n" "${!REPOPUBLIC_WEB[@]}")
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
kill_web_service
umount "${PATH_NEW_REPOPUBLIC_WEB_PATH}"/* 2>/dev/null
rm -rdf "${PATH_NEW_REPOPUBLIC_WEB_PATH}"
rm -rf "${PATH_NEW_REPOPUBLIC_WEB_PATH}"
fi
}
@ -624,7 +624,7 @@ exec_remove_duplicated_pacman(){
local PKG_PACMAN_DB_OLD=()
local PKG_PACMAN_DB_NEW=()
# Из всех дубликатов приложений в базе pacman удалить старые версии
#cd ${PATH_PACMAN_DB}; rm -rdf $(ls -1vr ${PATH_PACMAN_DB} | sed -En 's/((.*)-([^-]+)-([^-]+))/\2|\1/p' | awk -F '|' 'prefixes[$1]++ {print $2}') #'
#cd ${PATH_PACMAN_DB}; rm -rf $(ls -1vr ${PATH_PACMAN_DB} | sed -En 's/((.*)-([^-]+)-([^-]+))/\2|\1/p' | awk -F '|' 'prefixes[$1]++ {print $2}') #'
readarray -t PKG_PACMAN_DB_OLD < <(ls -1vr ${PATH_PACMAN_DB} | sed -En 's/((.*)-([^-]+)-([^-]+))/\2|\1/p' | awk -F '|' 'prefixes[$1]++ {print $2}') #'
readarray -t PKG_PACMAN_DB_NEW < <(ls -1v ${PATH_PACMAN_DB} | sed -En 's/((.*)-([^-]+)-([^-]+))/\2|\1/p' | awk -F '|' 'prefixes[$1]++ {print $2}') #'
# Индексы позиций имени пакетов в массиве одинаковые, только разные версии
@ -634,11 +634,11 @@ exec_remove_duplicated_pacman(){
if [[ -d "/memory/changes/${PATH_PACMAN_DB}/${PKG_PACMAN_DB_NEW[${PKG_PACMAN_DB}]}" ]]; then
# Если новые пакет находится в самом низком слое /changes/, то значит и файлы данных пакеты будут новые
# Следует удалить старое имя пакета из корня
rm -rdf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_OLD[${PKG_PACMAN_DB}]}"
rm -rf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_OLD[${PKG_PACMAN_DB}]}"
elif [[ -d "/memory/changes/${PATH_PACMAN_DB}/${PKG_PACMAN_DB_OLD[${PKG_PACMAN_DB}]}" ]]; then
# Если старый пакет находится в самом низком слое /changes/, то значит и файлы данных пакеты будут старые, не смотря на новизну модуля
# Следует удалить новое имя пакета из корня
rm -rdf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_NEW[${PKG_PACMAN_DB}]}"
rm -rf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_NEW[${PKG_PACMAN_DB}]}"
else
# В нижнем слое /changes/ нет пакета, значит оба пакета и старый и новый находятся в модулях
# Сравниваем номера слоёв старого и нового пакета и удяляем имя пакета в более высоком слое, который перекрывается более низким слоем
@ -652,9 +652,9 @@ exec_remove_duplicated_pacman(){
if [[ -n ${AUFS_BUNDLE_PKG_NEW_NUM} && -n ${AUFS_BUNDLE_PKG_OLD_NUM} ]]; then
# Принудительно указываем, что числа в десятичной системе исчисления $((10#${}))
if [[ $((10#${AUFS_BUNDLE_PKG_NEW_NUM})) -lt $((10#${AUFS_BUNDLE_PKG_OLD_NUM})) ]]; then
rm -rdf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_OLD[${PKG_PACMAN_DB}]}"
rm -rf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_OLD[${PKG_PACMAN_DB}]}"
else
rm -rdf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_NEW[${PKG_PACMAN_DB}]}"
rm -rf "${PATH_PACMAN_DB}/${PKG_PACMAN_DB_NEW[${PKG_PACMAN_DB}]}"
fi
fi
fi
@ -677,7 +677,8 @@ exec_remove_duplicated_pacman(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -19,5 +19,5 @@ debug_mode "$0" "$@"
#[[ ${UPDATE_GTK_ICON_CACHE} != "no" ] && [[ -d "/usr/share/icons/hicolor/" ]] && gtk-update-icon-cache ${UPDATE_GTK_ICON_OPTS} >/dev/null 2>&1
[[ ${UPDATE_GTK_ICON_CACHE} != "no" ]] && find /usr/share/icons -mindepth 1 -maxdepth 1 -type d | while read -r THEME; do
[[ -f "${THEME}/index.theme" ] && gtk-update-icon-cache -f -q "${THEME}" 2>/dev/null
[[ -f "${THEME}/index.theme" ]] && gtk-update-icon-cache -f -q "${THEME}" 2>/dev/null
done

@ -10,11 +10,9 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
#. /usr/lib/ublinux/functions
#. /usr/lib/ublinux/default
debug_mode "$0" "$@"
if [[ -d "/usr/share/applications/" || -d "/usr/local/share/applications/" ]]; then
touch /usr/share/applications/screensavers
UPDATE_FILE="/usr/share/applications/ubhwreport.desktop" && [[ -f ${UPDATE_FILE} ]] && touch ${UPDATE_FILE}
update-desktop-database -q 2>/dev/null
fi

@ -4,7 +4,7 @@ ENABLED=no
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == yes ]] || exit 0
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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

@ -129,7 +129,7 @@ exec_02_ubpile(){
[[ -n ${UBPILE_DB[0]} ]] || local UBPILE_DB="fs"
case ${UBPILE_DB[0]} in
fs)
[[ -d ${PATH_UBPILE}/data ]] && rm -rdf ${PATH_UBPILE}/data
[[ -d ${PATH_UBPILE}/data ]] && rm -rf ${PATH_UBPILE}/data
;;
sqlite)
cd ${PATH_UBPILE}
@ -314,7 +314,8 @@ message_motd(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -110,7 +110,8 @@ exec_network(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -5,9 +5,9 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
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
debug_mode "$0" "$@"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null

@ -11,9 +11,9 @@ ENABLED=no
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
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
debug_mode "$0" "$@"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null

@ -394,7 +394,8 @@ remove_desktop(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -135,10 +135,10 @@ exec_01_journald_notify(){
[[ ${PARAM} =~ ^[[:alnum:]_]+("="|"[".*"]=") ]] && eval "${PARAM%%=*}=\${PARAM#*=}"
fi
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#JOURNALD_NOTIFY[@]} -ne 0 ]]; then
local TYPE= TYPE_VOLUE= PRIORITY= OPTIONS= FILTER=
local TYPE= TYPE_VALUE= PRIORITY= OPTIONS= FILTER=
for SELECT_JOURNALD_NOTIFY in "${!JOURNALD_NOTIFY[@]}"; do
IFS=: read -r TYPE TYPE_VOLUE PRIORITY OPTIONS NULL <<< ${SELECT_JOURNALD_NOTIFY}
[[ -n ${TYPE} && -n ${TYPE_VOLUE} ]] || continue
IFS=: read -r TYPE TYPE_VALUE PRIORITY OPTIONS NULL <<< ${SELECT_JOURNALD_NOTIFY}
[[ -n ${TYPE} && -n ${TYPE_VALUE} ]] || continue
case "${TYPE,,}" in
"u") TYPE="--unit" ;;
"uu") TYPE="--user-unit" ;;
@ -146,11 +146,11 @@ exec_01_journald_notify(){
"f") TYPE="--facility" ;;
*) continue ;;
esac
[[ ${TYPE} == "--facility" ]] && { [[ ${TYPE_VOLUE,,} == @(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; }
[[ ${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_VOLUE} ${PRIORITY} ${OPTIONS} ${FILTER}"
setsid -f /usr/lib/ublinux/rc.pamsession.d/02-journald-notify ubconfig_journald_notify_live "${TYPE}" "${TYPE_VOLUE}" "${PRIORITY}" "${OPTIONS}" "${FILTER}"
pkill -f "/usr/lib/ublinux/rc.pamsession.d/02-journald-notify 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 на всех сетевых интерфейсах
[[ ${NETWORK[all@connmod]} =~ "ipv4.dad-timeout -1" ]] || ubconfig --quiet --target system set [network] NETWORK[all@connmod]+=" ipv4.dad-timeout -1"
@ -161,10 +161,10 @@ exec_01_journald_notify(){
PARAM_VALUE="${PARAM#*=}"
JOURNALD_NOTIFY+="${PARAM_VALUE// /,}"
fi
local TYPE= TYPE_VOLUE= PRIORITY= OPTIONS= FILTER=
local TYPE= TYPE_VALUE= PRIORITY= OPTIONS= FILTER=
for SELECT_JOURNALD_NOTIFY in "${!JOURNALD_NOTIFY[@]}"; do
IFS=: read -r TYPE TYPE_VOLUE PRIORITY OPTIONS NULL <<< ${SELECT_JOURNALD_NOTIFY}
[[ -n ${TYPE} && -n ${TYPE_VOLUE} ]] || continue
IFS=: read -r TYPE TYPE_VALUE PRIORITY OPTIONS NULL <<< ${SELECT_JOURNALD_NOTIFY}
[[ -n ${TYPE} && -n ${TYPE_VALUE} ]] || continue
case "${TYPE,,}" in
"u") TYPE="--unit" ;;
"uu") TYPE="--user-unit" ;;
@ -172,10 +172,10 @@ exec_01_journald_notify(){
"f") TYPE="--facility" ;;
*) continue ;;
esac
[[ ${TYPE} == "--facility" ]] && { [[ ${TYPE_VOLUE,,} == @(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; }
[[ ${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_VOLUE} ${PRIORITY} ${OPTIONS} ${FILTER}"
pkill -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 на всех сетевых интерфейсах
[[ ${NETWORK[all@connmod]} =~ "ipv4.dad-timeout -1" ]] && ubconfig --quiet --target system set [network] NETWORK[all@connmod]-="ipv4.dad-timeout -1"
@ -185,7 +185,7 @@ exec_01_journald_notify(){
}
ubconfig_journald_notify_live(){
local TYPE=$1 TYPE_VOLUE=$2 PRIORITY=$3 OPTIONS=$4 FILTER=$5
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##*/}"
@ -242,7 +242,7 @@ ubconfig_journald_notify_live(){
done 3<<< ${FILTER//,/$'\n'}
}
init
journalctl ${TYPE} "${TYPE_VOLUE}" ${PRIORITY} --no-hostname --lines 1 --output export --follow ${OPTIONS} | while IFS= read SELECT_JOURNAL_ITEM; do
journalctl ${TYPE} "${TYPE_VALUE}" ${PRIORITY} --no-hostname --lines 1 --output export --follow ${OPTIONS} | while IFS= read SELECT_JOURNAL_ITEM; do
[[ ${SELECT_JOURNAL_ITEM} =~ ($'\n'|^)+"PRIORITY="([^$'\n']*)($'\n'|$)+ ]] && case ${BASH_REMATCH[2]} in
0|emerg) NOTIFY_ICON="--icon dialog-error --urgency=critical" ;;
1|alert) NOTIFY_ICON="--icon dialog-error --urgency=critical" ;;
@ -272,8 +272,8 @@ ubconfig_journald_notify_live(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
#[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] ||
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"
shift
done

@ -104,8 +104,8 @@ ubconfig_certmonger_cepces_live(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
#[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] ||
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"
shift
done

@ -116,8 +116,8 @@ exec_01_user_locale(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
#[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] ||
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"
shift
done

@ -10,11 +10,11 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
[[ -d /memory/run ]] && cp -fr /memory/run/* /run/ && rm -rdf /memory/run
[[ -d /memory/run ]] && cp -fr /memory/run/* /run/ && rm -rf /memory/run
[[ -f /etc/sysctl.conf ]] && sysctl -p /etc/sysctl.conf
[[ -f /etc/sysctl.d/ublinux.conf ]] && sysctl -p /etc/sysctl.d/ublinux.conf

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -12,7 +12,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -52,7 +52,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
@ -481,5 +481,5 @@ insert_background_icon(){
insert_background_icon ${img_nosave}
fi
fi
[[ -n ${BUILD_MANUAL} ]] || rm -rdf ${wallpapers_tmp}
[[ -n ${BUILD_MANUAL} ]] || rm -rf ${wallpapers_tmp}

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
@ -239,8 +239,8 @@ ${SET_SECTION}EndSection
else
FUNCTION=
while [[ $# -gt 0 ]]; do
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
#[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] ||
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"
shift
done

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
@ -28,7 +28,7 @@ exec_dconf(){
while IFS= read -r -d '' FIND_DCONF_DB; do
FIND_DCONF_DB=${FIND_DCONF_DB##*/}; FIND_DCONF_DB=${FIND_DCONF_DB%*.d}
grep -Fxq "system-db:${FIND_DCONF_DB}" ${DCONF_PROFILE_USER} &>/dev/null || echo "system-db:${FIND_DCONF_DB}" >> ${DCONF_PROFILE_USER}
done < <(find ${DCONF_DB} -type d -iname "*.d" -print0)
done < <(find ${DCONF_DB} -type d -iname "*.d" -print0 | sort -Vz)
}
################

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=no
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -4,7 +4,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -12,7 +12,7 @@ DEBUGMODE=no
SELF_NAME="42-access-suid-sgid"
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"
@ -59,7 +59,8 @@ exec_access_allowed_sgid(){
# declare -f ${FUNCTION} &>/dev/null && ${FUNCTION}
# done
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=no
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=no
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -10,7 +10,7 @@ ENABLED=no
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
@ -30,7 +30,7 @@ SOURCE=${SYSCONF}/hardware; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
exec_modulespreload(){
for SELECT_MODULE in ${MODULES_PRELOAD//,/ }; do
[[ ${BLACK_LIST_MODULES} =~ (^|,|;)${SELECT_MODULE}(,|;|$) || ${CMD_CHROOT} modprobe ${SELECT_MODULE}
[[ ${BLACK_LIST_MODULES} =~ (^|,|;)${SELECT_MODULE}(,|;|$) ]] || ${CMD_CHROOT} modprobe ${SELECT_MODULE}
done
BLACK_LIST="${ROOTFS}/etc/modprobe.d/blacklist-ublinux.conf"

@ -14,7 +14,7 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
DEBUGMODE=no
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"
@ -24,27 +24,32 @@ debug_mode "$0" "$@"
exec_update_font_cache(){
for FONT_PATH in ${ROOTFS}/usr/share/fonts{,/default}/TTF ${ROOTFS}/usr/X11R6/lib/X11/fonts/TTF; do
if [[ -d "${FONT_PATH}" ]]; then
${CMD_CHROOT} /usr/bin/mkfontscale ${FONT_PATH}
${CMD_CHROOT} /usr/bin/mkfontdir ${FONT_PATH}
${CMD_CHROOT} /usr/bin/mkfontscale ${FONT_PATH/${ROOTFS}/}
${CMD_CHROOT} /usr/bin/mkfontdir ${FONT_PATH/${ROOTFS}/}
fi
done
${CMD_CHROOT} /usr/bin/fc-cache -s 2>&1 &>/dev/null
}
exec_update_font_cache_live(){
for FONT_PATH in ${ROOTFS}/usr/share/fonts/*; do
if [[ -z ${ROOTFS} ]]; then
for FONT_PATH in /usr/share/fonts/*; do
if [[ -d "${FONT_PATH}" ]]; then
xset +fp "${FONT_PATH}" 2>&1 &>/dev/null
${CMD_CHROOT} /usr/bin/mkfontscale ${FONT_PATH}
${CMD_CHROOT} /usr/bin/mkfontdir ${FONT_PATH}
/usr/bin/mkfontscale ${FONT_PATH}
/usr/bin/mkfontdir ${FONT_PATH}
fi
done
xset fp rehash 2>&1 &>/dev/null
fi
}
################
##### MAIN #####
################
if [[ -n ${ROOTFS} ]]; then
exec_update_font_cache
#exec_update_font_cache_live
else
exec_update_font_cache_live
fi

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -122,7 +122,8 @@ exec_environment(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -16,7 +16,7 @@ ENABLED=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
DEBUGMODE=no
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
#SOURCE=${ROOTFS}/usr/lib/ublinux/scripts/liblinuxlive; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
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
@ -152,7 +152,8 @@ exec_link(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -16,7 +16,7 @@ ENABLED=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
DEBUGMODE=no
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -276,7 +276,8 @@ exec_services_startstop_live(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -101,7 +101,8 @@ domain_configure_live(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -336,7 +336,8 @@ exec_logrotate_live(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -15,7 +15,7 @@ ENABLED=yes
DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -205,8 +205,8 @@ set_vconsole_live(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
#[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] ||
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"
shift
done

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -61,7 +61,8 @@ exec_access_denied_login(){
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -177,8 +177,8 @@ EOF
else
FUNCTION=
while [[ $# -gt 0 ]]; do
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
#[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] ||
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"
@ -129,7 +129,8 @@ EOF
else
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
# Что-бы передавать пустые параметры как аргументы, нужно для соблюдения очередности и кол-ва, отключил [[ -z ${1} ]] || {}
declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"
shift
done
eval ${FUNCTION#*; }

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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

@ -20,7 +20,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

@ -16,7 +16,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
[[ ! -f /init ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${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
debug_mode "$0" "$@"

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save