1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#
# userauth_text.py: text mode authentication setup dialogs
#
# Copyright 2000-2002 Red Hat, Inc.
#
# This software may be freely redistributed under the terms of the GNU
# library public license.
#
# You should have received a copy of the GNU Library Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
from snack import *
from constants_text import *
from rhpl.translate import _
def has_bad_chars(pw):
allowed = string.digits + string.ascii_letters + string.punctuation + " "
for letter in pw:
if letter not in allowed:
return 1
return 0
class RootPasswordWindow:
def __call__ (self, screen, anaconda):
toplevel = GridFormHelp (screen, _("Root Password"), "rootpw", 1, 3)
toplevel.add (TextboxReflowed(37, _("Pick a root password. You must "
"type it twice to ensure you know "
"what it is and didn't make a mistake "
"in typing. Remember that the "
"root password is a critical part "
"of system security!")), 0, 0, (0, 0, 0, 1))
if anaconda.id.rootPassword["isCrypted"]:
anaconda.id.rootPassword["password"] = ""
entry1 = Entry (24, password = 1, text = anaconda.id.rootPassword["password"])
entry2 = Entry (24, password = 1, text = anaconda.id.rootPassword["password"])
passgrid = Grid (2, 2)
passgrid.setField (Label (_("Password:")), 0, 0, (0, 0, 1, 0), anchorLeft = 1)
passgrid.setField (Label (_("Password (confirm):")), 0, 1, (0, 0, 1, 0), anchorLeft = 1)
passgrid.setField (entry1, 1, 0)
passgrid.setField (entry2, 1, 1)
toplevel.add (passgrid, 0, 1, (0, 0, 0, 1))
bb = ButtonBar (screen, (TEXT_OK_BUTTON, TEXT_BACK_BUTTON))
toplevel.add (bb, 0, 2, growx = 1)
while 1:
toplevel.setCurrent (entry1)
result = toplevel.run ()
rc = bb.buttonPressed (result)
if rc == TEXT_BACK_CHECK:
screen.popWindow()
return INSTALL_BACK
if len (entry1.value ()) < 6:
ButtonChoiceWindow(screen, _("Password Length"),
_("The root password must be at least 6 characters "
"long."),
buttons = [ TEXT_OK_BUTTON ], width = 50)
elif entry1.value () != entry2.value ():
ButtonChoiceWindow(screen, _("Password Mismatch"),
_("The passwords you entered were different. Please "
"try again."),
buttons = [ TEXT_OK_BUTTON ], width = 50)
elif has_bad_chars(entry1.value()):
ButtonChoiceWindow(screen, _("Error with Password"),
_("Requested password contains non-ascii characters "
"which are not allowed for use in password."),
buttons = [ TEXT_OK_BUTTON ], width = 50)
else:
break
entry1.set ("")
entry2.set ("")
screen.popWindow()
anaconda.id.rootPassword["password"] = entry1.value()
anaconda.id.rootPassword["isCrypted"] = False
return INSTALL_OK
|