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
Returns a new instance of GrubPasswordWidget.
213 214 215 216 217 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 213 def initialize textdomain "bootloader" super end |
Instance Method Details
#contents ⇒ Object
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 221 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
281 282 283 284 285 286 287 288 289 290 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 281 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
312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 312 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
267 268 269 270 271 272 273 274 275 276 277 278 279 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 267 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
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 292 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
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 |
# File 'src/lib/bootloader/grub2_widgets.rb', line 248 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 |