master #141

Merged
asmeron merged 11 commits from YanTheKaller/ubl-settings-usergroups:master into master 2 years ago

@ -6,7 +6,7 @@ config main_config;
int yon_load_proceed(YON_CONFIG_TYPE type){ int yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_load_register(YON_CONFIG_DEFAULT,"users","DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM",NULL); yon_config_load_register(YON_CONFIG_DEFAULT,"users","DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM",NULL);
yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]","[system]","SYSTEMBOOT_STATEMODE","[save]","SAVE_ROOTCOPY_CHANGES",NULL); yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]","[system]","SYSTEMBOOT_STATEMODE","[save]","SAVE_ROOTCOPY_CHANGES",NULL);
if (type!=YON_CONFIG_GLOBAL){ if (type!=YON_CONFIG_GLOBAL){
yon_config_load_register_no_cleaning(YON_CONFIG_GLOBAL,"users","DEFAULTPASSWD DEFAULTROOTPASSWD",NULL); yon_config_load_register_no_cleaning(YON_CONFIG_GLOBAL,"users","DEFAULTPASSWD DEFAULTROOTPASSWD",NULL);
} }
@ -79,7 +79,7 @@ void yon_interface_update(main_window *widgets){
char *pars = ""; char *pars = "";
if (parameters_size>5&&strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ if (parameters_size>5&&strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){
if (!check_is_password_hash(parameters[5])){ if (!check_is_password_hash(parameters[5])&&parameters[5][0]!='%'&&parameters[5][1]!='%'){
pars = ENCRYPTED_LABEL; pars = ENCRYPTED_LABEL;
} else { } else {
pars = UNENCRYPTED_LABEL; pars = UNENCRYPTED_LABEL;
@ -125,7 +125,7 @@ void yon_interface_update(main_window *widgets){
char *pars=""; char *pars="";
if (parameters_size>3&&strcmp(parameters[3],"x")&&strcmp(parameters[3],"")){ if (parameters_size>3&&strcmp(parameters[3],"x")&&strcmp(parameters[3],"")){
if (!check_is_password_hash(parameters[3])){ if (!check_is_password_hash(parameters[3])&&parameters[5][0]!='%'&&parameters[5][1]!='%'){
pars = ENCRYPTED_LABEL; pars = ENCRYPTED_LABEL;
} else { } else {
pars = UNENCRYPTED_LABEL; pars = UNENCRYPTED_LABEL;
@ -355,6 +355,11 @@ void yon_hide_passwords(template_saving_window *window){
} }
} }
void on_save_done(main_window *widgets){
on_config_update(NULL,widgets);
}
void on_config_save(GtkWidget *self, main_window *widgets){ void on_config_save(GtkWidget *self, main_window *widgets){
yon_accept_changes(); yon_accept_changes();
yon_samba_sync_proceed(); yon_samba_sync_proceed();
@ -417,12 +422,13 @@ void on_config_save(GtkWidget *self, main_window *widgets){
} }
} }
void on_config_global_save(){ void on_config_global_save(GtkWidget *self, main_window *widgets){
yon_accept_changes(); yon_accept_changes();
yon_samba_sync_proceed(); 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); 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); if (window){
yon_hide_passwords(window);
}
} }
void on_config_local_save(GtkWidget *self, main_window *widgets){ void on_config_local_save(GtkWidget *self, main_window *widgets){
@ -620,8 +626,11 @@ yon_confirmation_window *yon_delete_confirmation_new(){
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->DeletionTree = yon_gtk_builder_get_widget(builder,"DeletionTree"); window->DeletionTree = yon_gtk_builder_get_widget(builder,"DeletionTree");
window->HatLabel = yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
window->DeleteCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"DeleteCell")); window->DeleteCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"DeleteCell"));
window->DeleteHomeCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"DeleteHomeCell")); window->DeleteHomeCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"DeleteHomeCell"));
window->UserCell = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"UserCell"));
window->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
gtk_window_set_title(GTK_WINDOW(window->Window),DELETE_CONFIRMATION_TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),DELETE_CONFIRMATION_TITLE_LABEL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
@ -679,6 +688,9 @@ void yon_group_delete_confirmation_open(main_window *widgets){
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window)); gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
GtkTreeIter iter,itar; GtkTreeIter iter,itar;
dictionary *dict = NULL; dictionary *dict = NULL;
gtk_label_set_text(GTK_LABEL(window->TitleLabel),DELETE_GROUP_CONFIRMATION_CONFIRM_LABEL);
gtk_tree_view_column_set_title(window->UserCell,GROUP_LABEL);
gtk_label_set_text(GTK_LABEL(window->HatLabel),DELETE_GROUP_CONFIRMATION_TITLE_LABEL);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),2),0); gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),2),0);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),3),0); gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),3),0);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),4),0); gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),4),0);
@ -883,6 +895,7 @@ void on_password_change(GtkWidget *self, dictionary *entry_dict){
if (!check_is_password_hash(password)){ if (!check_is_password_hash(password)){
gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password);
} else { } else {
if (password[0]=='%'&&password[1]=='%')
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1);
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password); gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
} }
@ -959,6 +972,32 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window
yon_char_parsed_free(hash_algos,hash_size); yon_char_parsed_free(hash_algos,hash_size);
} }
void on_users_boot_toggled(GtkToggleButton *self){
if (gtk_toggle_button_get_active(self)){
char *parameter = yon_config_get_by_key("USERADD_SYNC");
if (!parameter){
yon_config_register("USERADD_SYNC","users","boot");
} else {
yon_config_append("USERADD_SYNC","boot",",");
}
} else {
yon_config_remove_element("USERADD_SYNC","boot",",");
}
}
void on_users_shutdown_toggled(GtkToggleButton *self){
if (gtk_toggle_button_get_active(self)){
char *parameter = yon_config_get_by_key("USERADD_SYNC");
if (!parameter){
yon_config_register("USERADD_SYNC","users","shutdown");
} else {
yon_config_append("USERADD_SYNC","shutdown",",");
}
} else {
yon_config_remove_element("USERADD_SYNC","shutdown",",");
}
}
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){
ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window)); ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
@ -976,9 +1015,20 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
window->EncryptAllPasswordsButton=yon_gtk_builder_get_widget(builder,"EncryptAllPasswordsButton"); window->EncryptAllPasswordsButton=yon_gtk_builder_get_widget(builder,"EncryptAllPasswordsButton");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton"); window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton");
window->UsersBootCheck=yon_gtk_builder_get_widget(builder,"UsersBootCheck");
window->UsersShutdownCheck=yon_gtk_builder_get_widget(builder,"UsersShutdownCheck");
yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow"); yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow");
gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL);
char *sync_parameters = yon_config_get_by_key("USERADD_SYNC");
if (sync_parameters){
if (strstr(sync_parameters,"boot")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1);
}
if (strstr(sync_parameters,"shutdown")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck),1);
}
}
int hash_size=0; int hash_size=0;
config_str hash_algos = yon_file_open(hash_list_path,&hash_size); config_str hash_algos = yon_file_open(hash_list_path,&hash_size);
@ -1062,6 +1112,9 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window); g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window);
g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_users_boot_toggled),NULL);
g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_users_shutdown_toggled),NULL);
return window; return window;
} }
@ -1226,7 +1279,7 @@ void on_group_save(GtkWidget *self, dictionary *dict){
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)) if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter))
gtk_list_store_append(widgets->GroupsList,&iter); gtk_list_store_append(widgets->GroupsList,&iter);
char *passwor = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); char *passwor = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
gtk_list_store_set(widgets->GroupsList,&iter,0,strcmp(gid,"x")?gid:"",1,group_name,2,group_users,3,yon_char_append(non_unique,gsystem),4,gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo))==0?PASSWORD_NO_SET_LABEL:check_is_password_hash(passwor)?UNENCRYPTED_LABEL:ENCRYPTED_LABEL,-1); gtk_list_store_set(widgets->GroupsList,&iter,0,strcmp(gid,"x")?gid:"",1,group_name,2,group_users,3,yon_char_append(non_unique,gsystem),4,gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo))==0?PASSWORD_NO_SET_LABEL:check_is_password_hash(passwor)&&passwor[0]=='%'?UNENCRYPTED_LABEL:ENCRYPTED_LABEL,-1);
on_subwindow_close(self); on_subwindow_close(self);
} }
@ -1321,6 +1374,7 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int
window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell")); window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell"));
window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn")); window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn"));
window->list = gtk_list_store_new(2,G_TYPE_BOOLEAN,G_TYPE_STRING); window->list = gtk_list_store_new(2,G_TYPE_BOOLEAN,G_TYPE_STRING);
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),1,GTK_SORT_ASCENDING);
yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow"); yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL);
@ -1756,6 +1810,22 @@ void on_user_save(GtkWidget *self, dictionary *dict){
password=""; password="";
} }
if (!window->old_password||window->old_password&&strcmp(window->old_password,password)){
time_t t = time(NULL);
struct tm tm = *localtime(&t);
char *month = yon_char_from_int(tm.tm_mon+1);
if (strlen(month)==1){
month=yon_char_append("0",month);
}
char *day = yon_char_from_int(tm.tm_mday);
if (strlen(day)<2){
day=yon_char_append("0",day);
}
password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",month,"-",day,NULL);
} else {
password_changed_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordChangedEntry));
}
deactivate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck)); deactivate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck));
if (deactivate){ if (deactivate){
if (strlen(password)>1&&password[0]=='%'&&password[1]=='%'){ if (strlen(password)>1&&password[0]=='%'&&password[1]=='%'){
@ -1801,7 +1871,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry)); password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry));
if (yon_char_is_empty(password_expiration_date)){ if (yon_char_is_empty(password_expiration_date)){
password_expiration_date=""; password_expiration_date="-1";
} }
long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin)); long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin));
@ -1852,22 +1922,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){
extra_options=(char*)gtk_entry_get_text(GTK_ENTRY(window->userExtraOptionsEntry)); extra_options=(char*)gtk_entry_get_text(GTK_ENTRY(window->userExtraOptionsEntry));
if (!window->old_password||window->old_password&&strcmp(window->old_password,password)){
time_t t = time(NULL);
struct tm tm = *localtime(&t);
char *month = yon_char_from_int(tm.tm_mon+1);
if (strlen(month)==1){
month=yon_char_append("0",month);
}
char *day = yon_char_from_int(tm.tm_mday);
if (strlen(day)==1){
day=yon_char_append("0",day);
}
password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",month,"-",day,NULL);
} else {
password_changed_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordChangedEntry));
}
int force_at_next_login_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck)); int force_at_next_login_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck));
if (force_at_next_login_active){ if (force_at_next_login_active){
password_changed_date = "0"; password_changed_date = "0";
@ -2025,9 +2079,9 @@ void on_date_selected(GtkWidget *self, ubl_settings_usergroups_user_window *wind
char *dy = yon_char_from_int(day); char *dy = yon_char_from_int(day);
char *mn = yon_char_from_int(month+1); char *mn = yon_char_from_int(month+1);
char *yr = yon_char_from_int(year); char *yr = yon_char_from_int(year);
if (tm.tm_mon+1<10) mn = yon_char_append("0",mn); if (month+1<10) mn = yon_char_append("0",mn);
if (tm.tm_mday<10) dy = yon_char_append("0",dy); if (day<10) dy = yon_char_append("0",dy);
char *date_string = yon_char_unite(yr,"-",mn,"-",dy); char *date_string = yon_char_unite(yr,"-",mn,"-",dy,NULL);
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry), date_string); gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry), date_string);
window->expiration_unix=date_string; window->expiration_unix=date_string;
free(dy); free(dy);
@ -2112,6 +2166,12 @@ void on_parameter_changed(GtkWidget *self,ubl_settings_usergroups_user_window *w
free(final_string); free(final_string);
} }
void on_remove_expired(GtkWidget *self, GtkEntryIconPosition icon_pos, GdkEvent *event, GtkEntry *target){
if (icon_pos == GTK_ENTRY_ICON_SECONDARY){
gtk_entry_set_text(target,"");
}
}
ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window)); ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user);
@ -2227,6 +2287,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
g_signal_connect(G_OBJECT(window->userDontCheckCheck),"toggled",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userDontCheckCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userGroupsEntry),"changed",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userGroupsEntry),"changed",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userPasswordExpirationEntry),"icon-press",G_CALLBACK(on_remove_expired),window->userPasswordExpirationEntry);
return window; return window;
} }
@ -2346,7 +2407,10 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
} }
} }
if (parsed_size>5){ if (parsed_size>5){
window->old_password=parameters[5]; window->old_password=yon_char_new(parameters[5]);
if (!yon_char_is_empty(window->old_password)&&strlen(window->old_password)&&window->old_password[0]=='!'&&window->old_password[1]=='*'){
free(yon_char_divide(window->old_password,1));
}
if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){
if (strstr(parameters[5],"!*")){ if (strstr(parameters[5],"!*")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1);
@ -2366,12 +2430,16 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
} }
free(parameters); free(parameters);
parameters=yon_char_parse(yon_config_get_by_key(USERSHADOW(name)),&parsed_size,":"); parameters=yon_char_parse(yon_config_get_by_key(USERSHADOW(name)),&parsed_size,":");
gtk_entry_set_text(GTK_ENTRY(window->userPasswordChangedEntry),parsed_size>0?parameters[0]:""); if (parameters&&!strcmp(parameters[0],"0"))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck),1);
else
gtk_entry_set_text(GTK_ENTRY(window->userPasswordChangedEntry),parsed_size>0?parameters[0]:"");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin),atol(parsed_size>1?parameters[1]:"0")); gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin),atol(parsed_size>1?parameters[1]:"0"));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMaximumSpin),atol(parsed_size>2?parameters[2]:"0")); gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMaximumSpin),atol(parsed_size>2?parameters[2]:"0"));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userWarningSpin),atol(parsed_size>3?parameters[3]:"0")); gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userWarningSpin),atol(parsed_size>3?parameters[3]:"0"));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userActivitySpin),atol(parsed_size>4?parameters[4]:"0")); gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userActivitySpin),atol(parsed_size>4?parameters[4]:"0"));
if (parsed_size>5&&!yon_char_is_empty(parameters[5])){
if (parsed_size>5&&!yon_char_is_empty(parameters[5])&&strcmp(parameters[5],"-1")){
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry),parameters[5]); gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry),parameters[5]);
} }
gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window)); gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window));
@ -2685,6 +2753,7 @@ main_window *yon_main_window_complete(main_window *widgets){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("GroupColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT); yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("GroupColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
} }
g_list_free(list); g_list_free(list);
yon_save_window_set_postsave_function(on_save_done,widgets);
return widgets; return widgets;
} }

@ -189,6 +189,8 @@ typedef struct{
GtkWidget *CancelButton; GtkWidget *CancelButton;
GtkWidget *AcceptButton; GtkWidget *AcceptButton;
GtkWidget *EncryptAllPasswordsButton; GtkWidget *EncryptAllPasswordsButton;
GtkWidget *UsersBootCheck;
GtkWidget *UsersShutdownCheck;
} ubl_settings_usergroups_additional_settings_window; } ubl_settings_usergroups_additional_settings_window;
typedef struct{ typedef struct{
@ -313,9 +315,12 @@ typedef struct{
GtkWidget *CancelButton; GtkWidget *CancelButton;
GtkWidget *AcceptButton; GtkWidget *AcceptButton;
GtkWidget *DeletionTree; GtkWidget *DeletionTree;
GtkWidget *TitleLabel;
GtkWidget *HatLabel;
GtkListStore *list; GtkListStore *list;
GtkCellRenderer *DeleteCell; GtkCellRenderer *DeleteCell;
GtkCellRenderer *DeleteHomeCell; GtkCellRenderer *DeleteHomeCell;
GtkTreeViewColumn *UserCell;
} yon_confirmation_window; } yon_confirmation_window;
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(); ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new();
@ -337,3 +342,5 @@ void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets);
ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(); ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new();
void on_password_accept(GtkWidget *self, dictionary *dict); void on_password_accept(GtkWidget *self, dictionary *dict);
void on_config_update(GtkWidget *self, main_window *widgets);

@ -51,7 +51,6 @@
#define UPDATE_LABEL _("Update users and groups") #define UPDATE_LABEL _("Update users and groups")
#define SAVING_CONFIGURATION_LABEL _("Additional saving configuration") #define SAVING_CONFIGURATION_LABEL _("Additional saving configuration")
#define DELETE_CONFIRMATION_LABEL(type,target) yon_char_unite(_(yon_char_append("Are you sure want to delete ",type)), " '",target,"'?",NULL)
//ubl-settings-usergroups-additional-settings.glade //ubl-settings-usergroups-additional-settings.glade
#define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings") #define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings")
@ -90,6 +89,9 @@
#define DESCRYPT_DESCRIPTION_LABEL _("descrypt (Hash function from the DES family of algorithms)") #define DESCRYPT_DESCRIPTION_LABEL _("descrypt (Hash function from the DES family of algorithms)")
#define NTHASH_DESCRIPTION_LABEL _("NTHash (Hash function from the NT Windows family of algorithms)") #define NTHASH_DESCRIPTION_LABEL _("NTHash (Hash function from the NT Windows family of algorithms)")
#define ADDITIONAL_BOOT_LABEL _("While booting the operating system, apply the settings of all users from the configuration")
#define ADDITIONAL_SHUTDOWN_LABEL _("While shutdown, save the settings of all users with UID>=1000 to the configuration")
//ubl-settings-usergroups-group-creation.glade //ubl-settings-usergroups-group-creation.glade
#define CONFIGURE_GROUP_TITLE_LABEL _("Configure group") #define CONFIGURE_GROUP_TITLE_LABEL _("Configure group")
#define ADD_GROUP_TITLE_LABEL _("Add group") #define ADD_GROUP_TITLE_LABEL _("Add group")
@ -176,7 +178,7 @@
#define USERSHADOW_BOOT_LABEL _("During system startup, load the user's parameters from the configuration") #define USERSHADOW_BOOT_LABEL _("During system startup, load the user's parameters from the configuration")
#define USERSHADOW_SHUTDOWN_LABEL _("When shutting down the system, save the user's parameters into the configuration") #define USERSHADOW_SHUTDOWN_LABEL _("When shutting down the system, save the user's parameters into the configuration")
#define MAIN_NAME_LABEL _("Main") #define MAIN_NAME_LABEL _("Basic")
#define ADDITIONAL_NAME_LABEL _("Additional") #define ADDITIONAL_NAME_LABEL _("Additional")
#define SYNCRONIZATION_NAME_LABEL _("Syncronization") #define SYNCRONIZATION_NAME_LABEL _("Syncronization")

@ -58,83 +58,58 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox"> <object class="GtkNotebook">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Default user name (if there's no another):</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="DefaultUserNameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.profile-symbolic</property>
<property name="placeholder-text" translatable="yes">superadmin</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="DefaultUserAdministratorCheck">
<property name="label" translatable="yes">User with ID 1000 is administrator</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel" id="label2"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">4</property> <property name="spacing">5</property>
<property name="label" translatable="yes">Default user password:</property> <child>
<property name="xalign">0</property> <object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Default user name (if there's no another):</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="DefaultUserNameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.profile-symbolic</property>
<property name="placeholder-text" translatable="yes">superadmin</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -143,15 +118,12 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText" id="DefaultPasswordCombo"> <object class="GtkCheckButton" id="DefaultUserAdministratorCheck">
<property name="label" translatable="yes">User with ID 1000 is administrator</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="active">0</property> <property name="receives-default">False</property>
<items> <property name="draw-indicator">True</property>
<item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
</items>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -160,37 +132,209 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="DefaultPasswordEntry"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="can-focus">False</property>
<property name="can-focus">True</property> <property name="orientation">vertical</property>
<property name="visibility">False</property> <property name="spacing">5</property>
<property name="invisible-char">*</property> <child>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property> <object class="GtkBox">
<property name="placeholder-text" translatable="yes">********</property> <property name="visible">True</property>
<property name="input-purpose">password</property> <property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Default user password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="DefaultPasswordCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="DefaultPasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="DefaultPasswordButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image3</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Root user password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="RootPasswordCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="RootPasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="RootPasswordButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="DefaultPasswordButton"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="can-focus">False</property>
<property name="can-focus">True</property> <property name="spacing">5</property>
<property name="receives-default">True</property> <child>
<property name="image">image3</property> <object class="GtkLabel" id="label1">
<style> <property name="visible">True</property>
<class name="thin"/> <property name="can-focus">False</property>
</style> <property name="margin-left">5</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Password hash algorythm:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="PasswordHashCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -201,102 +345,50 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox"> <object class="GtkButton" id="EncryptAllPasswordsButton">
<property name="label" translatable="yes">Encrypt all passwords</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="spacing">5</property> <property name="receives-default">True</property>
<child> <property name="tooltip-text" translatable="yes">Encrypt all unencrypted passwords at global configuration</property>
<object class="GtkLabel" id="label4"> <property name="halign">end</property>
<property name="visible">True</property> <property name="image">image5</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Root user password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="RootPasswordCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="RootPasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="RootPasswordButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Basic</property>
</object>
<packing> <packing>
<property name="expand">False</property> <property name="tab-fill">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel" id="label1"> <object class="GtkCheckButton" id="UsersBootCheck">
<property name="label" translatable="yes">While booting the operating system, apply the settings of all users from the configuration</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="margin-left">5</property> <property name="receives-default">False</property>
<property name="margin-start">4</property> <property name="draw-indicator">True</property>
<property name="label" translatable="yes">Password hash algorythm:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -305,22 +397,33 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText" id="PasswordHashCombo"> <object class="GtkCheckButton" id="UsersShutdownCheck">
<property name="label" translatable="yes">While shutdown, save the settings of all users with UID&gt;=1000 to the configuration</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="active">0</property> <property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="position">1</property>
<property name="fill">True</property> </packing>
<property name="position">4</property> </child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Syncronization</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab-fill">False</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -330,22 +433,6 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkButton" id="EncryptAllPasswordsButton">
<property name="label" translatable="yes">Encrypt all passwords</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Encrypt all unencrypted passwords at global configuration</property>
<property name="halign">end</property>
<property name="image">image5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
</child> </child>
<child type="titlebar"> <child type="titlebar">

@ -86,7 +86,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel" id="TitleLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Confirm user(-s) deletion:</property> <property name="label" translatable="yes">Confirm user(-s) deletion:</property>
@ -130,7 +130,7 @@
</object> </object>
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn" id="UserCell">
<property name="title" translatable="yes">User</property> <property name="title" translatable="yes">User</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>

@ -464,7 +464,7 @@
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Main</property> <property name="label" translatable="yes">Basic</property>
</object> </object>
<packing> <packing>
<property name="tab-fill">False</property> <property name="tab-fill">False</property>

@ -40,6 +40,7 @@
<object class="GtkTreeView" id="GroupsTree"> <object class="GtkTreeView" id="GroupsTree">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="search-column">1</property>
<property name="enable-grid-lines">vertical</property> <property name="enable-grid-lines">vertical</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"> <object class="GtkTreeSelection">
@ -60,6 +61,9 @@
<child> <child>
<object class="GtkTreeViewColumn" id="GroupColumn"> <object class="GtkTreeViewColumn" id="GroupColumn">
<property name="title" translatable="yes">Group</property> <property name="title" translatable="yes">Group</property>
<property name="sort-indicator">True</property>
<property name="sort-order">descending</property>
<property name="sort-column-id">1</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>

@ -565,7 +565,7 @@
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Main</property> <property name="label" translatable="yes">Basic</property>
</object> </object>
<packing> <packing>
<property name="tab-fill">False</property> <property name="tab-fill">False</property>
@ -881,8 +881,8 @@
<child> <child>
<object class="GtkEntry" id="userPasswordExpirationEntry"> <object class="GtkEntry" id="userPasswordExpirationEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="can-focus">False</property>
<property name="can-focus">True</property> <property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.trash-symbolic</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

@ -53,7 +53,7 @@ msgstr ""
msgid "UID" msgid "UID"
msgstr "" msgstr ""
#: source/ubl-strings.h:14 source/ubl-strings.h:100 #: source/ubl-strings.h:14 source/ubl-strings.h:103
msgid "Login" msgid "Login"
msgstr "" msgstr ""
@ -211,7 +211,7 @@ msgstr ""
msgid "Set a password" msgid "Set a password"
msgstr "" msgstr ""
#: source/ubl-strings.h:60 source/ubl-strings.h:103 #: source/ubl-strings.h:60 source/ubl-strings.h:106
msgid "Encrypted" msgid "Encrypted"
msgstr "" msgstr ""
@ -295,394 +295,406 @@ msgstr ""
msgid "NTHash (Hash function from the NT Windows family of algorithms)" msgid "NTHash (Hash function from the NT Windows family of algorithms)"
msgstr "" msgstr ""
#: source/ubl-strings.h:93
msgid ""
"While booting the operating system, apply the settings of all users from the "
"configuration"
msgstr ""
#: source/ubl-strings.h:94 #: source/ubl-strings.h:94
msgid ""
"While shutdown, save the settings of all users with UID>=1000 to the "
"configuration"
msgstr ""
#: source/ubl-strings.h:97
msgid "Configure group" msgid "Configure group"
msgstr "" msgstr ""
#: source/ubl-strings.h:95 #: source/ubl-strings.h:98
msgid "Add group" msgid "Add group"
msgstr "" msgstr ""
#: source/ubl-strings.h:96 #: source/ubl-strings.h:99
msgid "Group id:" msgid "Group id:"
msgstr "" msgstr ""
#: source/ubl-strings.h:97 #: source/ubl-strings.h:100
msgid "Group name:" msgid "Group name:"
msgstr "" msgstr ""
#: source/ubl-strings.h:98 #: source/ubl-strings.h:101
msgid "Group users:" msgid "Group users:"
msgstr "" msgstr ""
#: source/ubl-strings.h:99 #: source/ubl-strings.h:102
msgid "Automatically" msgid "Automatically"
msgstr "" msgstr ""
#: source/ubl-strings.h:101 #: source/ubl-strings.h:104
msgid "Create group with ununique GID" msgid "Create group with ununique GID"
msgstr "" msgstr ""
#: source/ubl-strings.h:102 #: source/ubl-strings.h:105
msgid "Create system group" msgid "Create system group"
msgstr "" msgstr ""
#: source/ubl-strings.h:104 #: source/ubl-strings.h:107
msgid "Additional configuration" msgid "Additional configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:105 #: source/ubl-strings.h:108
msgid "Group configuration synchronization" msgid "Group configuration synchronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:106 #: source/ubl-strings.h:109
msgid "When shutting down the system, save the group into the configuration" msgid "When shutting down the system, save the group into the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:107 #: source/ubl-strings.h:110
msgid "Group administrators:" msgid "Group administrators:"
msgstr "" msgstr ""
#: source/ubl-strings.h:108 #: source/ubl-strings.h:111
msgid "Group name must not start with digit" msgid "Group name must not start with digit"
msgstr "" msgstr ""
#: source/ubl-strings.h:111 #: source/ubl-strings.h:114
msgid "Default groups" msgid "Default groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:112 #: source/ubl-strings.h:115
msgid "Main group" msgid "Main group"
msgstr "" msgstr ""
#: source/ubl-strings.h:113 #: source/ubl-strings.h:116
msgid "Additional groups" msgid "Additional groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:114 #: source/ubl-strings.h:117
msgid "Choose groups" msgid "Choose groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:115 #: source/ubl-strings.h:118
msgid "Choose users" msgid "Choose users"
msgstr "" msgstr ""
#: source/ubl-strings.h:118 #: source/ubl-strings.h:121
msgid "System users and groups" msgid "System users and groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:119 #: source/ubl-strings.h:122
msgid "Locked" msgid "Locked"
msgstr "" msgstr ""
#: source/ubl-strings.h:120 #: source/ubl-strings.h:123
msgid "Username" msgid "Username"
msgstr "" msgstr ""
#: source/ubl-strings.h:121 #: source/ubl-strings.h:124
msgid "" msgid ""
"Primary\n" "Primary\n"
"group" "group"
msgstr "" msgstr ""
#: source/ubl-strings.h:122 #: source/ubl-strings.h:125
msgid "" msgid ""
"Home\n" "Home\n"
"directory" "directory"
msgstr "" msgstr ""
#: source/ubl-strings.h:123 source/ubl-strings.h:129 #: source/ubl-strings.h:126 source/ubl-strings.h:132
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: source/ubl-strings.h:124 #: source/ubl-strings.h:127
msgid "Update the system users and groups list" msgid "Update the system users and groups list"
msgstr "" msgstr ""
#: source/ubl-strings.h:125 #: source/ubl-strings.h:128
msgid "Toggle system groups and users" msgid "Toggle system groups and users"
msgstr "" msgstr ""
#: source/ubl-strings.h:127 #: source/ubl-strings.h:130
msgid "Password mismatch" msgid "Password mismatch"
msgstr "" msgstr ""
#: source/ubl-strings.h:128 #: source/ubl-strings.h:131
msgid "Password must be at least" msgid "Password must be at least"
msgstr "" msgstr ""
#: source/ubl-strings.h:128 #: source/ubl-strings.h:131
msgid "characters" msgid "characters"
msgstr "" msgstr ""
#: source/ubl-strings.h:130 #: source/ubl-strings.h:133
msgid "" msgid ""
"Days until\n" "Days until\n"
"warning" "warning"
msgstr "" msgstr ""
#: source/ubl-strings.h:131 #: source/ubl-strings.h:134
msgid "" msgid ""
"Days\n" "Days\n"
"without activity" "without activity"
msgstr "" msgstr ""
#: source/ubl-strings.h:132 #: source/ubl-strings.h:135
msgid "" msgid ""
"Shell\n" "Shell\n"
"path" "path"
msgstr "" msgstr ""
#: source/ubl-strings.h:133 #: source/ubl-strings.h:136
msgid "" msgid ""
"Password has\n" "Password has\n"
"been changed" "been changed"
msgstr "" msgstr ""
#: source/ubl-strings.h:134 #: source/ubl-strings.h:137
msgid "" msgid ""
"Expiration\n" "Expiration\n"
"date" "date"
msgstr "" msgstr ""
#: source/ubl-strings.h:135 #: source/ubl-strings.h:138
msgid "" msgid ""
"Password change\n" "Password change\n"
"interval (min)" "interval (min)"
msgstr "" msgstr ""
#: source/ubl-strings.h:136 #: source/ubl-strings.h:139
msgid "" msgid ""
"Password change\n" "Password change\n"
"interval (max)" "interval (max)"
msgstr "" msgstr ""
#: source/ubl-strings.h:139 #: source/ubl-strings.h:142
msgid "Add user" msgid "Add user"
msgstr "" msgstr ""
#: source/ubl-strings.h:140 #: source/ubl-strings.h:143
msgid "Configure user" msgid "Configure user"
msgstr "" msgstr ""
#: source/ubl-strings.h:141 #: source/ubl-strings.h:144
msgid "Set" msgid "Set"
msgstr "" msgstr ""
#: source/ubl-strings.h:142 #: source/ubl-strings.h:145
msgid "Empty important field" msgid "Empty important field"
msgstr "" msgstr ""
#: source/ubl-strings.h:143 #: source/ubl-strings.h:146
msgid "Login must not start with digit" msgid "Login must not start with digit"
msgstr "" msgstr ""
#: source/ubl-strings.h:144 #: source/ubl-strings.h:147
msgid "Loading has failed" msgid "Loading has failed"
msgstr "" msgstr ""
#: source/ubl-strings.h:145 #: source/ubl-strings.h:148
msgid "Login name" msgid "Login name"
msgstr "" msgstr ""
#: source/ubl-strings.h:146 #: source/ubl-strings.h:149
msgid "Additional groups:" msgid "Additional groups:"
msgstr "" msgstr ""
#: source/ubl-strings.h:147 #: source/ubl-strings.h:150
msgid "Password configuration" msgid "Password configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:148 #: source/ubl-strings.h:151
msgid "Password has been changed:" msgid "Password has been changed:"
msgstr "" msgstr ""
#: source/ubl-strings.h:149 #: source/ubl-strings.h:152
msgid "expiration date:" msgid "expiration date:"
msgstr "" msgstr ""
#: source/ubl-strings.h:150 #: source/ubl-strings.h:153
msgid "Password change interval: minimum" msgid "Password change interval: minimum"
msgstr "" msgstr ""
#: source/ubl-strings.h:151 #: source/ubl-strings.h:154
msgid "days, maximum" msgid "days, maximum"
msgstr "" msgstr ""
#: source/ubl-strings.h:152 #: source/ubl-strings.h:155
msgid "days" msgid "days"
msgstr "" msgstr ""
#: source/ubl-strings.h:153 #: source/ubl-strings.h:156
msgid "Days until warning:" msgid "Days until warning:"
msgstr "" msgstr ""
#: source/ubl-strings.h:154 #: source/ubl-strings.h:157
msgid "Days without activity:" msgid "Days without activity:"
msgstr "" msgstr ""
#: source/ubl-strings.h:155 #: source/ubl-strings.h:158
msgid "Force change at next login" msgid "Force change at next login"
msgstr "" msgstr ""
#: source/ubl-strings.h:156 #: source/ubl-strings.h:159
msgid "User shell:" msgid "User shell:"
msgstr "" msgstr ""
#: source/ubl-strings.h:157 #: source/ubl-strings.h:160
msgid "Home directory:" msgid "Home directory:"
msgstr "" msgstr ""
#: source/ubl-strings.h:158 #: source/ubl-strings.h:161
msgid "Don't set" msgid "Don't set"
msgstr "" msgstr ""
#: source/ubl-strings.h:159 #: source/ubl-strings.h:162
msgid "Create system user" msgid "Create system user"
msgstr "" msgstr ""
#: source/ubl-strings.h:160 #: source/ubl-strings.h:163
msgid "Create user with ununique (repeating) UID" msgid "Create user with ununique (repeating) UID"
msgstr "" msgstr ""
#: source/ubl-strings.h:161 #: source/ubl-strings.h:164
msgid "Do not check login for compliance with character rules" msgid "Do not check login for compliance with character rules"
msgstr "" msgstr ""
#: source/ubl-strings.h:162 #: source/ubl-strings.h:165
msgid "Temporary deactivation" msgid "Temporary deactivation"
msgstr "" msgstr ""
#: source/ubl-strings.h:163 #: source/ubl-strings.h:166
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: source/ubl-strings.h:164 #: source/ubl-strings.h:167
msgid "login_name" msgid "login_name"
msgstr "" msgstr ""
#: source/ubl-strings.h:165 #: source/ubl-strings.h:168
msgid "group_name" msgid "group_name"
msgstr "" msgstr ""
#: source/ubl-strings.h:166 #: source/ubl-strings.h:169
msgid "User name" msgid "User name"
msgstr "" msgstr ""
#: source/ubl-strings.h:167 #: source/ubl-strings.h:170
msgid "Sync user" msgid "Sync user"
msgstr "" msgstr ""
#: source/ubl-strings.h:168 #: source/ubl-strings.h:171
msgid "Sync user with password" msgid "Sync user with password"
msgstr "" msgstr ""
#: source/ubl-strings.h:169 #: source/ubl-strings.h:172
msgid "Encrypt all passwords" msgid "Encrypt all passwords"
msgstr "" msgstr ""
#: source/ubl-strings.h:171 #: source/ubl-strings.h:174
msgid "User configuration" msgid "User configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:172 #: source/ubl-strings.h:175
msgid "User configuration synchronization" msgid "User configuration synchronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:173 #: source/ubl-strings.h:176
msgid "During system startup, load the user from the configuration" msgid "During system startup, load the user from the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:174 #: source/ubl-strings.h:177
msgid "When shutting down the system, save the user into the configuration" msgid "When shutting down the system, save the user into the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:175 #: source/ubl-strings.h:178
msgid "User password configuration syncronization" msgid "User password configuration syncronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:176 #: source/ubl-strings.h:179
msgid "" msgid ""
"During system startup, load the user's parameters from the configuration" "During system startup, load the user's parameters from the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:177 #: source/ubl-strings.h:180
msgid "" msgid ""
"When shutting down the system, save the user's parameters into the " "When shutting down the system, save the user's parameters into the "
"configuration" "configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:179 #: source/ubl-strings.h:182
msgid "Main" msgid "Basic"
msgstr "" msgstr ""
#: source/ubl-strings.h:180 #: source/ubl-strings.h:183
msgid "Additional" msgid "Additional"
msgstr "" msgstr ""
#: source/ubl-strings.h:181 #: source/ubl-strings.h:184
msgid "Syncronization" msgid "Syncronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:183 #: source/ubl-strings.h:186
msgid "Not specified" msgid "Not specified"
msgstr "" msgstr ""
#: source/ubl-strings.h:186 #: source/ubl-strings.h:189
msgid "Repeat password:" msgid "Repeat password:"
msgstr "" msgstr ""
#: source/ubl-strings.h:187 #: source/ubl-strings.h:190
msgid "Password hash:" msgid "Password hash:"
msgstr "" msgstr ""
#: source/ubl-strings.h:188 #: source/ubl-strings.h:191
msgid "Do not encrypt password" msgid "Do not encrypt password"
msgstr "" msgstr ""
#: source/ubl-strings.h:191 #: source/ubl-strings.h:194
msgid "Additional configuration of service parameter saving" msgid "Additional configuration of service parameter saving"
msgstr "" msgstr ""
#: source/ubl-strings.h:192 #: source/ubl-strings.h:195
msgid "" msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n" "At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy" "into (hd)/ublinux-data/rootcopy"
msgstr "" msgstr ""
#: source/ubl-strings.h:193 #: source/ubl-strings.h:196
msgid "For system save mode \"Sandbox\"" msgid "For system save mode \"Sandbox\""
msgstr "" msgstr ""
#: source/ubl-strings.h:196 #: source/ubl-strings.h:199
msgid "Group deletion" msgid "Group deletion"
msgstr "" msgstr ""
#: source/ubl-strings.h:197 #: source/ubl-strings.h:200
msgid "Confirm group(-s) deletion:" msgid "Confirm group(-s) deletion:"
msgstr "" msgstr ""
#: source/ubl-strings.h:199 #: source/ubl-strings.h:202
msgid "User deletion" msgid "User deletion"
msgstr "" msgstr ""
#: source/ubl-strings.h:200 #: source/ubl-strings.h:203
msgid "Confirm user(-s) deletion:" msgid "Confirm user(-s) deletion:"
msgstr "" msgstr ""
#: source/ubl-strings.h:201 #: source/ubl-strings.h:204
msgid "Chosen" msgid "Chosen"
msgstr "" msgstr ""
#: source/ubl-strings.h:202 #: source/ubl-strings.h:205
msgid "User" msgid "User"
msgstr "" msgstr ""
#: source/ubl-strings.h:203 #: source/ubl-strings.h:206
msgid "Home directory" msgid "Home directory"
msgstr "" msgstr ""
#: source/ubl-strings.h:204 #: source/ubl-strings.h:207
msgid "Delete home directory" msgid "Delete home directory"
msgstr "" msgstr ""

@ -53,7 +53,7 @@ msgstr "Алгоритм хэширования пароля:"
msgid "UID" msgid "UID"
msgstr "UID" msgstr "UID"
#: source/ubl-strings.h:14 source/ubl-strings.h:100 #: source/ubl-strings.h:14 source/ubl-strings.h:103
msgid "Login" msgid "Login"
msgstr "Логин" msgstr "Логин"
@ -225,7 +225,7 @@ msgstr "Пароль не требуется"
msgid "Set a password" msgid "Set a password"
msgstr "Задать пароль" msgstr "Задать пароль"
#: source/ubl-strings.h:60 source/ubl-strings.h:103 #: source/ubl-strings.h:60 source/ubl-strings.h:106
msgid "Encrypted" msgid "Encrypted"
msgstr "Зашифрован" msgstr "Зашифрован"
@ -311,91 +311,107 @@ msgstr "descrypt (Хеш-функция из семейства алгоритм
msgid "NTHash (Hash function from the NT Windows family of algorithms)" msgid "NTHash (Hash function from the NT Windows family of algorithms)"
msgstr "NTHash (Хеш-функция из семейства алгоритмов NT Windows)" msgstr "NTHash (Хеш-функция из семейства алгоритмов NT Windows)"
#: source/ubl-strings.h:93
msgid ""
"While booting the operating system, apply the settings of all users from the "
"configuration"
msgstr ""
"При запуске операционной системы применять настройки всех пользователей "
"из конфигурации"
#: source/ubl-strings.h:94 #: source/ubl-strings.h:94
msgid ""
"While shutdown, save the settings of all users with UID>=1000 to the "
"configuration"
msgstr ""
"При завершении работы сохранить настройки пользователей "
"с UID>=1000 в конфигурацию"
#: source/ubl-strings.h:97
msgid "Configure group" msgid "Configure group"
msgstr "Редактировать группу" msgstr "Редактировать группу"
#: source/ubl-strings.h:95 #: source/ubl-strings.h:98
msgid "Add group" msgid "Add group"
msgstr "Добавить группу" msgstr "Добавить группу"
#: source/ubl-strings.h:96 #: source/ubl-strings.h:99
msgid "Group id:" msgid "Group id:"
msgstr "ID Группы:" msgstr "ID Группы:"
#: source/ubl-strings.h:97 #: source/ubl-strings.h:100
msgid "Group name:" msgid "Group name:"
msgstr "Имя группы:" msgstr "Имя группы:"
#: source/ubl-strings.h:98 #: source/ubl-strings.h:101
msgid "Group users:" msgid "Group users:"
msgstr "Пользователи группы:" msgstr "Пользователи группы:"
#: source/ubl-strings.h:99 #: source/ubl-strings.h:102
msgid "Automatically" msgid "Automatically"
msgstr "Автоматически" msgstr "Автоматически"
#: source/ubl-strings.h:101 #: source/ubl-strings.h:104
msgid "Create group with ununique GID" msgid "Create group with ununique GID"
msgstr "Создать группу с повторяющимися (не уникальными) GID" msgstr "Создать группу с повторяющимися (не уникальными) GID"
#: source/ubl-strings.h:102 #: source/ubl-strings.h:105
msgid "Create system group" msgid "Create system group"
msgstr "Создать системную группу" msgstr "Создать системную группу"
#: source/ubl-strings.h:104 #: source/ubl-strings.h:107
msgid "Additional configuration" msgid "Additional configuration"
msgstr "Дополнительные настройки" msgstr "Дополнительные настройки"
#: source/ubl-strings.h:105 #: source/ubl-strings.h:108
msgid "Group configuration synchronization" msgid "Group configuration synchronization"
msgstr "Синхронизация настроек группы" msgstr "Синхронизация настроек группы"
#: source/ubl-strings.h:106 #: source/ubl-strings.h:109
msgid "When shutting down the system, save the group into the configuration" msgid "When shutting down the system, save the group into the configuration"
msgstr "При завершении работы системы сохранить группу в конфигурацию" msgstr "При завершении работы системы сохранить группу в конфигурацию"
#: source/ubl-strings.h:107 #: source/ubl-strings.h:110
msgid "Group administrators:" msgid "Group administrators:"
msgstr "Администраторы группы:" msgstr "Администраторы группы:"
#: source/ubl-strings.h:108 #: source/ubl-strings.h:111
msgid "Group name must not start with digit" msgid "Group name must not start with digit"
msgstr "Имя группы не должно начинаться с цифры" msgstr "Имя группы не должно начинаться с цифры"
#: source/ubl-strings.h:111 #: source/ubl-strings.h:114
msgid "Default groups" msgid "Default groups"
msgstr "Группы пользователей по умолчанию" msgstr "Группы пользователей по умолчанию"
#: source/ubl-strings.h:112 #: source/ubl-strings.h:115
msgid "Main group" msgid "Main group"
msgstr "Основная группа" msgstr "Основная группа"
#: source/ubl-strings.h:113 #: source/ubl-strings.h:116
msgid "Additional groups" msgid "Additional groups"
msgstr "Дополнительные группы" msgstr "Дополнительные группы"
#: source/ubl-strings.h:114 #: source/ubl-strings.h:117
msgid "Choose groups" msgid "Choose groups"
msgstr "Выбрать группы" msgstr "Выбрать группы"
#: source/ubl-strings.h:115 #: source/ubl-strings.h:118
msgid "Choose users" msgid "Choose users"
msgstr "Выбрать пользователей" msgstr "Выбрать пользователей"
#: source/ubl-strings.h:118 #: source/ubl-strings.h:121
msgid "System users and groups" msgid "System users and groups"
msgstr "Пользователи и группы в системе" msgstr "Пользователи и группы в системе"
#: source/ubl-strings.h:119 #: source/ubl-strings.h:122
msgid "Locked" msgid "Locked"
msgstr "Отключен" msgstr "Отключен"
#: source/ubl-strings.h:120 #: source/ubl-strings.h:123
msgid "Username" msgid "Username"
msgstr "Имя пользователя" msgstr "Имя пользователя"
#: source/ubl-strings.h:121 #: source/ubl-strings.h:124
msgid "" msgid ""
"Primary\n" "Primary\n"
"group" "group"
@ -403,7 +419,7 @@ msgstr ""
"Основная\n" "Основная\n"
"группа" "группа"
#: source/ubl-strings.h:122 #: source/ubl-strings.h:125
msgid "" msgid ""
"Home\n" "Home\n"
"directory" "directory"
@ -411,31 +427,31 @@ msgstr ""
"Домашний\n" "Домашний\n"
"каталог" "каталог"
#: source/ubl-strings.h:123 source/ubl-strings.h:129 #: source/ubl-strings.h:126 source/ubl-strings.h:132
msgid "Group" msgid "Group"
msgstr "Группа" msgstr "Группа"
#: source/ubl-strings.h:124 #: source/ubl-strings.h:127
msgid "Update the system users and groups list" msgid "Update the system users and groups list"
msgstr "Обновить список пользователей и групп системы" msgstr "Обновить список пользователей и групп системы"
#: source/ubl-strings.h:125 #: source/ubl-strings.h:128
msgid "Toggle system groups and users" msgid "Toggle system groups and users"
msgstr "Переключить видимость системных пользователей и групп" msgstr "Переключить видимость системных пользователей и групп"
#: source/ubl-strings.h:127 #: source/ubl-strings.h:130
msgid "Password mismatch" msgid "Password mismatch"
msgstr "Несовпадение паролей" msgstr "Несовпадение паролей"
#: source/ubl-strings.h:128 #: source/ubl-strings.h:131
msgid "Password must be at least" msgid "Password must be at least"
msgstr "Пароль должен состоять из как минимум" msgstr "Пароль должен состоять из как минимум"
#: source/ubl-strings.h:128 #: source/ubl-strings.h:131
msgid "characters" msgid "characters"
msgstr "символов" msgstr "символов"
#: source/ubl-strings.h:130 #: source/ubl-strings.h:133
msgid "" msgid ""
"Days until\n" "Days until\n"
"warning" "warning"
@ -443,7 +459,7 @@ msgstr ""
"Дней до\n" "Дней до\n"
"предупреждения" "предупреждения"
#: source/ubl-strings.h:131 #: source/ubl-strings.h:134
msgid "" msgid ""
"Days\n" "Days\n"
"without activity" "without activity"
@ -451,7 +467,7 @@ msgstr ""
"Дней без\n" "Дней без\n"
"активности" "активности"
#: source/ubl-strings.h:132 #: source/ubl-strings.h:135
msgid "" msgid ""
"Shell\n" "Shell\n"
"path" "path"
@ -459,7 +475,7 @@ msgstr ""
"Путь до\n" "Путь до\n"
"оболочки" "оболочки"
#: source/ubl-strings.h:133 #: source/ubl-strings.h:136
msgid "" msgid ""
"Password has\n" "Password has\n"
"been changed" "been changed"
@ -467,7 +483,7 @@ msgstr ""
"Пароль\n" "Пароль\n"
"изменён" "изменён"
#: source/ubl-strings.h:134 #: source/ubl-strings.h:137
msgid "" msgid ""
"Expiration\n" "Expiration\n"
"date" "date"
@ -475,7 +491,7 @@ msgstr ""
"Дата\n" "Дата\n"
"устаревания" "устаревания"
#: source/ubl-strings.h:135 #: source/ubl-strings.h:138
msgid "" msgid ""
"Password change\n" "Password change\n"
"interval (min)" "interval (min)"
@ -483,7 +499,7 @@ msgstr ""
"Интервал смены\n" "Интервал смены\n"
"пароля (мин.)" "пароля (мин.)"
#: source/ubl-strings.h:136 #: source/ubl-strings.h:139
msgid "" msgid ""
"Password change\n" "Password change\n"
"interval (max)" "interval (max)"
@ -491,199 +507,199 @@ msgstr ""
"Интервал смены\n" "Интервал смены\n"
"пароля (макс.)" "пароля (макс.)"
#: source/ubl-strings.h:139 #: source/ubl-strings.h:142
msgid "Add user" msgid "Add user"
msgstr "Добавить пользователя" msgstr "Добавить пользователя"
#: source/ubl-strings.h:140 #: source/ubl-strings.h:143
msgid "Configure user" msgid "Configure user"
msgstr "Редактировать пользователя" msgstr "Редактировать пользователя"
#: source/ubl-strings.h:141 #: source/ubl-strings.h:144
msgid "Set" msgid "Set"
msgstr "Задать" msgstr "Задать"
#: source/ubl-strings.h:142 #: source/ubl-strings.h:145
msgid "Empty important field" msgid "Empty important field"
msgstr "Пустое важное поле" msgstr "Пустое важное поле"
#: source/ubl-strings.h:143 #: source/ubl-strings.h:146
msgid "Login must not start with digit" msgid "Login must not start with digit"
msgstr "Логин не должен начинаться с цифры" msgstr "Логин не должен начинаться с цифры"
#: source/ubl-strings.h:144 #: source/ubl-strings.h:147
msgid "Loading has failed" msgid "Loading has failed"
msgstr "Ошибка загрузки" msgstr "Ошибка загрузки"
#: source/ubl-strings.h:145 #: source/ubl-strings.h:148
msgid "Login name" msgid "Login name"
msgstr "Имя логина" msgstr "Имя логина"
#: source/ubl-strings.h:146 #: source/ubl-strings.h:149
msgid "Additional groups:" msgid "Additional groups:"
msgstr "Дополнительные группы:" msgstr "Дополнительные группы:"
#: source/ubl-strings.h:147 #: source/ubl-strings.h:150
msgid "Password configuration" msgid "Password configuration"
msgstr "Конфигурация пароля" msgstr "Конфигурация пароля"
#: source/ubl-strings.h:148 #: source/ubl-strings.h:151
msgid "Password has been changed:" msgid "Password has been changed:"
msgstr "Пароль изменён:" msgstr "Пароль изменён:"
#: source/ubl-strings.h:149 #: source/ubl-strings.h:152
msgid "expiration date:" msgid "expiration date:"
msgstr "Дата устаревания:" msgstr "Дата устаревания:"
#: source/ubl-strings.h:150 #: source/ubl-strings.h:153
msgid "Password change interval: minimum" msgid "Password change interval: minimum"
msgstr "Интервал смены пароля: минимум" msgstr "Интервал смены пароля: минимум"
#: source/ubl-strings.h:151 #: source/ubl-strings.h:154
msgid "days, maximum" msgid "days, maximum"
msgstr "дней, максимум" msgstr "дней, максимум"
#: source/ubl-strings.h:152 #: source/ubl-strings.h:155
msgid "days" msgid "days"
msgstr "дней" msgstr "дней"
#: source/ubl-strings.h:153 #: source/ubl-strings.h:156
msgid "Days until warning:" msgid "Days until warning:"
msgstr "Дней до предупреждения:" msgstr "Дней до предупреждения:"
#: source/ubl-strings.h:154 #: source/ubl-strings.h:157
msgid "Days without activity:" msgid "Days without activity:"
msgstr "Дней без активности:" msgstr "Дней без активности:"
#: source/ubl-strings.h:155 #: source/ubl-strings.h:158
msgid "Force change at next login" msgid "Force change at next login"
msgstr "Принудительно сменить при следующем входе в систему" msgstr "Принудительно сменить при следующем входе в систему"
#: source/ubl-strings.h:156 #: source/ubl-strings.h:159
msgid "User shell:" msgid "User shell:"
msgstr "Оболочка пользователя:" msgstr "Оболочка пользователя:"
#: source/ubl-strings.h:157 #: source/ubl-strings.h:160
msgid "Home directory:" msgid "Home directory:"
msgstr "Домашний каталог:" msgstr "Домашний каталог:"
#: source/ubl-strings.h:158 #: source/ubl-strings.h:161
msgid "Don't set" msgid "Don't set"
msgstr "Не создавать" msgstr "Не создавать"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:162
msgid "Create system user" msgid "Create system user"
msgstr "Создать системного пользователя" msgstr "Создать системного пользователя"
#: source/ubl-strings.h:160 #: source/ubl-strings.h:163
msgid "Create user with ununique (repeating) UID" msgid "Create user with ununique (repeating) UID"
msgstr "Создать пользователя с повторяющимися (не уникальными) UID" msgstr "Создать пользователя с повторяющимися (не уникальными) UID"
#: source/ubl-strings.h:161 #: source/ubl-strings.h:164
msgid "Do not check login for compliance with character rules" msgid "Do not check login for compliance with character rules"
msgstr "Не проверять логин на несоответствие правилам использования символов" msgstr "Не проверять логин на несоответствие правилам использования символов"
#: source/ubl-strings.h:162 #: source/ubl-strings.h:165
msgid "Temporary deactivation" msgid "Temporary deactivation"
msgstr "Временное отключение учётной записи" msgstr "Временное отключение учётной записи"
#: source/ubl-strings.h:163 #: source/ubl-strings.h:166
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
#: source/ubl-strings.h:164 #: source/ubl-strings.h:167
msgid "login_name" msgid "login_name"
msgstr "Имя_логина" msgstr "Имя_логина"
#: source/ubl-strings.h:165 #: source/ubl-strings.h:168
msgid "group_name" msgid "group_name"
msgstr "Имя_группы" msgstr "Имя_группы"
#: source/ubl-strings.h:166 #: source/ubl-strings.h:169
msgid "User name" msgid "User name"
msgstr "Имя пользователя" msgstr "Имя пользователя"
#: source/ubl-strings.h:167 #: source/ubl-strings.h:170
msgid "Sync user" msgid "Sync user"
msgstr "Синхронизировать пользователя" msgstr "Синхронизировать пользователя"
#: source/ubl-strings.h:168 #: source/ubl-strings.h:171
msgid "Sync user with password" msgid "Sync user with password"
msgstr "Синхронизировать пользователя с паролем" msgstr "Синхронизировать пользователя с паролем"
#: source/ubl-strings.h:169 #: source/ubl-strings.h:172
msgid "Encrypt all passwords" msgid "Encrypt all passwords"
msgstr "Зашифровать все пароли" msgstr "Зашифровать все пароли"
#: source/ubl-strings.h:171 #: source/ubl-strings.h:174
msgid "User configuration" msgid "User configuration"
msgstr "Настройка пользователя" msgstr "Настройка пользователя"
#: source/ubl-strings.h:172 #: source/ubl-strings.h:175
msgid "User configuration synchronization" msgid "User configuration synchronization"
msgstr "Синхронизация настроек пользователя" msgstr "Синхронизация настроек пользователя"
#: source/ubl-strings.h:173 #: source/ubl-strings.h:176
msgid "During system startup, load the user from the configuration" msgid "During system startup, load the user from the configuration"
msgstr "" msgstr ""
"При запуске операционной системы применять настройки пользователя из " "При запуске операционной системы применять настройки пользователя из "
"конфигурации" "конфигурации"
#: source/ubl-strings.h:174 #: source/ubl-strings.h:177
msgid "When shutting down the system, save the user into the configuration" msgid "When shutting down the system, save the user into the configuration"
msgstr "" msgstr ""
"При завершении работы операционной системы сохранить настройки пользователя " "При завершении работы операционной системы сохранить настройки пользователя "
"в конфигурацию" "в конфигурацию"
#: source/ubl-strings.h:175 #: source/ubl-strings.h:178
msgid "User password configuration syncronization" msgid "User password configuration syncronization"
msgstr "Синхронизация настроек пароля пользователя" msgstr "Синхронизация настроек пароля пользователя"
#: source/ubl-strings.h:176 #: source/ubl-strings.h:179
msgid "" msgid ""
"During system startup, load the user's parameters from the configuration" "During system startup, load the user's parameters from the configuration"
msgstr "При загрузке системы загрузить параметры пользователя из конфигурации" msgstr "При загрузке системы загрузить параметры пользователя из конфигурации"
#: source/ubl-strings.h:177 #: source/ubl-strings.h:180
msgid "" msgid ""
"When shutting down the system, save the user's parameters into the " "When shutting down the system, save the user's parameters into the "
"configuration" "configuration"
msgstr "" msgstr ""
"При завершении работы системы сохранить параметры пользователя в конфигурацию" "При завершении работы системы сохранить параметры пользователя в конфигурацию"
#: source/ubl-strings.h:179 #: source/ubl-strings.h:182
msgid "Main" msgid "Basic"
msgstr "Основные" msgstr "Основные"
#: source/ubl-strings.h:180 #: source/ubl-strings.h:183
msgid "Additional" msgid "Additional"
msgstr "Дополнительные" msgstr "Дополнительные"
#: source/ubl-strings.h:181 #: source/ubl-strings.h:184
msgid "Syncronization" msgid "Syncronization"
msgstr "Синхронизация" msgstr "Синхронизация"
#: source/ubl-strings.h:183 #: source/ubl-strings.h:186
msgid "Not specified" msgid "Not specified"
msgstr "Не задан" msgstr "Не задан"
#: source/ubl-strings.h:186 #: source/ubl-strings.h:189
msgid "Repeat password:" msgid "Repeat password:"
msgstr "Подтверждение пароля:" msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:187 #: source/ubl-strings.h:190
msgid "Password hash:" msgid "Password hash:"
msgstr "Хэш пароля:" msgstr "Хэш пароля:"
#: source/ubl-strings.h:188 #: source/ubl-strings.h:191
msgid "Do not encrypt password" msgid "Do not encrypt password"
msgstr "Не шифровать пароль" msgstr "Не шифровать пароль"
#: source/ubl-strings.h:191 #: source/ubl-strings.h:194
msgid "Additional configuration of service parameter saving" msgid "Additional configuration of service parameter saving"
msgstr "Дополнительные настройки сохранения параметров сервисов" msgstr "Дополнительные настройки сохранения параметров сервисов"
#: source/ubl-strings.h:192 #: source/ubl-strings.h:195
msgid "" msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n" "At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy" "into (hd)/ublinux-data/rootcopy"
@ -691,44 +707,38 @@ msgstr ""
"При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n" "При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n"
"в (hd)/ublinux-data/rootcopy/" "в (hd)/ublinux-data/rootcopy/"
#: source/ubl-strings.h:193 #: source/ubl-strings.h:196
msgid "For system save mode \"Sandbox\"" msgid "For system save mode \"Sandbox\""
msgstr "Для режима сохранения системы \"Песочница\"" msgstr "Для режима сохранения системы \"Песочница\""
#: source/ubl-strings.h:196 #: source/ubl-strings.h:199
msgid "Group deletion" msgid "Group deletion"
msgstr "Удаление пользователя(-лей)" msgstr "Удаление групп(-ы)"
#: source/ubl-strings.h:197 #: source/ubl-strings.h:200
msgid "Confirm group(-s) deletion:" msgid "Confirm group(-s) deletion:"
msgstr "Подтвердите удаление групп(-ы):" msgstr "Подтвердите удаление групп(-ы):"
#: source/ubl-strings.h:199 #: source/ubl-strings.h:202
msgid "User deletion" msgid "User deletion"
msgstr "Удаление групп(-ы)" msgstr "Удаление пользователя(-ей)"
#: source/ubl-strings.h:200 #: source/ubl-strings.h:203
msgid "Confirm user(-s) deletion:" msgid "Confirm user(-s) deletion:"
msgstr "Подтвердите удаление пользователя (-ей):" msgstr "Подтвердите удаление пользователя (-ей):"
#: source/ubl-strings.h:201 #: source/ubl-strings.h:204
msgid "Chosen" msgid "Chosen"
msgstr "Выбран" msgstr "Выбран"
#: source/ubl-strings.h:202 #: source/ubl-strings.h:205
msgid "User" msgid "User"
msgstr "Пользователь" msgstr "Пользователь"
#: source/ubl-strings.h:203 #: source/ubl-strings.h:206
msgid "Home directory" msgid "Home directory"
msgstr "Домашний каталог" msgstr "Домашний каталог"
#: source/ubl-strings.h:204 #: source/ubl-strings.h:207
msgid "Delete home directory" msgid "Delete home directory"
msgstr "Удалить домашний каталог" msgstr "Удалить домашний каталог"
msgid "Are you sure want to delete group"
msgstr "Вы уверены, что хотите удалить группу"
msgid "Are you sure want to delete user"
msgstr "Вы уверены, что хотите удалить пользователя"

Loading…
Cancel
Save