From 5dde4fd5c7734064fe7023f10c5815407b439408 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 7 Mar 2024 11:40:58 +0600 Subject: [PATCH 01/15] Updates for new libraries version --- source/ubl-settings-usergroups.c | 144 ++++++++++--------- source/ubl-settings-usergroups.h | 33 ++++- ubl-settings-usergroups-group-creation.glade | 2 +- 3 files changed, 113 insertions(+), 66 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index aa9bebc..12bde81 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -5,12 +5,16 @@ config main_config; //functions int yon_load_proceed(YON_CONFIG_TYPE type){ - yon_config_load_register(YON_CONFIG_DEFAULT,"users","DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM",NULL); - yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]","[system]","SYSTEMBOOT_STATEMODE","[save]","SAVE_ROOTCOPY_CHANGES",NULL); - if (type!=YON_CONFIG_GLOBAL){ - yon_config_load_register_no_cleaning(YON_CONFIG_GLOBAL,"users","DEFAULTPASSWD DEFAULTROOTPASSWD",NULL); + yon_config_clean(); + yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); + if (type==YON_CONFIG_GLOBAL){ + yon_config_load_config(type,config_get_global_command,NULL); } if (type==YON_CONFIG_LOCAL){ + yon_config_load_config(type,config_get_local_command,NULL); + yon_config_load_config(YON_CONFIG_GLOBAL,config_get_global_only_parameters,NULL); + yon_config_set_status(DEFAULTPASSWD_parameter,-2); + yon_config_set_status(DEFAULTROOTPASSWD_parameter,-2); int size; config_str passwords = yon_config_load(get_passwords_command,&size); for (int i=0;i5){ char *temp = yon_char_append(local_value,parsed[5]); free(local_value); @@ -29,7 +33,7 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ } - } else if (strstr(key,"GROUPADD[")&&local_value){ + } else if (strstr(key,GROUPADD_SEARCH_macro)&&local_value){ if (parsed_size>4){ char *temp = yon_char_append(local_value,parsed[4]); free(local_value); @@ -56,8 +60,8 @@ 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); + char *def_groups = yon_config_get_by_key(USERGROUPS_parameter); + config_str users = yon_config_get_all_by_key(USERADD_parameter,&size); if (users){ for (int i=0;iUsersList,&iter); @@ -103,7 +107,7 @@ void yon_interface_update(main_window *widgets){ } free(users); } - config_str groups = yon_config_get_all_by_key("GROUPADD",&size); + config_str groups = yon_config_get_all_by_key(GROUPADD_parameter,&size); if (groups){ for (int i=0;iGroupsList,&iter); @@ -216,7 +220,7 @@ void yon_hide_passwords(template_saving_window *window){ 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[")){ + if (strstr(name,USERADD_SEARCH_macro)){ char *old=NULL; char *newv=NULL; int size = 0; @@ -262,7 +266,7 @@ void yon_hide_passwords(template_saving_window *window){ char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); gtk_list_store_set(window->list,&iter,7,new_string,-1); - } else if (strstr(name,"GROUPADD[")){ + } else if (strstr(name,GROUPADD_SEARCH_macro)){ char *old=NULL; char *newv=NULL; int size = 0; @@ -300,7 +304,7 @@ void yon_hide_passwords(template_saving_window *window){ gtk_list_store_set(window->list,&iter,7,new_string,-1); - } else if (strstr(name,"DEFAULTPASSWD")){ + } else if (strstr(name,DEFAULTPASSWD_parameter)){ char *old=NULL; char *newv=NULL; if (!yon_char_is_empty(new_value)&&strlen(new_value)>2&&new_value[0]=='%'&&new_value[1]=='%'){ @@ -326,7 +330,7 @@ void yon_hide_passwords(template_saving_window *window){ char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); gtk_list_store_set(window->list,&iter,7,new_string,-1); - } else if (strstr(name,"DEFAULTROOTPASSWD")){ + } else if (strstr(name,DEFAULTROOTPASSWD_parameter)){ char *old=NULL; char *newv=NULL; if (!yon_char_is_empty(new_value)&&strlen(new_value)>2&&new_value[0]=='%'&&new_value[1]=='%'){ @@ -355,7 +359,11 @@ void yon_hide_passwords(template_saving_window *window){ } } -void on_save_done(main_window *widgets){ +void on_save_done(main_window *widgets, config_str output, int size){ + char *final_output = yon_char_parsed_to_string(output,size,""); + printf("testove%s\n",final_output); + free(final_output); + yon_char_parsed_free(output,size); on_config_update(NULL,widgets); } @@ -363,7 +371,7 @@ void on_save_done(main_window *widgets){ void on_config_save(GtkWidget *self, main_window *widgets){ yon_accept_changes(); yon_samba_sync_proceed(); - template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL); if (window){ if (main_config.load_mode==0){ GtkTreeIter iter; @@ -376,7 +384,7 @@ void on_config_save(GtkWidget *self, main_window *widgets){ config_str new_parsed = yon_char_parse(new_value,&new_size,":"); if (old_parsed&&new_parsed){ char *parameter_type = yon_char_divide_search(parameter,"[",-1); - if (!strcmp(parameter_type,"USERADD")){ + if (!strcmp(parameter_type,USERADD_parameter)){ if (old_size>5){ old_parsed = yon_char_parsed_rip(old_parsed,&old_size,5); @@ -394,7 +402,7 @@ void on_config_save(GtkWidget *self, main_window *widgets){ yon_char_parsed_free(old_parsed,old_size); yon_char_parsed_free(new_parsed,new_size); - } else if (!strcmp(parameter_type,"GROUPADD")){ + } else if (!strcmp(parameter_type,GROUPADD_parameter)){ if (old_size>3){ old_parsed = yon_char_parsed_rip(old_parsed,&old_size,3); @@ -425,7 +433,7 @@ void on_config_save(GtkWidget *self, main_window *widgets){ void on_config_global_save(GtkWidget *self, main_window *widgets){ yon_accept_changes(); yon_samba_sync_proceed(); - template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL); if (window){ yon_hide_passwords(window); } @@ -433,7 +441,7 @@ void on_config_global_save(GtkWidget *self, main_window *widgets){ void on_config_local_save(GtkWidget *self, main_window *widgets){ int size; - config_str keys = yon_config_get_all_by_key("USERADD[",&size); + config_str keys = yon_config_get_all_by_key(USERADD_SEARCH_macro,&size); int passw_size; config_str passwords = NULL; for (int i=0;iWindow),"destroy",G_CALLBACK(on_save_window_close_update),widgets); @@ -469,11 +479,11 @@ void on_config_local_save(GtkWidget *self, main_window *widgets){ void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SambaCheck))){ - if (!yon_config_append("SAVE_ROOTCOPY_CHANGES","/var/lib/samba",",")){ - yon_config_register("SAVE_ROOTCOPY_CHANGES","[save]","/var/lib/samba"); + if (!yon_config_append(SAVE_ROOTCOPY_CHANGES_parameter,"/var/lib/samba",",")){ + yon_config_register(SAVE_ROOTCOPY_CHANGES_parameter,SAVE_ROOTCOPY_CHANGES_get_command,"/var/lib/samba"); } } else { - yon_config_remove_element("SAVE_ROOTCOPY_CHANGES","/var/lib/samba",","); + yon_config_remove_element(SAVE_ROOTCOPY_CHANGES_parameter,"/var/lib/samba",","); } on_subwindow_close(self); } @@ -730,7 +740,7 @@ yon_savasettings_window *yon_saving_settings_new(){ gtk_widget_show(window->Window); yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"savingSettingsWindow"); gtk_window_set_title(GTK_WINDOW(window->Window),SAVESETTINGS_TITLE_LABEL); - char *string = yon_config_get_by_key("SAVE_ROOTCOPY_CHANGES"); + char *string = yon_config_get_by_key(SAVE_ROOTCOPY_CHANGES_parameter); if (!yon_char_is_empty(string)&&strstr(string,"/var/lib/samba")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SambaCheck),1); } @@ -926,35 +936,35 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window void on_additional_settings_save(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window){ const char *default_user = (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry)); if (!yon_char_is_empty(default_user)){ - yon_config_register("DEFAULTUSER","users",yon_char_new((char*)default_user)); + yon_config_register(DEFAULTUSER_parameter,"users",yon_char_new((char*)default_user)); } else { - yon_config_remove_by_key("DEFAULTUSER"); + 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; if (!yon_char_is_empty(default_password)){ - yon_config_register("DEFAULTPASSWD","users",default_password); + yon_config_register(DEFAULTPASSWD_parameter,"users",default_password); } else { - yon_config_remove_by_key("DEFAULTPASSWD"); + 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; if (!yon_char_is_empty(root_password)){ - yon_config_register("DEFAULTROOTPASSWD","users",root_password); + yon_config_register(DEFAULTROOTPASSWD_parameter,"users",root_password); } else { - yon_config_remove_by_key("DEFAULTROOTPASSWD"); + yon_config_remove_by_key(DEFAULTROOTPASSWD_parameter); } int user_k_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck)); if (user_k_admin){ - yon_config_register("ADDADM","users","yes"); + yon_config_register(ADDADM_parameter,"users","yes"); } else { - yon_config_register("ADDADM","users","no"); + yon_config_register(ADDADM_parameter,"users","no"); } if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordHashCombo))!=0){ char *hash = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PasswordHashCombo)); if (!yon_char_is_empty(hash)){ - yon_config_register("HASHPASSWD","users",hash); + yon_config_register(HASHPASSWD_parameter,"users",hash); } }else { - yon_config_remove_by_key("HASHPASSWD"); + yon_config_remove_by_key(HASHPASSWD_parameter); } } @@ -974,27 +984,27 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window void on_users_boot_toggled(GtkToggleButton *self){ if (gtk_toggle_button_get_active(self)){ - char *parameter = yon_config_get_by_key("USERADD_SYNC"); + char *parameter = yon_config_get_by_key(USERADD_SYNC_parameter); if (!parameter){ - yon_config_register("USERADD_SYNC","users","boot"); + yon_config_register(USERADD_SYNC_parameter,"users","boot"); } else { - yon_config_append("USERADD_SYNC","boot",","); + yon_config_append(USERADD_SYNC_parameter,"boot",","); } } else { - yon_config_remove_element("USERADD_SYNC","boot",","); + yon_config_remove_element(USERADD_SYNC_parameter,"boot",","); } } void on_users_shutdown_toggled(GtkToggleButton *self){ if (gtk_toggle_button_get_active(self)){ - char *parameter = yon_config_get_by_key("USERADD_SYNC"); + char *parameter = yon_config_get_by_key(USERADD_SYNC_parameter); if (!parameter){ - yon_config_register("USERADD_SYNC","users","shutdown"); + yon_config_register(USERADD_SYNC_parameter,"users","shutdown"); } else { - yon_config_append("USERADD_SYNC","shutdown",","); + yon_config_append(USERADD_SYNC_parameter,"shutdown",","); } } else { - yon_config_remove_element("USERADD_SYNC","shutdown",","); + yon_config_remove_element(USERADD_SYNC_parameter,"shutdown",","); } } @@ -1020,7 +1030,7 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow"); gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL); - char *sync_parameters = yon_config_get_by_key("USERADD_SYNC"); + char *sync_parameters = yon_config_get_by_key(USERADD_SYNC_parameter); if (sync_parameters){ if (strstr(sync_parameters,"boot")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1); @@ -1065,30 +1075,30 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ } yon_char_parsed_free(hash_algos,hash_size); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordHashCombo),0); - char *default_user = yon_config_get_by_key("DEFAULTUSER"); + char *default_user = yon_config_get_by_key(DEFAULTUSER_parameter); if (!yon_char_is_empty(default_user)) gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user); 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"); + 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")) + if(!yon_config_check_ignore(DEFAULTPASSWD_parameter)) gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2); } - char *root_password = yon_config_get_by_key("DEFAULTROOTPASSWD"); + 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")) + if(!yon_config_check_ignore(DEFAULTROOTPASSWD_parameter)) gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2); } - char *is_k_admin = yon_config_get_by_key("ADDADM"); + char *is_k_admin = yon_config_get_by_key(ADDADM_parameter); if (!yon_char_is_empty(is_k_admin)) if (!strcmp(is_k_admin,"yes")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1); - char *hash = yon_config_get_by_key("HASHPASSWD"); + char *hash = yon_config_get_by_key(HASHPASSWD_parameter); if (!yon_char_is_empty(hash)){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->PasswordHashCombo),hash); } @@ -1179,7 +1189,7 @@ void on_GID_update(GtkWidget *self, ubl_settings_usergroups_group_creation_windo if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){ int config_size=0; int final_size=0; - config_str config_groups = yon_config_get_all_by_key("GROUPADD",&config_size); + config_str config_groups = yon_config_get_all_by_key(GROUPADD_parameter,&config_size); yon_char_parsed_prepend_strings(config_groups,config_size,":"); config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_groups,config_size,&final_size); long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID; @@ -1260,7 +1270,8 @@ void on_group_save(GtkWidget *self, dictionary *dict){ int shutdown_sync_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupaddShutdownCheck)); if (shutdown_sync_active){ - yon_config_register(GROUPADD_SYNC(group_name),"users","shutdown"); + char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD_SYNC(group_name)); + yon_config_register(GROUPADD_SYNC(group_name),final_command,"shutdown"); } else { yon_config_remove_by_key(GROUPADD_SYNC(group_name)); } @@ -1273,7 +1284,8 @@ void on_group_save(GtkWidget *self, dictionary *dict){ ":",yon_char_return_if_exist(admins,"x"), ":",yon_char_return_if_exist(password,"x"), NULL); - yon_config_register(GROUPADD(group_name),"users",final_string); + char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD_SYNC(group_name)); + yon_config_register(GROUPADD(group_name),final_command,final_string); GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList); if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)) @@ -1418,7 +1430,7 @@ void on_standard_groups_accept(GtkWidget *self, ubl_settings_usergroups_group_wi standard_groups=extend_groups; } } - yon_config_register("USERGROUPS","users",standard_groups); + yon_config_register(USERGROUPS_parameter,USERGROUPS_get_command,standard_groups); on_subwindow_close(self); } @@ -1447,7 +1459,7 @@ void on_standard_groups_open(GtkWidget *self, main_window *widgets){ } g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_standard_groups_accept),window); gtk_window_set_transient_for(GTK_WINDOW(window->GroupsWindow),GTK_WINDOW(widgets->Window)); - char *groups = yon_config_get_by_key("USERGROUPS"); + char *groups = yon_config_get_by_key(USERGROUPS_parameter); if (!yon_char_is_empty(groups)){ GtkTreeIter iter; int size; @@ -1703,7 +1715,7 @@ void on_UID_update(GtkWidget *self, ubl_settings_usergroups_user_window *window) if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){ int config_size=0; int final_size=0; - config_str config_users = yon_config_get_all_by_key("USERADD[",&config_size); + config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size); yon_char_parsed_prepend_strings(config_users,config_size,":"); config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size); long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))?0:main_config.MINGID; @@ -1852,7 +1864,7 @@ 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"); + char *default_groups = yon_config_get_by_key(USERGROUPS_parameter); if (!yon_char_is_empty(default_groups)&&!strcmp(default_groups,additional_groups)){ additional_groups=""; } @@ -1969,11 +1981,13 @@ void on_user_save(GtkWidget *self, dictionary *dict){ ":",yon_char_return_if_exist(password,""), NULL); - yon_config_register(USERADD(login),"users",final_user); + char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(login)); + yon_config_register(USERADD(login),final_command,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); + final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(login)); + yon_config_register(USERSHADOW(login),final_command,shadow_string); if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){ yon_config_remove_by_key(USERSHADOW(window->old_username)); } @@ -1983,14 +1997,16 @@ void on_user_save(GtkWidget *self, dictionary *dict){ } if (!yon_char_is_empty(useradd_sync_string)){ - yon_config_register(USERADD_SYNC(login),"users",useradd_sync_string); + final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD_SYNC(login)); + yon_config_register(USERADD_SYNC(login),final_command,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)){ - yon_config_register(USERSHADOW_SYNC(login),"users",usershadow_sync_string); + final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW_SYNC(login)); + yon_config_register(USERSHADOW_SYNC(login),final_command,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)); } @@ -2010,7 +2026,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,yon_config_get_by_key("USERGROUPS")), + 5,yon_char_return_if_exist(additional_groups,yon_config_get_by_key(USERGROUPS_parameter)), 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); @@ -2301,7 +2317,7 @@ 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"); + char *default_groups = yon_config_get_by_key(USERGROUPS_parameter); 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); @@ -2371,7 +2387,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ 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"); + char *default_groups = yon_config_get_by_key(USERGROUPS_parameter); gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), default_groups); } diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index a8a7e83..22d7cd1 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -42,7 +42,7 @@ #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 samba_sync_command(user) yon_char_unite("sudo smbpasswd -Las ",user,NULL) +#define samba_sync_command(user) yon_char_unite("sudo smbpasswd -Lan ",user,NULL) #define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL) #define get_passwords_command "ubconfig --target global get [users] USERADD[*] GROUPADD[*]" #define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL)) @@ -71,6 +71,37 @@ #define password_hash_get_command(passwd) yon_char_append("mkpasswd2 ",passwd) +#define config_get_local_command "ubconfig --source system get users DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]","ubconfig --source system get [system] SYSTEMBOOT_STATEMODE","ubconfig --source system get [save] SAVE_ROOTCOPY_CHANGES" +#define config_get_global_command "ubconfig --source global get users DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]","ubconfig --source global get [system] SYSTEMBOOT_STATEMODE","ubconfig --source global get [save] SAVE_ROOTCOPY_CHANGES" +#define config_get_default_command "ubconfig --source default get users DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM" + +#define config_get_global_only_parameters "ubconfig --source global get users DEFAULTPASSWD DEFAULTROOTPASSWD" +#define config_get_local_only_parameters "" + +#define SAVE_ROOTCOPY_CHANGES_get_command "ubconfig --source global get [save] SAVE_ROOTCOPY_CHANGES" +#define DEFAULTUSER_get_command "ubconfig --source global get [users] DEFAULTUSER" +#define DEFAULTPASSWD_get_command "ubconfig --source global get [users] DEFAULTPASSWD" +#define DEFAULTROOTPASSWD_get_command "ubconfig --source global get [users] DEFAULTROOTPASSWD" +#define ADDADM_get_command "ubconfig --source global get [users] ADDADM" +#define HASHPASSWD_get_command "ubconfig --source global get [users] HASHPASSWD" +#define USERADD_SYNC_get_command "ubconfig --source global get [users] USERADD_SYNC" +#define USERGROUPS_get_command "ubconfig --source global get [users] USERGROUPS" + +#define USERGROUPS_parameter "USERGROUPS" +#define DEFAULTPASSWD_parameter "DEFAULTPASSWD" +#define DEFAULTROOTPASSWD_parameter "DEFAULTROOTPASSWD" +#define ADDADM_parameter "ADDADM" +#define HASHPASSWD_parameter "HASHPASSWD" +#define DEFAULTUSER_parameter "DEFAULTUSER" +#define SAVE_ROOTCOPY_CHANGES_parameter "SAVE_ROOTCOPY_CHANGES" +#define USERADD_parameter "USERADD" +#define GROUPADD_parameter "GROUPADD" +#define USERADD_SHADOW_parameter "USERADD_SHADOW" +#define GROUPADD_SHADOW_parameter "GROUPADD_SHADOW" +#define USERADD_SYNC_parameter "USERADD_SYNC" + +#define USERADD_SEARCH_macro "USERADD[" +#define GROUPADD_SEARCH_macro "GROUPADD[" typedef char* string; string version_application; diff --git a/ubl-settings-usergroups-group-creation.glade b/ubl-settings-usergroups-group-creation.glade index c613619..46c7ce8 100644 --- a/ubl-settings-usergroups-group-creation.glade +++ b/ubl-settings-usergroups-group-creation.glade @@ -152,7 +152,7 @@ True True - com.ublinux.ubl-settings-usergroups.profile-symbolic + com.ublinux.ubl-settings-usergroups.group-symbolic group_name -- 2.35.1 From 730eabd375e91f093190b5494b7a485162fccdd0 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 11 Mar 2024 15:02:35 +0600 Subject: [PATCH 02/15] Fixed samba syncing and home dir deletion time; Fixed saving window password hiding function; Changed user deactivation symbol; Custom configuration loading --- source/ubl-settings-usergroups.c | 69 ++++++++++++++++++++++++-------- source/ubl-settings-usergroups.h | 34 +--------------- 2 files changed, 54 insertions(+), 49 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 12bde81..af0c97a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -8,10 +8,10 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ yon_config_clean(); yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); if (type==YON_CONFIG_GLOBAL){ - yon_config_load_config(type,config_get_global_command,NULL); + yon_config_load_config(type,config_get_command("global"),NULL); } if (type==YON_CONFIG_LOCAL){ - yon_config_load_config(type,config_get_local_command,NULL); + yon_config_load_config(type,config_get_command("global"),NULL); yon_config_load_config(YON_CONFIG_GLOBAL,config_get_global_only_parameters,NULL); yon_config_set_status(DEFAULTPASSWD_parameter,-2); yon_config_set_status(DEFAULTROOTPASSWD_parameter,-2); @@ -51,7 +51,21 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ } return 1; } - + else if (type==YON_CONFIG_CUSTOM){ + char *path; + GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter,"*.ini"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); + int response = gtk_dialog_run(GTK_DIALOG(dialog)); + if (response == GTK_RESPONSE_ACCEPT){ + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + if (!yon_char_is_empty(file)){ + path=file; + } + } else return 0; + yon_config_load_config(type,config_get_command(path),NULL); + } } @@ -182,6 +196,15 @@ void on_config_global_load(GtkWidget *self, main_window *widgets){ main_config.load_mode=0; yon_interface_update(widgets); } + +void on_config_custom_load(GtkWidget *self,main_window *widgets){ + yon_load_proceed(YON_CONFIG_GLOBAL); + textdomain(template_ui_LocaleName); + yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + textdomain(LocaleName); + main_config.load_mode=0; + yon_interface_update(widgets); +} void yon_samba_sync_proceed(){ if (main_config.sync_users){ @@ -264,7 +287,7 @@ void yon_hide_passwords(template_saving_window *window){ newv=new_value; } char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); - gtk_list_store_set(window->list,&iter,7,new_string,-1); + gtk_list_store_set(window->list,&iter,4,new_string,-1); } else if (strstr(name,GROUPADD_SEARCH_macro)){ char *old=NULL; @@ -301,7 +324,7 @@ void yon_hide_passwords(template_saving_window *window){ newv=new_value; } char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); - gtk_list_store_set(window->list,&iter,7,new_string,-1); + gtk_list_store_set(window->list,&iter,4,new_string,-1); } else if (strstr(name,DEFAULTPASSWD_parameter)){ @@ -328,7 +351,7 @@ void yon_hide_passwords(template_saving_window *window){ } } char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); - gtk_list_store_set(window->list,&iter,7,new_string,-1); + gtk_list_store_set(window->list,&iter,4,new_string,-1); } else if (strstr(name,DEFAULTROOTPASSWD_parameter)){ char *old=NULL; @@ -353,7 +376,7 @@ void yon_hide_passwords(template_saving_window *window){ } } char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); - gtk_list_store_set(window->list,&iter,7,new_string,-1); + gtk_list_store_set(window->list,&iter,4,new_string,-1); } } @@ -361,17 +384,22 @@ void yon_hide_passwords(template_saving_window *window){ void on_save_done(main_window *widgets, config_str output, int size){ char *final_output = yon_char_parsed_to_string(output,size,""); - printf("testove%s\n",final_output); + printf("%s\n",final_output); free(final_output); yon_char_parsed_free(output,size); on_config_update(NULL,widgets); + if (main_config.load_mode==1){ + yon_accept_changes(); + yon_samba_sync_proceed(); + } + } void on_config_save(GtkWidget *self, main_window *widgets){ yon_accept_changes(); yon_samba_sync_proceed(); - template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL); + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL); if (window){ if (main_config.load_mode==0){ GtkTreeIter iter; @@ -431,9 +459,7 @@ void on_config_save(GtkWidget *self, main_window *widgets){ } void on_config_global_save(GtkWidget *self, main_window *widgets){ - yon_accept_changes(); - yon_samba_sync_proceed(); - template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL); + template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL); if (window){ yon_hide_passwords(window); } @@ -465,7 +491,7 @@ void on_config_local_save(GtkWidget *self, main_window *widgets){ yon_samba_sync_proceed(); // char *output = yon_config_save_simple(YON_CONFIG_LOCAL,"system"); // if (output) puts(output); - template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_local_command,NULL); + template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL); if (window){ yon_hide_passwords(window); g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_save_window_close_update),widgets); @@ -477,6 +503,13 @@ void on_config_local_save(GtkWidget *self, main_window *widgets){ } } +void on_config_custom_save(GtkWidget *self, main_window *widgets){ + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL); + if (window){ + yon_hide_passwords(window); + } +} + void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SambaCheck))){ if (!yon_config_append(SAVE_ROOTCOPY_CHANGES_parameter,"/var/lib/samba",",")){ @@ -1842,9 +1875,9 @@ void on_user_save(GtkWidget *self, dictionary *dict){ if (deactivate){ if (strlen(password)>1&&password[0]=='%'&&password[1]=='%'){ char *temp = yon_char_replace(password,"%%","!!"); - password = yon_char_replace(temp,"!!","%%!*"); + password = yon_char_replace(temp,"!!","%%!"); } else { - password = yon_char_append("!*",password); + password = yon_char_append("!",password); } } @@ -2428,10 +2461,10 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ free(yon_char_divide(window->old_password,1)); } if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ - if (strstr(parameters[5],"!*")){ + if (strstr(parameters[5],"!")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1); } - yon_char_divide(strstr(parameters[5],"!*"),1); + yon_char_divide(strstr(parameters[5],"!"),1); if (!yon_char_is_empty(parameters[5])){ gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2); @@ -2745,9 +2778,11 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->MainNotebook),"switch-page",G_CALLBACK(on_notebook_page_changed),widgets); g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),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); + g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); yon_rmb_menu_setup(widgets->UsersTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); yon_rmb_menu_setup(widgets->GroupsTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 22d7cd1..55beca7 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -71,8 +71,7 @@ #define password_hash_get_command(passwd) yon_char_append("mkpasswd2 ",passwd) -#define config_get_local_command "ubconfig --source system get users DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]","ubconfig --source system get [system] SYSTEMBOOT_STATEMODE","ubconfig --source system get [save] SAVE_ROOTCOPY_CHANGES" -#define config_get_global_command "ubconfig --source global get users DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]","ubconfig --source global get [system] SYSTEMBOOT_STATEMODE","ubconfig --source global get [save] SAVE_ROOTCOPY_CHANGES" +#define config_get_command(source) yon_char_unite("ubconfig --source ",source," get users DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]",NULL),yon_char_unite("ubconfig --source ",source," get [system] SYSTEMBOOT_STATEMODE",NULL),yon_char_unite("ubconfig --source ",source," get [save] SAVE_ROOTCOPY_CHANGES",NULL) #define config_get_default_command "ubconfig --source default get users DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM" #define config_get_global_only_parameters "ubconfig --source global get users DEFAULTPASSWD DEFAULTROOTPASSWD" @@ -148,36 +147,7 @@ typedef struct { } config; typedef struct { -// Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT { - GtkWidget *Window; - GtkWidget *HeadLabel; - GtkWidget *PlugBox; - - GtkWidget *HeadOverlay; - GtkWidget *HeadImage; - GtkWidget *HeadBox; - GtkWidget *HeadTitleLabel; - GtkWidget *HeadInfoLabel; - - GtkWidget *StatusBox; - GtkWidget *StatusIcon; - GtkWidget *StatusLabel; - - GtkWidget *SaveMenuItem; - GtkWidget *SaveGlobalMenuItem; - GtkWidget *SaveLocalMenuItem; - GtkWidget *RightBox; - - GtkWidget *LoadGlobalMenuItem; - GtkWidget *LoadLocalMenuItem; - GtkWidget *LeftBox; - - GtkWidget *DocumentationMenuItem; - GtkWidget *AboutMenuItem; - - GtkWidget *InterfaceBox; -// } Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT -// Type custom parameters below: + template_window_fields GtkListStore *CacheAlgList; GtkListStore *GroupsList; GtkListStore *UsersList; -- 2.35.1 From 93707ea46a7be7bc0d3e4ad780b14734bc4c2781 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 11 Mar 2024 17:44:08 +0600 Subject: [PATCH 03/15] Fixed loading from specific file --- source/ubl-settings-usergroups.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index af0c97a..d8d132a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -11,7 +11,7 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ yon_config_load_config(type,config_get_command("global"),NULL); } if (type==YON_CONFIG_LOCAL){ - yon_config_load_config(type,config_get_command("global"),NULL); + yon_config_load_config(type,config_get_command("system"),NULL); yon_config_load_config(YON_CONFIG_GLOBAL,config_get_global_only_parameters,NULL); yon_config_set_status(DEFAULTPASSWD_parameter,-2); yon_config_set_status(DEFAULTROOTPASSWD_parameter,-2); @@ -57,13 +57,18 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_add_pattern(filter,"*.ini"); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); + gtk_widget_show(dialog); int response = gtk_dialog_run(GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_ACCEPT){ char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); if (!yon_char_is_empty(file)){ path=file; } - } else return 0; + gtk_widget_destroy(dialog); + } else { + gtk_widget_destroy(dialog); + return 0; + } yon_config_load_config(type,config_get_command(path),NULL); } @@ -198,11 +203,11 @@ void on_config_global_load(GtkWidget *self, main_window *widgets){ } void on_config_custom_load(GtkWidget *self,main_window *widgets){ - yon_load_proceed(YON_CONFIG_GLOBAL); + yon_load_proceed(YON_CONFIG_CUSTOM); 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=3; yon_interface_update(widgets); } @@ -334,7 +339,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){ + if (main_config.load_mode==1){ newv=new_value; } else { newv="*******"; @@ -343,7 +348,7 @@ void yon_hide_passwords(template_saving_window *window){ newv="*******"; } if (!yon_char_is_empty(old_value)){ - if (main_config.load_mode){ + if (main_config.load_mode==1){ old = yon_char_new("*******"); } else { @@ -360,7 +365,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){ + if (main_config.load_mode==1){ newv=new_value; } else { newv="*******"; @@ -369,7 +374,7 @@ void yon_hide_passwords(template_saving_window *window){ newv="*******"; } if (!yon_char_is_empty(old_value)){ - if (main_config.load_mode){ + if (main_config.load_mode==1){ old = yon_char_new("*******"); } else { old = yon_char_unite("",old_value,"",NULL); -- 2.35.1 From 0e2430c8fd530510365ca080cb838e2edaf4d63a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 11 Mar 2024 17:50:59 +0600 Subject: [PATCH 04/15] Russian localisation changes --- ubl-settings-usergroups_ru.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index aeb03e1..709c47c 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -75,7 +75,7 @@ msgstr "Применить" #: source/ubl-strings.h:19 msgid "User UID:" -msgstr "UID пользователя:" +msgstr "Идентификатор пользователя (UID):" #: source/ubl-strings.h:20 msgid "User name (description):" @@ -337,7 +337,7 @@ msgstr "Добавить группу" #: source/ubl-strings.h:99 msgid "Group id:" -msgstr "ID Группы:" +msgstr "Идентификатор группы (GID):" #: source/ubl-strings.h:100 msgid "Group name:" -- 2.35.1 From 8a51b49829109be75cda0d799edc3c027b10338a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Mar 2024 14:50:01 +0600 Subject: [PATCH 05/15] added checking function for showing RMB menu --- source/ubl-settings-usergroups.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index d8d132a..a46c259 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2618,7 +2618,16 @@ void on_config_update(GtkWidget *self, main_window *widgets){ } } - + int *yon_element_chosen(GtkWidget *target){ + GtkTreeModel *model; + GtkTreeIter iter; + model = gtk_tree_view_get_model(GTK_TREE_VIEW(target)); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(target)),&model,&iter)){ + return (int*)0x1; + } + return (int*)0x0; + } + /**config_init() * [EN] * @@ -2734,6 +2743,8 @@ void on_notebook_page_changed(GtkWidget *self, GtkWidget *page, int num, main_wi } } +typedef int (*RmbCheck)(void*); + /**yon_main_window_complete(main_window *widgets) * [EN] * @@ -2788,8 +2799,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); g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); - yon_rmb_menu_setup(widgets->UsersTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); - yon_rmb_menu_setup(widgets->GroupsTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); + yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); + yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree)); -- 2.35.1 From ced808070f3ad7c02bb3a1d47bda5508d2b29e5e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Mar 2024 15:34:42 +0600 Subject: [PATCH 06/15] Icons removal from entries --- ubl-settings-usergroups-additional-settings.glade | 3 --- ubl-settings-usergroups-group-creation.glade | 2 -- ubl-settings-usergroups-user.glade | 2 -- 3 files changed, 7 deletions(-) diff --git a/ubl-settings-usergroups-additional-settings.glade b/ubl-settings-usergroups-additional-settings.glade index b513aa7..7618860 100644 --- a/ubl-settings-usergroups-additional-settings.glade +++ b/ubl-settings-usergroups-additional-settings.glade @@ -101,7 +101,6 @@ True True - com.ublinux.ubl-settings-usergroups.profile-symbolic superadmin @@ -180,7 +179,6 @@ True False * - com.ublinux.ubl-settings-usergroups.key-symbolic ******** password @@ -257,7 +255,6 @@ True False * - com.ublinux.ubl-settings-usergroups.key-symbolic ******** password diff --git a/ubl-settings-usergroups-group-creation.glade b/ubl-settings-usergroups-group-creation.glade index 46c7ce8..78c8766 100644 --- a/ubl-settings-usergroups-group-creation.glade +++ b/ubl-settings-usergroups-group-creation.glade @@ -152,7 +152,6 @@ True True - com.ublinux.ubl-settings-usergroups.group-symbolic group_name @@ -370,7 +369,6 @@ True False * - com.ublinux.ubl-settings-usergroups.key-symbolic ******** diff --git a/ubl-settings-usergroups-user.glade b/ubl-settings-usergroups-user.glade index 7320fe6..cd0c784 100644 --- a/ubl-settings-usergroups-user.glade +++ b/ubl-settings-usergroups-user.glade @@ -194,7 +194,6 @@ True True - com.ublinux.ubl-settings-usergroups.profile-symbolic login_name @@ -252,7 +251,6 @@ True False - com.ublinux.ubl-settings-usergroups.key-symbolic False False ****** -- 2.35.1 From 4ee7565aefae57e637e988657a75e286d6a939b0 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Mar 2024 16:34:40 +0600 Subject: [PATCH 07/15] Global and local config saving fixes --- source/ubl-settings-usergroups.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index a46c259..b0a7c37 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -146,9 +146,9 @@ void yon_interface_update(main_window *widgets){ } if (!strcmp(parameters[1],"x")) parameters[1]=""; char *pars=""; - if (parameters_size>3&&strcmp(parameters[3],"x")&&strcmp(parameters[3],"")){ + if (parameters_size>4&&strcmp(parameters[4],"x")&&strcmp(parameters[4],"")){ - if (!check_is_password_hash(parameters[3])&¶meters[5][0]!='%'&¶meters[5][1]!='%'){ + if (!check_is_password_hash(parameters[4])&¶meters[4][0]!='%'&¶meters[4][1]!='%'){ pars = ENCRYPTED_LABEL; } else { pars = UNENCRYPTED_LABEL; @@ -180,10 +180,6 @@ void yon_interface_update(main_window *widgets){ } } -void on_save_window_close_update(GtkWidget *self, main_window *widgets){ - yon_interface_update(widgets); -} - void on_config_local_load(GtkWidget *self, main_window *widgets){ yon_load_proceed(YON_CONFIG_LOCAL); textdomain(template_ui_LocaleName); @@ -456,10 +452,8 @@ void on_config_save(GtkWidget *self, main_window *widgets){ } } } - } else { - yon_hide_passwords(window); - g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_save_window_close_update),widgets); } + yon_hide_passwords(window); } } @@ -499,7 +493,6 @@ void on_config_local_save(GtkWidget *self, main_window *widgets){ template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL); if (window){ yon_hide_passwords(window); - g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_save_window_close_update),widgets); } for (int i=0;i Date: Tue, 12 Mar 2024 17:13:33 +0600 Subject: [PATCH 08/15] Fixed undeletable group --- source/ubl-settings-usergroups.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index b0a7c37..e0fc0b8 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -622,7 +622,7 @@ void yon_group_delete_confirmation_save(GtkWidget *self, dictionary *dict){ int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->GroupsList),&iter); for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->GroupsList),&iter)){ char *name; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&iter,2,&name,-1); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&iter,1,&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; -- 2.35.1 From 52e84cda702a7208ffa2b5502fca37d6f4b13226 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Mar 2024 17:51:38 +0600 Subject: [PATCH 09/15] Fixed groups password status --- source/ubl-settings-usergroups.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index e0fc0b8..cbe52c6 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1321,8 +1321,21 @@ void on_group_save(GtkWidget *self, dictionary *dict){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList); if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)) gtk_list_store_append(widgets->GroupsList,&iter); - char *passwor = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); - gtk_list_store_set(widgets->GroupsList,&iter,0,strcmp(gid,"x")?gid:"",1,group_name,2,group_users,3,yon_char_append(non_unique,gsystem),4,gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo))==0?PASSWORD_NO_SET_LABEL:check_is_password_hash(passwor)&&passwor[0]=='%'?UNENCRYPTED_LABEL:ENCRYPTED_LABEL,-1); + char *passwor = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); + char *password_status=NULL; + int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo)); + if (password_active==0) + password_status=DEFAULT_USER_LABEL; + else if (password_active==1) + password_status = NO_PASSWORD_LABEL; + else if (password_active == 2){ + if (check_is_password_hash(passwor)){ + password_status=UNENCRYPTED_LABEL; + } else { + password_status=UNENCRYPTED_LABEL; + } + } + gtk_list_store_set(widgets->GroupsList,&iter,0,strcmp(gid,"x")?gid:"",1,group_name,2,group_users,3,yon_char_append(non_unique,gsystem),4,password_status,-1); on_subwindow_close(self); } -- 2.35.1 From 5a65b080a7471127f277aa738f86e25949c56f86 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Mar 2024 18:03:58 +0600 Subject: [PATCH 10/15] Fixed deletion of groups --- source/ubl-settings-usergroups.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index cbe52c6..6d84ee0 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -630,8 +630,7 @@ void yon_group_delete_confirmation_save(GtkWidget *self, dictionary *dict){ gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,-1); if (!strcmp(name,name_check)&&delete){ gtk_list_store_remove(widgets->GroupsList,&iter); - yon_config_remove_by_key(USERADD(name)); - yon_config_remove_by_key(USERSHADOW(name)); + yon_config_remove_by_key(GROUPADD(name)); gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->GroupsList),&iter); } } -- 2.35.1 From 39efcaabdbda1aeb48a8c3bd466d77a523de33a6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 13 Mar 2024 13:54:52 +0600 Subject: [PATCH 11/15] Fixed checking of disabled groups --- source/ubl-settings-usergroups.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 6d84ee0..56b7782 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -113,6 +113,7 @@ void yon_interface_update(main_window *widgets){ } gtk_list_store_set(widgets->UsersList,&iter, + 0,parameters[5][0]=='!'||parameters[5][0]=='*', 2,login, 3,parameters_size>0?parameters[0]:"", 1,parameters_size>1&&!yon_char_is_empty(parameters[1])?parameters[1]:"", -- 2.35.1 From ada02e902f15c4c02d1190688f6cabed6d747f89 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 14 Mar 2024 16:26:23 +0600 Subject: [PATCH 12/15] Changed right mouse button menu --- source/ubl-settings-usergroups.c | 29 ++++++++++++++++++++--------- source/ubl-settings-usergroups.h | 21 +++++---------------- ubl-settings-usergroups.glade | 8 ++++++++ 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 56b7782..f19d3c9 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2625,13 +2625,7 @@ void on_config_update(GtkWidget *self, main_window *widgets){ } int *yon_element_chosen(GtkWidget *target){ - GtkTreeModel *model; - GtkTreeIter iter; - model = gtk_tree_view_get_model(GTK_TREE_VIEW(target)); - if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(target)),&model,&iter)){ - return (int*)0x1; - } - return (int*)0x0; + return (int*)0x1; } /**config_init() @@ -2751,6 +2745,21 @@ void on_notebook_page_changed(GtkWidget *self, GtkWidget *page, int num, main_wi typedef int (*RmbCheck)(void*); +gboolean on_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){ + if (event->button==3){ + GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); + GtkTreeIter iter; + if (gtk_tree_model_get_iter_first(model,&iter)&>k_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),&model,&iter)){ + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),1); + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->next->data),1); + } else { + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),0); + gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->next->data),0); + } + } + return 0; +} + /**yon_main_window_complete(main_window *widgets) * [EN] * @@ -2805,9 +2814,11 @@ 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); g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); - yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); - yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); + widgets->UsersMenu = yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); + widgets->GroupsMenu = yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL); + g_signal_connect(G_OBJECT(widgets->UsersTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->UsersMenu); + g_signal_connect(G_OBJECT(widgets->GroupsTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->GroupsMenu); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree)); yon_load_proceed(YON_CONFIG_LOCAL); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 55beca7..e14a39b 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -66,6 +66,7 @@ #define USERSHADOW_SYNC(user) yon_char_unite("USERSHADOW_SYNC[",user,"]",NULL) #define GROUPADD_SYNC(user) yon_char_unite("GROUPADD_SYNC[",user,"]",NULL) +#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" @@ -107,22 +108,7 @@ string version_application; char *local; typedef struct { -// Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT { - int socket_id; - int load_socket_id; - int save_socket_id; - - int lock_help; - int lock_save_local; - int lock_save_global; - int lock_load_global; - int lock_load_system; - - int load_mode; - - int always_open_documentation; -// } Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT -// Type custom parameters below: : + template_config_fields config_str groups; int groups_size; config_str users; @@ -162,6 +148,9 @@ typedef struct { GtkWidget *GroupsTree; GtkWidget *MainNotebook; GtkWidget *SavingSettingsButton; + + rmb_menu_window *UsersMenu; + rmb_menu_window *GroupsMenu; } main_window; diff --git a/ubl-settings-usergroups.glade b/ubl-settings-usergroups.glade index 16713af..f201788 100644 --- a/ubl-settings-usergroups.glade +++ b/ubl-settings-usergroups.glade @@ -329,6 +329,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 Locked 0 @@ -344,6 +345,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 UID 1 @@ -359,6 +361,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 Login 2 @@ -374,6 +377,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True fixed 10 + 10 User name 3 @@ -390,6 +394,7 @@ name True fixed 10 + 10 Main group 4 @@ -406,6 +411,7 @@ group True fixed 10 + 10 Additional groups 5 @@ -425,6 +431,7 @@ groups True fixed 10 + 10 Additional parameters 6 @@ -443,6 +450,7 @@ parameters autosize 10 + 10 Password status 7 -- 2.35.1 From e4999dfb39f97a79675fc06e9e8ac4ef23a49a10 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 18 Mar 2024 16:49:03 +0600 Subject: [PATCH 13/15] Increased confirmation window minimal width --- ubl-settings-usergroups-confirmation.glade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubl-settings-usergroups-confirmation.glade b/ubl-settings-usergroups-confirmation.glade index a28ec6b..30a228a 100644 --- a/ubl-settings-usergroups-confirmation.glade +++ b/ubl-settings-usergroups-confirmation.glade @@ -30,7 +30,7 @@ - 450 + 650 300 False True -- 2.35.1 From 1eff53c85c335cef1a5066c2aa1223345a9009ac Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 19 Mar 2024 10:17:12 +0600 Subject: [PATCH 14/15] Fixed password saving for groups --- source/ubl-settings-usergroups.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index f19d3c9..51fa885 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -156,7 +156,7 @@ void yon_interface_update(main_window *widgets){ } } else { - pars = PASSWORD_NO_SET_LABEL; + pars = DEFAULT_USER_LABEL; } gtk_list_store_set(widgets->GroupsList,&iter, @@ -1307,7 +1307,18 @@ void on_group_save(GtkWidget *self, dictionary *dict){ yon_config_remove_by_key(GROUPADD_SYNC(group_name)); } - password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); + + int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo)); + 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); + yon_ubl_status_highlight_incorrect(window->PasswordEntry); + return; + } + } else { + password=""; + } final_string = yon_char_unite(yon_char_return_if_exist(group_users,"x"), ":",yon_char_return_if_exist(gid,"x"), ":",yon_char_return_if_exist(non_unique,""), @@ -1323,7 +1334,6 @@ void on_group_save(GtkWidget *self, dictionary *dict){ gtk_list_store_append(widgets->GroupsList,&iter); char *passwor = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); char *password_status=NULL; - int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo)); if (password_active==0) password_status=DEFAULT_USER_LABEL; else if (password_active==1) @@ -2580,7 +2590,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),parsed[4]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),2); } else { - gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),1); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),0); } } char *sync = yon_config_get_by_key(GROUPADD_SYNC(name)); -- 2.35.1 From 6fb0d4c4b97a185fb0f6fce5eea2ec8e2f797e81 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 19 Mar 2024 11:30:58 +0600 Subject: [PATCH 15/15] Fixed password changing date at disabling/enabling user --- source/ubl-settings-usergroups.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 51fa885..f91a70e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1876,7 +1876,12 @@ void on_user_save(GtkWidget *self, dictionary *dict){ password=""; } - if (!window->old_password||window->old_password&&strcmp(window->old_password,password)){ + char *old_password = NULL; + if (window->old_password){ + old_password = window->old_password; + if (old_password[0]=='!') free(yon_char_divide(old_password,0)); + } + if (!old_password||old_password&&strcmp(old_password,password)){ time_t t = time(NULL); struct tm tm = *localtime(&t); char *month = yon_char_from_int(tm.tm_mon+1); @@ -1890,7 +1895,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",month,"-",day,NULL); } else { password_changed_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordChangedEntry)); - } + } deactivate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck)); if (deactivate){ @@ -2482,10 +2487,10 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ free(yon_char_divide(window->old_password,1)); } if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ - if (strstr(parameters[5],"!")){ + if (parameters[5][0]=='!'){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1); } - yon_char_divide(strstr(parameters[5],"!"),1); + free(yon_char_divide(parameters[5],0)); if (!yon_char_is_empty(parameters[5])){ gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2); -- 2.35.1