From 0a89d6126714f0c997b8e6a6d2ded5c0afaa3957 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 23 Sep 2025 18:01:16 +0600 Subject: [PATCH 1/8] Buttons minimum size --- ubl-settings-usergroups.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css index 4c6fa9a..65cc985 100644 --- a/ubl-settings-usergroups.css +++ b/ubl-settings-usergroups.css @@ -134,4 +134,9 @@ background:transparent; .marginright image{ margin-right: 2px; +} + +button { + min-width: 26px; + min-height: 24px; } \ No newline at end of file From 89b940643ea38d4c16a93d9b39afbd8933c59630 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 30 Sep 2025 14:54:49 +0600 Subject: [PATCH 2/8] Fixed unchosen expiration date was set as today --- source/ubl-settings-usergroups-user.c | 28 +++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index e0a2b56..dbefe06 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -514,17 +514,19 @@ void on_user_save(GtkWidget *self, dictionary *dict){ password_change_interval_maximum = yon_char_from_long(password_change_interval_maximum_active); } else password_change_interval_maximum = 0; - guint year, month, day; - gtk_calendar_get_date(GTK_CALENDAR(window->ExpirationCalendar),&year,&month,&day); - char *dy = yon_char_from_int(day); - char *mn = yon_char_from_int(month+1); - char *yr = yon_char_from_int(year); - if (month+1<10) mn = yon_char_append("0",mn); - if (day<10) dy = yon_char_append("0",dy); - password_expiration_date = yon_char_unite(yr,"-",mn,"-",dy,NULL); - // password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry)); - if (yon_char_is_empty(password_expiration_date)){ - password_expiration_date="-1"; + if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry)))){ + guint year, month, day; + gtk_calendar_get_date(GTK_CALENDAR(window->ExpirationCalendar),&year,&month,&day); + char *dy = yon_char_from_int(day); + char *mn = yon_char_from_int(month+1); + char *yr = yon_char_from_int(year); + if (month+1<10) mn = yon_char_append("0",mn); + if (day<10) dy = yon_char_append("0",dy); + password_expiration_date = yon_char_unite(yr,"-",mn,"-",dy,NULL); + // password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry)); + if (yon_char_is_empty(password_expiration_date)){ + password_expiration_date="-1"; + } } long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin)); @@ -674,11 +676,13 @@ int yon_system_user_sync(char *target_user){ free(optionals); if (!yon_char_is_empty(config_user)){ - char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target_user)); char *parameter_name = USERADD(target_user); + char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",parameter_name); yon_config_register(parameter_name,user_command,config_user); yon_config_remove_ignore(parameter_name); free(config_user); + free(user_command); + free(parameter_name); } else return 0; if (!yon_char_is_empty(config_shadow)){ From 860e2a274305324c4ff321259ed899eb05150328 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 1 Oct 2025 17:07:45 +0600 Subject: [PATCH 3/8] Added user login restricted symbols --- source/ubl-settings-usergroups-user.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index dbefe06..6f1e341 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -185,7 +185,8 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ window->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); window->expiration_unix=NULL; window->last_uid=NULL; - yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),":"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),"[]()\'\":"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->userLoginEntry),"[]()\'\":"); time_t t = time(NULL); struct tm tm = *localtime(&t); From c9e81e8c702ef0489756783b25360f954cf5edbf Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 2 Oct 2025 13:58:03 +0600 Subject: [PATCH 4/8] Changed restricted symbols --- source/ubl-settings-usergroups-group.c | 2 ++ source/ubl-settings-usergroups-user.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups-group.c b/source/ubl-settings-usergroups-group.c index 182d78b..48379d9 100644 --- a/source/ubl-settings-usergroups-group.c +++ b/source/ubl-settings-usergroups-group.c @@ -31,6 +31,8 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL); + // yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userGroupsEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userLoginEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); on_GID_update(NULL,window); dictionary *entry_dict=NULL; yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->PasswordCombo); diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index 6f1e341..8f83cab 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -185,8 +185,8 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ window->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); window->expiration_unix=NULL; window->last_uid=NULL; - yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),"[]()\'\":"); - yon_gtk_entry_block_symbols(GTK_ENTRY(window->userLoginEntry),"[]()\'\":"); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userUserNameEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userLoginEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); time_t t = time(NULL); struct tm tm = *localtime(&t); From 7e0ad8747fc160497d47fb0e7b35ebda15617413 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 2 Oct 2025 14:23:38 +0600 Subject: [PATCH 5/8] Changed restricted symbols --- source/ubl-settings-usergroups-user.c | 17 +++++++++++++++-- source/ubl-settings-usergroups.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index 8f83cab..f67d26a 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -136,6 +136,19 @@ void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *windo } } +void on_homedir_changed(GtkComboBox *self, GtkWidget *target){ + int active = gtk_combo_box_get_active(self); + switch(active){ + case 2: + gtk_widget_set_sensitive(target,1); + break; + default: + gtk_widget_set_sensitive(target,0); + break; + } + +} + ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user); @@ -185,7 +198,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ window->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); window->expiration_unix=NULL; window->last_uid=NULL; - yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userUserNameEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),"\"'[]"); yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userLoginEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); time_t t = time(NULL); @@ -228,7 +241,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ g_signal_connect(G_OBJECT(window->userPasswordExpirationButton),"clicked",G_CALLBACK(on_expiration_clicked),window); g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry); g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeEntry); - g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeButton); + g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_homedir_changed),window->userHomeButton); g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userPasswordButton); g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userGroupsEntry); g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UserGroupsButton); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 0f8aa38..b617b3f 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -624,4 +624,5 @@ void on_date_format_changed(GtkWidget *, main_window *widgets); char *yon_user_get_system_groups(char *target_login); int yon_system_group_sync(char *group); int yon_system_user_sync(char *user); +void on_homedir_changed(GtkComboBox *self, GtkWidget *target); #endif \ No newline at end of file From 7074377b800d39bcb83a7d24c60294fbd618faec Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 2 Oct 2025 14:57:24 +0600 Subject: [PATCH 6/8] Crash fix --- source/ubl-settings-usergroups-system.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups-system.c b/source/ubl-settings-usergroups-system.c index 3be6dd0..984730c 100644 --- a/source/ubl-settings-usergroups-system.c +++ b/source/ubl-settings-usergroups-system.c @@ -64,7 +64,7 @@ void yon_remove_confirmation_window_accept_clicked(GtkWidget *self,dictionary *d char *target; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ yon_tree_model_sort_filter_get_model_iter(GTK_TREE_MODEL_SORT(model),&iter,&child); - gtk_tree_model_get(model,&child,2,&target,-1); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->liststore1),&child,2,&target,-1); } for_iter(GTK_TREE_MODEL(widgets->UsersList),&itar){ char *cur; From 7be0fbbb3f773ccd13872d487cd8b3643afbe996 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 2 Oct 2025 16:22:39 +0600 Subject: [PATCH 7/8] Password restricted symbols change --- source/ubl-settings-usergroups-password.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/ubl-settings-usergroups-password.c b/source/ubl-settings-usergroups-password.c index ebe7fb8..331ede2 100644 --- a/source/ubl-settings-usergroups-password.c +++ b/source/ubl-settings-usergroups-password.c @@ -133,6 +133,8 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton"); + yon_gtk_entry_allow_password_symbols(GTK_ENTRY(window->PasswordEntry)); + yon_gtk_entry_allow_password_symbols(GTK_ENTRY(window->RepeatPasswordEntry)); 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); From 724e3a02076f75c26016deec80525054b11fc3bd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 6 Oct 2025 11:24:16 +0600 Subject: [PATCH 8/8] Fixed uid checking --- source/ubl-settings-usergroups-password.c | 2 +- source/ubl-settings-usergroups-user.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source/ubl-settings-usergroups-password.c b/source/ubl-settings-usergroups-password.c index 331ede2..5ece399 100644 --- a/source/ubl-settings-usergroups-password.c +++ b/source/ubl-settings-usergroups-password.c @@ -132,7 +132,7 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton"); - + yon_gtk_entry_allow_password_symbols(GTK_ENTRY(window->PasswordEntry)); yon_gtk_entry_allow_password_symbols(GTK_ENTRY(window->RepeatPasswordEntry)); yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"PasswordWindow"); diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index f67d26a..29692ae 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -240,8 +240,8 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ g_signal_connect(G_OBJECT(window->userAdditionalGroupsButton),"clicked",G_CALLBACK(on_groups_multiple_clicked),window->userAdditionalGroupsEntry); g_signal_connect(G_OBJECT(window->userPasswordExpirationButton),"clicked",G_CALLBACK(on_expiration_clicked),window); g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry); - g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeEntry); g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_homedir_changed),window->userHomeButton); + g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_homedir_changed),window->userHomeEntry); g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userPasswordButton); g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userGroupsEntry); g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UserGroupsButton); @@ -369,7 +369,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size); uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry)); - if (window->last_uid&&strcmp(uid_string,window->last_uid)){ + if (!window->last_uid||strcmp(uid_string,window->last_uid)){ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))){ int found=0; for (int i=0;iStatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->userUIDEntry); - gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0); - return; - } + if (yon_char_is_empty(uid_string)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userUIDEntry); + gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0); + return; + } + } } int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck));