All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Match bare-metal GRUB behavior for pyGrub
@ 2009-09-01 13:38 Michal Novotny
  0 siblings, 0 replies; only message in thread
From: Michal Novotny @ 2009-09-01 13:38 UTC (permalink / raw)
  To: 'xen-devel@lists.xensource.com'

[-- Attachment #1: Type: text/plain, Size: 491 bytes --]

Hi,
this is the patch to match default password behavior for pyGrub when 
using password. The password support patch already merged into the 
xen-unstable.hg repository didn't match the bare-metal GRUB behavior so 
I created a patch to match it. If password is entered in grub.conf file, 
pressing `p` is required exactly like when using "real" (bare-metal) 
GRUB. New options are available after the correct password is entered.

Michal

Signed-off-by: Michal Novotny <minovotn@redhat.com>

[-- Attachment #2: xen-pygrub-match-grub-behavior.patch --]
[-- Type: text/x-patch, Size: 4199 bytes --]

diff -r 8fc927798476 tools/pygrub/src/pygrub
--- a/tools/pygrub/src/pygrub	Tue Sep 01 11:36:51 2009 +0100
+++ b/tools/pygrub/src/pygrub	Tue Sep 01 15:31:10 2009 +0200
@@ -415,16 +415,17 @@ class Grub:
         def draw():
             # set up the screen
             self.draw_main_windows()
-            self.text_win.addstr(0, 0, "Use the U and D keys to select which entry is highlighted.")
-            self.text_win.addstr(1, 0, "Press enter to boot the selected OS. 'e' to edit the")
-            self.text_win.addstr(2, 0, "commands before booting, 'a' to modify the kernel arguments ")
-
-            # if grub has password defined we allow option to enter password
-            if not self.cf.hasPassword():
+
+            if not self.cf.hasPassword() or self.cf.hasPasswordAccess():
+                self.text_win.addstr(0, 0, "Use the U and D keys to select which entry is highlighted.")
+                self.text_win.addstr(1, 0, "Press enter to boot the selected OS, 'e' to edit the")
+                self.text_win.addstr(2, 0, "commands before booting, 'a' to modify the kernel arguments ")
                 self.text_win.addstr(3, 0, "before booting, or 'c' for a command line.")
+
             else:
-                self.text_win.addstr(3, 0, "before booting, or 'c' for a command line. You can also")
-                self.text_win.addstr(4, 0, "press 'p' to enter password for modifications...")
+                self.text_win.addstr(0, 0, "Use the U and D keys to select which entry is highlighted.")
+                self.text_win.addstr(1, 0, "Press enter to boot the selected OS or `p` to enter a")
+                self.text_win.addstr(2, 0, "password to unlock the next set of features.")
 
             self.text_win.addch(0, 8, curses.ACS_UARROW)
             self.text_win.addch(0, 14, curses.ACS_DARROW)
@@ -459,20 +460,10 @@ class Grub:
                 self.screen.timeout(-1)
 
             # handle keypresses
-            if c == ord('c'):
-                # we disallow access without password specified
-                if not self.cf.hasPasswordAccess():
-                    self.text_win.addstr(6, 8, "You have to enter GRUB password first")
-                    break
-
+            if c == ord('c') and self.cf.hasPasswordAccess():
                 self.command_line_mode()
                 break
-            elif c == ord('a'):
-                # we disallow access without password specified
-                if not self.cf.hasPasswordAccess():
-                    self.text_win.addstr(6, 8, "You have to enter GRUB password first")
-                    break
-
+            elif c == ord('a') and self.cf.hasPasswordAccess():
                 # find the kernel line, edit it and then boot
                 img = self.cf.images[self.selected_image]
                 for line in img.lines:
@@ -483,23 +474,18 @@ class Grub:
                             self.isdone = True
                             break
                 break
-            elif c == ord('e'):
-                # we disallow access without password specified
-                if not self.cf.hasPasswordAccess():
-                    self.text_win.addstr(6, 8, "You have to enter GRUB password first")
-                    break
-
+            elif c == ord('e') and self.cf.hasPasswordAccess():
                 img = self.cf.images[self.selected_image]
                 self.edit_entry(img)
                 break
             elif c == ord('p') and self.cf.hasPassword():
-                self.text_win.addstr(6, 8, "Enter password: ")
+                self.text_win.addstr(6, 1, "Password: ")
                 pwd = self.text_win.getstr(6, 8)
                 if not self.cf.checkPassword(pwd):
-                    self.text_win.addstr(6, 8, "Incorrect password!")
+                    self.text_win.addstr(6, 1, "Password: ")
+                    self.text_win.addstr(7, 0, "Failed!")
                     self.cf.setPasswordAccess( False )
                 else:
-                    self.text_win.addstr(6, 8, "Access granted     ")
                     self.cf.setPasswordAccess( True )
                 break
             elif c in (curses.KEY_ENTER, ord('\n'), ord('\r')):

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-09-01 13:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-01 13:38 [PATCH] Match bare-metal GRUB behavior for pyGrub Michal Novotny

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.