Class: Bootloader::Grub2Widget::GrubPasswordWidget
- Inherits:
-
CWM::CustomWidget
- Object
- CWM::CustomWidget
- Bootloader::Grub2Widget::GrubPasswordWidget
- Includes:
- Grub2Helper
- Defined in:
- src/lib/bootloader/grub2_widgets.rb
Overview
Represents grub password protection widget
Constant Summary collapse
- MASKED_PASSWORD =
"**********"
Instance Method Summary collapse
- #contents ⇒ Object
- #handle(event) ⇒ Object
- #help ⇒ Object
- #init ⇒ Object
-
#initialize ⇒ GrubPasswordWidget
constructor
A new instance of GrubPasswordWidget.
- #store ⇒ Object
- #validate ⇒ Object
Methods included from Grub2Helper
#grub2, #grub_default, #password, #sections, #stage1
Constructor Details
#initialize ⇒ GrubPasswordWidget
Returns a new instance of GrubPasswordWidget.
405 406 407 408 409 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 405 def initialize textdomain "bootloader" super end |
Instance Method Details
#contents ⇒ Object
413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 413 def contents HBox( CheckBoxFrame( Id(:use_pas), _("Prot&ect Boot Loader with Password"), true, VBox( HBox( HSpacing(2), # TRANSLATORS: checkbox entry CheckBox(Id(:unrestricted_pw), _("P&rotect Entry Modification Only")), HStretch() ), HBox( HSpacing(2), # TRANSLATORS: text entry, please keep it short Password(Id(:pw1), Opt(:hstretch), _("&Password for GRUB2 User 'root'")), # text entry HSpacing(2), Password(Id(:pw2), Opt(:hstretch), _("Re&type Password")), HStretch() ) ) ) ) end |
#handle(event) ⇒ Object
473 474 475 476 477 478 479 480 481 482 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 473 def handle(event) return unless event["ID"] == :use_pas enabled = Yast::UI.QueryWidget(Id(:use_pas), :Value) Yast::UI.ChangeWidget(Id(:unrestricted_pw), :Enabled, enabled) Yast::UI.ChangeWidget(Id(:pw1), :Enabled, enabled) Yast::UI.ChangeWidget(Id(:pw2), :Enabled, enabled) nil end |
#help ⇒ Object
504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 504 def help _( "<p><b>Protect Boot Loader with Password</b>\n" \ "at boot time, modifying or even booting any entry will require the" \ " password. If <b>Protect Entry Modification Only</b> is checked then " \ "booting any entry is not restricted but modifying entries requires " \ "the password (which is the way GRUB 1 behaved). As side-effect of " \ "this option, rd.shell=0 is added to kernel parameters, to prevent " \ "an unauthorized access to the initrd shell. " \ "YaST will only accept the password if you repeat it in " \ "<b>Retype Password</b>. The password applies to the GRUB2 user 'root' " \ "which is distinct from the Linux 'root'. YaST currently does not support " \ "other GRUB2 users. If you need them, use a separate GRUB2 script.</p>" ) end |
#init ⇒ Object
459 460 461 462 463 464 465 466 467 468 469 470 471 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 459 def init enabled = password.used? # read state on disk only if not already set by user (bnc#900026) value = (enabled && password.password?) ? MASKED_PASSWORD : "" Yast::UI.ChangeWidget(Id(:use_pas), :Value, enabled) Yast::UI.ChangeWidget(Id(:pw1), :Enabled, enabled) Yast::UI.ChangeWidget(Id(:pw1), :Value, value) Yast::UI.ChangeWidget(Id(:pw2), :Enabled, enabled) Yast::UI.ChangeWidget(Id(:pw2), :Value, value) Yast::UI.ChangeWidget(Id(:unrestricted_pw), :Enabled, enabled) Yast::UI.ChangeWidget(Id(:unrestricted_pw), :Value, password.unrestricted?) end |
#store ⇒ Object
484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 484 def store usepass = Yast::UI.QueryWidget(Id(:use_pas), :Value) matcher = CFA::Matcher.new(key: "rd.shell") grub_default.kernel_params.remove_parameter(matcher) if !usepass password.used = false return end password.used = true value = Yast::UI.QueryWidget(Id(:pw1), :Value) # special value as we do not know password, so it mean user do not change it password.password = value if value != MASKED_PASSWORD value = Yast::UI.QueryWidget(Id(:unrestricted_pw), :Value) grub_default.kernel_params.add_parameter("rd.shell", "0") if value password.unrestricted = value end |
#validate ⇒ Object
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 440 def validate return true unless Yast::UI.QueryWidget(Id(:use_pas), :Value) if Yast::UI.QueryWidget(Id(:pw1), :Value) == "" Yast::Report.Error(_("The password must not be empty.")) Yast::UI.SetFocus(Id(:pw1)) return false end if Yast::UI.QueryWidget(Id(:pw1), :Value) == Yast::UI.QueryWidget(Id(:pw2), :Value) return true end Yast::Report.Error(_( "'Password' and 'Retype password'\ndo not match. Retype the password." )) Yast::UI.SetFocus(Id(:pw1)) false end |