diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 7847db4..d26bc97 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); @@ -103,8 +104,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 { @@ -127,22 +126,92 @@ 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 (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 (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 (!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 (!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); + + } + + } + } +} + 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); + if (window) 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); + if (window) 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); + if (window) yon_hide_passwords(window); } void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window){ @@ -229,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); + } } } } @@ -272,6 +342,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); @@ -419,6 +490,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; @@ -427,6 +504,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); @@ -442,11 +529,26 @@ 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); + } + } + } 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); @@ -581,13 +683,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)) @@ -633,6 +735,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; @@ -641,6 +749,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); @@ -703,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); @@ -934,10 +1057,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); @@ -1200,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); @@ -1214,9 +1340,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"; } @@ -1241,7 +1364,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); @@ -1368,18 +1494,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; @@ -1394,7 +1535,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); @@ -1403,7 +1544,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 +1559,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 +1574,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))){ @@ -1524,10 +1665,12 @@ 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); 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)))); 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); @@ -1571,6 +1714,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); @@ -1620,6 +1765,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); @@ -1633,8 +1779,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])){ @@ -1836,7 +1986,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); @@ -1954,19 +2104,7 @@ 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); - } - 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; @@ -1988,7 +2126,8 @@ 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); + main_config.load_mode=0; + 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)); @@ -2010,83 +2149,16 @@ 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;iDefault No password required Set a password - Endrypted password @@ -230,7 +229,6 @@ Default No password required Set a password - Encrypted password diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css index afeb12d..a98861a 100644 --- a/ubl-settings-usergroups.css +++ b/ubl-settings-usergroups.css @@ -1,4 +1,3 @@ - .thin { margin:0px; padding:0px; @@ -38,7 +37,7 @@ background:transparent; border-left-width:inherit; border-right-width:inherit; } - + .menuitemtop{ margin-bottom:0px; border-color:inherit; @@ -46,17 +45,17 @@ background:transparent; border-left-width:inherit; border-right-width:inherit; } - .menuitemtop>*{ - margin:2px 2px 0 2px; + .menuitemtop >*{ + margin:6px 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 +81,13 @@ background:transparent; } .menuitemtop:hover>* { - margin:2px 2px 0 2px; + margin:6px 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; 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 c18371e..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,49 +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" @@ -123,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" @@ -159,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" @@ -187,7 +187,7 @@ msgstr "" "Основная\n" "группа" -#: source/ubl-strings.h:35 +#: source/ubl-strings.h:35 source/ubl-strings.h:34 msgid "" "Additional\n" "parameters" @@ -195,7 +195,7 @@ msgstr "" "Дополнительные\n" "параметры" -#: source/ubl-strings.h:36 +#: source/ubl-strings.h:36 source/ubl-strings.h:35 msgid "" "Password\n" "status" @@ -203,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" @@ -219,7 +219,7 @@ msgstr "" "Имя\n" "группы" -#: source/ubl-strings.h:40 +#: source/ubl-strings.h:40 source/ubl-strings.h:39 msgid "" "Group\n" "users" @@ -227,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 "Обновить список пользователей и групп" @@ -275,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" @@ -387,7 +389,7 @@ msgstr "" "Основная\n" "группа" -#: source/ubl-strings.h:105 +#: source/ubl-strings.h:105 source/ubl-strings.h:104 msgid "" "Home\n" "directory" @@ -395,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" @@ -427,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" @@ -435,7 +438,7 @@ msgstr "" "Дней без\n" "активности" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:115 source/ubl-strings.h:114 msgid "" "Shell\n" "path" @@ -443,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" @@ -451,7 +454,7 @@ msgstr "" "Пароль\n" "изменён" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:117 source/ubl-strings.h:116 msgid "" "Expiration\n" "date" @@ -459,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)" @@ -467,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)" @@ -475,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" @@ -663,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 "Имя группы не должно начинаться с цифры"