master #95

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

@ -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;i<size;i++){
@ -40,7 +41,7 @@ void yon_interface_update(main_window *widgets){
3,parameters_size>0?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]=='%'&&parameters[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)?"<s>":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"</s>":"","\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)?"<s>":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"</s>":"","\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)?"<s>":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"</s>":"","\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)?"<s>":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"</s>":"","\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("<s>",old_value,"</s>\n",NULL);
gtk_list_store_set(window->list,&iter,7,new_compare,-1);
free(new_compare);
} else {
char *new_compare = yon_char_unite("<s>",old_value,"</s>\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("<s>",old_value,"</s>\n******",NULL);
gtk_list_store_set(window->list,&iter,7,new_compare,-1);
free(new_compare);
} else {
char *new_compare = yon_char_unite("<s>",old_value,"</s>\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]==' ')&&gtk_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordCombo))>1){
if ((passw[0]!='$')&&gtk_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;i<argc;i++){
int argument=getopt_long(argc,argv,"hVvs:e:t:c",long_options,&option_index);
switch(argument){
case 'h':
show_help=1;
break;
case 'v':
case 'V':
printf("%s\n",VERSION_LABEL);
exit(0);
break;
case 's':
if(optarg)
main_config.socket_id=atoi(optarg);
break;
case 'e':
if(optarg)
main_config.save_socket_id=atoi(optarg);
break;
case 't':
if(optarg)
main_config.load_socket_id=atoi(optarg);
break;
case 'c': if (system(remove_config_dir_command)){};
break;
case 1:
main_config.lock_help=1;
break;
case 2:
main_config.lock_save_local=1;
main_config.lock_save_global=1;
break;
case 3:
main_config.lock_save_local=1;
break;
case 4:
main_config.lock_save_global=1;
break;
case 5:
main_config.lock_load_global=1;
break;
}
}
if (show_help==1&&main_config.lock_help!=1){
printf("%s\n",HELP_LABEL);
exit(0);
}
}
if (getuid()!=0){
main_config.lock_load_global=1;
main_config.lock_save_global=1;
main_config.lock_save_local=1;
}
gtk_init(&argc,&argv);
config_init();
yon_ubl_connect_config((_template_config*)&main_config);
yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
config_str unfound = NULL;
int size=0;
yon_ubl_setup_arguments(argc,argv,&unfound,&size,NULL);
gtk_init(&argc,&argv);
template_main_window *widgets = yon_ubl_window_setup();
textdomain (template_ui_LocaleName);
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain (LocaleName);
yon_main_window_complete((main_window*)widgets);
yon_window_config_load(config_path);

@ -41,7 +41,6 @@
#define get_default_hash_command "ubconfig --raw --source default get [users] HASHPASSWD"
#define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER"
#define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER"
#define remove_config_dir_command yon_char_unite("rm -rfd ", yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",NULL)
#define samba_sync_command(user) yon_char_unite("sudo smbpasswd -Las ",user,NULL)
#define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL)
@ -80,6 +79,7 @@ typedef struct {
int lock_save_local;
int lock_save_global;
int lock_load_global;
int lock_load_system;
int load_mode;
@ -286,6 +286,7 @@ typedef struct{
char *expiration_unix;
char *old_password;
char *old_username;
} ubl_settings_usergroups_user_window;
typedef struct {

@ -1,5 +1,4 @@
#define VERSION_LABEL yon_char_unite(_("Version:")," ",!yon_char_is_empty(version_application)?version_application:"","\n",NULL)
#define HELP_LABEL yon_char_unite(_("ubl-settings-usergroups version:")," ", !yon_char_is_empty(version_application)?version_application:"","\n",_("Users and groups"),"\n",_("Usage:"), " ubl-settings-usergroups ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n\t--clear-config\t\t\t",_("Reset application settings"),"\n",NULL)
#define TITLE_LABEL _("Users and groups")
#define TITLE_INFO_LABEL _("System users and groups configuration")
@ -89,6 +88,7 @@
#define GROUPADD_SYNC_LABEL _("Group configuration synchronization")
#define GROUPADD_SHUTDOWN_LABEL _("When shutting down the system, save the group into the configuration")
#define ADMINISTRATORS_LABEL _("Group administrators:")
#define GROUP_BEGINS_WITH_DIGIT_LABEL _("Group name must not start with digit")
//ubl-settings-usergroups-group.glade
#define DEFAULT_GROUPS_TITLE_LABEL _("Default groups")
@ -123,6 +123,7 @@
#define CONFIGURE_USER_TITLE_LABEL _("Configure user")
#define SET_LABEL _("Set")
#define EMPTY_IMPORTANT_LABEL _("Empty important field")
#define USER_BEGINS_WITH_DIGIT_LABEL _("Login must not start with digit")
#define LOADING_FAILED_LABEL _("Loading has failed")
#define LOGIN_NAME_LABEL _("Login name")
#define ADDITIONAL_GROUPS_LABEL _("Additional groups:")

@ -151,7 +151,6 @@
<item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
<item translatable="yes">Endrypted password</item>
</items>
</object>
<packing>
@ -230,7 +229,6 @@
<item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
<item translatable="yes">Encrypted password</item>
</items>
</object>
<packing>

@ -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;

@ -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 ""

@ -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 "Имя группы не должно начинаться с цифры"

Loading…
Cancel
Save