|
|
|
@ -165,8 +165,19 @@ class VariableClMigrateRootPwdPlain(GrubHelper, UserHelper, Variable):
|
|
|
|
|
self.label = _("Root password")
|
|
|
|
|
|
|
|
|
|
def check(self, value):
|
|
|
|
|
#raise VariableError(self.Get('cl_migrate_root_shadow_pwd'))
|
|
|
|
|
#raise VariableError(value)
|
|
|
|
|
if not value and not self.Get('cl_migrate_root_shadow_pwd'):
|
|
|
|
|
raise PasswordError(_("Enter password for user %s") % "root")
|
|
|
|
|
if value != self.stub_hash_value:
|
|
|
|
|
if len(value) < 8:
|
|
|
|
|
raise VariableError(_(f"Password should contain at least 8 symbols"))
|
|
|
|
|
elif not any([x.isupper() for x in value]):
|
|
|
|
|
raise VariableError(_(f"Password should contain at least 1 uppercase letter"))
|
|
|
|
|
elif not any([x.islower() for x in value]):
|
|
|
|
|
raise VariableError(_(f"Password should contain at least 1 lowercase letter"))
|
|
|
|
|
elif not any([x.isdigit() for x in value]):
|
|
|
|
|
raise VariableError(_(f"Password should contain at least 1 digit"))
|
|
|
|
|
# если plain пароля нет (есть только хэш), но требуется установить
|
|
|
|
|
# пароль на grub (cl_grub_passwd_set), при этом нет 07_passwd
|
|
|
|
|
if (value == self.stub_hash_value and
|
|
|
|
@ -547,10 +558,22 @@ class VariableClMigrateUserPwd(UserHelper, Variable):
|
|
|
|
|
raise PasswordError(
|
|
|
|
|
_("Enter password for user %s") % user)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def set(self, value):
|
|
|
|
|
"""
|
|
|
|
|
Encrypt passwords
|
|
|
|
|
"""
|
|
|
|
|
for pas in value:
|
|
|
|
|
if pas == 'guest':
|
|
|
|
|
pass
|
|
|
|
|
elif len(pas) < 8:
|
|
|
|
|
raise VariableError(_("Password should contain at least 8 symbols"))
|
|
|
|
|
elif not any([x.isupper() for x in pas]):
|
|
|
|
|
raise VariableError(_("Password should contain at least 1 uppercase letter"))
|
|
|
|
|
elif not any([x.islower() for x in pas]):
|
|
|
|
|
raise VariableError(_("Password should contain at least 1 lowercase letter"))
|
|
|
|
|
elif not any([x.isdigit() for x in pas]):
|
|
|
|
|
raise VariableError(_("Password should contain at least 1 digit"))
|
|
|
|
|
shadow_hash = get_shadow_hash()
|
|
|
|
|
|
|
|
|
|
return [x if shadow_hash.identify(x) or not x else shadow_hash.hash(x) for x in value]
|
|
|
|
|