diff --git a/source/ubl-settings-usergroups-additional-config.c b/source/ubl-settings-usergroups-additional-config.c index e99741d..b600f19 100644 --- a/source/ubl-settings-usergroups-additional-config.c +++ b/source/ubl-settings-usergroups-additional-config.c @@ -23,9 +23,28 @@ void on_additional_settings_clicked(GtkWidget *, GtkEntry *){ } -void on_passwords_encrypt(){ - int pid = fork(); - if (!pid){ - exit(system(encrypt_passwords_command)); +gboolean on_encrypt_update(dictionary *dict){ + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + ubl_settings_usergroups_additional_settings_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_additional_settings_window*); + gtk_widget_destroy(window->Window); + yon_load_proceed((YON_CONFIG_TYPE)main_config.load_mode); + yon_interface_update(widgets); + return G_SOURCE_REMOVE; +} + +void *yon_passwords_encrypt(dictionary *dict){ + int exitstatus = system(encrypt_passwords_command); + if (!exitstatus){ + yon_ubl_status_box_render_thread(yon_char_get_localised_from_lib(SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE); + g_idle_add((GSourceFunc)on_encrypt_update,dict); + + } else { + yon_ubl_status_box_render_thread(yon_char_get_localised_from_lib(FAIL_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE); + } + g_thread_exit(NULL); +} + +void on_passwords_encrypt(GtkWidget*,dictionary *dict){ + g_thread_new("encrypt_all_passwords_thread",(GThreadFunc)yon_passwords_encrypt,dict); } \ No newline at end of file diff --git a/source/ubl-settings-usergroups-password.c b/source/ubl-settings-usergroups-password.c index 8eef247..e56c390 100644 --- a/source/ubl-settings-usergroups-password.c +++ b/source/ubl-settings-usergroups-password.c @@ -105,6 +105,19 @@ void on_password_accept(GtkWidget *self, dictionary *dict){ on_subwindow_close(self); } +void on_password_hash_sensitiveness(GtkWidget *,ubl_settings_usergroups_password_window *window){ + if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)))||!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry)))){ + gtk_widget_set_sensitive(window->HashBox,0); + gtk_widget_set_sensitive(window->PasswordBox,1); + } else if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry)))) { + gtk_widget_set_sensitive(window->HashBox,1); + gtk_widget_set_sensitive(window->PasswordBox,0); + } else { + gtk_widget_set_sensitive(window->HashBox,1); + gtk_widget_set_sensitive(window->PasswordBox,1); + } +} + ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(){ ubl_settings_usergroups_password_window *window = malloc(sizeof(ubl_settings_usergroups_password_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_password); @@ -123,6 +136,9 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"PasswordWindow"); g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->PasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL); + g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); + g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); + g_signal_connect(G_OBJECT(window->PasswordHashEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL); g_signal_connect(G_OBJECT(window->PasswordHashEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL); gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),PASSWORD_TITLE_LABEL); @@ -130,7 +146,6 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne return window; } - int yon_check_password_blocked(char *password){ if (!yon_char_is_empty(password)){ if (!strcmp(password,"!*")){ diff --git a/source/ubl-settings-usergroups-settings.c b/source/ubl-settings-usergroups-settings.c index af0fe5d..f922cd8 100644 --- a/source/ubl-settings-usergroups-settings.c +++ b/source/ubl-settings-usergroups-settings.c @@ -717,12 +717,7 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ yon_dictionary_add_or_create_if_exists_with_data(root_dict,"entry",window->RootPasswordEntry); g_signal_connect(G_OBJECT(window->DefaultPasswordButton),"clicked",G_CALLBACK(on_password_change),default_dict); g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict); - dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data)); - data->function=on_passwords_encrypt; - data->action_text = ENCRYPT_SURE_LABEL; - data->data=NULL; - g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data); g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window); g_signal_connect(G_OBJECT(window->DefaultUserNameEntry),"changed",G_CALLBACK(on_additional_settings_changed),window); @@ -741,6 +736,16 @@ return window; void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_window *widgets){ ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new(); + + dictionary *encrypt_data = NULL; + yon_dictionary_add_or_create_if_exists_with_data(encrypt_data,"widgets",widgets); + yon_dictionary_add_or_create_if_exists_with_data(encrypt_data,"window",window); + dialog_confirmation_data *data=yon_confirmation_dialog_data_new(); + data->function=on_passwords_encrypt; + data->action_text = ENCRYPT_SURE_LABEL; + data->data=encrypt_data; + + g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data); gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window)); gtk_widget_show(window->Window); diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 0c4a3d4..7d900d1 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -226,7 +226,7 @@ void on_config_local_load(GtkWidget *, main_window *widgets){ textdomain(template_ui_LocaleName); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain(LocaleName); - main_config.load_mode=1; + main_config.load_mode=YON_CONFIG_LOCAL; yon_interface_update(widgets); } @@ -235,7 +235,7 @@ void on_config_global_load(GtkWidget *, main_window *widgets){ textdomain(template_ui_LocaleName); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain(LocaleName); - main_config.load_mode=0; + main_config.load_mode=YON_CONFIG_GLOBAL; yon_interface_update(widgets); } @@ -244,7 +244,7 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ textdomain(template_ui_LocaleName); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain(LocaleName); - main_config.load_mode=3; + main_config.load_mode=YON_CONFIG_CUSTOM; yon_interface_update(widgets); } @@ -395,7 +395,7 @@ void yon_hide_passwords(template_saving_window *window){ free(yon_char_divide(new_value,1)); newv=new_value; } else if (!yon_char_is_empty(new_value)&&new_value[0]=='$') { - if (main_config.load_mode==1){ + if (main_config.load_mode==YON_CONFIG_LOCAL){ newv=new_value; } else { newv="*******"; @@ -404,7 +404,7 @@ void yon_hide_passwords(template_saving_window *window){ newv="*******"; } if (!yon_char_is_empty(old_value)){ - if (main_config.load_mode==1){ + if (main_config.load_mode==YON_CONFIG_LOCAL){ old = yon_char_new("*******"); } else { @@ -421,7 +421,7 @@ void yon_hide_passwords(template_saving_window *window){ free(yon_char_divide(new_value,1)); newv=new_value; } else if (!yon_char_is_empty(new_value)&&new_value[0]=='$') { - if (main_config.load_mode==1){ + if (main_config.load_mode==YON_CONFIG_LOCAL){ newv=new_value; } else { newv="*******"; @@ -430,7 +430,7 @@ void yon_hide_passwords(template_saving_window *window){ newv="*******"; } if (!yon_char_is_empty(old_value)){ - if (main_config.load_mode==1){ + if (main_config.load_mode==YON_CONFIG_LOCAL){ old = yon_char_new("*******"); } else { old = yon_char_unite("",old_value,"",NULL); @@ -451,7 +451,7 @@ void on_save_done(main_window *widgets, config_str output, int size){ } yon_char_parsed_free(output,size); on_config_update(NULL,widgets); - if (main_config.load_mode==1){ + if (main_config.load_mode==YON_CONFIG_LOCAL){ yon_accept_changes(); yon_samba_sync_proceed(); } @@ -593,62 +593,159 @@ void on_delete_confirmation_delete_check(GtkCellRenderer *, char *path, yon_conf } -void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){ - GtkTreeIter iter,itar; - main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); - yon_confirmation_window *window = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*); - int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter); - for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){ - char *name; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1); - int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar); - for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){ - char *name_check; - int status,delete; - gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1); - if (!strcmp(name,name_check)&&delete){ - // char *user = config(USERADD(name)); - // int size; - // config_str parsed = yon_char_parse(user,&size,":"); - // if (size>3&&(strcmp(parsed[3],name)&&strcmp(parsed[2],parsed[3]))){ - // yon_ubl_status_box_spawn_infinite(window->) - // } - gtk_list_store_remove(widgets->UsersList,&iter); - yon_config_remove_by_key(USERADD(name)); - yon_config_remove_by_key(USERSHADOW(name)); - yon_config_register(USERADD_SYNC(name),USERADD_SYNC_command(name),""); - yon_config_remove_by_key(USERADD_SYNC(name)); - yon_config_remove_by_key(USERSHADOW_SYNC(name)); - gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter); - if (status){ - if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){ - yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name); - } +char *yon_user_get_group_string(char *user){ + char *cur_user = config(USERADD(user)); + + int size; + config_str parsed = yon_char_parse(cur_user,&size,":"); + if (size>2&&!yon_char_is_empty(parsed[2])){ + char *current_group = parsed[2]; + size_t digits=0; + for (guint k=0;k2&&!strcmp(groups_parsed[2],current_group)){ + final_group_name=yon_char_new(groups_parsed[0]); + if (group_size) yon_char_parsed_free(groups_parsed,group_size); + break; } + if (group_size) yon_char_parsed_free(groups_parsed,group_size); } + } else { + final_group_name=yon_char_new(current_group); } + return final_group_name; + } else { + return user; } + return NULL; +} + +char *yon_user_check_groups(GtkListStore *list, char *target){ + char *final=""; + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(list); + for_iter(model,&iter){ char *name; - if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter)){ - gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1); - int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar); - for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){ - char *name_check; - int status,delete; - gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1); - if (!strcmp(name,name_check)&&delete){ - gtk_list_store_remove(widgets->UsersList,&iter); - yon_config_remove_by_key(USERADD(name)); - yon_config_remove_by_key(USERSHADOW(name)); - gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter); - if (status){ - if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){ - yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name); - } - } + char *group; + gtk_tree_model_get(model,&iter,1,&name,6,&group,-1); + if (!strcmp(group,target)&&strcmp(name,target)){ + char *temp = yon_char_unite(final,!yon_char_is_empty(final)?",":"",name,NULL); + if (!yon_char_is_empty(final)) free(final); + final = temp; + } + } + return !yon_char_is_empty(final)?final:NULL; +} + +void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){ + // GtkTreeIter iter,itar; + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + yon_confirmation_window *window = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*); + // int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter); + // for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){ + // char *name; + // gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1); + // int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar); + // for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){ + // char *name_check; + // int status,delete; + // gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1); + // if (!strcmp(name,name_check)&&delete){ + // gtk_list_store_remove(widgets->UsersList,&iter); + // yon_config_remove_by_key(USERADD(name)); + // yon_config_remove_by_key(USERSHADOW(name)); + // yon_config_register(USERADD_SYNC(name),USERADD_SYNC_command(name),""); + // yon_config_remove_by_key(USERADD_SYNC(name)); + // yon_config_remove_by_key(USERSHADOW_SYNC(name)); + // gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter); + // if (status){ + // if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){ + // yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name); + // } + // } + // } + // } + // } + + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(window->list); + char *single_target = NULL; + int founds = 0; + char *depends = NULL; + for_iter(model,&iter){ + int selected; + char *target; + char *group; + gtk_tree_model_get(model,&iter,0,&selected,1,&target,6,&group,-1); + if (selected){ + if ((!strcmp(target,group))){ + depends = yon_user_check_groups(window->list,target); + if (!yon_char_is_empty(depends)) { + single_target = target; + founds++; } } } + } + if (founds==1){ + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->action_text = CONFIRMATION_GROUP_DEPENDS_SINGLE_LABEL(single_target,depends); + if(yon_confirmation_dialog_call(window->Window,data)!=GTK_RESPONSE_ACCEPT){ + return; + } + } else if (founds >1){ + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->action_text = CONFIRMATION_GROUP_DEPENDS_MULTIPLE_LABEL; + if (yon_confirmation_dialog_call(window->Window,data)!=GTK_RESPONSE_ACCEPT){ + return; + } + } + + for_iter(model,&iter){ + int selected; + char *target; + gtk_tree_model_get(model,&iter,0,&selected,1,&target,-1); + if (selected){ + yon_config_remove_by_key(USERADD(target)); + yon_config_remove_by_key(USERSHADOW(target)); + yon_config_remove_by_key(USERADD_SYNC(target)); + yon_config_remove_by_key(USERSHADOW_SYNC(target)); + } + } + + yon_interface_update(widgets); + + // char *name; + // if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter)){ + // gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1); + // int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar); + // for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){ + // char *name_check; + // int status,delete; + // gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1); + // if (!strcmp(name,name_check)&&delete){ + // gtk_list_store_remove(widgets->UsersList,&iter); + // yon_config_remove_by_key(USERADD(name)); + // yon_config_remove_by_key(USERSHADOW(name)); + // gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter); + // if (status){ + // if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){ + // yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name); + // } + // } + // } + // } + // } on_subwindow_close(self); } @@ -737,8 +834,8 @@ void yon_delete_confirmation_open(main_window *widgets){ } int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter); for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){ - char *name,*username,*parameters,*homedir=NULL; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,3,&username,6,¶meters,-1); + char *name,*username,*parameters,*homedir=NULL, *group=NULL; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,3,&username,4,&group,6,¶meters,-1); int size; config_str home = yon_config_load(get_home_command(name),&size); if (size>0&&!yon_char_is_empty(home[0])){ @@ -751,7 +848,9 @@ void yon_delete_confirmation_open(main_window *widgets){ int status=0; if (homedir) status=1; gtk_list_store_append(window->list,&itar); - gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1&&status?1:0,5,username,-1); + group = yon_user_get_group_string(name); + + gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1&&status?1:0,5,username,6,group,-1); free(name); free(username); free(parameters); @@ -1736,7 +1835,7 @@ void on_main_delete(GtkWidget *, main_window *widgets){ } void on_config_update(GtkWidget *, main_window *widgets){ - if (main_config.load_mode==0){ + if (main_config.load_mode==YON_CONFIG_GLOBAL){ on_config_global_load(NULL,widgets); } else { on_config_local_load(NULL,widgets); @@ -1767,7 +1866,7 @@ void config_init(){ main_config.lock_save_local=0; main_config.groups_size=0; main_config.users_size=0; - main_config.load_mode=1; + main_config.load_mode=YON_CONFIG_LOCAL; main_config.hash_default_id=-1; main_config.save_config=0; main_config.groups = yon_file_open(groups_path,&main_config.groups_size); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index f58c439..1deb992 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -566,4 +566,9 @@ void on_useradd_sync_changed(ubl_settings_usergroups_additional_settings_window void yon_gtk_login_block_symbols(GtkEntry *target); void on_login_insert_custom_restricted_check(GtkEditable *editable, const gchar *text, gint length, gint *position); void on_group_delete_toggled(GtkWidget *,gchar* path,yon_confirmation_window *window); +char *yon_user_check_groups(GtkListStore *list, char *target); +char *yon_user_get_group_string(char *user); +void on_password_hash_sensitiveness(GtkWidget *,ubl_settings_usergroups_password_window *window); +gboolean on_encrypt_update(dictionary *dict); +void *yon_passwords_encrypt(dictionary *dict); #endif \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index c6bed22..3c77764 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -270,3 +270,6 @@ #define SHUTDOWN_MAXIMUM_UID_LABEL _("Maximum UID") #define SHUTDOWN_MINIMUM_GID_LABEL _("Minimum GID") #define SHUTDOWN_MAXIMUM_GID_LABEL _("Maximum GID") + +#define CONFIRMATION_GROUP_DEPENDS_SINGLE_LABEL(target,depends) yon_char_unite(_("User")," \"",target,"\" ",_("is included into main group of users")," \"",depends,"\", ",_("which will be deleted"),".\n",_("After reboot users")," ",depends," ",_("main group will be set to default group"),".",NULL) +#define CONFIRMATION_GROUP_DEPENDS_MULTIPLE_LABEL _("Some of users, chosen for deletion, are included as main group for other users. This users will get default main group after reboot") diff --git a/ubl-settings-usergroups-confirmation.glade b/ubl-settings-usergroups-confirmation.glade index 30a228a..2c654b0 100644 --- a/ubl-settings-usergroups-confirmation.glade +++ b/ubl-settings-usergroups-confirmation.glade @@ -15,17 +15,19 @@ - + - + - + - + - + - + + + diff --git a/ubl-settings-usergroups-password.glade b/ubl-settings-usergroups-password.glade index e5dbfc0..60ac200 100644 --- a/ubl-settings-usergroups-password.glade +++ b/ubl-settings-usergroups-password.glade @@ -94,7 +94,7 @@ True True - 1 + 0 @@ -136,47 +136,47 @@ True True - 2 + 1 - - - False - True - 1 - - - - - True - False - vertical - 5 - + + Do not encrypt password True - False + True + False + True False True - 0 + 2 - - Do not encrypt password + True - True - False - True + False False True - 1 + 3 + + + False + True + 1 + + + + + True + False + vertical + 5 True