Password encrypt button changes #247

Merged
asmeron merged 12 commits from YanTheKaller/ubl-settings-usergroups:master into master 5 months ago

@ -23,9 +23,28 @@ void on_additional_settings_clicked(GtkWidget *, GtkEntry *){
}
void on_passwords_encrypt(){
int pid = fork();
if (!pid){
exit(system(encrypt_passwords_command));
gboolean on_encrypt_update(dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
ubl_settings_usergroups_additional_settings_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_additional_settings_window*);
gtk_widget_destroy(window->Window);
yon_load_proceed((YON_CONFIG_TYPE)main_config.load_mode);
yon_interface_update(widgets);
return G_SOURCE_REMOVE;
}
void *yon_passwords_encrypt(dictionary *dict){
int exitstatus = system(encrypt_passwords_command);
if (!exitstatus){
yon_ubl_status_box_render_thread(yon_char_get_localised_from_lib(SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
g_idle_add((GSourceFunc)on_encrypt_update,dict);
} else {
yon_ubl_status_box_render_thread(yon_char_get_localised_from_lib(FAIL_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
}
g_thread_exit(NULL);
}
void on_passwords_encrypt(GtkWidget*,dictionary *dict){
g_thread_new("encrypt_all_passwords_thread",(GThreadFunc)yon_passwords_encrypt,dict);
}

@ -193,9 +193,11 @@ void on_group_save(GtkWidget *self, dictionary *dict){
int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo));
if (password_active == 1) {
password = "!*";
} else if (password_active == 2){
if (password_active == 0){
password = "";
} else if (password_active ==5){
password = " ";
} else if (password_active == 1){
password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
@ -203,8 +205,25 @@ void on_group_save(GtkWidget *self, dictionary *dict){
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
return;
}
} else {
password="";
} else if (password_active==2){
password = "!*";
} else if (password_active ==3){
password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
if (password[0]!='!') {
char *temp = yon_char_append("!",password);
password=temp;
}
} else if (password_active == 4){
password = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)));
if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
return;
}
if (password[0]=='!'){
free(yon_char_divide(password,0));
}
}
final_string = yon_char_unite(yon_char_return_if_exist(group_users,""),
":",yon_char_return_if_exist(gid,"x"),

@ -25,7 +25,7 @@ void on_password_change(GtkWidget *, dictionary *entry_dict){
dictionary *dict = NULL;
char *password = (char*)gtk_entry_get_text(output_target);
if (!yon_char_is_empty(password)){
if (main_config.load_mode==0){
if (main_config.load_mode==YON_CONFIG_GLOBAL){
password = yon_char_new(password);
if (!check_is_password_hash(password)){
gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password);
@ -105,6 +105,19 @@ void on_password_accept(GtkWidget *self, dictionary *dict){
on_subwindow_close(self);
}
void on_password_hash_sensitiveness(GtkWidget *,ubl_settings_usergroups_password_window *window){
if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)))||!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry)))){
gtk_widget_set_sensitive(window->HashBox,0);
gtk_widget_set_sensitive(window->PasswordBox,1);
} else if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry)))) {
gtk_widget_set_sensitive(window->HashBox,1);
gtk_widget_set_sensitive(window->PasswordBox,0);
} else {
gtk_widget_set_sensitive(window->HashBox,1);
gtk_widget_set_sensitive(window->PasswordBox,1);
}
}
ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(){
ubl_settings_usergroups_password_window *window = malloc(sizeof(ubl_settings_usergroups_password_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_password);
@ -123,6 +136,9 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne
yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"PasswordWindow");
g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->PasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
g_signal_connect(G_OBJECT(window->PasswordHashEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
g_signal_connect(G_OBJECT(window->PasswordHashEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),PASSWORD_TITLE_LABEL);
@ -130,22 +146,15 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne
return window;
}
int yon_check_password_blocked(char *password){
if (!yon_char_is_empty(password)){
if (!strcmp(password,"!*")){
memset(password,0,strlen(password));
return 1;
} else if (password[0]=='!'&&password[1]=='*'){
if (!yon_char_is_empty(password)&&strlen(password)>0){
if (password[0]=='!'&&password[1]!='*'){
char *copy = yon_char_new(password);
memcpy(copy,password+2,strlen(password+2));
memcpy(copy,password+1,strlen(password+1));
memset(password,0,strlen(password));
memcpy(password,copy,strlen(copy));
free(copy);
return 1;
} else if (password[0]=='!'||password[0]=='*'){
free(yon_char_divide(password,0));
return 1;
}
}
return 0;

@ -33,20 +33,33 @@ void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_add
if (window->default_user_name)
yon_config_remove_by_key(DEFAULTUSER_parameter);
}
char *default_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->DefaultPasswordCombo))>1? (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry)):NULL;
char *default_password = NULL;
int user_password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->DefaultPasswordCombo));
if (user_password_active==1)
default_password=(char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry));
else if (user_password_active==2)
default_password=" ";
else if (user_password_active==3){
default_password="!*";
}
if (!yon_char_is_empty(default_password)){
if (window->default_password)
// if (window->default_password)
yon_config_register(DEFAULTPASSWD_parameter,DEFAULTPASSWD_parameter_command,default_password);
} else {
if (window->default_password)
// if (window->default_password)
yon_config_remove_by_key(DEFAULTPASSWD_parameter);
}
char *root_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RootPasswordCombo)) > 1 ? (char*)gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry)) : NULL;
char *root_password = NULL;
int root_password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RootPasswordCombo));
if (root_password_active==1)
root_password=(char*)gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry));
else if (root_password_active==2)
root_password=" ";
if (!yon_char_is_empty(root_password)){
if (window->default_root_password)
// if (window->default_root_password)
yon_config_register(DEFAULTROOTPASSWD_parameter,DEFAULTROOTPASSWD_parameter_command,root_password);
} else {
if (window->default_root_password)
// if (window->default_root_password)
yon_config_remove_by_key(DEFAULTROOTPASSWD_parameter);
}
int user_k_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck));
@ -658,17 +671,30 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton);
g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton);
char *default_password = yon_config_get_by_key(DEFAULTPASSWD_parameter);
if (!yon_char_is_empty(default_password)){
gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password);
if(!yon_config_check_ignore(DEFAULTPASSWD_parameter))
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2);
if (!yon_config_check_default(DEFAULTPASSWD_parameter)){
char *default_password = yon_config_get_by_key(DEFAULTPASSWD_parameter);
if (!yon_char_is_empty(default_password)){
if (!strcmp(default_password," ")){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2);
} else if (!strcmp(default_password,"!*")){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),3);
} else {
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),1);
gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password);
}
}
}
if (!yon_config_check_default(DEFAULTROOTPASSWD_parameter)){
char *root_password = yon_config_get_by_key(DEFAULTROOTPASSWD_parameter);
if (!yon_char_is_empty(root_password)){
gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password);
if(!yon_config_check_ignore(DEFAULTROOTPASSWD_parameter))
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2);
if (!yon_char_is_empty(root_password)){
if (!strcmp(root_password," ")){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2);
} else {
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),1);
gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password);
}
}
}
char *is_k_admin = yon_config_get_by_key(ADDADM_parameter);
if (!yon_char_is_empty(is_k_admin))
@ -717,12 +743,7 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
yon_dictionary_add_or_create_if_exists_with_data(root_dict,"entry",window->RootPasswordEntry);
g_signal_connect(G_OBJECT(window->DefaultPasswordButton),"clicked",G_CALLBACK(on_password_change),default_dict);
g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict);
dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data));
data->function=on_passwords_encrypt;
data->action_text = ENCRYPT_SURE_LABEL;
data->data=NULL;
g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data);
g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window);
g_signal_connect(G_OBJECT(window->DefaultUserNameEntry),"changed",G_CALLBACK(on_additional_settings_changed),window);
@ -741,6 +762,17 @@ return window;
void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_window *widgets){
ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
dictionary *encrypt_data = NULL;
yon_dictionary_add_or_create_if_exists_with_data(encrypt_data,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(encrypt_data,"window",window);
dialog_confirmation_data *data=yon_confirmation_dialog_data_new();
data->function=on_passwords_encrypt;
data->action_text = ENCRYPT_SURE_LABEL;
data->data=encrypt_data;
data->title = ENCRYPT_TITLE_LABEL;
g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data);
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->Window);

@ -392,7 +392,11 @@ void on_user_save(GtkWidget *self, dictionary *dict){
}
int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordCombo));
if (password_active > 1){
if (password_active == 0){
password = "";
} else if (password_active ==5){
password = " ";
} else if (password_active ==1){
password = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
@ -400,10 +404,25 @@ void on_user_save(GtkWidget *self, dictionary *dict){
gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
return;
}
} else if (password_active==1){
} else if (password_active==2){
password = "!*";
} else {
password="";
} else if (password_active ==3){
password = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
if (password[0]!='!') {
char *temp = yon_char_append("!",password);
password=temp;
}
} else if (password_active == 4){
password = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry)));
if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->userPasswordEntry);
gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
return;
}
if (password[0]=='!'){
free(yon_char_divide(password,0));
}
}
char *old_password = NULL;
@ -432,6 +451,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
if (strlen(password)>1&&password[0]=='%'&&password[1]=='%'){
char *temp = yon_char_replace(password,"%%","!!");
password = yon_char_replace(temp,"!!","%%!");
} else if (!yon_char_is_empty(password)&&password[0]=='!'){
} else {
password = yon_char_append("!",password);
}

@ -110,8 +110,12 @@ void yon_interface_update(main_window *widgets){
if (!check_is_password_hash(parameters[5])&&parameters[5][0]!='%'&&parameters[5][1]!='%'){
pars = ENCRYPTED_LABEL;
} else if (!strcmp(parameters[5],"!*")){
} else if (!strcmp(parameters[5]," ")){
pars = NO_PASSWORD_LABEL;
} else if (!strcmp(parameters[5],"!*")){
pars = DENY_LOGIN_LABEL;
} else if (parameters[5][0]=='!'){
pars = BLOCK_LOGIN_LABEL;
} else {
pars = UNENCRYPTED_LABEL;
@ -121,7 +125,7 @@ void yon_interface_update(main_window *widgets){
}
gtk_list_store_set(widgets->UsersList,&iter,
0,parameters_size>5?(parameters[5][0]=='!'||parameters[5][0]=='*')||(parameters[5][0]=='!'&&parameters[5][1]=='*'):0,
0,parameters_size>5?(parameters[5][0]=='!'&&parameters[5][1]=='*')?check_checked_icon_name:(parameters[5][0]=='!'||parameters[5][0]=='*')?check_attention_icon_name:NULL:NULL,
2,login,
3,parameters_size>0?parameters[0]:"",
1,parameters_size>1&&!yon_char_is_empty(parameters[1])?parameters[1]:"",
@ -158,8 +162,12 @@ void yon_interface_update(main_window *widgets){
if (parameters_size>4&&strcmp(parameters[4],"x")&&strcmp(parameters[4],"")){
if (!check_is_password_hash(parameters[4])&&parameters[4][0]!='%'&&parameters[4][1]!='%'){
pars = ENCRYPTED_LABEL;
} else if (!strcmp(parameters[4],"!*")||!strcmp(parameters[4],"*")||!strcmp(parameters[4],"!")){
} else if (!strcmp(parameters[4]," ")){
pars = NO_PASSWORD_LABEL;
} else if (!strcmp(parameters[4],"!*")){
pars = DENY_LOGIN_LABEL;
} else if (parameters[4][0]=='!'){
pars = BLOCK_LOGIN_LABEL;
} else {
pars = UNENCRYPTED_LABEL;
@ -226,7 +234,7 @@ void on_config_local_load(GtkWidget *, main_window *widgets){
textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName);
main_config.load_mode=1;
main_config.load_mode=YON_CONFIG_LOCAL;
yon_interface_update(widgets);
}
@ -235,7 +243,7 @@ void on_config_global_load(GtkWidget *, main_window *widgets){
textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName);
main_config.load_mode=0;
main_config.load_mode=YON_CONFIG_GLOBAL;
yon_interface_update(widgets);
}
@ -244,7 +252,7 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName);
main_config.load_mode=3;
main_config.load_mode=YON_CONFIG_CUSTOM;
yon_interface_update(widgets);
}
@ -395,7 +403,7 @@ void yon_hide_passwords(template_saving_window *window){
free(yon_char_divide(new_value,1));
newv=new_value;
} else if (!yon_char_is_empty(new_value)&&new_value[0]=='$') {
if (main_config.load_mode==1){
if (main_config.load_mode==YON_CONFIG_LOCAL){
newv=new_value;
} else {
newv="*******";
@ -404,7 +412,7 @@ void yon_hide_passwords(template_saving_window *window){
newv="*******";
}
if (!yon_char_is_empty(old_value)){
if (main_config.load_mode==1){
if (main_config.load_mode==YON_CONFIG_LOCAL){
old = yon_char_new("<s>*******</s>");
} else {
@ -421,7 +429,7 @@ void yon_hide_passwords(template_saving_window *window){
free(yon_char_divide(new_value,1));
newv=new_value;
} else if (!yon_char_is_empty(new_value)&&new_value[0]=='$') {
if (main_config.load_mode==1){
if (main_config.load_mode==YON_CONFIG_LOCAL){
newv=new_value;
} else {
newv="*******";
@ -430,7 +438,7 @@ void yon_hide_passwords(template_saving_window *window){
newv="*******";
}
if (!yon_char_is_empty(old_value)){
if (main_config.load_mode==1){
if (main_config.load_mode==YON_CONFIG_LOCAL){
old = yon_char_new("<s>*******</s>");
} else {
old = yon_char_unite("<s>",old_value,"</s>",NULL);
@ -451,7 +459,7 @@ void on_save_done(main_window *widgets, config_str output, int size){
}
yon_char_parsed_free(output,size);
on_config_update(NULL,widgets);
if (main_config.load_mode==1){
if (main_config.load_mode==YON_CONFIG_LOCAL){
yon_accept_changes();
yon_samba_sync_proceed();
}
@ -593,62 +601,111 @@ void on_delete_confirmation_delete_check(GtkCellRenderer *, char *path, yon_conf
}
void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
GtkTreeIter iter,itar;
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
yon_confirmation_window *window = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*);
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
char *name;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1);
int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar);
for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
char *name_check;
int status,delete;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1);
if (!strcmp(name,name_check)&&delete){
// char *user = config(USERADD(name));
// int size;
// config_str parsed = yon_char_parse(user,&size,":");
// if (size>3&&(strcmp(parsed[3],name)&&strcmp(parsed[2],parsed[3]))){
// yon_ubl_status_box_spawn_infinite(window->)
// }
gtk_list_store_remove(widgets->UsersList,&iter);
yon_config_remove_by_key(USERADD(name));
yon_config_remove_by_key(USERSHADOW(name));
yon_config_register(USERADD_SYNC(name),USERADD_SYNC_command(name),"");
yon_config_remove_by_key(USERADD_SYNC(name));
yon_config_remove_by_key(USERSHADOW_SYNC(name));
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
if (status){
if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name);
}
char *yon_user_get_group_string(char *user){
char *cur_user = config(USERADD(user));
int size;
config_str parsed = yon_char_parse(cur_user,&size,":");
if (size>2&&!yon_char_is_empty(parsed[2])){
char *current_group = parsed[2];
size_t digits=0;
for (guint k=0;k<strlen(current_group);k++){
if (g_ascii_isdigit(current_group[k])){
digits++;
}
}
char *final_group_name=NULL;
if (digits&&digits==strlen(current_group)){
for (int i=0;i<main_config.groups_size;i++){
int group_size=0;
config_str groups_parsed = yon_char_parse(main_config.groups[i],&group_size,":");
if (group_size>2&&!strcmp(groups_parsed[2],current_group)){
final_group_name=yon_char_new(groups_parsed[0]);
if (group_size) yon_char_parsed_free(groups_parsed,group_size);
break;
}
if (group_size) yon_char_parsed_free(groups_parsed,group_size);
}
} else {
final_group_name=yon_char_new(current_group);
}
return final_group_name;
} else {
return user;
}
return NULL;
}
char *yon_user_check_groups(GtkListStore *list, char *target){
char *final="";
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(list);
for_iter(model,&iter){
char *name;
if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter)){
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1);
int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar);
for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
char *name_check;
int status,delete;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1);
if (!strcmp(name,name_check)&&delete){
gtk_list_store_remove(widgets->UsersList,&iter);
yon_config_remove_by_key(USERADD(name));
yon_config_remove_by_key(USERSHADOW(name));
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
if (status){
if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name);
}
}
char *group;
gtk_tree_model_get(model,&iter,1,&name,6,&group,-1);
if (!strcmp(group,target)&&strcmp(name,target)){
char *temp = yon_char_unite(final,!yon_char_is_empty(final)?",":"",name,NULL);
if (!yon_char_is_empty(final)) free(final);
final = temp;
}
}
return !yon_char_is_empty(final)?final:NULL;
}
void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
yon_confirmation_window *window = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*);
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(window->list);
char *single_target = NULL;
int founds = 0;
char *depends = NULL;
for_iter(model,&iter){
int selected;
char *target;
char *group;
gtk_tree_model_get(model,&iter,0,&selected,1,&target,6,&group,-1);
if (selected&&!yon_char_is_empty(target)&&!yon_char_is_empty(group)){
if ((!strcmp(target,group))){
depends = yon_user_check_groups(window->list,target);
if (!yon_char_is_empty(depends)) {
single_target = target;
founds++;
}
}
}
}
if (founds==1){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = CONFIRMATION_GROUP_DEPENDS_SINGLE_LABEL(single_target,depends);
if(yon_confirmation_dialog_call(window->Window,data)!=GTK_RESPONSE_ACCEPT){
return;
}
} else if (founds >1){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = CONFIRMATION_GROUP_DEPENDS_MULTIPLE_LABEL;
if (yon_confirmation_dialog_call(window->Window,data)!=GTK_RESPONSE_ACCEPT){
return;
}
}
for_iter(model,&iter){
int selected;
char *target;
gtk_tree_model_get(model,&iter,0,&selected,1,&target,-1);
if (selected){
yon_config_remove_by_key(USERADD(target));
yon_config_remove_by_key(USERSHADOW(target));
yon_config_remove_by_key(USERADD_SYNC(target));
yon_config_remove_by_key(USERSHADOW_SYNC(target));
}
}
yon_interface_update(widgets);
on_subwindow_close(self);
}
@ -737,8 +794,8 @@ void yon_delete_confirmation_open(main_window *widgets){
}
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
char *name,*username,*parameters,*homedir=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,3,&username,6,&parameters,-1);
char *name,*username,*parameters,*homedir=NULL, *group=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,3,&username,4,&group,6,&parameters,-1);
int size;
config_str home = yon_config_load(get_home_command(name),&size);
if (size>0&&!yon_char_is_empty(home[0])){
@ -751,7 +808,9 @@ void yon_delete_confirmation_open(main_window *widgets){
int status=0;
if (homedir) status=1;
gtk_list_store_append(window->list,&itar);
gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1&&status?1:0,5,username,-1);
group = yon_user_get_group_string(name);
gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1&&status?1:0,5,username,6,group,-1);
free(name);
free(username);
free(parameters);
@ -787,7 +846,20 @@ void on_saving_settings_open(GtkWidget *, main_window *widgets){
}
void on_password_combo_changed(GtkComboBox *self, GtkWidget *target){
gtk_widget_set_sensitive(target,gtk_combo_box_get_active(self)>1);
int active = gtk_combo_box_get_active(self);
switch(active){
case 0:
case 2:
case 3:
case 5:
gtk_widget_set_sensitive(target,0);
break;
case 1:
case 4:
gtk_widget_set_sensitive(target,1);
break;
}
}
@ -1335,7 +1407,7 @@ void on_toggle_button_set_active_from_combo_box(GtkComboBox *self,ubl_settings_u
void on_toggle_button_set_active_from_toggle_button_inversed(GtkToggleButton *, ubl_settings_usergroups_user_window *window){
char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
if ((passw[0]!='$')&&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))){
@ -1506,18 +1578,15 @@ void on_main_edit(GtkWidget *, main_window *widgets){
}
}
if (parsed_size>5){
if (check_is_password_hash(parameters[5])){
if (strcmp(parameters[5],"!*")&&!yon_char_check_begins_with(parameters[5],"%%")){
char *temp = yon_char_append("%%",parameters[5]);
free(parameters[5]);
parameters[5]=temp;
if (strcmp(parameters[5]," ")&&!yon_char_check_begins_with(parameters[5],"!")&&!yon_char_check_begins_with(parameters[5],"*")&&!yon_char_check_begins_with(parameters[5],"%%")){
if (check_is_password_hash(parameters[5])){
char *temp = yon_char_append("%%",parameters[5]);
free(parameters[5]);
parameters[5]=temp;
}
}
window->old_password=yon_char_new(parameters[5]);
if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){
if (yon_check_password_blocked(parameters[5])){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1);
}
if (!yon_char_is_empty(parameters[5])){
if (check_is_password_hash(parameters[5])){
if (yon_char_check_begins_with(parameters[5],"%%")==-1){
@ -1529,10 +1598,18 @@ void on_main_edit(GtkWidget *, main_window *widgets){
g_signal_handlers_block_by_func(G_OBJECT(window->userSyncSAMBACheck),G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userSyncSAMBAPasswordCheck);
}
if (!strcmp(parameters[5],"!*")){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),1);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2);
} else if (!strcmp(parameters[5]," ")) {
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),5);
} else if (parameters[5][0]=='!'){
char *password_or = yon_char_new(parameters[5]);
free(yon_char_divide(password_or,0));
gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),password_or);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),3);
free(password_or);
} else {
gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),1);
}
}
}
@ -1633,14 +1710,37 @@ void on_main_edit(GtkWidget *, main_window *widgets){
}
}
if (size>4){
if (!yon_char_is_empty(parsed[4])){
if (!strcmp(parsed[4],"!*")||!strcmp(parsed[4],"!")||!strcmp(parsed[4],"*")){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),1);
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),"");
} else if (strcmp(parsed[4],"x")){
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),parsed[4]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),2);
if (strcmp(parsed[4]," ")&&!yon_char_check_begins_with(parsed[4],"!")&&!yon_char_check_begins_with(parsed[4],"*")&&!yon_char_check_begins_with(parsed[4],"%%")){
if (check_is_password_hash(parsed[4])){
char *temp = yon_char_append("%%",parsed[4]);
free(parsed[4]);
parsed[4]=temp;
}
}
window->old_password=yon_char_new(parsed[4]);
if (strcmp(parsed[4],"x")&&strcmp(parsed[4],"")){
if (!yon_char_is_empty(parsed[4])){
if (check_is_password_hash(parsed[4])){
if (yon_char_check_begins_with(parsed[4],"%%")==-1){
char *temp = yon_char_append("%%",parsed[4]);
free(parsed[4]);
parsed[4]=temp;
}
}
if (!strcmp(parsed[4],"!*")){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),2);
} else if (!strcmp(parsed[4]," ")) {
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),5);
} else if (parsed[4][0]=='!'){
char *password_or = yon_char_new(parsed[4]);
free(yon_char_divide(password_or,0));
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password_or);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),3);
free(password_or);
} else {
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),parsed[4]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),1);
}
}
}
} else {
@ -1736,7 +1836,7 @@ void on_main_delete(GtkWidget *, main_window *widgets){
}
void on_config_update(GtkWidget *, main_window *widgets){
if (main_config.load_mode==0){
if (main_config.load_mode==YON_CONFIG_GLOBAL){
on_config_global_load(NULL,widgets);
} else {
on_config_local_load(NULL,widgets);
@ -1767,7 +1867,7 @@ void config_init(){
main_config.lock_save_local=0;
main_config.groups_size=0;
main_config.users_size=0;
main_config.load_mode=1;
main_config.load_mode=YON_CONFIG_LOCAL;
main_config.hash_default_id=-1;
main_config.save_config=0;
main_config.groups = yon_file_open(groups_path,&main_config.groups_size);

@ -87,6 +87,9 @@
#define GROUPADD_SYNC_parameter "GROUPADD_SYNC"
#define GROUPADD_SYNC_parameter_command "ubconfig --source system get users USERADD_SYNC"
#define check_box_icon_name "com.ublinux.libublsettingsui-gtk3.checkbox-symbolic"
#define check_checked_icon_name "com.ublinux.libublsettingsui-gtk3.checkbox-checked-symbolic"
#define check_attention_icon_name "com.ublinux.libublsettingsui-gtk3.checkbox-attention-symbolic"
#define add_icon_name "com.ublinux.ubl-settings-usergroups.increase-symbolic"
#define edit_icon_name "com.ublinux.ubl-settings-usergroups.edit-symbolic"
#define delete_icon_name "com.ublinux.ubl-settings-usergroups.trash-symbolic"
@ -304,6 +307,7 @@ typedef struct{
GtkWidget *MainNotebook;
char *last_gid;
char *old_password;
} ubl_settings_usergroups_group_creation_window;
typedef struct{
@ -566,4 +570,9 @@ void on_useradd_sync_changed(ubl_settings_usergroups_additional_settings_window
void yon_gtk_login_block_symbols(GtkEntry *target);
void on_login_insert_custom_restricted_check(GtkEditable *editable, const gchar *text, gint length, gint *position);
void on_group_delete_toggled(GtkWidget *,gchar* path,yon_confirmation_window *window);
char *yon_user_check_groups(GtkListStore *list, char *target);
char *yon_user_get_group_string(char *user);
void on_password_hash_sensitiveness(GtkWidget *,ubl_settings_usergroups_password_window *window);
gboolean on_encrypt_update(dictionary *dict);
void *yon_passwords_encrypt(dictionary *dict);
#endif

@ -85,7 +85,8 @@
#define DESCTRYPT_LABEL "desctrypt"
#define NT_LABEL "nt"
#define ACCEPT_LABEL _("Accept")
#define ENCRYPT_SURE_LABEL _("Are you sure want to encrypt all passwords?\nThis action can't be undone.")
#define ENCRYPT_SURE_LABEL yon_char_unite("<b>",_("Attention!"),"</b> ",_("All unencrypted password in configuration will be encrypted.\nAre you sure want to encrypt all passwords? This action can't be undone."),NULL)
#define ENCRYPT_TITLE_LABEL _("Encrypt all unencrypted passwords")
#define ENCRYPT_TOOLTIP_LABEL _("Encrypt all unencrypted passwords at global configuration")
#define DES_DESCRIPTION_LABEL _("DES (Algorithm for Symmetric Encryption)")
#define MD5_DESCRIPTION_LABEL _("MD5 (128-bit hashing algorithm)")
@ -270,3 +271,10 @@
#define SHUTDOWN_MAXIMUM_UID_LABEL _("Maximum UID")
#define SHUTDOWN_MINIMUM_GID_LABEL _("Minimum GID")
#define SHUTDOWN_MAXIMUM_GID_LABEL _("Maximum GID")
#define DENY_LOGIN_LABEL _("Deny login")
#define BLOCK_LOGIN_LABEL _("Block login with password")
#define UNBOCK_LOGIN_LABEL _("Unblock login with password")
#define CONFIRMATION_GROUP_DEPENDS_SINGLE_LABEL(target,depends) yon_char_unite(_("User(-s)")," <b>\"",depends,"\"</b> ",_("is included into main group of users")," <b>\"",target,"\"</b>, ",_("which will be deleted"),".\n",_("After reboot users")," <b>",depends,"</b> ",_("main group will be set to default group"),".",NULL)
#define CONFIRMATION_GROUP_DEPENDS_MULTIPLE_LABEL _("Some of users, chosen for deletion, are included as main group for other users. This users will get default main group after reboot")

@ -383,8 +383,9 @@
<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>
<item translatable="yes">No password required</item>
<item translatable="yes">Deny login</item>
</items>
</object>
<packing>
@ -459,8 +460,8 @@
<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>
<item translatable="yes">No password required</item>
</items>
</object>
<packing>

@ -15,17 +15,19 @@
</object>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name gboolean1 -->
<!-- column-name Chosen -->
<column type="gboolean"/>
<!-- column-name gchararray1 -->
<!-- column-name User -->
<column type="gchararray"/>
<!-- column-name gchararray2 -->
<!-- column-name HomeDir -->
<column type="gchararray"/>
<!-- column-name gboolean2 -->
<!-- column-name DeleteHome -->
<column type="gboolean"/>
<!-- column-name gboolean3 -->
<!-- column-name DeleteHomeSensitivity -->
<column type="gboolean"/>
<!-- column-name gchararray3 -->
<!-- column-name UserName -->
<column type="gchararray"/>
<!-- column-name MainGroup -->
<column type="gchararray"/>
</columns>
</object>

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface domain="ubl-settings-usergroups">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-usergroups.css -->
@ -353,8 +353,11 @@
<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>
<item translatable="yes">Deny login</item>
<item translatable="yes">Block login with password</item>
<item translatable="yes">Unblock login with password</item>
<item translatable="yes">No password required</item>
</items>
</object>
<packing>

@ -94,7 +94,7 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">0</property>
</packing>
</child>
<child>
@ -136,47 +136,47 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="HashBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkSeparator">
<object class="GtkCheckButton" id="NoEncriptionCheck">
<property name="label" translatable="yes">Do not encrypt password</property>
<property name="visible">True</property>
<property name="can-focus">False</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">0</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="NoEncriptionCheck">
<property name="label" translatable="yes">Do not encrypt password</property>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="HashBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>

@ -235,8 +235,11 @@
<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>
<item translatable="yes">Deny login</item>
<item translatable="yes">Block login with password</item>
<item translatable="yes">Unblock login with password</item>
<item translatable="yes">No password required</item>
</items>
</object>
<packing>

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2
<!-- Generated with glade 3.40.0
ubl-settings-usergroups -
Copyright (C) UBGroup
@ -47,8 +47,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</object>
<object class="GtkListStore" id="UsersList">
<columns>
<!-- column-name Block -->
<column type="gboolean"/>
<!-- column-name BlockStatusImage -->
<column type="gchararray"/>
<!-- column-name UID -->
<column type="gchararray"/>
<!-- column-name Login -->
@ -363,9 +363,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="title" translatable="yes">Locked</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererToggle"/>
<object class="GtkCellRendererPixbuf"/>
<attributes>
<attribute name="active">0</attribute>
<attribute name="icon-name">0</attribute>
</attributes>
</child>
</object>

@ -286,10 +286,18 @@ msgstr ""
msgid "Accept"
msgstr ""
#: source/ubl-strings.h:87
msgid "Attention!"
msgstr ""
#: source/ubl-strings.h:88
msgid ""
"Are you sure want to encrypt all passwords?\n"
"This action can't be undone."
"All unencrypted password in configuration will be encrypted.\n"
"Are you sure want to encrypt all passwords? This action can't be undone."
msgstr ""
#: source/ubl-strings.h:89
msgid "Encrypt all unencrypted passwords"
msgstr ""
#: source/ubl-strings.h:89
@ -858,19 +866,19 @@ msgid "All system users"
msgstr ""
#: source/ubl-strings.h:253 source/ubl-strings.h:266
msgid "Users GID range"
msgid "Users UID range"
msgstr ""
#: source/ubl-strings.h:254 source/ubl-strings.h:267
msgid "User GID in system"
msgid "User UID in system"
msgstr ""
#: source/ubl-strings.h:255
msgid "Users UID range"
msgid "Users GID range"
msgstr ""
#: source/ubl-strings.h:256
msgid "User UID in system"
msgid "User GID in system"
msgstr ""
#: source/ubl-strings.h:258
@ -912,3 +920,41 @@ msgstr ""
#: source/ubl-strings.h:272
msgid "Maximum GID"
msgstr ""
#: source/ubl-strings.h:274
msgid "Deny login"
msgstr ""
#: source/ubl-strings.h:275
msgid "Block login with password"
msgstr ""
#: source/ubl-strings.h:276
msgid "Unblock login with password"
msgstr ""
#: source/ubl-strings.h:278
msgid "User(-s)"
msgstr ""
#: source/ubl-strings.h:278
msgid "is included into main group of users"
msgstr ""
#: source/ubl-strings.h:278
msgid "which will be deleted"
msgstr ""
#: source/ubl-strings.h:278
msgid "After reboot users"
msgstr ""
#: source/ubl-strings.h:278
msgid "main group will be set to default group"
msgstr ""
#: source/ubl-strings.h:279
msgid ""
"Some of users, chosen for deletion, are included as main group for other "
"users. This users will get default main group after reboot"
msgstr ""

@ -300,7 +300,7 @@ msgstr "Пароль не требуется"
#: source/ubl-strings.h:72
msgid "Set a password"
msgstr "Задать пароль"
msgstr "Установить пароль"
#: source/ubl-strings.h:73 source/ubl-strings.h:124
msgid "Encrypted"
@ -314,13 +314,20 @@ msgstr "Не зашифрован"
msgid "Accept"
msgstr "Принять"
#: source/ubl-strings.h:87
msgid "Attention!"
msgstr "Внимание!"
#: source/ubl-strings.h:88
msgid ""
"Are you sure want to encrypt all passwords?\n"
"This action can't be undone."
msgstr ""
"Вы уверены что хотите зашифровать все пароли?\n"
"Это действие нельзя отменить."
"All unencrypted password in configuration will be encrypted.\n"
"Are you sure want to encrypt all passwords? This action can't be undone."
msgstr "Все незашифрованные пароли, хранящиеся в конфигурации, будут зашифрованы.\n"
"Вы уверены, что хотите зашифровать все пароли? Это действие нельзя отменить."
#: source/ubl-strings.h:89
msgid "Encrypt all unencrypted passwords"
msgstr "Зашифровать все пароли"
#: source/ubl-strings.h:89
msgid "Encrypt all unencrypted passwords at global configuration"
@ -425,8 +432,10 @@ msgid ""
"- The name can consist of: lowercase Latin letters, numbers, underscores and "
"hyphens;\n"
"- Max name length: 32 symbols;"
msgstr "- Первым символом должна быть буква или подчёркивание\n"
"- Имя может состоять из: строчных латинских букв, цифр, подчеркивания и дефиса\n"
msgstr ""
"- Первым символом должна быть буква или подчёркивание\n"
"- Имя может состоять из: строчных латинских букв, цифр, подчеркивания и "
"дефиса\n"
"- Максимальная длина имени: 32 символа"
#: source/ubl-strings.h:114
@ -978,3 +987,45 @@ msgstr "Минимальный GID"
#: source/ubl-strings.h:272
msgid "Maximum GID"
msgstr "Максимальный GID"
#: source/ubl-strings.h:274
msgid "Deny login"
msgstr "Запретить вход"
#: source/ubl-strings.h:275
msgid "Block login with password"
msgstr "Заблокировать вход по паролю"
#: source/ubl-strings.h:276
#, fuzzy
msgid "Unblock login with password"
msgstr "Разблокировать вход по паролю"
#: source/ubl-strings.h:278
msgid "User(-s)"
msgstr "Пользователь(-ли)"
#: source/ubl-strings.h:278
msgid "is included into main group of users"
msgstr "включен(-ы) в основную группу"
#: source/ubl-strings.h:278
msgid "which will be deleted"
msgstr "которая будет удалена"
#: source/ubl-strings.h:278
msgid "After reboot users"
msgstr "После перезагрузки пользователь(-ли)"
#: source/ubl-strings.h:278
msgid "main group will be set to default group"
msgstr "получит(-ат) основную группу по умолчанию"
#: source/ubl-strings.h:279
msgid ""
"Some of users, chosen for deletion, are included as main group for other "
"users. This users will get default main group after reboot"
msgstr ""
"Часть пользователей выбранных на удаление используются как основные группы "
"других пользователей. После перезагрузки эти пользователи получат основную "
"группу по умолчанию"

Loading…
Cancel
Save