From e7c1bef9acf1b3167fbfce65844cc5432b259675 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 6 Oct 2025 12:43:05 +0600 Subject: [PATCH 1/8] Added config parameter valid checking function --- source/ubl-settings-usergroups.c | 22 ++++++++++++++++++++++ source/ubl-settings-usergroups.h | 1 + 2 files changed, 23 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 57ca1a4..4620c92 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -89,7 +89,29 @@ void yon_gtk_tree_view_select_first(GtkTreeView *target){ } } +int yon_config_check_valid(){ + int size; + config_str parameters = yon_config_get_all_keys(&size); + + int invalid_found = 0; + for (int i=0;i Date: Thu, 9 Oct 2025 16:30:07 +0600 Subject: [PATCH 2/8] Replaced invalid function --- source/ubl-settings-usergroups-user.c | 2 +- source/ubl-settings-usergroups.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index 29692ae..eaccd66 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -199,7 +199,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ window->expiration_unix=NULL; window->last_uid=NULL; yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),"\"'[]"); - yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->userLoginEntry),"abcdefghijklmnopqrstuvwxyz1234567890"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),"\"'[]"); time_t t = time(NULL); struct tm tm = *localtime(&t); diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 4620c92..300265e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -604,7 +604,7 @@ void on_config_custom_save(GtkWidget *, main_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",",")){ + if (!yon_config_append_element(SAVE_ROOTCOPY_CHANGES_parameter,"/var/lib/samba",",")){ yon_config_register(SAVE_ROOTCOPY_CHANGES_parameter,SAVE_ROOTCOPY_CHANGES_get_command,"/var/lib/samba"); } } else { From b38b5a3578e856970baef035bac6605644544501 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 9 Oct 2025 17:41:36 +0600 Subject: [PATCH 3/8] Changed user and group restricted symbols --- source/ubl-settings-usergroups-group.c | 3 +-- source/ubl-settings-usergroups-user.c | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-usergroups-group.c b/source/ubl-settings-usergroups-group.c index 48379d9..94a39ea 100644 --- a/source/ubl-settings-usergroups-group.c +++ b/source/ubl-settings-usergroups-group.c @@ -31,8 +31,7 @@ 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"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->userLoginEntry),":\n"); 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 eaccd66..093ea0a 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -198,8 +198,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->userUserNameEntry),":\n"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->userLoginEntry),":\n"); time_t t = time(NULL); struct tm tm = *localtime(&t); From a43f1591035bbbcda92bf43e3870a4a8c0fb14c6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 9 Oct 2025 18:14:25 +0600 Subject: [PATCH 4/8] Removed password restrictions --- source/ubl-settings-usergroups-password.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/ubl-settings-usergroups-password.c b/source/ubl-settings-usergroups-password.c index 5ece399..d9a6ec7 100644 --- a/source/ubl-settings-usergroups-password.c +++ b/source/ubl-settings-usergroups-password.c @@ -133,8 +133,6 @@ 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 f74f393604c98770a5dd789c2ed0d09ca571c063 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 10 Oct 2025 14:13:42 +0600 Subject: [PATCH 5/8] Added new warning --- source/ubl-settings-usergroups-user.c | 33 +++++++++++++++++++++++++++ source/ubl-settings-usergroups.h | 1 + source/ubl-strings.h | 4 +++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c index 093ea0a..5469338 100644 --- a/source/ubl-settings-usergroups-user.c +++ b/source/ubl-settings-usergroups-user.c @@ -149,6 +149,37 @@ void on_homedir_changed(GtkComboBox *self, GtkWidget *target){ } +void on_home_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window){ + const char *homepath = gtk_entry_get_text(GTK_ENTRY(self)); + if (yon_char_is_empty(homepath)) return; + char *home_parameter = yon_char_unite("--home-dir ",homepath,NULL); + int size; + config_str parameters = yon_config_get_all_by_key(USERADD_SEARCH_macro,&size); + for (int i=0;iStatusBox),HOMEDIR_USED_LABEL,5,BACKGROUND_IMAGE_INFO_TYPE); + yon_ubl_status_highlight_incorrect(window->userHomeEntry); + break; + } + yon_char_parsed_free(parsed,parsed_size); + } + yon_char_parsed_free(parameters,size); + + for (int i=0;iStatusBox),HOMEDIR_USED_LABEL,5,BACKGROUND_IMAGE_INFO_TYPE); + yon_ubl_status_highlight_incorrect(window->userHomeEntry); + break; + } + yon_char_parsed_free(parsed,parsed_size); + } + free(home_parameter); +} + 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); @@ -263,6 +294,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_toggle_button_set_active_from_combo_box),window); g_signal_connect(G_OBJECT(window->userPasswordEntry),"changed",G_CALLBACK(on_password_user_changed),window); g_signal_connect(G_OBJECT(window->userHomeEntry),"changed",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userHomeEntry),"changed",G_CALLBACK(on_home_changed),window); g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_parameter_changed),window); g_signal_connect(G_OBJECT(window->userShellEntry),"changed",G_CALLBACK(on_parameter_changed),window); @@ -335,6 +367,7 @@ void on_user_login_update(GtkWidget *, ubl_settings_usergroups_user_window *wind void on_user_save(GtkWidget *self, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); ubl_settings_usergroups_user_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_user_window*); + yon_ubl_status_box_despawn(GTK_CONTAINER(window->StatusBox)); char *final_user=""; char *uid_string = NULL; char *password = NULL; diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 8f51fb9..4a4285e 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -626,4 +626,5 @@ int yon_system_group_sync(char *group); int yon_system_user_sync(char *user); void on_homedir_changed(GtkComboBox *self, GtkWidget *target); int yon_config_check_valid(); +void on_home_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window); #endif \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 925e368..0889f0c 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -299,4 +299,6 @@ #define DMY_FORMAT_LABEL _("DD.MM.YYYY") #define DMY_MINUS_FORMAT_LABEL _("DD-MM-YYYY") #define DMY_SLASH_FORMAT_LABEL _("DD/MM/YYYY") -#define MDY_FORMAT_LABEL _("MM-DD-YYYY") \ No newline at end of file +#define MDY_FORMAT_LABEL _("MM-DD-YYYY") + +#define HOMEDIR_USED_LABEL _("The selected home directory is used by another user") \ No newline at end of file From 0a145d1613cb161f5ff7929db26b767e5f3e66da Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 10 Oct 2025 14:14:36 +0600 Subject: [PATCH 6/8] Localisation update --- locale/ubl-settings-usergroups.pot | 4 ++++ locale/ubl-settings-usergroups_ru.po | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/locale/ubl-settings-usergroups.pot b/locale/ubl-settings-usergroups.pot index e0994f2..8c8f03b 100644 --- a/locale/ubl-settings-usergroups.pot +++ b/locale/ubl-settings-usergroups.pot @@ -1039,3 +1039,7 @@ msgstr "" #: source/ubl-strings.h:302 msgid "MM-DD-YYYY" msgstr "" + +#: source/ubl-strings.h:302 +msgid "The selected home directory is used by another user" +msgstr "" \ No newline at end of file diff --git a/locale/ubl-settings-usergroups_ru.po b/locale/ubl-settings-usergroups_ru.po index 135eaa0..44a1c1a 100644 --- a/locale/ubl-settings-usergroups_ru.po +++ b/locale/ubl-settings-usergroups_ru.po @@ -1119,6 +1119,10 @@ msgstr "ДД/ММ/ГГГГ" msgid "MM-DD-YYYY" msgstr "ММ-ДД-ГГГГ" +#: source/ubl-strings.h:302 +msgid "The selected home directory is used by another user" +msgstr "Указанный домашний каталог используется другим пользователем" + #~ msgid "User(-s)" #~ msgstr "Пользователь(-ли)" From 1d7a433f09e0e03721ebde345ba82db0953cb030 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 10 Oct 2025 14:23:46 +0600 Subject: [PATCH 7/8] Additional settings option label update --- locale/ubl-settings-usergroups.pot | 2 +- locale/ubl-settings-usergroups_ru.po | 4 ++-- source/ubl-strings.h | 2 +- ...tings-usergroups-additional-settings.glade | 20 +++++++++---------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/locale/ubl-settings-usergroups.pot b/locale/ubl-settings-usergroups.pot index 8c8f03b..da8116e 100644 --- a/locale/ubl-settings-usergroups.pot +++ b/locale/ubl-settings-usergroups.pot @@ -34,7 +34,7 @@ msgid "Default user name (if there's no another):" msgstr "" #: source/ubl-strings.h:8 -msgid "User with ID 1000 is administrator" +msgid "A user ID of 1000 is an administrator included in the wheel group" msgstr "" #: source/ubl-strings.h:9 diff --git a/locale/ubl-settings-usergroups_ru.po b/locale/ubl-settings-usergroups_ru.po index 44a1c1a..a9ba5b4 100644 --- a/locale/ubl-settings-usergroups_ru.po +++ b/locale/ubl-settings-usergroups_ru.po @@ -34,8 +34,8 @@ msgid "Default user name (if there's no another):" msgstr "Имя пользователя по умолчанию (если нет других):" #: source/ubl-strings.h:8 -msgid "User with ID 1000 is administrator" -msgstr "Пользователь с ID 1000 является администратором" +msgid "A user ID of 1000 is an administrator included in the wheel group" +msgstr "Пользователь с ID 1000 является администратором включённым в группу wheel" #: source/ubl-strings.h:9 msgid "Default user password:" diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 0889f0c..f9b4b14 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -5,7 +5,7 @@ #define DEFAULT_USER_GROUPS_LABEL _("Default user groups:") #define DEFAULT_USER_NAME_LABEL _("Default user name (if there's no another):") -#define USER_1000_IS_ADMIN_LABEL _("User with ID 1000 is administrator") +#define USER_1000_IS_ADMIN_LABEL _("A user ID of 1000 is an administrator included in the wheel group") #define DEFAULT_USER_PASSWORD_LABEL _("Default user password:") #define ROOT_USER_PASSWORD_LABEL _("Root user password:") #define PASSWORD_HASH_ALGORYTHM_LABEL _("Password hash algorythm:") diff --git a/ubl-settings-usergroups-additional-settings.glade b/ubl-settings-usergroups-additional-settings.glade index 3ba31d8..171249e 100644 --- a/ubl-settings-usergroups-additional-settings.glade +++ b/ubl-settings-usergroups-additional-settings.glade @@ -1,5 +1,5 @@ - + @@ -76,8 +76,8 @@ False Group GID range - - + + True True False @@ -90,8 +90,8 @@ False Group GID in system - - + + True True False @@ -176,8 +176,8 @@ False Users UID range - - + + True True False @@ -190,8 +190,8 @@ False User UID in system - - + + True True False @@ -339,7 +339,7 @@ - User with ID 1000 is administrator + user ID of 1000 is an administrator included in the wheel group True True False From a962740daee4637b8ada8c76833dc995a92d661b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 10 Oct 2025 16:37:05 +0600 Subject: [PATCH 8/8] Added administrator highlighting --- source/ubl-settings-usergroups.c | 26 +++++++++++++++++++++++++- ubl-settings-usergroups.css | 2 +- ubl-settings-usergroups.glade | 26 ++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 300265e..73c1be3 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -156,6 +156,17 @@ void yon_interface_update(main_window *widgets){ pars = DEFAULT_USER_LABEL; } + GdkRGBA rgba = {0}; + char *wheel = yon_char_parsed_check_exist_begins_with(main_config.shadow,main_config.shadow_size,"wheel"); + int wheel_size; + config_str wheel_parsed = yon_char_parse(wheel,&wheel_size,":"); + char *param = config(ADDADM_parameter); + if ((atoi(parameters[1])==1000&&!yon_char_is_empty(param)&&!strcmp(param,"yes"))||yon_char_parsed_check_exist(wheel_parsed,wheel_size,login)>-1){ + rgba.red=253.0/255.0; + rgba.green=251.0/255.0; + rgba.blue=216.0/255.0; + rgba.alpha=1; + } gtk_list_store_set(widgets->UsersList,&iter, 0,parameters_size>5?(parameters[5][0]=='!'&¶meters[5][1]=='*')?check_checked_icon_name:(parameters[5][0]=='!'||parameters[5][0]=='*')?check_attention_icon_name:NULL:NULL, 2,login, @@ -166,6 +177,7 @@ void yon_interface_update(main_window *widgets){ 6,parameters_size>4?!strcmp(parameters[4],"x")?"":parameters[4]:"", 7,!yon_char_is_empty(pars)?pars:"", 8,!yon_char_is_empty(tooltip)?tooltip:"", + 9,rgba.alpha==1?&rgba:NULL, -1); if(parameters) free(parameters); @@ -1372,8 +1384,20 @@ void yon_system_load(main_window *window){ } yon_char_parsed_free(parsed_group,parsed_gr_size); } + GdkRGBA rgba = {0}; + char *wheel = yon_char_parsed_check_exist_begins_with(main_config.shadow,main_config.shadow_size,"wheel"); + int wheel_size; + config_str wheel_parsed = yon_char_parse(wheel,&wheel_size,":"); + char *param = config(ADDADM_parameter); + if ((atoi(parsed[2])==1000&&!yon_char_is_empty(param)&&!strcmp(param,"yes"))||yon_char_parsed_check_exist(wheel_parsed,wheel_size,parsed[0])>-1){ + rgba.red=253.0/255.0; + rgba.green=251.0/255.0; + rgba.blue=216.0/255.0; + rgba.alpha=1; + } gtk_list_store_append(window->liststore1,&iter); - gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[4],4,main_group_name,5,groups_string,6,parsed[5],-1); + gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[4],4,main_group_name,5,groups_string,6,parsed[5],14,&rgba,-1); + yon_char_parsed_free(wheel_parsed,wheel_size); yon_char_parsed_free(parsed,parsed_size); } int shadow_size; diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css index 65cc985..47d2ef3 100644 --- a/ubl-settings-usergroups.css +++ b/ubl-settings-usergroups.css @@ -111,7 +111,7 @@ background:transparent; } .boxInfoMessOK{ - background-color: #f3f0ac; + background-color: #f3f0ac; } .errorBox { border-width: 2px; diff --git a/ubl-settings-usergroups.glade b/ubl-settings-usergroups.glade index 0aa8ba5..057f477 100644 --- a/ubl-settings-usergroups.glade +++ b/ubl-settings-usergroups.glade @@ -73,6 +73,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + @@ -156,6 +158,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + @@ -472,6 +476,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 9 0 @@ -489,6 +494,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 9 1 @@ -505,6 +511,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 9 2 @@ -522,6 +529,7 @@ name + 9 3 @@ -539,6 +547,7 @@ group + 9 4 @@ -559,6 +568,7 @@ groups 150 + 9 5 @@ -579,6 +589,7 @@ parameters 150 + 9 6 @@ -595,6 +606,7 @@ status + 9 7 @@ -869,6 +881,7 @@ status + 14 0 @@ -886,6 +899,7 @@ status + 14 1 @@ -902,6 +916,7 @@ status + 14 2 @@ -918,6 +933,7 @@ status + 14 3 @@ -935,6 +951,7 @@ group + 14 4 @@ -954,6 +971,7 @@ groups 150 + 14 5 @@ -969,6 +987,7 @@ directory + 14 6 @@ -983,6 +1002,7 @@ path + 14 7 @@ -997,6 +1017,7 @@ been changed + 14 8 @@ -1011,6 +1032,7 @@ date + 14 9 @@ -1025,6 +1047,7 @@ interval (min) + 14 10 @@ -1039,6 +1062,7 @@ interval (max) + 14 11 @@ -1053,6 +1077,7 @@ warning + 14 12 @@ -1067,6 +1092,7 @@ without activity + 14 13