|
|
|
|
@ -62,19 +62,21 @@ ere_quote_sed() {
|
|
|
|
|
# phash # Если первые символы %%, то убрать %% и вернуть не шифрованный пароль, в остальных случаях вернуть хеш
|
|
|
|
|
# $2 # Тип хеша, поддерживаются yescrypt|gost-yescrypt|scrypt|bcrypt|bcrypt-a|sha512crypt|sha256crypt|sunmd5|md5crypt|bsdicrypt|descrypt|nt
|
|
|
|
|
# # В разработке argon2d|argon2i|argon2ds|argon2id
|
|
|
|
|
# $3 # Пароль пользователя шифрованный или не шифрованный. Если шифрованный, то вернётся как есть
|
|
|
|
|
# Применяется в ubconfig
|
|
|
|
|
# $3 # Пароль пользователя шифрованный или не шифрованный. Если шифрованный, то вернётся как есть.
|
|
|
|
|
# Применяется в ubconfig, 10-accounts
|
|
|
|
|
return_hash_password(){
|
|
|
|
|
SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
|
DEFAULT_HASHPASSWD="yescrypt"
|
|
|
|
|
[[ $1 == @(hash|phash) ]] && local ARG_MODE=$1 && shift
|
|
|
|
|
local DEFAULT_HASHPASSWD="yescrypt"
|
|
|
|
|
local ARG_HASH=
|
|
|
|
|
[[ $1 == @(hash|phash) ]] && ARG_MODE=$1 && shift
|
|
|
|
|
[[ -n ${ARG_MODE} ]] || ARG_MODE='hash'
|
|
|
|
|
[[ $1 == @(yescrypt|gost-yescrypt|scrypt|bcrypt|bcrypt-a|sha512crypt|sha256crypt|sunmd5|md5crypt|bsdicrypt|descrypt|nt|argon2d|argon2i|argon2ds|argon2id) ]] && local ARG_HASH=$1 && shift
|
|
|
|
|
[[ $1 == @(yescrypt|gost-yescrypt|scrypt|bcrypt|bcrypt-a|sha512crypt|sha256crypt|sunmd5|md5crypt|bsdicrypt|descrypt|nt|argon2d|argon2i|argon2ds|argon2id) ]] && ARG_HASH=$1 && shift
|
|
|
|
|
[[ -n ${ARG_HASH} ]] || ARG_HASH=${HASHPASSWD}
|
|
|
|
|
[[ -n ${ARG_HASH} ]] || ARG_HASH=$(${ROOTFS}/usr/bin/ubconfig --raw --default get users HASHPASSWD)
|
|
|
|
|
[[ -n ${ARG_HASH} && ${ARG_HASH} != "(null)" ]] || ARG_HASH="${DEFAULT_HASHPASSWD}"
|
|
|
|
|
local ARG_PASSWORD="$1"
|
|
|
|
|
local HASH_PASSWORD=${ARG_PASSWORD}
|
|
|
|
|
local BLOCK_PASSWORD=
|
|
|
|
|
[[ -n ${ARG_PASSWORD} ]] || return 0
|
|
|
|
|
if [[ ! ${ARG_PASSWORD} =~ ^('!*'|'!'|'!!'|'*')*'$'(_|1|2|2a|2b|2x|2y|3|4|5|6|7|md5|sha1|gy|y|argon2d|argon2i|argon2ds|argon2id)'$' ]]; then
|
|
|
|
|
[[ ${ARG_PASSWORD} =~ ^'%%'(.*) ]] && ARG_PASSWORD=${BASH_REMATCH[1]} && HASH_PASSWORD=${ARG_PASSWORD} || ARG_MODE='hash'
|
|
|
|
|
@ -98,6 +100,39 @@ return_hash_password(){
|
|
|
|
|
echo "${BLOCK_PASSWORD}${HASH_PASSWORD}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Получить хеш пароля base64
|
|
|
|
|
# $1 # Режим получения хеша, значения: hash, phash
|
|
|
|
|
# hash # Вернуть хеш, если первые символы %%, то удалить их и вернуть хеш
|
|
|
|
|
# phash # Если первые символы %%, то убрать %% и вернуть не шифрованный пароль, в остальных случаях вернуть хеш
|
|
|
|
|
# decode # Если хеш, то декодировать в пароль
|
|
|
|
|
# $2 # Пароль пользователя шифрованный или не шифрованный. Если шифрованный, то вернётся как есть.
|
|
|
|
|
# Применяется в ubconfig, 41-x11vnc
|
|
|
|
|
return_base64_password(){
|
|
|
|
|
local ARG_HASH=
|
|
|
|
|
[[ $1 == @(hash|phash|decode) ]] && ARG_MODE=$1 && shift
|
|
|
|
|
[[ -n ${ARG_MODE} ]] || ARG_MODE='hash'
|
|
|
|
|
local ARG_PASSWORD="$1"
|
|
|
|
|
local HASH_PASSWORD=${ARG_PASSWORD}
|
|
|
|
|
[[ -n ${ARG_PASSWORD} ]] || return 0
|
|
|
|
|
if [[ ${ARG_MODE} == 'decode' ]]; then
|
|
|
|
|
if [[ ${ARG_PASSWORD} =~ ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}[AEIMQUYcgkosw048]=|[A-Za-z0-9+/][AQgw]==)?$ ]]; then
|
|
|
|
|
HASH_PASSWORD=$(${ROOTFS}/usr/bin/base64 -d <<< "${ARG_PASSWORD}" 2>/dev/null)
|
|
|
|
|
[[ ${HASH_PASSWORD} = *[^[:print:]]* ]] && HASH_PASSWORD=${ARG_PASSWORD}
|
|
|
|
|
else
|
|
|
|
|
[[ ${ARG_PASSWORD} =~ ^'%%'(.*) ]] && ARG_PASSWORD=${BASH_REMATCH[1]} && HASH_PASSWORD=${ARG_PASSWORD}
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
if [[ ! ${ARG_PASSWORD} =~ ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}[AEIMQUYcgkosw048]=|[A-Za-z0-9+/][AQgw]==)?$ ]]; then
|
|
|
|
|
[[ ${ARG_PASSWORD} =~ ^'%%'(.*) ]] && ARG_PASSWORD=${BASH_REMATCH[1]} && HASH_PASSWORD=${ARG_PASSWORD} || ARG_MODE='hash'
|
|
|
|
|
[[ ${ARG_MODE} == 'hash' ]] && HASH_PASSWORD=$(${ROOTFS}/usr/bin/base64 <<< "${ARG_PASSWORD}" 2>/dev/null)
|
|
|
|
|
else
|
|
|
|
|
HASH_PASSWORD_TEST=$(return_base64_password decode "${ARG_PASSWORD}")
|
|
|
|
|
[[ ${ARG_PASSWORD} == ${HASH_PASSWORD_TEST} ]] && HASH_PASSWORD=$(${ROOTFS}/usr/bin/base64 <<< "${ARG_PASSWORD}" 2>/dev/null)
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
echo "${HASH_PASSWORD}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# External: ubl-settings-usergroups
|
|
|
|
|
#
|
|
|
|
|
# Если параметр $1 известный хеш, то вернуть true, иначе false
|
|
|
|
|
@ -965,7 +1000,7 @@ ubconfig_exec_system(){
|
|
|
|
|
LIGHTDM_XDMCP) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_xdmcp "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
|
|
|
|
|
LIGHTDM_XDMCP\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_xdmcp "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
|
|
|
|
|
LIGHTDM_GREETER\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/60-lightdm-settings exec_lightdm_greeter "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
|
|
|
|
|
X11VNC\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/41-x11vnc ;;
|
|
|
|
|
X11VNC\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/41-x11vnc exec_x11vnc "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
|
|
|
|
|
*) NO_FIND_EXCUTE=1 ;;
|
|
|
|
|
esac
|
|
|
|
|
;;
|
|
|
|
|
|