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, #stage1
Constructor Details
#initialize ⇒ GrubPasswordWidget
268 269 270 271 272 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 268 def initialize textdomain "bootloader" super end |
Instance Method Details
#contents ⇒ Object
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 276 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
336 337 338 339 340 341 342 343 344 345 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 336 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
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 367 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
322 323 324 325 326 327 328 329 330 331 332 333 334 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 322 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
347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 347 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
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 303 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 |