mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-09 08:18:02 +02:00
two-step: implement password cleartext option
Introduce the option "AllowPasswordClearTextToggle" in the two-step module configuration such that TAB can toggle viewing the password in cleartext.
This commit is contained in:
parent
9d1938060d
commit
a14e3e4cb3
1 changed files with 52 additions and 21 deletions
|
|
@ -195,6 +195,7 @@ struct _ply_boot_splash_plugin
|
|||
uint32_t background_image_is_scaled : 1;
|
||||
uint32_t dialog_clears_firmware_background : 1;
|
||||
uint32_t message_below_animation : 1;
|
||||
uint32_t allow_password_clear_text_toggle : 1;
|
||||
|
||||
char *monospace_font;
|
||||
uint32_t plugin_console_messages_updating : 1;
|
||||
|
|
@ -699,6 +700,8 @@ view_load (view_t *view)
|
|||
ply_trace ("loading entry");
|
||||
if (!ply_entry_load (view->entry))
|
||||
return false;
|
||||
else
|
||||
ply_entry_set_text_color(view->entry, 1.0, 1.0, 1.0, 1.0);
|
||||
|
||||
ply_keymap_icon_load (view->keymap_icon);
|
||||
ply_capslock_icon_load (view->capslock_icon);
|
||||
|
|
@ -1360,6 +1363,9 @@ create_plugin (ply_key_file_t *key_file)
|
|||
plugin->message_below_animation =
|
||||
ply_key_file_get_bool (key_file, "two-step", "MessageBelowAnimation");
|
||||
|
||||
plugin->allow_password_clear_text_toggle =
|
||||
ply_key_file_get_bool(key_file, "two-step", "AllowPasswordClearTextToggle");
|
||||
|
||||
progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction");
|
||||
|
||||
if (progress_function != NULL) {
|
||||
|
|
@ -2222,16 +2228,17 @@ display_normal (ply_boot_splash_plugin_t *plugin)
|
|||
}
|
||||
|
||||
static void
|
||||
display_password (ply_boot_splash_plugin_t *plugin,
|
||||
const char *prompt,
|
||||
int bullets)
|
||||
display_password_internal(ply_boot_splash_plugin_t *plugin,
|
||||
const char *prompt,
|
||||
const char *entry_text,
|
||||
int bullets)
|
||||
{
|
||||
pause_views (plugin);
|
||||
if (plugin->state == PLY_BOOT_SPLASH_DISPLAY_NORMAL)
|
||||
stop_animation (plugin);
|
||||
|
||||
plugin->state = PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY;
|
||||
show_prompt (plugin, prompt, NULL, bullets);
|
||||
show_prompt (plugin, prompt, entry_text, bullets);
|
||||
redraw_views (plugin);
|
||||
|
||||
if (plugin->should_show_console_messages)
|
||||
|
|
@ -2241,6 +2248,29 @@ display_password (ply_boot_splash_plugin_t *plugin,
|
|||
unpause_views (plugin);
|
||||
}
|
||||
|
||||
static void
|
||||
display_password (ply_boot_splash_plugin_t *plugin,
|
||||
const char *prompt,
|
||||
int bullets)
|
||||
{
|
||||
display_password_internal(plugin, prompt, NULL, bullets);
|
||||
}
|
||||
|
||||
static void
|
||||
display_password_clear_text (ply_boot_splash_plugin_t *plugin,
|
||||
const char *prompt,
|
||||
const char *entry_text)
|
||||
{
|
||||
if (!plugin->allow_password_clear_text_toggle)
|
||||
{
|
||||
// if function is disabled, fall back to masked bullet mode,
|
||||
// as dynamically setting function to NULL is not possible
|
||||
display_password_internal(plugin, prompt, NULL, 0);
|
||||
return;
|
||||
}
|
||||
display_password_internal(plugin, prompt, entry_text, -1);
|
||||
}
|
||||
|
||||
static void
|
||||
display_question (ply_boot_splash_plugin_t *plugin,
|
||||
const char *prompt,
|
||||
|
|
@ -2379,23 +2409,24 @@ ply_boot_splash_plugin_get_interface (void)
|
|||
{
|
||||
static ply_boot_splash_plugin_interface_t plugin_interface =
|
||||
{
|
||||
.create_plugin = create_plugin,
|
||||
.destroy_plugin = destroy_plugin,
|
||||
.add_pixel_display = add_pixel_display,
|
||||
.remove_pixel_display = remove_pixel_display,
|
||||
.show_splash_screen = show_splash_screen,
|
||||
.update_status = update_status,
|
||||
.on_boot_progress = on_boot_progress,
|
||||
.hide_splash_screen = hide_splash_screen,
|
||||
.on_root_mounted = on_root_mounted,
|
||||
.become_idle = become_idle,
|
||||
.display_normal = display_normal,
|
||||
.display_password = display_password,
|
||||
.display_question = display_question,
|
||||
.display_message = display_message,
|
||||
.system_update = system_update,
|
||||
.on_boot_output = on_boot_output,
|
||||
.validate_input = validate_input,
|
||||
.create_plugin = create_plugin,
|
||||
.destroy_plugin = destroy_plugin,
|
||||
.add_pixel_display = add_pixel_display,
|
||||
.remove_pixel_display = remove_pixel_display,
|
||||
.show_splash_screen = show_splash_screen,
|
||||
.update_status = update_status,
|
||||
.on_boot_progress = on_boot_progress,
|
||||
.hide_splash_screen = hide_splash_screen,
|
||||
.on_root_mounted = on_root_mounted,
|
||||
.become_idle = become_idle,
|
||||
.display_normal = display_normal,
|
||||
.display_password = display_password,
|
||||
.display_password_clear_text = display_password_clear_text,
|
||||
.display_question = display_question,
|
||||
.display_message = display_message,
|
||||
.system_update = system_update,
|
||||
.on_boot_output = on_boot_output,
|
||||
.validate_input = validate_input,
|
||||
};
|
||||
|
||||
return &plugin_interface;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue