From 53c60abbade4f54951d1e012fc9cc448ded00a67 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 12:00:23 +0600 Subject: [PATCH 01/21] Added password showing for user --- source/ubl-settings-usergroups.c | 44 ++++++++++++++++++++++++-------- ubl-settings-usergroups.css | 17 +++++++----- 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 7847db4..603444b 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -103,8 +103,6 @@ if (main_config.sync_users){ int size; config_str parsed = yon_char_parse(main_config.sync_users[i],&size,":"); if (!yon_char_is_empty(parsed[1])){ - if (parsed[1][0]==' '&&parsed[1][1]=='.'&&parsed[1][2]==' ') - free(parsed[1]=yon_char_divide(parsed[1],3)); if (system (samba_sync_password_command(parsed[0],parsed[1]))){}; } else { @@ -272,6 +270,7 @@ yon_confirmation_window *yon_delete_confirmation_new(){ void yon_delete_confirmation_open(main_window *widgets){ yon_confirmation_window *window = yon_delete_confirmation_new(); + gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window)); GtkTreeIter iter,itar; dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); @@ -442,11 +441,28 @@ void on_passwords_encrypt(){ } } -void on_password_change(GtkWidget *self, dictionary *entry_dict){ +void on_password_change(GtkWidget *self, dictionary *entry_dict){// GtkComboBox *combo = yon_dictionary_get_data(entry_dict->first,GtkComboBox*); GtkEntry *output_target = yon_dictionary_get_data(entry_dict->first->next,GtkEntry*); ubl_settings_usergroups_password_window *window = yon_ubl_settings_usergroups_password_new(); dictionary *dict = NULL; + char *password = (char*)gtk_entry_get_text(output_target); + if (!yon_char_is_empty(password)){ + password = yon_char_new(password); + if (main_config.load_mode==0){ + if (password[0]=='$'){ + gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); + } else { + if (password[0]=='%'&&password[1]=='%'){ + free(yon_char_divide(password,1)); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1); + } + gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password); + } + } else { + gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); + } + } yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"target",output_target); g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_password_accept),dict); @@ -934,10 +950,8 @@ void on_password_accept(GtkWidget *self, dictionary *dict){ if (!strcmp(password,password_check)){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck))){ char *pasw=yon_char_append("%%",password); - free(password); password=pasw; } - password = yon_char_append(" . ",password); gtk_entry_set_text(GTK_ENTRY(entry),password); } else { yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_mismatch",PASSWORD_MISMATCH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); @@ -1214,9 +1228,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){ yon_ubl_status_highlight_incorrect(window->userPasswordEntry); return; } - if (password[0]==' '&&password[1]=='.'&&password[2]==' '){ - free(yon_char_divide(password,2)); - } } else { password="x"; } @@ -1403,7 +1414,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ void on_toggle_button_set_active_from_combo_box(GtkComboBox *self,ubl_settings_usergroups_user_window *window){ char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry)); - if (gtk_combo_box_get_active(self)<=1||(passw[0]!=' '&&passw[1]!='.'&&passw[2]!=' ')){ + if (gtk_combo_box_get_active(self)<=1||(passw[0]=='$')){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck),0); gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBAPasswordCheck),0); @@ -1418,7 +1429,7 @@ void on_toggle_button_set_active_from_combo_box(GtkComboBox *self,ubl_settings_u void on_password_user_changed(GtkComboBox *self,ubl_settings_usergroups_user_window *window){ char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry)); - if ((passw[0]!=' '&&passw[1]!='.'&&passw[2]!=' ')){ + if ((passw[0]=='$')){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck),0); gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBAPasswordCheck),0); @@ -1433,7 +1444,7 @@ void on_password_user_changed(GtkComboBox *self,ubl_settings_usergroups_user_win void on_toggle_button_set_active_from_toggle_button_inversed(GtkToggleButton *self, ubl_settings_usergroups_user_window *window){ char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry)); - if ((passw[0]==' '&&passw[1]=='.'&&passw[2]==' ')&>k_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordCombo))>1){ + if ((passw[0]!='$')&>k_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordCombo))>1){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck))){ gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBAPasswordCheck),0); } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck))){ @@ -1528,6 +1539,17 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateUserWindow),"UserWindow"); yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->userPasswordCombo); yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->userPasswordEntry); + char *password = yon_config_get_by_key(USERADD((char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)))); + // const char *passw = gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry)); + // if (yon_char_is_empty((char*)passw)){ + + // int size; + // config_str user = yon_char_parse(password,&size,":"); + // if (size>5&&!yon_char_is_empty(user[5])&&strcmp(user[5],"x")){ + // gtk_entry_set_text() + // } + // yon_char_parsed_free(user,size); + // } g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry); g_signal_connect(G_OBJECT(window->userHomeButton),"clicked",G_CALLBACK(on_filechooser_open),window->userHomeEntry); diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css index afeb12d..ef9ec8c 100644 --- a/ubl-settings-usergroups.css +++ b/ubl-settings-usergroups.css @@ -1,4 +1,3 @@ - .thin { margin:0px; padding:0px; @@ -39,6 +38,10 @@ background:transparent; border-right-width:inherit; } +.menuitemmiddlemargin{ + margin-top: 6px; +} + .menuitemtop{ margin-bottom:0px; border-color:inherit; @@ -46,17 +49,17 @@ background:transparent; border-left-width:inherit; border-right-width:inherit; } - .menuitemtop>*{ - margin:2px 2px 0 2px; + .menuitemtop >*{ + margin:4px 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } - .menuitemmiddle>*{ + .menuitemmiddle >*{ margin:0 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } - .menuitembottom>*{ + .menuitembottom >*{ margin:0 2px 2px 2px; padding: 3px 10px 3px 5px; } @@ -82,13 +85,13 @@ background:transparent; } .menuitemtop:hover>* { - margin:2px 2px 0 2px; + margin:4px 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; } .menuitemmiddle:hover>* { - margin:0 2px 0px 2px; + margin:0 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; -- 2.35.1 From db00b05098fecc57d2870f0005ba3690c1e2ce6e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 12:39:31 +0600 Subject: [PATCH 02/21] Removed password showing when local config is loaded --- source/ubl-settings-usergroups.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 603444b..c3af0c5 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -459,8 +459,6 @@ void on_password_change(GtkWidget *self, dictionary *entry_dict){// } gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password); } - } else { - gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); } } yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); @@ -1540,16 +1538,6 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->userPasswordCombo); yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->userPasswordEntry); char *password = yon_config_get_by_key(USERADD((char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)))); - // const char *passw = gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry)); - // if (yon_char_is_empty((char*)passw)){ - - // int size; - // config_str user = yon_char_parse(password,&size,":"); - // if (size>5&&!yon_char_is_empty(user[5])&&strcmp(user[5],"x")){ - // gtk_entry_set_text() - // } - // yon_char_parsed_free(user,size); - // } g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry); g_signal_connect(G_OBJECT(window->userHomeButton),"clicked",G_CALLBACK(on_filechooser_open),window->userHomeEntry); -- 2.35.1 From 9a06ca50d44306b02a4208e38f95e5fe5cf9026d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 17:24:47 +0600 Subject: [PATCH 03/21] Css updates --- ubl-settings-usergroups.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css index ef9ec8c..98f9ad0 100644 --- a/ubl-settings-usergroups.css +++ b/ubl-settings-usergroups.css @@ -39,7 +39,7 @@ background:transparent; } .menuitemmiddlemargin{ - margin-top: 6px; + margin-top: 8px; } .menuitemtop{ @@ -50,7 +50,7 @@ background:transparent; border-right-width:inherit; } .menuitemtop >*{ - margin:4px 2px 0 2px; + margin:8px 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } @@ -85,7 +85,7 @@ background:transparent; } .menuitemtop:hover>* { - margin:4px 2px 0 2px; + margin:8px 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; -- 2.35.1 From 5f97d0aaaa8ae0884fcb844577a5eb7fdcb2738c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 5 Feb 2024 11:57:57 +0600 Subject: [PATCH 04/21] Removed 'Encrypted password' from additional settings window --- source/ubl-settings-usergroups.c | 4 ++-- ubl-settings-usergroups-additional-settings.glade | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index c3af0c5..8e1eca7 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -595,13 +595,13 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ if (!yon_char_is_empty(default_password)){ gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password); if(!yon_config_check_ignore("DEFAULTPASSWD")) - gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),3); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2); } char *root_password = yon_config_get_by_key("DEFAULTROOTPASSWD"); if (!yon_char_is_empty(root_password)){ gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password); if(!yon_config_check_ignore("DEFAULTROOTPASSWD")) - gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),3); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2); } char *is_k_admin = yon_config_get_by_key("ADDADM"); if (!yon_char_is_empty(is_k_admin)) diff --git a/ubl-settings-usergroups-additional-settings.glade b/ubl-settings-usergroups-additional-settings.glade index 78a4bce..c08282a 100644 --- a/ubl-settings-usergroups-additional-settings.glade +++ b/ubl-settings-usergroups-additional-settings.glade @@ -151,7 +151,6 @@ Default No password required Set a password - Endrypted password @@ -230,7 +229,6 @@ Default No password required Set a password - Encrypted password -- 2.35.1 From 99428f0ce6f5a60c590d08018d58c8308d6bdb64 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 5 Feb 2024 16:35:16 +0600 Subject: [PATCH 05/21] Added password hiding at saving menu --- source/ubl-settings-usergroups.c | 55 ++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 8e1eca7..077294c 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -125,22 +125,71 @@ void yon_accept_changes(){ } } +void yon_hide_passwords(template_saving_window *window){ + GtkTreeModel *model = GTK_TREE_MODEL(window->list); + GtkTreeIter iter; + int valid = gtk_tree_model_get_iter_first(model,&iter); + for (;valid;valid = gtk_tree_model_iter_next(model,&iter)){ + char *name; + char *old_value; + char *new_value; + gtk_tree_model_get(model,&iter,1,&name,2,&old_value,3,&new_value,-1); + if (strstr(name,"USERADD[")){ + int size; + config_str parsed = yon_char_parse(new_value,&size,":"); + if (parsed[5][0] !='$'&&parsed[5][0]!='%'){ + parsed[5]="******"; + char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + } + + } else if (strstr(name,"GROUPADD[")){ + int size; + config_str parsed = yon_char_parse(new_value,&size,":"); + if (parsed[4][0] !='$'&&parsed[4][0]!='%'){ + parsed[4]="******"; + char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + } + + } else if (strstr(name,"DEFAULTPASSWD")){ + if (new_value[0] !='$'&&new_value[0]!='%'){ + char *new_compare = yon_char_unite("",old_value,"\n******",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } + + } else if (strstr(name,"DEFAULTROOTPASSWD")){ + if (new_value[0] !='$'&&new_value[0]!='%'){ + char *new_compare = yon_char_unite("",old_value,"\n******",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } + + } + } +} + void on_config_save(){ yon_accept_changes(); yon_samba_sync_proceed(); - yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + yon_hide_passwords(window); } void on_config_global_save(){ yon_accept_changes(); yon_samba_sync_proceed(); - yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + yon_hide_passwords(window); + } void on_config_local_save(){ yon_accept_changes(); yon_samba_sync_proceed(); - yon_save_proceed("system",YON_CONFIG_LOCAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + yon_hide_passwords(window); } void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window){ -- 2.35.1 From 05485890cba258ea835bb340ef5408156be94b86 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 14:21:56 +0600 Subject: [PATCH 06/21] Changed additional groups table rendering --- source/ubl-settings-usergroups.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 077294c..157c54a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -18,6 +18,7 @@ void yon_interface_update(main_window *widgets){ gtk_list_store_clear(widgets->GroupsList); int size; GtkTreeIter iter; + char *def_groups = yon_config_get_by_key("USERGROUPS"); config_str users = yon_config_get_all_by_key("USERADD",&size); if (users){ for (int i=0;i0?parameters[0]:"", 1,parameters_size>1?parameters[1]:"", 4,parameters_size>2?parameters[2]:"", - 5,parameters_size>3?parameters[3]:"", + 5,parameters_size>3?!strcmp(parameters[3],"x")||!strcmp(parameters[3],"")?def_groups:parameters[3]:def_groups, 6,parameters_size>4?parameters[4]:"", 7,parameters_size>5?strcmp(parameters[5],"x")&&strcmp(parameters[5],"")? parameters[5][0]=='%'&¶meters[5][1]=='%'? UNENCRYPTED_LABEL: ENCRYPTED_LABEL : DEFAULT_USER_LABEL : DEFAULT_USER_LABEL, -1); @@ -1452,7 +1453,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ 2,yon_char_return_if_exist(login,""), 3,yon_char_return_if_exist(username,""), 4,yon_char_return_if_exist(main_group,login), - 5,yon_char_return_if_exist(additional_groups,""), + 5,yon_char_return_if_exist(additional_groups,yon_config_get_by_key("USERGROUPS")), 6,yon_char_unite(yon_char_return_if_exist(user_home,""),yon_char_return_if_exist(user_shell,""),yon_char_return_if_exist(create_system_user,""),yon_char_return_if_exist(create_ununique,""),yon_char_return_if_exist(do_not_check,""),NULL), 7,password_status, -1); -- 2.35.1 From 026e54d7b956552ed92aa6db903c42e411756cbe Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 17:25:55 +0600 Subject: [PATCH 07/21] User's groups now load correctly into groups choose window --- source/ubl-settings-usergroups.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 157c54a..cd8e344 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -468,6 +468,12 @@ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){ gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),ADDITIONAL_GROUPS_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),ADDITIONAL_GROUPS_TITLE_LABEL); GtkTreeIter iter, itar; + char *output = (char*)gtk_entry_get_text(output_target); + int size=0; + config_str parsed=NULL; + if (!yon_char_is_empty(output)){ + parsed = yon_char_parse(output,&size,","); + } int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.groups_list),&iter); for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){ char *groupname; @@ -476,6 +482,16 @@ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){ gtk_list_store_set(window->list,&itar,1,groupname,-1); free(groupname); } + valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&iter)){ + char *groupname; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,1,&groupname,-1); + if (parsed){ + if (yon_char_parsed_check_exist(parsed,size,groupname)>-1){ + gtk_list_store_set(window->list,&iter,0,1,-1); + } + } + } dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"output",output_target); @@ -1300,7 +1316,10 @@ void on_user_save(GtkWidget *self, dictionary *dict){ } additional_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->userAdditionalGroupsEntry)); - + char *default_groups = yon_config_get_by_key("USERGROUPS"); + if (!yon_char_is_empty(default_groups)&&!strcmp(default_groups,additional_groups)){ + additional_groups=""; + } long password_change_interval_minimum_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin)); if (password_change_interval_minimum_active>0){ password_change_interval_minimum = yon_char_from_long(password_change_interval_minimum_active); @@ -1693,8 +1712,12 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:""); } if (parsed_size>3){ - if (strcmp(parameters[3],"x")) - gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parsed_size>3?parameters[3]:""); + if (strcmp(parameters[3],"x")){ + gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parameters[3]); + } else { + char *default_groups = yon_config_get_by_key("USERGROUPS"); + gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), default_groups); + } } if (parsed_size>4&&!yon_char_is_empty(parameters[4])){ -- 2.35.1 From cdbf48e43612a9e0ee98d9db70a9a40f399858c2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 17:46:43 +0600 Subject: [PATCH 08/21] Group's users now load correctly into groups choose window --- source/ubl-settings-usergroups.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index cd8e344..3e67fc0 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -713,6 +713,12 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){ gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL); GtkTreeIter iter, itar; + char *output = (char*)gtk_entry_get_text(target); + int size=0; + config_str parsed=NULL; + if (!yon_char_is_empty(output)){ + parsed = yon_char_parse(output,&size,","); + } int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.users_list),&iter); for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.users_list),&iter)){ char *groupname; @@ -721,6 +727,16 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){ gtk_list_store_set(window->list,&itar,1,groupname,-1); free(groupname); } + valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&iter)){ + char *groupname; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,1,&groupname,-1); + if (parsed){ + if (yon_char_parsed_check_exist(parsed,size,groupname)>-1){ + gtk_list_store_set(window->list,&iter,0,1,-1); + } + } + } gtk_list_store_new(2,G_TYPE_BOOLEAN,G_TYPE_STRING); dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); -- 2.35.1 From f527dae7c42df116203b3e67e00867e613edf77c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 9 Feb 2024 09:13:58 +0600 Subject: [PATCH 09/21] Css style fixes --- source/ubl-settings-usergroups.c | 1 - ubl-settings-usergroups.css | 8 ++------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 3e67fc0..f7b608b 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2053,7 +2053,6 @@ main_window *yon_main_window_complete(main_window *widgets){ widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); widgets->SavingSettingsButton=yon_gtk_builder_get_widget(builder,"SavingSettingsButton"); - gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddlemargin"); if (main_config.lock_load_global == 1){ gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0); diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css index 98f9ad0..a98861a 100644 --- a/ubl-settings-usergroups.css +++ b/ubl-settings-usergroups.css @@ -37,10 +37,6 @@ background:transparent; border-left-width:inherit; border-right-width:inherit; } - -.menuitemmiddlemargin{ - margin-top: 8px; -} .menuitemtop{ margin-bottom:0px; @@ -50,7 +46,7 @@ background:transparent; border-right-width:inherit; } .menuitemtop >*{ - margin:8px 2px 0 2px; + margin:6px 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } @@ -85,7 +81,7 @@ background:transparent; } .menuitemtop:hover>* { - margin:8px 2px 0 2px; + margin:6px 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; -- 2.35.1 From c1d887e9544815b242ce823a2205c01162a4703d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 9 Feb 2024 14:29:41 +0600 Subject: [PATCH 10/21] Fixed saving crash --- source/ubl-settings-usergroups.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index f7b608b..f8b1e19 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -175,14 +175,14 @@ void on_config_save(){ yon_accept_changes(); yon_samba_sync_proceed(); template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); - yon_hide_passwords(window); + if (window) yon_hide_passwords(window); } void on_config_global_save(){ yon_accept_changes(); yon_samba_sync_proceed(); template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); - yon_hide_passwords(window); + if (window) yon_hide_passwords(window); } @@ -190,7 +190,7 @@ void on_config_local_save(){ yon_accept_changes(); yon_samba_sync_proceed(); template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); - yon_hide_passwords(window); + if (window) yon_hide_passwords(window); } void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window){ -- 2.35.1 From 20fcb7ececccca616826cafbfc96dd2aa66d18e2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 9 Feb 2024 14:33:11 +0600 Subject: [PATCH 11/21] Added default groups at group entry when creating user --- source/ubl-settings-usergroups.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index f8b1e19..bdd4d5d 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1666,6 +1666,8 @@ void on_main_add(GtkWidget *self, main_window *widgets){ ubl_settings_usergroups_user_window *window = yon_ubl_settings_usergroups_user_new(); gtk_window_set_title(GTK_WINDOW(window->CreateUserWindow),ADD_USER_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->userTitleNameLabel),ADD_USER_TITLE_LABEL); + char *default_groups = yon_config_get_by_key("USERGROUPS"); + gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), default_groups); dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); -- 2.35.1 From 5b093d3bb57cfef0dbb1b044961b56415f853808 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 9 Feb 2024 17:09:14 +0600 Subject: [PATCH 12/21] Fixed saving crash --- source/ubl-settings-usergroups.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index bdd4d5d..8759e5d 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -138,33 +138,54 @@ void yon_hide_passwords(template_saving_window *window){ if (strstr(name,"USERADD[")){ int size; config_str parsed = yon_char_parse(new_value,&size,":"); - if (parsed[5][0] !='$'&&parsed[5][0]!='%'){ + if (size>5 &&parsed[5][0] !='$'&&parsed[5][0]!='%'){ parsed[5]="******"; char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } else { + char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } } else if (strstr(name,"GROUPADD[")){ int size; config_str parsed = yon_char_parse(new_value,&size,":"); - if (parsed[4][0] !='$'&&parsed[4][0]!='%'){ + if (size>4&&parsed[4][0] !='$'&&parsed[4][0]!='%'){ parsed[4]="******"; char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); + } else { + char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } } else if (strstr(name,"DEFAULTPASSWD")){ - if (new_value[0] !='$'&&new_value[0]!='%'){ - char *new_compare = yon_char_unite("",old_value,"\n******",NULL); + if (!yon_char_is_empty(new_value) && new_value[0] !='$'&&new_value[0]!='%'){ + char *new_compare = yon_char_unite("",old_value,"\n",NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); free(new_compare); + } else { + char *new_compare = yon_char_unite("",old_value,"\n",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } } else if (strstr(name,"DEFAULTROOTPASSWD")){ - if (new_value[0] !='$'&&new_value[0]!='%'){ + if (!yon_char_is_empty(new_value) &&new_value[0] !='$'&&new_value[0]!='%'){ char *new_compare = yon_char_unite("",old_value,"\n******",NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); free(new_compare); + } else { + char *new_compare = yon_char_unite("",old_value,"\n******",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } } -- 2.35.1 From 6b0e438d56c60eeeaccb253c83e4030a532b993c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 12 Feb 2024 11:37:07 +0600 Subject: [PATCH 13/21] Changed banner description; Fixed crash --- source/ubl-settings-usergroups.c | 31 ++++++++++++++++--------------- ubl-settings-usergroups_ru.po | 3 +-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 8759e5d..a404d03 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -298,21 +298,22 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){ } } char *name; - 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); + 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); + } } } } diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index c18371e..d04d08a 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -76,8 +76,7 @@ msgstr "Сбросить настройки утилиты" #: source/ubl-strings.h:5 msgid "System users and groups configuration" msgstr "" -"Настройка пользователей и групп системы (глобальная настройка, через " -"конфигурационный файл)" +"Настройка пользователей и групп системы" #: source/ubl-strings.h:7 msgid "Default user groups:" -- 2.35.1 From dac89ee40f593b9eb650f2d8fa539970e236a193 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 12 Feb 2024 14:47:53 +0600 Subject: [PATCH 14/21] Saving fixes --- source/ubl-settings-usergroups.c | 21 +++++++++++++++++++-- source/ubl-settings-usergroups.h | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index a404d03..7ab42e6 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1484,18 +1484,33 @@ void on_user_save(GtkWidget *self, dictionary *dict){ ":",yon_char_return_if_exist(password,"x"), ":",yon_char_return_if_exist(extra_options,""), NULL); + yon_config_register(USERADD(login),"users",final_user); + if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + yon_config_remove_by_key(USERADD(window->old_username)); + } yon_config_register(USERSHADOW(login),"users",shadow_string); + if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + yon_config_remove_by_key(USERSHADOW(window->old_username)); + } int home_delete = yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,login); if (home_delete>-1){ yon_char_parsed_rip(main_config.remove_homes,&main_config.homes_size,home_delete); } - if (!yon_char_is_empty(useradd_sync_string)) + if (!yon_char_is_empty(useradd_sync_string)){ yon_config_register(USERADD_SYNC(login),"users",useradd_sync_string); + if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + yon_config_remove_by_key(USERADD_SYNC(window->old_username)); + } + } - if (!yon_char_is_empty(usershadow_sync_string)) + if (!yon_char_is_empty(usershadow_sync_string)){ yon_config_register(USERSHADOW_SYNC(login),"users",usershadow_sync_string); + if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + yon_config_remove_by_key(USERSHADOW_SYNC(window->old_username)); + } + } GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList); char *password_status=NULL; @@ -1640,6 +1655,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ yon_char_parsed_free(shells,shell_size); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userShellCombo),0); window->old_password=NULL; + window->old_username=NULL; dictionary *entry_dict = NULL; yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateUserWindow),"UserWindow"); yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->userPasswordCombo); @@ -1739,6 +1755,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(window->userLoginEntry), name); gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), name); gtk_entry_set_text(GTK_ENTRY(window->userUserNameEntry), parsed_size>0?parameters[0]:""); + window->old_username=name; if (parsed_size>1){ if (strcmp(parameters[1],"x")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),0); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index c05422b..fc0f4c0 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -286,6 +286,7 @@ typedef struct{ char *expiration_unix; char *old_password; + char *old_username; } ubl_settings_usergroups_user_window; typedef struct { -- 2.35.1 From 2c889acae0fa0fec68a0adc46188e01647c95297 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 12 Feb 2024 15:19:07 +0600 Subject: [PATCH 15/21] Configuration, loaded by default is global --- source/ubl-settings-usergroups.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 7ab42e6..b9a0221 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2127,7 +2127,7 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); - yon_load_proceed(YON_CONFIG_LOCAL); + yon_load_proceed(YON_CONFIG_GLOBAL); yon_interface_update((main_window*)widgets); gtk_widget_realize(GTK_WIDGET(widgets->UsersTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree)); @@ -2226,6 +2226,8 @@ int main(int argc, char *argv[]){ yon_ubl_connect_config((_template_config*)&main_config); yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); template_main_window *widgets = yon_ubl_window_setup(); + textdomain (template_ui_LocaleName); + yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain (LocaleName); yon_main_window_complete((main_window*)widgets); yon_window_config_load(config_path); -- 2.35.1 From d449466ef040a917cdb4b94705931568fc5a97d2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 12 Feb 2024 16:46:35 +0600 Subject: [PATCH 16/21] launch parameters rework --- source/ubl-settings-usergroups.c | 90 ++------------------------------ source/ubl-settings-usergroups.h | 3 +- source/ubl-strings.h | 3 +- 3 files changed, 8 insertions(+), 88 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index b9a0221..2837135 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2095,17 +2095,6 @@ main_window *yon_main_window_complete(main_window *widgets){ widgets->SavingSettingsButton=yon_gtk_builder_get_widget(builder,"SavingSettingsButton"); - if (main_config.lock_load_global == 1){ - gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0); - } - if (main_config.lock_save_global == 1){ - gtk_widget_set_sensitive(widgets->SaveGlobalMenuItem,0); - gtk_widget_set_sensitive(widgets->SaveMenuItem,0); - } - if (main_config.lock_save_local == 1){ - gtk_widget_set_sensitive(widgets->SaveLocalMenuItem,0); - gtk_widget_set_sensitive(widgets->SaveMenuItem,0); - } main_config.users_list = widgets->UsersList; main_config.groups_list = widgets->GroupsList; @@ -2149,82 +2138,13 @@ return widgets; int main(int argc, char *argv[]){ local=setlocale(LC_ALL, ""); textdomain (LocaleName); - config_init(); - int option_index=0; - int show_help=0; - int debug_mode=0; - { - struct option long_options[] = { - {"help", 0, 0, 'h'}, - {"version", 0, 0, 'V'}, - {"lock-help", 0,0, 1}, - {"lock-save", 0,0, 2}, - {"lock-save-local", 0,0, 3}, - {"lock-save-global", 0,0, 4}, - {"lock-load-global", 0,0, 5}, - {"socket-id", 1, 0, 's'}, - {"socket-ext-id", 1,0, 'e'}, - {"socket-trd-id", 1,0, 't'}, - {"clear-config", 0,0, 'c'}, - { NULL, 0, NULL, 0 } - }; - for (int i=0;i Date: Mon, 12 Feb 2024 17:02:48 +0600 Subject: [PATCH 17/21] Crash fix --- source/ubl-settings-usergroups.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 2837135..60fdd77 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1486,11 +1486,11 @@ void on_user_save(GtkWidget *self, dictionary *dict){ NULL); yon_config_register(USERADD(login),"users",final_user); - if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ yon_config_remove_by_key(USERADD(window->old_username)); } yon_config_register(USERSHADOW(login),"users",shadow_string); - if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ yon_config_remove_by_key(USERSHADOW(window->old_username)); } int home_delete = yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,login); @@ -1500,14 +1500,14 @@ void on_user_save(GtkWidget *self, dictionary *dict){ if (!yon_char_is_empty(useradd_sync_string)){ yon_config_register(USERADD_SYNC(login),"users",useradd_sync_string); - if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ yon_config_remove_by_key(USERADD_SYNC(window->old_username)); } } if (!yon_char_is_empty(usershadow_sync_string)){ yon_config_register(USERSHADOW_SYNC(login),"users",usershadow_sync_string); - if (yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ + if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ yon_config_remove_by_key(USERSHADOW_SYNC(window->old_username)); } } -- 2.35.1 From 1244af36c8e03e261ea0ef1efd3cc3c8a7cd8ccf Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 13 Feb 2024 12:47:29 +0600 Subject: [PATCH 18/21] Comments remove --- source/ubl-settings-usergroups.h | 1 - 1 file changed, 1 deletion(-) diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 0811cbc..052b548 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -41,7 +41,6 @@ #define get_default_hash_command "ubconfig --raw --source default get [users] HASHPASSWD" #define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER" #define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER" -// #define remove_config_dir_command yon_char_unite("rm -rfd ", yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",NULL) #define samba_sync_command(user) yon_char_unite("sudo smbpasswd -Las ",user,NULL) #define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL) -- 2.35.1 From 6adf8a87c02ea027c891fc75a430543340275dc2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 13 Feb 2024 14:26:22 +0600 Subject: [PATCH 19/21] Wrong load mode fix --- source/ubl-settings-usergroups.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 60fdd77..3c14753 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1976,7 +1976,7 @@ void config_init(){ main_config.lock_save_global=0; main_config.lock_save_local=0; main_config.groups_size=0; - main_config.load_mode=1; + main_config.load_mode=0; main_config.hash_default_id=-1; main_config.groups = yon_file_open(groups_path,&main_config.groups_size); main_config.users = yon_file_open(users_path,&main_config.users_size); -- 2.35.1 From 4cd03b558276fc0fa5abb7a2c30d4a3935239d6c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 13 Feb 2024 17:06:34 +0600 Subject: [PATCH 20/21] Load mode fix --- source/ubl-settings-usergroups.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 3c14753..003b7d7 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2116,6 +2116,7 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); + main_config.load_mode=0; yon_load_proceed(YON_CONFIG_GLOBAL); yon_interface_update((main_window*)widgets); gtk_widget_realize(GTK_WIDGET(widgets->UsersTree)); -- 2.35.1 From 5c44a85564a14ec3f82ec6384444d8dd00e75573 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 13 Feb 2024 17:45:44 +0600 Subject: [PATCH 21/21] Added checking for digits at the start of user login and group name --- source/ubl-settings-usergroups.c | 10 ++ source/ubl-strings.h | 2 + ubl-settings-usergroups.pot | 284 +++++++++++++++--------------- ubl-settings-usergroups_ru.po | 288 ++++++++++++++++--------------- 4 files changed, 310 insertions(+), 274 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 003b7d7..d26bc97 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -821,6 +821,11 @@ void on_group_save(GtkWidget *self, dictionary *dict){ } group_name = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)); + if (group_name[0]>'0'&&group_name[0]<'9'){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),GROUP_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userLoginEntry); + return; + } if (yon_char_is_empty(group_name)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->userLoginEntry); @@ -1316,6 +1321,11 @@ void on_user_save(GtkWidget *self, dictionary *dict){ } login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)); + if (login[0]>'0'&&login[0]<'9'){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userLoginEntry); + return; + } if (yon_char_is_empty(login)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->userLoginEntry); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index d2c2bcd..7be22aa 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -88,6 +88,7 @@ #define GROUPADD_SYNC_LABEL _("Group configuration synchronization") #define GROUPADD_SHUTDOWN_LABEL _("When shutting down the system, save the group into the configuration") #define ADMINISTRATORS_LABEL _("Group administrators:") +#define GROUP_BEGINS_WITH_DIGIT_LABEL _("Group name must not start with digit") //ubl-settings-usergroups-group.glade #define DEFAULT_GROUPS_TITLE_LABEL _("Default groups") @@ -122,6 +123,7 @@ #define CONFIGURE_USER_TITLE_LABEL _("Configure user") #define SET_LABEL _("Set") #define EMPTY_IMPORTANT_LABEL _("Empty important field") +#define USER_BEGINS_WITH_DIGIT_LABEL _("Login must not start with digit") #define LOADING_FAILED_LABEL _("Loading has failed") #define LOGIN_NAME_LABEL _("Login name") #define ADDITIONAL_GROUPS_LABEL _("Additional groups:") diff --git a/ubl-settings-usergroups.pot b/ubl-settings-usergroups.pot index 61bd1f8..e10d602 100644 --- a/ubl-settings-usergroups.pot +++ b/ubl-settings-usergroups.pot @@ -25,7 +25,8 @@ msgstr "" msgid "ubl-settings-usergroups version:" msgstr "" -#: source/ubl-strings.h:2 source/ubl-strings.h:4 +#: source/ubl-strings.h:2 source/ubl-strings.h:4 source/ubl-strings.h:3 +#: source/ubl-strings.h:3 msgid "Users and groups" msgstr "" @@ -73,181 +74,184 @@ msgstr "" msgid "Reset application settings" msgstr "" -#: source/ubl-strings.h:5 +#: source/ubl-strings.h:5 source/ubl-strings.h:4 source/ubl-strings.h:4 msgid "System users and groups configuration" msgstr "" -#: source/ubl-strings.h:7 +#: source/ubl-strings.h:7 source/ubl-strings.h:6 source/ubl-strings.h:6 msgid "Default user groups:" msgstr "" -#: source/ubl-strings.h:8 +#: source/ubl-strings.h:8 source/ubl-strings.h:7 source/ubl-strings.h:7 msgid "Default user name (if there's no another):" msgstr "" -#: source/ubl-strings.h:9 +#: source/ubl-strings.h:9 source/ubl-strings.h:8 source/ubl-strings.h:8 msgid "User with ID 1000 is administrator" msgstr "" -#: source/ubl-strings.h:10 +#: source/ubl-strings.h:10 source/ubl-strings.h:9 source/ubl-strings.h:9 msgid "Default user password:" msgstr "" -#: source/ubl-strings.h:11 +#: source/ubl-strings.h:11 source/ubl-strings.h:10 source/ubl-strings.h:10 msgid "Root user password:" msgstr "" -#: source/ubl-strings.h:12 source/ubl-strings.h:27 +#: source/ubl-strings.h:12 source/ubl-strings.h:27 source/ubl-strings.h:11 +#: source/ubl-strings.h:26 source/ubl-strings.h:11 source/ubl-strings.h:26 msgid "Password hash algorythm:" msgstr "" -#: source/ubl-strings.h:14 +#: source/ubl-strings.h:14 source/ubl-strings.h:13 source/ubl-strings.h:13 msgid "UID" msgstr "" -#: source/ubl-strings.h:15 source/ubl-strings.h:84 +#: source/ubl-strings.h:15 source/ubl-strings.h:84 source/ubl-strings.h:14 +#: source/ubl-strings.h:83 source/ubl-strings.h:14 source/ubl-strings.h:83 msgid "Login" msgstr "" -#: source/ubl-strings.h:16 +#: source/ubl-strings.h:16 source/ubl-strings.h:15 source/ubl-strings.h:15 msgid "Password" msgstr "" -#: source/ubl-strings.h:17 +#: source/ubl-strings.h:17 source/ubl-strings.h:16 source/ubl-strings.h:16 msgid "" "User\n" "name" msgstr "" -#: source/ubl-strings.h:18 +#: source/ubl-strings.h:18 source/ubl-strings.h:17 source/ubl-strings.h:17 msgid "Apply" msgstr "" -#: source/ubl-strings.h:20 +#: source/ubl-strings.h:20 source/ubl-strings.h:19 source/ubl-strings.h:19 msgid "User UID:" msgstr "" -#: source/ubl-strings.h:21 +#: source/ubl-strings.h:21 source/ubl-strings.h:20 source/ubl-strings.h:20 msgid "User name (description):" msgstr "" -#: source/ubl-strings.h:22 +#: source/ubl-strings.h:22 source/ubl-strings.h:21 source/ubl-strings.h:21 msgid "Login:" msgstr "" -#: source/ubl-strings.h:23 +#: source/ubl-strings.h:23 source/ubl-strings.h:22 source/ubl-strings.h:22 msgid "Password:" msgstr "" -#: source/ubl-strings.h:24 +#: source/ubl-strings.h:24 source/ubl-strings.h:23 source/ubl-strings.h:23 msgid "Default" msgstr "" -#: source/ubl-strings.h:25 +#: source/ubl-strings.h:25 source/ubl-strings.h:24 source/ubl-strings.h:24 msgid "Main group:" msgstr "" -#: source/ubl-strings.h:26 +#: source/ubl-strings.h:26 source/ubl-strings.h:25 source/ubl-strings.h:25 msgid "" "Additional\n" "groups" msgstr "" -#: source/ubl-strings.h:28 +#: source/ubl-strings.h:28 source/ubl-strings.h:27 source/ubl-strings.h:27 msgid "Sync with SAMBA user" msgstr "" -#: source/ubl-strings.h:29 +#: source/ubl-strings.h:29 source/ubl-strings.h:28 source/ubl-strings.h:28 msgid "Extra options:" msgstr "" -#: source/ubl-strings.h:30 +#: source/ubl-strings.h:30 source/ubl-strings.h:29 source/ubl-strings.h:29 msgid "Cancel" msgstr "" -#: source/ubl-strings.h:31 +#: source/ubl-strings.h:31 source/ubl-strings.h:30 source/ubl-strings.h:30 msgid "Ok" msgstr "" -#: source/ubl-strings.h:33 +#: source/ubl-strings.h:33 source/ubl-strings.h:32 source/ubl-strings.h:32 msgid "Block" msgstr "" -#: source/ubl-strings.h:34 +#: source/ubl-strings.h:34 source/ubl-strings.h:33 source/ubl-strings.h:33 msgid "" "Main\n" "group" msgstr "" -#: source/ubl-strings.h:35 +#: source/ubl-strings.h:35 source/ubl-strings.h:34 source/ubl-strings.h:34 msgid "" "Additional\n" "parameters" msgstr "" -#: source/ubl-strings.h:36 +#: source/ubl-strings.h:36 source/ubl-strings.h:35 source/ubl-strings.h:35 msgid "" "Password\n" "status" msgstr "" -#: source/ubl-strings.h:37 +#: source/ubl-strings.h:37 source/ubl-strings.h:36 source/ubl-strings.h:36 msgid "Users" msgstr "" -#: source/ubl-strings.h:38 +#: source/ubl-strings.h:38 source/ubl-strings.h:37 source/ubl-strings.h:37 msgid "GID" msgstr "" -#: source/ubl-strings.h:39 +#: source/ubl-strings.h:39 source/ubl-strings.h:38 source/ubl-strings.h:38 msgid "" "Group\n" "name" msgstr "" -#: source/ubl-strings.h:40 +#: source/ubl-strings.h:40 source/ubl-strings.h:39 source/ubl-strings.h:39 msgid "" "Group\n" "users" msgstr "" -#: source/ubl-strings.h:41 +#: source/ubl-strings.h:41 source/ubl-strings.h:40 source/ubl-strings.h:40 msgid "Groups" msgstr "" -#: source/ubl-strings.h:43 +#: source/ubl-strings.h:43 source/ubl-strings.h:42 source/ubl-strings.h:42 msgid "Password input" msgstr "" -#: source/ubl-strings.h:44 +#: source/ubl-strings.h:44 source/ubl-strings.h:43 source/ubl-strings.h:43 msgid "File owerview" msgstr "" -#: source/ubl-strings.h:46 +#: source/ubl-strings.h:46 source/ubl-strings.h:45 source/ubl-strings.h:45 msgid "Inspect users and groups in system" msgstr "" -#: source/ubl-strings.h:47 source/ubl-strings.h:58 +#: source/ubl-strings.h:47 source/ubl-strings.h:58 source/ubl-strings.h:46 +#: source/ubl-strings.h:57 source/ubl-strings.h:46 source/ubl-strings.h:57 msgid "Additional settings" msgstr "" -#: source/ubl-strings.h:48 +#: source/ubl-strings.h:48 source/ubl-strings.h:47 source/ubl-strings.h:47 msgid "Shared groups configuration" msgstr "" -#: source/ubl-strings.h:49 +#: source/ubl-strings.h:49 source/ubl-strings.h:48 source/ubl-strings.h:48 msgid "Create new" msgstr "" -#: source/ubl-strings.h:50 +#: source/ubl-strings.h:50 source/ubl-strings.h:49 source/ubl-strings.h:49 msgid "Edit" msgstr "" -#: source/ubl-strings.h:51 +#: source/ubl-strings.h:51 source/ubl-strings.h:50 source/ubl-strings.h:50 msgid "Remove" msgstr "" -#: source/ubl-strings.h:52 +#: source/ubl-strings.h:52 source/ubl-strings.h:51 source/ubl-strings.h:51 msgid "Update users and groups" msgstr "" @@ -259,397 +263,407 @@ msgstr "Вы уверены, что хотите удалить группу" msgid "Are you sure want to delete user" msgstr "Вы уверены, что хотите удалить пользователя" -#: source/ubl-strings.h:53 +#: source/ubl-strings.h:53 source/ubl-strings.h:52 source/ubl-strings.h:52 msgid "Additional saving configuration" msgstr "" -#: source/ubl-strings.h:59 +#: source/ubl-strings.h:59 source/ubl-strings.h:58 source/ubl-strings.h:58 msgid "No password required" msgstr "" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:60 source/ubl-strings.h:59 source/ubl-strings.h:59 msgid "Set a password" msgstr "" -#: source/ubl-strings.h:61 source/ubl-strings.h:87 +#: source/ubl-strings.h:61 source/ubl-strings.h:87 source/ubl-strings.h:60 +#: source/ubl-strings.h:86 source/ubl-strings.h:60 source/ubl-strings.h:86 msgid "Encrypted password" msgstr "" -#: source/ubl-strings.h:62 +#: source/ubl-strings.h:62 source/ubl-strings.h:61 source/ubl-strings.h:61 msgid "Unencrypted password" msgstr "" -#: source/ubl-strings.h:75 +#: source/ubl-strings.h:75 source/ubl-strings.h:74 source/ubl-strings.h:74 msgid "Accept" msgstr "" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:78 source/ubl-strings.h:77 source/ubl-strings.h:77 msgid "Configure group" msgstr "" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:79 source/ubl-strings.h:78 source/ubl-strings.h:78 msgid "Add group" msgstr "" -#: source/ubl-strings.h:80 +#: source/ubl-strings.h:80 source/ubl-strings.h:79 source/ubl-strings.h:79 msgid "Group id:" msgstr "" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:81 source/ubl-strings.h:80 source/ubl-strings.h:80 msgid "Group name:" msgstr "" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:82 source/ubl-strings.h:81 source/ubl-strings.h:81 msgid "Group users:" msgstr "" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:83 source/ubl-strings.h:82 source/ubl-strings.h:82 msgid "Automatically" msgstr "" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:85 source/ubl-strings.h:84 source/ubl-strings.h:84 msgid "Create group with ununique GID" msgstr "" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:86 source/ubl-strings.h:85 source/ubl-strings.h:85 msgid "Create system group" msgstr "" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:88 source/ubl-strings.h:87 source/ubl-strings.h:87 msgid "Additional configuration" msgstr "" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:89 source/ubl-strings.h:88 source/ubl-strings.h:88 msgid "Group configuration synchronization" msgstr "" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:90 source/ubl-strings.h:89 source/ubl-strings.h:89 msgid "When shutting down the system, save the group into the configuration" msgstr "" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:91 source/ubl-strings.h:90 source/ubl-strings.h:90 msgid "Group administrators:" msgstr "" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:94 source/ubl-strings.h:93 source/ubl-strings.h:94 msgid "Default groups" msgstr "" -#: source/ubl-strings.h:95 +#: source/ubl-strings.h:95 source/ubl-strings.h:94 source/ubl-strings.h:95 msgid "Main group" msgstr "" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:96 source/ubl-strings.h:95 source/ubl-strings.h:96 msgid "Additional groups" msgstr "" -#: source/ubl-strings.h:97 +#: source/ubl-strings.h:97 source/ubl-strings.h:96 source/ubl-strings.h:97 msgid "Choose groups" msgstr "" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:98 source/ubl-strings.h:97 source/ubl-strings.h:98 msgid "Choose users" msgstr "" -#: source/ubl-strings.h:101 +#: source/ubl-strings.h:101 source/ubl-strings.h:100 source/ubl-strings.h:101 msgid "System users and groups" msgstr "" -#: source/ubl-strings.h:102 +#: source/ubl-strings.h:102 source/ubl-strings.h:101 source/ubl-strings.h:102 msgid "Blocked" msgstr "" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:103 source/ubl-strings.h:102 source/ubl-strings.h:103 msgid "Username" msgstr "" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:104 source/ubl-strings.h:103 source/ubl-strings.h:104 msgid "" "Primary\n" "group" msgstr "" -#: source/ubl-strings.h:105 +#: source/ubl-strings.h:105 source/ubl-strings.h:104 source/ubl-strings.h:105 msgid "" "Home\n" "directory" msgstr "" -#: source/ubl-strings.h:106 source/ubl-strings.h:112 +#: source/ubl-strings.h:106 source/ubl-strings.h:112 source/ubl-strings.h:105 +#: source/ubl-strings.h:111 source/ubl-strings.h:106 source/ubl-strings.h:112 msgid "Group" msgstr "" -#: source/ubl-strings.h:107 +#: source/ubl-strings.h:107 source/ubl-strings.h:106 source/ubl-strings.h:107 msgid "Update the system users and groups list" msgstr "" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:108 source/ubl-strings.h:107 source/ubl-strings.h:108 msgid "Toggle system groups and users" msgstr "" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:110 source/ubl-strings.h:109 source/ubl-strings.h:110 msgid "Password mismatch" msgstr "" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:111 msgid "Password must be at least" msgstr "" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:111 msgid "characters" msgstr "" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:113 source/ubl-strings.h:112 source/ubl-strings.h:113 msgid "" "Days until\n" "warning" msgstr "" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:114 source/ubl-strings.h:113 source/ubl-strings.h:114 msgid "" "Days\n" "without activity" msgstr "" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:115 source/ubl-strings.h:114 source/ubl-strings.h:115 msgid "" "Shell\n" "path" msgstr "" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:116 source/ubl-strings.h:115 source/ubl-strings.h:116 msgid "" "Password has\n" "been changed" msgstr "" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:117 source/ubl-strings.h:116 source/ubl-strings.h:117 msgid "" "Expiration\n" "date" msgstr "" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:118 source/ubl-strings.h:117 source/ubl-strings.h:118 msgid "" "Password change\n" "interval (min)" msgstr "" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:119 source/ubl-strings.h:118 source/ubl-strings.h:119 msgid "" "Password change\n" "interval (max)" msgstr "" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:122 source/ubl-strings.h:121 source/ubl-strings.h:122 msgid "Add user" msgstr "" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:123 source/ubl-strings.h:122 source/ubl-strings.h:123 msgid "Configure user" msgstr "" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:124 source/ubl-strings.h:123 source/ubl-strings.h:124 msgid "Set" msgstr "" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:125 source/ubl-strings.h:124 source/ubl-strings.h:125 msgid "Empty important field" msgstr "" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:126 source/ubl-strings.h:127 msgid "Loading has failed" msgstr "" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:127 source/ubl-strings.h:128 msgid "Login name" msgstr "" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:128 source/ubl-strings.h:129 msgid "Additional groups:" msgstr "" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:129 source/ubl-strings.h:130 msgid "Password configuration" msgstr "" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:130 source/ubl-strings.h:131 msgid "Password has been changed:" msgstr "" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:131 source/ubl-strings.h:132 msgid "expiration date:" msgstr "" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:132 source/ubl-strings.h:133 msgid "Password change interval: minimum" msgstr "" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:133 source/ubl-strings.h:134 msgid "days, maximum" msgstr "" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:134 source/ubl-strings.h:135 msgid "days" msgstr "" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:135 source/ubl-strings.h:136 msgid "Days until warning:" msgstr "" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:136 source/ubl-strings.h:137 msgid "Days without activity:" msgstr "" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:137 source/ubl-strings.h:138 msgid "Force change at next login" msgstr "" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:138 source/ubl-strings.h:139 msgid "User shell:" msgstr "" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:139 source/ubl-strings.h:140 msgid "Home directory:" msgstr "" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:140 source/ubl-strings.h:141 msgid "Don't set" msgstr "" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:141 source/ubl-strings.h:142 msgid "Create system user" msgstr "" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:142 source/ubl-strings.h:143 msgid "Create user with ununique (repeating) UID" msgstr "" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:143 source/ubl-strings.h:144 msgid "Do not check login for compliance with character rules" msgstr "" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:144 source/ubl-strings.h:145 msgid "Temporary deactivation" msgstr "" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:145 source/ubl-strings.h:146 msgid "Save" msgstr "" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:146 source/ubl-strings.h:147 msgid "login_name" msgstr "" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:147 source/ubl-strings.h:148 msgid "group_name" msgstr "" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:148 source/ubl-strings.h:149 msgid "User name" msgstr "" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:149 source/ubl-strings.h:150 msgid "Sync user" msgstr "" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:150 source/ubl-strings.h:151 msgid "Sync user with password" msgstr "" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:151 source/ubl-strings.h:152 msgid "Encrypt all passwords" msgstr "" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:153 source/ubl-strings.h:154 msgid "User configuration" msgstr "" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:154 source/ubl-strings.h:155 msgid "User configuration synchronization" msgstr "" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:155 source/ubl-strings.h:156 msgid "During system startup, load the user from the configuration" msgstr "" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:156 source/ubl-strings.h:157 msgid "When shutting down the system, save the user into the configuration" msgstr "" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:157 source/ubl-strings.h:158 msgid "User password configuration syncronization" msgstr "" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:158 source/ubl-strings.h:159 msgid "" "During system startup, load the user's parameters from the configuration" msgstr "" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:159 source/ubl-strings.h:160 msgid "" "When shutting down the system, save the user's parameters into the " "configuration" msgstr "" -#: source/ubl-strings.h:161 +#: source/ubl-strings.h:161 source/ubl-strings.h:162 msgid "Main" msgstr "" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:162 source/ubl-strings.h:163 msgid "Additional" msgstr "" -#: source/ubl-strings.h:163 +#: source/ubl-strings.h:163 source/ubl-strings.h:164 msgid "Syncronization" msgstr "" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:166 source/ubl-strings.h:167 msgid "Repeat password:" msgstr "" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:167 source/ubl-strings.h:168 msgid "Password hash:" msgstr "" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:168 source/ubl-strings.h:169 msgid "Do not encrypt password" msgstr "" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:171 source/ubl-strings.h:172 msgid "Additional configuration of service parameter saving" msgstr "" -#: source/ubl-strings.h:172 +#: source/ubl-strings.h:172 source/ubl-strings.h:173 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" msgstr "" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:173 source/ubl-strings.h:174 msgid "For system save mode \"Sandbox\"" msgstr "" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:176 source/ubl-strings.h:177 msgid "User deletion" msgstr "" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:177 source/ubl-strings.h:178 msgid "Confirm user(-s) deletion:" msgstr "" -#: source/ubl-strings.h:178 +#: source/ubl-strings.h:178 source/ubl-strings.h:179 msgid "Chosen" msgstr "" -#: source/ubl-strings.h:179 +#: source/ubl-strings.h:179 source/ubl-strings.h:180 msgid "User" msgstr "" -#: source/ubl-strings.h:180 +#: source/ubl-strings.h:180 source/ubl-strings.h:181 msgid "Home directory" msgstr "" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:181 source/ubl-strings.h:182 msgid "Delete home directory" msgstr "" + +#: source/ubl-strings.h:125 source/ubl-strings.h:126 +msgid "Login must not start with digit" +msgstr "" + +#: source/ubl-strings.h:91 +msgid "Group name must not start with digit" +msgstr "" diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index d04d08a..d204077 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -25,7 +25,7 @@ msgstr "Версия:" msgid "ubl-settings-usergroups version:" msgstr "Версия ubl-ubl-settings-usergroups: " -#: source/ubl-strings.h:2 source/ubl-strings.h:4 +#: source/ubl-strings.h:2 source/ubl-strings.h:4 source/ubl-strings.h:3 msgid "Users and groups" msgstr "Пользователи и группы" @@ -73,48 +73,49 @@ msgstr "Блокировка загрузки глобальной конфиг msgid "Reset application settings" msgstr "Сбросить настройки утилиты" -#: source/ubl-strings.h:5 +#: source/ubl-strings.h:5 source/ubl-strings.h:4 msgid "System users and groups configuration" -msgstr "" -"Настройка пользователей и групп системы" +msgstr "Настройка пользователей и групп системы" -#: source/ubl-strings.h:7 +#: source/ubl-strings.h:7 source/ubl-strings.h:6 msgid "Default user groups:" msgstr "Группы пользователей по умолчанию:" -#: source/ubl-strings.h:8 +#: source/ubl-strings.h:8 source/ubl-strings.h:7 msgid "Default user name (if there's no another):" msgstr "Имя пользователя по умолчанию (если нет других):" -#: source/ubl-strings.h:9 +#: source/ubl-strings.h:9 source/ubl-strings.h:8 msgid "User with ID 1000 is administrator" msgstr "Пользователь с ID 1000 является администратором" -#: source/ubl-strings.h:10 +#: source/ubl-strings.h:10 source/ubl-strings.h:9 msgid "Default user password:" msgstr "Пароль для пользователей по умолчанию:" -#: source/ubl-strings.h:11 +#: source/ubl-strings.h:11 source/ubl-strings.h:10 msgid "Root user password:" msgstr "Пароль пользователя root:" -#: source/ubl-strings.h:12 source/ubl-strings.h:27 +#: source/ubl-strings.h:12 source/ubl-strings.h:27 source/ubl-strings.h:11 +#: source/ubl-strings.h:26 msgid "Password hash algorythm:" msgstr "Алгоритм хэширования пароля:" -#: source/ubl-strings.h:14 +#: source/ubl-strings.h:14 source/ubl-strings.h:13 msgid "UID" msgstr "UID" -#: source/ubl-strings.h:15 source/ubl-strings.h:84 +#: source/ubl-strings.h:15 source/ubl-strings.h:84 source/ubl-strings.h:14 +#: source/ubl-strings.h:83 msgid "Login" msgstr "Логин" -#: source/ubl-strings.h:16 +#: source/ubl-strings.h:16 source/ubl-strings.h:15 msgid "Password" msgstr "Пароль" -#: source/ubl-strings.h:17 +#: source/ubl-strings.h:17 source/ubl-strings.h:16 msgid "" "User\n" "name" @@ -122,35 +123,35 @@ msgstr "" "Имя\n" "пользователя" -#: source/ubl-strings.h:18 +#: source/ubl-strings.h:18 source/ubl-strings.h:17 msgid "Apply" msgstr "Применить" -#: source/ubl-strings.h:20 +#: source/ubl-strings.h:20 source/ubl-strings.h:19 msgid "User UID:" msgstr "UID пользователя:" -#: source/ubl-strings.h:21 +#: source/ubl-strings.h:21 source/ubl-strings.h:20 msgid "User name (description):" msgstr "Имя пользователя (описание):" -#: source/ubl-strings.h:22 +#: source/ubl-strings.h:22 source/ubl-strings.h:21 msgid "Login:" msgstr "Логин:" -#: source/ubl-strings.h:23 +#: source/ubl-strings.h:23 source/ubl-strings.h:22 msgid "Password:" msgstr "Пароль:" -#: source/ubl-strings.h:24 +#: source/ubl-strings.h:24 source/ubl-strings.h:23 msgid "Default" msgstr "По умолчанию" -#: source/ubl-strings.h:25 +#: source/ubl-strings.h:25 source/ubl-strings.h:24 msgid "Main group:" msgstr "Основная группа:" -#: source/ubl-strings.h:26 +#: source/ubl-strings.h:26 source/ubl-strings.h:25 msgid "" "Additional\n" "groups" @@ -158,27 +159,27 @@ msgstr "" "Дополнительные\n" "группы" -#: source/ubl-strings.h:28 +#: source/ubl-strings.h:28 source/ubl-strings.h:27 msgid "Sync with SAMBA user" msgstr "Синхронизировать с пользователем SAMBA" -#: source/ubl-strings.h:29 +#: source/ubl-strings.h:29 source/ubl-strings.h:28 msgid "Extra options:" msgstr "Дополнительные параметры:" -#: source/ubl-strings.h:30 +#: source/ubl-strings.h:30 source/ubl-strings.h:29 msgid "Cancel" msgstr "Отменить" -#: source/ubl-strings.h:31 +#: source/ubl-strings.h:31 source/ubl-strings.h:30 msgid "Ok" msgstr "Применить" -#: source/ubl-strings.h:33 +#: source/ubl-strings.h:33 source/ubl-strings.h:32 msgid "Block" msgstr "Заблокировано" -#: source/ubl-strings.h:34 +#: source/ubl-strings.h:34 source/ubl-strings.h:33 msgid "" "Main\n" "group" @@ -186,7 +187,7 @@ msgstr "" "Основная\n" "группа" -#: source/ubl-strings.h:35 +#: source/ubl-strings.h:35 source/ubl-strings.h:34 msgid "" "Additional\n" "parameters" @@ -194,7 +195,7 @@ msgstr "" "Дополнительные\n" "параметры" -#: source/ubl-strings.h:36 +#: source/ubl-strings.h:36 source/ubl-strings.h:35 msgid "" "Password\n" "status" @@ -202,15 +203,15 @@ msgstr "" "Статус\n" "пароля" -#: source/ubl-strings.h:37 +#: source/ubl-strings.h:37 source/ubl-strings.h:36 msgid "Users" msgstr "Пользователи" -#: source/ubl-strings.h:38 +#: source/ubl-strings.h:38 source/ubl-strings.h:37 msgid "GID" msgstr "GID" -#: source/ubl-strings.h:39 +#: source/ubl-strings.h:39 source/ubl-strings.h:38 msgid "" "Group\n" "name" @@ -218,7 +219,7 @@ msgstr "" "Имя\n" "группы" -#: source/ubl-strings.h:40 +#: source/ubl-strings.h:40 source/ubl-strings.h:39 msgid "" "Group\n" "users" @@ -226,43 +227,44 @@ msgstr "" "Пользователи\n" "группы" -#: source/ubl-strings.h:41 +#: source/ubl-strings.h:41 source/ubl-strings.h:40 msgid "Groups" msgstr "Группы" -#: source/ubl-strings.h:43 +#: source/ubl-strings.h:43 source/ubl-strings.h:42 msgid "Password input" msgstr "Ввод пароля" -#: source/ubl-strings.h:44 +#: source/ubl-strings.h:44 source/ubl-strings.h:43 msgid "File owerview" msgstr "Обзор файлов" -#: source/ubl-strings.h:46 +#: source/ubl-strings.h:46 source/ubl-strings.h:45 msgid "Inspect users and groups in system" msgstr "Просмотр пользователей и групп в системе" -#: source/ubl-strings.h:47 source/ubl-strings.h:58 +#: source/ubl-strings.h:47 source/ubl-strings.h:58 source/ubl-strings.h:46 +#: source/ubl-strings.h:57 msgid "Additional settings" msgstr "Дополнительные настройки" -#: source/ubl-strings.h:48 +#: source/ubl-strings.h:48 source/ubl-strings.h:47 msgid "Shared groups configuration" msgstr "Группы пользователей по умолчанию" -#: source/ubl-strings.h:49 +#: source/ubl-strings.h:49 source/ubl-strings.h:48 msgid "Create new" msgstr "Создать" -#: source/ubl-strings.h:50 +#: source/ubl-strings.h:50 source/ubl-strings.h:49 msgid "Edit" msgstr "Редактировать" -#: source/ubl-strings.h:51 +#: source/ubl-strings.h:51 source/ubl-strings.h:50 msgid "Remove" msgstr "Удалить" -#: source/ubl-strings.h:52 +#: source/ubl-strings.h:52 source/ubl-strings.h:51 msgid "Update users and groups" msgstr "Обновить список пользователей и групп" @@ -274,111 +276,112 @@ msgstr "Вы уверены, что хотите удалить группу" msgid "Are you sure want to delete user" msgstr "Вы уверены, что хотите удалить пользователя" -#: source/ubl-strings.h:53 +#: source/ubl-strings.h:53 source/ubl-strings.h:52 msgid "Additional saving configuration" msgstr "Дополнительные настройки сохранения" -#: source/ubl-strings.h:59 +#: source/ubl-strings.h:59 source/ubl-strings.h:58 msgid "No password required" msgstr "Пароль не требуется" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:60 source/ubl-strings.h:59 msgid "Set a password" msgstr "Задать пароль" -#: source/ubl-strings.h:61 source/ubl-strings.h:87 +#: source/ubl-strings.h:61 source/ubl-strings.h:87 source/ubl-strings.h:60 +#: source/ubl-strings.h:86 msgid "Encrypted password" msgstr "Зашифрованный пароль" -#: source/ubl-strings.h:62 +#: source/ubl-strings.h:62 source/ubl-strings.h:61 msgid "Unencrypted password" msgstr "Незашифрованный пароль" -#: source/ubl-strings.h:75 +#: source/ubl-strings.h:75 source/ubl-strings.h:74 msgid "Accept" msgstr "Принять" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:78 source/ubl-strings.h:77 msgid "Configure group" msgstr "Редактировать группу" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:79 source/ubl-strings.h:78 msgid "Add group" msgstr "Добавить группу" -#: source/ubl-strings.h:80 +#: source/ubl-strings.h:80 source/ubl-strings.h:79 msgid "Group id:" msgstr "ID Группы:" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:81 source/ubl-strings.h:80 msgid "Group name:" msgstr "Имя группы:" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:82 source/ubl-strings.h:81 msgid "Group users:" msgstr "Пользователи группы:" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:83 source/ubl-strings.h:82 msgid "Automatically" msgstr "Автоматически" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:85 source/ubl-strings.h:84 msgid "Create group with ununique GID" msgstr "Создать группу с повторяющимися (не уникальными) GID" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:86 source/ubl-strings.h:85 msgid "Create system group" msgstr "Создать системную группу" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:88 source/ubl-strings.h:87 msgid "Additional configuration" msgstr "Дополнительные настройки" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:89 source/ubl-strings.h:88 msgid "Group configuration synchronization" msgstr "Синхронизация настроек группы" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:90 source/ubl-strings.h:89 msgid "When shutting down the system, save the group into the configuration" msgstr "При завершении работы системы сохранить группу в конфигурацию" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:91 source/ubl-strings.h:90 msgid "Group administrators:" msgstr "Администраторы группы:" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:94 source/ubl-strings.h:93 msgid "Default groups" msgstr "Группы пользователей по умолчанию" -#: source/ubl-strings.h:95 +#: source/ubl-strings.h:95 source/ubl-strings.h:94 msgid "Main group" msgstr "Основная группа" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:96 source/ubl-strings.h:95 msgid "Additional groups" msgstr "Дополнительные группы" -#: source/ubl-strings.h:97 +#: source/ubl-strings.h:97 source/ubl-strings.h:96 msgid "Choose groups" msgstr "Выбрать группы" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:98 source/ubl-strings.h:97 msgid "Choose users" msgstr "Выбрать пользователей" -#: source/ubl-strings.h:101 +#: source/ubl-strings.h:101 source/ubl-strings.h:100 msgid "System users and groups" msgstr "Пользователи и группы в системе" -#: source/ubl-strings.h:102 +#: source/ubl-strings.h:102 source/ubl-strings.h:101 msgid "Blocked" msgstr "Заблокировано" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:103 source/ubl-strings.h:102 msgid "Username" msgstr "Имя пользователя" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:104 source/ubl-strings.h:103 msgid "" "Primary\n" "group" @@ -386,7 +389,7 @@ msgstr "" "Основная\n" "группа" -#: source/ubl-strings.h:105 +#: source/ubl-strings.h:105 source/ubl-strings.h:104 msgid "" "Home\n" "directory" @@ -394,31 +397,32 @@ msgstr "" "Домашний\n" "каталог" -#: source/ubl-strings.h:106 source/ubl-strings.h:112 +#: source/ubl-strings.h:106 source/ubl-strings.h:112 source/ubl-strings.h:105 +#: source/ubl-strings.h:111 msgid "Group" msgstr "Группа" -#: source/ubl-strings.h:107 +#: source/ubl-strings.h:107 source/ubl-strings.h:106 msgid "Update the system users and groups list" msgstr "Обновить список пользователей и групп системы" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:108 source/ubl-strings.h:107 msgid "Toggle system groups and users" msgstr "Переключить видимость системных пользователей и групп" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:110 source/ubl-strings.h:109 msgid "Password mismatch" msgstr "Несовпадение паролей" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 msgid "Password must be at least" msgstr "Пароль должен состоять из как минимум" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 msgid "characters" msgstr "символов" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:113 source/ubl-strings.h:112 msgid "" "Days until\n" "warning" @@ -426,7 +430,7 @@ msgstr "" "Дней до\n" "предупреждения" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:114 source/ubl-strings.h:113 msgid "" "Days\n" "without activity" @@ -434,7 +438,7 @@ msgstr "" "Дней без\n" "активности" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:115 source/ubl-strings.h:114 msgid "" "Shell\n" "path" @@ -442,7 +446,7 @@ msgstr "" "Путь до\n" "оболочки" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:116 source/ubl-strings.h:115 msgid "" "Password has\n" "been changed" @@ -450,7 +454,7 @@ msgstr "" "Пароль\n" "изменён" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:117 source/ubl-strings.h:116 msgid "" "Expiration\n" "date" @@ -458,7 +462,7 @@ msgstr "" "Дата\n" "устаревания" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:118 source/ubl-strings.h:117 msgid "" "Password change\n" "interval (min)" @@ -466,7 +470,7 @@ msgstr "" "Интервал смены\n" "пароля (мин.)" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:119 source/ubl-strings.h:118 msgid "" "Password change\n" "interval (max)" @@ -474,187 +478,187 @@ msgstr "" "Интервал смены\n" "пароля (макс.)" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:122 source/ubl-strings.h:121 msgid "Add user" msgstr "Добавить пользователя" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:123 source/ubl-strings.h:122 msgid "Configure user" msgstr "Редактировать пользователя" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:124 source/ubl-strings.h:123 msgid "Set" msgstr "Задать" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:125 source/ubl-strings.h:124 msgid "Empty important field" msgstr "Пустое важное поле" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:126 source/ubl-strings.h:127 msgid "Loading has failed" msgstr "Ошибка загрузки" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:127 source/ubl-strings.h:128 msgid "Login name" msgstr "Имя логина" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:128 source/ubl-strings.h:129 msgid "Additional groups:" msgstr "Дополнительные группы:" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:129 source/ubl-strings.h:130 msgid "Password configuration" msgstr "Конфигурация пароля" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:130 source/ubl-strings.h:131 msgid "Password has been changed:" msgstr "Пароль изменён:" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:131 source/ubl-strings.h:132 msgid "expiration date:" msgstr "Дата устаревания:" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:132 source/ubl-strings.h:133 msgid "Password change interval: minimum" msgstr "Интервал смены пароля: минимум" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:133 source/ubl-strings.h:134 msgid "days, maximum" msgstr "дней, максимум" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:134 source/ubl-strings.h:135 msgid "days" msgstr "дней" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:135 source/ubl-strings.h:136 msgid "Days until warning:" msgstr "Дней до предупреждения:" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:136 source/ubl-strings.h:137 msgid "Days without activity:" msgstr "Дней без активности:" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:137 source/ubl-strings.h:138 msgid "Force change at next login" msgstr "Принудительно сменить при следующем входе в систему" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:138 source/ubl-strings.h:139 msgid "User shell:" msgstr "Оболочка пользователя:" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:139 source/ubl-strings.h:140 msgid "Home directory:" msgstr "Домашний каталог:" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:140 source/ubl-strings.h:141 msgid "Don't set" msgstr "Не создавать" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:141 source/ubl-strings.h:142 msgid "Create system user" msgstr "Создать системного пользователя" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:142 source/ubl-strings.h:143 msgid "Create user with ununique (repeating) UID" msgstr "Создать пользователя с повторяющимися (не уникальными) UID" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:143 source/ubl-strings.h:144 msgid "Do not check login for compliance with character rules" msgstr "Не проверять логин на несоответствие правилам использования символов" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:144 source/ubl-strings.h:145 msgid "Temporary deactivation" msgstr "Временное отключение учётной записи" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:145 source/ubl-strings.h:146 msgid "Save" msgstr "Сохранить" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:146 source/ubl-strings.h:147 msgid "login_name" msgstr "Имя_логина" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:147 source/ubl-strings.h:148 msgid "group_name" msgstr "Имя_группы" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:148 source/ubl-strings.h:149 msgid "User name" msgstr "Имя пользователя" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:149 source/ubl-strings.h:150 msgid "Sync user" msgstr "Синхронизировать пользователя" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:150 source/ubl-strings.h:151 msgid "Sync user with password" msgstr "Синхронизировать пользователя с паролем" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:151 source/ubl-strings.h:152 msgid "Encrypt all passwords" msgstr "Зашифровать все пароли" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:153 source/ubl-strings.h:154 msgid "User configuration" msgstr "Настройка пользователя" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:154 source/ubl-strings.h:155 msgid "User configuration synchronization" msgstr "Синхронизация настроек пользователя" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:155 source/ubl-strings.h:156 msgid "During system startup, load the user from the configuration" msgstr "При загрузке системы загрузить пользователя из конфигурации" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:156 source/ubl-strings.h:157 msgid "When shutting down the system, save the user into the configuration" msgstr "При завершении работы системы сохранить пользователя в конфигурацию" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:157 source/ubl-strings.h:158 msgid "User password configuration syncronization" msgstr "Синхронизация настроек пароля пользователя" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:158 source/ubl-strings.h:159 msgid "" "During system startup, load the user's parameters from the configuration" msgstr "При загрузке системы загрузить параметры пользователя из конфигурации" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:159 source/ubl-strings.h:160 msgid "" "When shutting down the system, save the user's parameters into the " "configuration" msgstr "" "При завершении работы системы сохранить параметры пользователя в конфигурацию" -#: source/ubl-strings.h:161 +#: source/ubl-strings.h:161 source/ubl-strings.h:162 msgid "Main" msgstr "Основные" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:162 source/ubl-strings.h:163 msgid "Additional" msgstr "Дополнительные" -#: source/ubl-strings.h:163 +#: source/ubl-strings.h:163 source/ubl-strings.h:164 msgid "Syncronization" msgstr "Синхронизация" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:166 source/ubl-strings.h:167 msgid "Repeat password:" msgstr "Подтверждение пароля:" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:167 source/ubl-strings.h:168 msgid "Password hash:" msgstr "Хэш пароля:" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:168 source/ubl-strings.h:169 msgid "Do not encrypt password" msgstr "Не шифровать пароль" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:171 source/ubl-strings.h:172 msgid "Additional configuration of service parameter saving" msgstr "Дополнительные настройки сохранения параметров сервисов" -#: source/ubl-strings.h:172 +#: source/ubl-strings.h:172 source/ubl-strings.h:173 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" @@ -662,33 +666,39 @@ msgstr "" "При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n" "в (hd)/ublinux-data/rootcopy/" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:173 source/ubl-strings.h:174 msgid "For system save mode \"Sandbox\"" msgstr "Для режима сохранения системы \"Песочница\"" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:176 source/ubl-strings.h:177 msgid "User deletion" msgstr "Удаление пользователя(-лей)" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:177 source/ubl-strings.h:178 msgid "Confirm user(-s) deletion:" msgstr "Подтвердите удаление пользователя (-ей):" -#: source/ubl-strings.h:178 +#: source/ubl-strings.h:178 source/ubl-strings.h:179 msgid "Chosen" msgstr "Выбран" -#: source/ubl-strings.h:179 +#: source/ubl-strings.h:179 source/ubl-strings.h:180 msgid "User" msgstr "Пользователь" -#: source/ubl-strings.h:180 +#: source/ubl-strings.h:180 source/ubl-strings.h:181 msgid "Home directory" msgstr "Домашний каталог" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:181 source/ubl-strings.h:182 msgid "Delete home directory" msgstr "Удалить домашний каталог" -#~ msgid "Endrypted password" -#~ msgstr "Зашифрованный пароль" +#: source/ubl-strings.h:125 source/ubl-strings.h:126 +msgid "Login must not start with digit" +msgstr "Логин не должен начинаться с цифры" + +#: source/ubl-strings.h:91 +#, fuzzy +msgid "Group name must not start with digit" +msgstr "Имя группы не должно начинаться с цифры" -- 2.35.1