From 3c2e630e5acd9212f2707ec05c714ffbc6d7eb33 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 18 Dec 2024 15:32:22 +0600 Subject: [PATCH 01/28] Sync with config buttons done --- source/ubl-settings-usergroups.c | 84 +++++++++++++++++++------------- source/ubl-settings-usergroups.h | 4 ++ source/ubl-strings.h | 2 + 3 files changed, 57 insertions(+), 33 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 9d41bc1..dcc243e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -149,7 +149,6 @@ void yon_interface_update(main_window *widgets){ if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=""; char *pars=""; if (parameters_size>4&&strcmp(parameters[4],"x")&&strcmp(parameters[4],"")){ - if (!check_is_password_hash(parameters[4])&¶meters[4][0]!='%'&¶meters[4][1]!='%'){ pars = ENCRYPTED_LABEL; } else { @@ -2110,7 +2109,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ if (user_shell_active>0){ char *shell_string = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)); if (strcmp(shell_string,SET_LABEL)){ - user_shell = yon_char_unite("--shell ",shell_string,NULL); + user_shell = yon_char_unite("--shell ",shell_string," ",NULL); } else { user_shell = yon_char_unite("--shell ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userShellEntry)),NULL); } @@ -2800,7 +2799,7 @@ void on_config_update(GtkWidget *, main_window *widgets){ void on_user_sync_with_config(GtkWidget *,main_window *widgets){ int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook)); switch (active){ - case 2: + case 2:{ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1); GtkTreeIter iter; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ @@ -2819,40 +2818,59 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){ if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ return; } - int size; - config_str passwd_users = yon_file_open(users_path,&size); - int active_usr = yon_char_parsed_strstr(passwd_users,size,target); - int cur_size; - if (size){ - yon_char_remove_last_symbol(passwd_users[active_usr],'\n'); - config_str cur_user = yon_char_parse(passwd_users[active_usr],&cur_size,":"); - int final_size=0; - config_str final_user_parsed = NULL; - yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,cur_user[4]); - yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,cur_user[3]); - yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,"x"); - char *extra_groups = yon_char_unite(!yon_char_is_empty(cur_user[6])?"--shell ":"",!yon_char_is_empty(cur_user[6])?cur_user[6]:"",!yon_char_is_empty(cur_user[6])?" ":"",!yon_char_is_empty(cur_user[5])?"--home-dir ":"",!yon_char_is_empty(cur_user[5])?cur_user[5]:"",NULL); - yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,extra_groups); - yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,cur_user[1]); - char *final_user = yon_char_parsed_to_string(final_user_parsed,final_size,":"); - if (config(USERADD(target))){ - char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD_SYNC(target)); - yon_config_register(USERADD_SYNC(target),final_command,final_user); - - } else { - char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target)); - yon_config_register(USERADD(target),final_command,final_user); + int user_size; + int shadow_size; + config_str user = yon_config_load(yon_debug_output("%s\n",get_system_user_command(target)),&user_size); + if (user_size>0){ + yon_char_remove_last_symbol(user[0],'\n'); + free(yon_char_divide_search(user[0],"=",-1)); + yon_char_remove_brackets(user[0]); + char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target)); + yon_config_register(USERADD(target),user_command,user[0]); + } + config_str shadow = yon_config_load(yon_debug_output("%s\n",get_system_shadow_command(target)),&shadow_size); + if (shadow_size>0){ + yon_char_remove_last_symbol(shadow[0],'\n'); + free(yon_char_divide_search(shadow[0],"=",-1)); + yon_char_remove_brackets(shadow[0]); + char *shadow_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(target)); + yon_config_register(USERSHADOW(target),shadow_command,shadow[0]); - } - - // int shadow_size; - // config_str shadow = yon_file_open(shadow_path,&shadow_size); } } yon_interface_update((main_window*)widgets); - break; - case 3: - break; + }break; + case 3:{ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1); + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){ + + char *target; + gtk_tree_model_get(model,&iter,1,&target,-1); + dialog_confirmation_data data; + if (config(USERADD(target))){ + data.action_text = SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target); + data.data=NULL; + data.function=NULL; + } else { + data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target); + data.data=NULL; + data.function=NULL; + } + if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ + return; + } + int group_size; + config_str group = yon_config_load(get_system_group_command(target),&group_size); + if (group_size>0){ + yon_char_remove_last_symbol(group[0],'\n'); + free(yon_char_divide_search(group[0],"=",-1)); + yon_char_remove_brackets(group[0]); + char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target)); + yon_config_register(GROUPADD(target),group_command,group[0]); + } + } + }break; } } diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index bef5bd8..b2c05c9 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -47,6 +47,10 @@ #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)) +#define get_system_user_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_useradd_from_system ",target,NULL) +#define get_system_shadow_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_usershadow_from_system ",target,NULL) +#define get_system_group_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_groupadd_from_system ",target,NULL) + #define groups_path "/etc/group" #define users_path "/etc/passwd" #define shadow_path "/etc/shadow" diff --git a/source/ubl-strings.h b/source/ubl-strings.h index d77577b..3f25dd8 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -53,6 +53,8 @@ #define SYSTEM_USER_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration. Are you sure want to add user")," ",target," ", _("to configuration?"),NULL) #define SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to update user")," ",target," ", _("data at configuration?"),NULL) +#define SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration. Are you sure want to add group")," ",target," ", _("to configuration?"),NULL) +#define SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to update group")," ",target," ", _("data at configuration?"),NULL) //ubl-settings-usergroups-additional-settings.glade -- 2.35.1 From c5a69e27a37c3fa0e6c3f4847fc8a1b3094b5463 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 18 Dec 2024 17:38:46 +0600 Subject: [PATCH 02/28] Localisation edits --- ubl-settings-usergroups.pot | 271 ++++++++++++++++++--------------- ubl-settings-usergroups_ru.po | 272 +++++++++++++++++++--------------- 2 files changed, 297 insertions(+), 246 deletions(-) diff --git a/ubl-settings-usergroups.pot b/ubl-settings-usergroups.pot index b081fc8..5478896 100644 --- a/ubl-settings-usergroups.pot +++ b/ubl-settings-usergroups.pot @@ -53,7 +53,7 @@ msgstr "" msgid "UID" msgstr "" -#: source/ubl-strings.h:14 source/ubl-strings.h:102 +#: source/ubl-strings.h:14 source/ubl-strings.h:107 msgid "Login" msgstr "" @@ -175,7 +175,7 @@ msgstr "" msgid "Inspect users and groups in system" msgstr "" -#: source/ubl-strings.h:46 source/ubl-strings.h:56 +#: source/ubl-strings.h:46 source/ubl-strings.h:61 msgid "Additional settings" msgstr "" @@ -203,521 +203,546 @@ msgstr "" msgid "Additional saving configuration" msgstr "" +#: source/ubl-strings.h:54 +msgid "This user doesn't exist in configuration. Are you sure want to add user" +msgstr "" + +#: source/ubl-strings.h:54 source/ubl-strings.h:56 +msgid "to configuration?" +msgstr "" + +#: source/ubl-strings.h:55 +msgid "This user exists in configuration. Are you sure want to update user" +msgstr "" + +#: source/ubl-strings.h:55 source/ubl-strings.h:57 +msgid "data at configuration?" +msgstr "" + +#: source/ubl-strings.h:56 +msgid "" +"This group doesn't exist in configuration. Are you sure want to add group" +msgstr "" + #: source/ubl-strings.h:57 +msgid "This group exists in configuration. Are you sure want to update group" +msgstr "" + +#: source/ubl-strings.h:62 msgid "No password required" msgstr "" -#: source/ubl-strings.h:58 +#: source/ubl-strings.h:63 msgid "Set a password" msgstr "" -#: source/ubl-strings.h:59 source/ubl-strings.h:105 +#: source/ubl-strings.h:64 source/ubl-strings.h:110 msgid "Encrypted" msgstr "" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:65 msgid "Unencrypted" msgstr "" -#: source/ubl-strings.h:73 +#: source/ubl-strings.h:78 msgid "Accept" msgstr "" -#: source/ubl-strings.h:74 +#: source/ubl-strings.h:79 msgid "" "Are you sure want to encrypt all passwords?\n" "This action can't be undone." msgstr "" -#: source/ubl-strings.h:75 +#: source/ubl-strings.h:80 msgid "Encrypt all unencrypted passwords at global configuration" msgstr "" -#: source/ubl-strings.h:76 +#: source/ubl-strings.h:81 msgid "DES (Algorithm for Symmetric Encryption)" msgstr "" -#: source/ubl-strings.h:77 +#: source/ubl-strings.h:82 msgid "MD5 (128-bit hashing algorithm)" msgstr "" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:83 msgid "yescrypt (Cryptographic hash function)" msgstr "" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:84 msgid "GOST-YESCRYPT (Design according to GOST R 34.11─2012)" msgstr "" -#: source/ubl-strings.h:80 +#: source/ubl-strings.h:85 msgid "scrypt (Adaptive cryptographic key generation function)" msgstr "" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:86 msgid "Blowfish (Symmetric Block Cipher Algorithm)" msgstr "" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:87 msgid "bcrypt (Adaptive hash function from the Blowfish family of algorithms)" msgstr "" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:88 msgid "" "bcrypt-a (Adaptive hash function from the Blowfish family of algorithms)" msgstr "" -#: source/ubl-strings.h:84 +#: source/ubl-strings.h:89 msgid "SHA512 (Hash function from the SHA-2 family of algorithms)" msgstr "" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:90 msgid "SHA256 (Hash function from the SHA-2 family of algorithms)" msgstr "" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:91 msgid "Sun MD5 (Hash algorithm from Sun Microsystems)" msgstr "" -#: source/ubl-strings.h:87 +#: source/ubl-strings.h:92 msgid "MD5 Unix (Hash algorithm calls standard MD5 thousand times)" msgstr "" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:93 msgid "" "Extended DES Crypt (Hash function from the BSDi family of DES algorithms)" msgstr "" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:94 msgid "descrypt (Hash function from the DES family of algorithms)" msgstr "" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:95 msgid "NTHash (Hash function from the NT Windows family of algorithms)" msgstr "" -#: source/ubl-strings.h:92 +#: source/ubl-strings.h:97 msgid "" "While booting the operating system, apply the settings of all users from the " "configuration" msgstr "" -#: source/ubl-strings.h:93 +#: source/ubl-strings.h:98 msgid "" "While shutdown, save the settings of all users with UID>=1000 to the " "configuration" msgstr "" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:101 msgid "Configure group" msgstr "" -#: source/ubl-strings.h:97 +#: source/ubl-strings.h:102 msgid "Add group" msgstr "" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:103 msgid "Group id:" msgstr "" -#: source/ubl-strings.h:99 +#: source/ubl-strings.h:104 msgid "Group name:" msgstr "" -#: source/ubl-strings.h:100 +#: source/ubl-strings.h:105 msgid "Group users:" msgstr "" -#: source/ubl-strings.h:101 +#: source/ubl-strings.h:106 msgid "Automatically" msgstr "" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:108 msgid "Create group with ununique GID" msgstr "" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:109 msgid "Create system group" msgstr "" -#: source/ubl-strings.h:106 +#: source/ubl-strings.h:111 msgid "Additional configuration" msgstr "" -#: source/ubl-strings.h:107 +#: source/ubl-strings.h:112 msgid "Group configuration synchronization" msgstr "" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:113 msgid "When shutting down the system, save the group into the configuration" msgstr "" -#: source/ubl-strings.h:109 +#: source/ubl-strings.h:114 msgid "Group administrators:" msgstr "" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:115 msgid "Group name must not start with digit" msgstr "" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:118 msgid "Default groups" msgstr "" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:119 msgid "Main group" msgstr "" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:120 msgid "Additional groups" msgstr "" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:121 msgid "Choose groups" msgstr "" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:122 msgid "Choose users" msgstr "" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:125 msgid "System users and groups" msgstr "" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:126 msgid "Locked" msgstr "" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:127 msgid "Username" msgstr "" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:128 msgid "" "Primary\n" "group" msgstr "" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:129 msgid "" "Home\n" "directory" msgstr "" -#: source/ubl-strings.h:125 source/ubl-strings.h:131 +#: source/ubl-strings.h:130 source/ubl-strings.h:136 msgid "Group" msgstr "" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:131 msgid "Update the system users and groups list" msgstr "" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:132 msgid "Toggle system groups and users" msgstr "" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:134 msgid "Password mismatch" msgstr "" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:135 msgid "Password must be at least" msgstr "" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:135 msgid "characters" msgstr "" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:137 msgid "" "Days until\n" "warning" msgstr "" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:138 msgid "" "Days\n" "without activity" msgstr "" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:139 msgid "" "Shell\n" "path" msgstr "" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:140 msgid "" "Password has\n" "been changed" msgstr "" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:141 msgid "" "Expiration\n" "date" msgstr "" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:142 msgid "" "Password change\n" "interval (min)" msgstr "" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:143 msgid "" "Password change\n" "interval (max)" msgstr "" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:146 msgid "Add user" msgstr "" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:147 msgid "Configure user" msgstr "" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:148 msgid "Set" msgstr "" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:149 msgid "Empty important field" msgstr "" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:150 msgid "Login must not start with digit" msgstr "" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:151 msgid "Loading has failed" msgstr "" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:152 msgid "Login name" msgstr "" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:153 msgid "Additional groups:" msgstr "" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:154 msgid "Password configuration" msgstr "" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:155 msgid "Password has been changed:" msgstr "" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:156 msgid "expiration date:" msgstr "" -#: source/ubl-strings.h:152 +#: source/ubl-strings.h:157 msgid "Password change interval: minimum" msgstr "" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:158 msgid "days, maximum" msgstr "" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:159 msgid "days" msgstr "" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:160 msgid "Days until warning:" msgstr "" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:161 msgid "Days without activity:" msgstr "" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:162 msgid "Force change at next login" msgstr "" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:163 msgid "User shell:" msgstr "" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:164 msgid "Home directory:" msgstr "" -#: source/ubl-strings.h:160 +#: source/ubl-strings.h:165 msgid "Don't set" msgstr "" -#: source/ubl-strings.h:161 +#: source/ubl-strings.h:166 msgid "Create system user" msgstr "" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:167 msgid "Create user with ununique (repeating) UID" msgstr "" -#: source/ubl-strings.h:163 +#: source/ubl-strings.h:168 msgid "Do not check login for compliance with character rules" msgstr "" -#: source/ubl-strings.h:164 +#: source/ubl-strings.h:169 msgid "Temporary deactivation" msgstr "" -#: source/ubl-strings.h:165 +#: source/ubl-strings.h:170 msgid "Save" msgstr "" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:171 msgid "login_name" msgstr "" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:172 msgid "group_name" msgstr "" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:173 msgid "User name" msgstr "" -#: source/ubl-strings.h:169 +#: source/ubl-strings.h:174 msgid "Sync user" msgstr "" -#: source/ubl-strings.h:170 +#: source/ubl-strings.h:175 msgid "Sync user with password" msgstr "" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:176 msgid "Encrypt all passwords" msgstr "" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:178 msgid "User configuration" msgstr "" -#: source/ubl-strings.h:174 +#: source/ubl-strings.h:179 msgid "User configuration synchronization" msgstr "" -#: source/ubl-strings.h:175 +#: source/ubl-strings.h:180 msgid "During system startup, load the user from the configuration" msgstr "" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:181 msgid "When shutting down the system, save the user into the configuration" msgstr "" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:182 msgid "User password configuration syncronization" msgstr "" -#: source/ubl-strings.h:178 +#: source/ubl-strings.h:183 msgid "" "During system startup, load the user's parameters from the configuration" msgstr "" -#: source/ubl-strings.h:179 +#: source/ubl-strings.h:184 msgid "" "When shutting down the system, save the user's parameters into the " "configuration" msgstr "" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:186 msgid "Basic" msgstr "" -#: source/ubl-strings.h:182 +#: source/ubl-strings.h:187 msgid "Additional" msgstr "" -#: source/ubl-strings.h:183 +#: source/ubl-strings.h:188 msgid "Syncronization" msgstr "" -#: source/ubl-strings.h:185 +#: source/ubl-strings.h:190 msgid "Not specified" msgstr "" -#: source/ubl-strings.h:187 +#: source/ubl-strings.h:192 msgid "UID already busy" msgstr "" -#: source/ubl-strings.h:188 +#: source/ubl-strings.h:193 msgid "GID already busy" msgstr "" -#: source/ubl-strings.h:191 +#: source/ubl-strings.h:196 msgid "Repeat password:" msgstr "" -#: source/ubl-strings.h:192 +#: source/ubl-strings.h:197 msgid "Password hash:" msgstr "" -#: source/ubl-strings.h:193 +#: source/ubl-strings.h:198 msgid "Do not encrypt password" msgstr "" -#: source/ubl-strings.h:196 +#: source/ubl-strings.h:201 msgid "Additional configuration of service parameter saving" msgstr "" -#: source/ubl-strings.h:197 +#: source/ubl-strings.h:202 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" msgstr "" -#: source/ubl-strings.h:198 +#: source/ubl-strings.h:203 msgid "For system save mode \"Sandbox\"" msgstr "" -#: source/ubl-strings.h:201 +#: source/ubl-strings.h:206 msgid "Group deletion" msgstr "" -#: source/ubl-strings.h:202 +#: source/ubl-strings.h:207 msgid "Confirm group(-s) deletion:" msgstr "" -#: source/ubl-strings.h:204 +#: source/ubl-strings.h:209 msgid "User deletion" msgstr "" -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:210 msgid "Confirm user(-s) deletion:" msgstr "" -#: source/ubl-strings.h:206 +#: source/ubl-strings.h:211 msgid "Chosen" msgstr "" -#: source/ubl-strings.h:207 +#: source/ubl-strings.h:212 msgid "User" msgstr "" -#: source/ubl-strings.h:208 +#: source/ubl-strings.h:213 msgid "Home directory" msgstr "" -#: source/ubl-strings.h:209 +#: source/ubl-strings.h:214 msgid "Delete home directory" msgstr "" -#: source/ubl-strings.h:211 +#: source/ubl-strings.h:216 msgid "Configuration users" msgstr "" -#: source/ubl-strings.h:212 +#: source/ubl-strings.h:217 msgid "Configuration groups" msgstr "" -#: source/ubl-strings.h:213 +#: source/ubl-strings.h:218 msgid "System users" msgstr "" -#: source/ubl-strings.h:214 +#: source/ubl-strings.h:219 msgid "System groups" msgstr "" diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index 489075a..f1d114e 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -53,7 +53,7 @@ msgstr "Алгоритм хэширования пароля:" msgid "UID" msgstr "UID" -#: source/ubl-strings.h:14 source/ubl-strings.h:102 +#: source/ubl-strings.h:14 source/ubl-strings.h:107 msgid "Login" msgstr "Логин" @@ -189,7 +189,7 @@ msgstr "Обзор файлов" msgid "Inspect users and groups in system" msgstr "Просмотр пользователей и групп в системе" -#: source/ubl-strings.h:46 source/ubl-strings.h:56 +#: source/ubl-strings.h:46 source/ubl-strings.h:61 msgid "Additional settings" msgstr "Дополнительные настройки" @@ -217,27 +217,53 @@ msgstr "Обновить список пользователей и групп" msgid "Additional saving configuration" msgstr "Дополнительные настройки сохранения" +#: source/ubl-strings.h:54 +msgid "This user doesn't exist in configuration. Are you sure want to add user" +msgstr "Пользователь в конфигурации отсутствует, но его можно добавить. Вы действительно хотите добавить пользвателя" + +#: source/ubl-strings.h:54 source/ubl-strings.h:56 +#, fuzzy +msgid "to configuration?" +msgstr "в конфигурацию?" + +#: source/ubl-strings.h:55 +msgid "This user exists in configuration. Are you sure want to update user" +msgstr "Пользователб уже присутствует в конфигурации. Хотите обновить данные пользователя" + +#: source/ubl-strings.h:55 source/ubl-strings.h:57 +msgid "data at configuration?" +msgstr "в конфигурации?" + +#: source/ubl-strings.h:56 +msgid "" +"This group doesn't exist in configuration. Are you sure want to add group" +msgstr "Группа в конфигурации отсутствует, но ей можно добавить. Вы действительно хотите добавить группу" + #: source/ubl-strings.h:57 +msgid "This group exists in configuration. Are you sure want to update group" +msgstr "Группа уже присутствует в конфигурации. Хотите обновить данные группы" + +#: source/ubl-strings.h:62 msgid "No password required" msgstr "Пароль не требуется" -#: source/ubl-strings.h:58 +#: source/ubl-strings.h:63 msgid "Set a password" msgstr "Задать пароль" -#: source/ubl-strings.h:59 source/ubl-strings.h:105 +#: source/ubl-strings.h:64 source/ubl-strings.h:110 msgid "Encrypted" msgstr "Зашифрован" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:65 msgid "Unencrypted" msgstr "Незашифрован" -#: source/ubl-strings.h:73 +#: source/ubl-strings.h:78 msgid "Accept" msgstr "Принять" -#: source/ubl-strings.h:74 +#: source/ubl-strings.h:79 msgid "" "Are you sure want to encrypt all passwords?\n" "This action can't be undone." @@ -245,73 +271,73 @@ msgstr "" "Вы уверены что хотите зашифровать все пароли?\n" "Это действие нельзя отменить." -#: source/ubl-strings.h:75 +#: source/ubl-strings.h:80 msgid "Encrypt all unencrypted passwords at global configuration" msgstr "Зашифровать все незашифрованные пароли в глобальной конфигурации" -#: source/ubl-strings.h:76 +#: source/ubl-strings.h:81 msgid "DES (Algorithm for Symmetric Encryption)" msgstr "DES (Алгоритм для симметричного шифрования)" -#: source/ubl-strings.h:77 +#: source/ubl-strings.h:82 msgid "MD5 (128-bit hashing algorithm)" msgstr "MD5 (128-битный алгоритм хеширования)" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:83 msgid "yescrypt (Cryptographic hash function)" msgstr "yescrypt (Криптографическая хэш-функция)" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:84 msgid "GOST-YESCRYPT (Design according to GOST R 34.11─2012)" msgstr "GOST-YESCRYPT (Конструкция согласно ГОСТ Р 34.11─2012)" -#: source/ubl-strings.h:80 +#: source/ubl-strings.h:85 msgid "scrypt (Adaptive cryptographic key generation function)" msgstr "scrypt (Адаптивная криптографическая функция формирования ключа)" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:86 msgid "Blowfish (Symmetric Block Cipher Algorithm)" msgstr "Blowfish (Алгоритм блочного симметричного шифрования)" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:87 msgid "bcrypt (Adaptive hash function from the Blowfish family of algorithms)" msgstr "bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish)" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:88 msgid "" "bcrypt-a (Adaptive hash function from the Blowfish family of algorithms)" msgstr "bcrypt-a (Адаптивная хеш-функция из семейства алгоритмов Blowfish)" -#: source/ubl-strings.h:84 +#: source/ubl-strings.h:89 msgid "SHA512 (Hash function from the SHA-2 family of algorithms)" msgstr "SHA512 (Хеш-функция из семейства алгоритмов SHA-2)" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:90 msgid "SHA256 (Hash function from the SHA-2 family of algorithms)" msgstr "SHA256 (Хеш-функция из семейства алгоритмов SHA-2)" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:91 msgid "Sun MD5 (Hash algorithm from Sun Microsystems)" msgstr "Sun MD5 (Хеш-алгоритм от Sun Microsystems)" -#: source/ubl-strings.h:87 +#: source/ubl-strings.h:92 msgid "MD5 Unix (Hash algorithm calls standard MD5 thousand times)" msgstr "MD5 Unix (Хэш-алгоритм вызывает тысячу раз стандартный MD5)" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:93 msgid "" "Extended DES Crypt (Hash function from the BSDi family of DES algorithms)" msgstr "Extended DES Crypt (Хеш-функция из семейства алгоритмов DES от BSDi)" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:94 msgid "descrypt (Hash function from the DES family of algorithms)" msgstr "descrypt (Хеш-функция из семейства алгоритмов DES)" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:95 msgid "NTHash (Hash function from the NT Windows family of algorithms)" msgstr "NTHash (Хеш-функция из семейства алгоритмов NT Windows)" -#: source/ubl-strings.h:92 +#: source/ubl-strings.h:97 msgid "" "While booting the operating system, apply the settings of all users from the " "configuration" @@ -319,7 +345,7 @@ msgstr "" "При запуске операционной системы применять настройки всех пользователей из " "конфигурации" -#: source/ubl-strings.h:93 +#: source/ubl-strings.h:98 msgid "" "While shutdown, save the settings of all users with UID>=1000 to the " "configuration" @@ -327,91 +353,91 @@ msgstr "" "При завершении работы сохранить настройки пользователей с UID>=1000 в " "конфигурацию" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:101 msgid "Configure group" msgstr "Редактировать группу" -#: source/ubl-strings.h:97 +#: source/ubl-strings.h:102 msgid "Add group" msgstr "Добавить группу" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:103 msgid "Group id:" msgstr "Идентификатор группы (GID):" -#: source/ubl-strings.h:99 +#: source/ubl-strings.h:104 msgid "Group name:" msgstr "Имя группы:" -#: source/ubl-strings.h:100 +#: source/ubl-strings.h:105 msgid "Group users:" msgstr "Пользователи группы:" -#: source/ubl-strings.h:101 +#: source/ubl-strings.h:106 msgid "Automatically" msgstr "Автоматически" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:108 msgid "Create group with ununique GID" msgstr "Создать группу с повторяющимися (не уникальными) GID" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:109 msgid "Create system group" msgstr "Создать системную группу" -#: source/ubl-strings.h:106 +#: source/ubl-strings.h:111 msgid "Additional configuration" msgstr "Дополнительные настройки" -#: source/ubl-strings.h:107 +#: source/ubl-strings.h:112 msgid "Group configuration synchronization" msgstr "Синхронизация настроек группы" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:113 msgid "When shutting down the system, save the group into the configuration" msgstr "При завершении работы системы сохранить группу в конфигурацию" -#: source/ubl-strings.h:109 +#: source/ubl-strings.h:114 msgid "Group administrators:" msgstr "Администраторы группы:" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:115 msgid "Group name must not start with digit" msgstr "Имя группы не должно начинаться с цифры" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:118 msgid "Default groups" msgstr "Группы пользователей по умолчанию" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:119 msgid "Main group" msgstr "Основная группа" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:120 msgid "Additional groups" msgstr "Дополнительные группы" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:121 msgid "Choose groups" msgstr "Выбрать группы" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:122 msgid "Choose users" msgstr "Выбрать пользователей" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:125 msgid "System users and groups" msgstr "Пользователи и группы в системе" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:126 msgid "Locked" msgstr "Отключен" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:127 msgid "Username" msgstr "Имя пользователя" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:128 msgid "" "Primary\n" "group" @@ -419,7 +445,7 @@ msgstr "" "Основная\n" "группа" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:129 msgid "" "Home\n" "directory" @@ -427,31 +453,31 @@ msgstr "" "Домашний\n" "каталог" -#: source/ubl-strings.h:125 source/ubl-strings.h:131 +#: source/ubl-strings.h:130 source/ubl-strings.h:136 msgid "Group" msgstr "Группа" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:131 msgid "Update the system users and groups list" msgstr "Обновить список пользователей и групп системы" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:132 msgid "Toggle system groups and users" msgstr "Переключить видимость системных пользователей и групп" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:134 msgid "Password mismatch" msgstr "Несовпадение паролей" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:135 msgid "Password must be at least" msgstr "Пароль должен состоять из как минимум" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:135 msgid "characters" msgstr "символов" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:137 msgid "" "Days until\n" "warning" @@ -459,7 +485,7 @@ msgstr "" "Дней до\n" "предупреждения" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:138 msgid "" "Days\n" "without activity" @@ -467,7 +493,7 @@ msgstr "" "Дней без\n" "активности" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:139 msgid "" "Shell\n" "path" @@ -475,7 +501,7 @@ msgstr "" "Путь до\n" "оболочки" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:140 msgid "" "Password has\n" "been changed" @@ -483,7 +509,7 @@ msgstr "" "Пароль\n" "изменён" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:141 msgid "" "Expiration\n" "date" @@ -491,7 +517,7 @@ msgstr "" "Дата\n" "устаревания" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:142 msgid "" "Password change\n" "interval (min)" @@ -499,7 +525,7 @@ msgstr "" "Интервал смены\n" "пароля (мин.)" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:143 msgid "" "Password change\n" "interval (max)" @@ -507,207 +533,207 @@ msgstr "" "Интервал смены\n" "пароля (макс.)" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:146 msgid "Add user" msgstr "Добавить пользователя" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:147 msgid "Configure user" msgstr "Редактировать пользователя" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:148 msgid "Set" msgstr "Задать" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:149 msgid "Empty important field" msgstr "Пустое важное поле" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:150 msgid "Login must not start with digit" msgstr "Логин не должен начинаться с цифры" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:151 msgid "Loading has failed" msgstr "Ошибка загрузки" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:152 msgid "Login name" msgstr "Имя логина" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:153 msgid "Additional groups:" msgstr "Дополнительные группы:" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:154 msgid "Password configuration" msgstr "Конфигурация пароля" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:155 msgid "Password has been changed:" msgstr "Пароль изменён:" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:156 msgid "expiration date:" msgstr "Дата устаревания:" -#: source/ubl-strings.h:152 +#: source/ubl-strings.h:157 msgid "Password change interval: minimum" msgstr "Интервал смены пароля: минимум" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:158 msgid "days, maximum" msgstr "дней, максимум" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:159 msgid "days" msgstr "дней" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:160 msgid "Days until warning:" msgstr "Дней до предупреждения:" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:161 msgid "Days without activity:" msgstr "Дней без активности:" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:162 msgid "Force change at next login" msgstr "Принудительно сменить при следующем входе в систему" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:163 msgid "User shell:" msgstr "Оболочка пользователя:" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:164 msgid "Home directory:" msgstr "Домашний каталог:" -#: source/ubl-strings.h:160 +#: source/ubl-strings.h:165 msgid "Don't set" msgstr "Не создавать" -#: source/ubl-strings.h:161 +#: source/ubl-strings.h:166 msgid "Create system user" msgstr "Создать системного пользователя" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:167 msgid "Create user with ununique (repeating) UID" msgstr "Создать пользователя с повторяющимися (не уникальными) UID" -#: source/ubl-strings.h:163 +#: source/ubl-strings.h:168 msgid "Do not check login for compliance with character rules" msgstr "Не проверять логин на несоответствие правилам использования символов" -#: source/ubl-strings.h:164 +#: source/ubl-strings.h:169 msgid "Temporary deactivation" msgstr "Временное отключение учётной записи" -#: source/ubl-strings.h:165 +#: source/ubl-strings.h:170 msgid "Save" msgstr "Сохранить" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:171 msgid "login_name" msgstr "Имя_логина" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:172 msgid "group_name" msgstr "Имя_группы" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:173 msgid "User name" msgstr "Имя пользователя" -#: source/ubl-strings.h:169 +#: source/ubl-strings.h:174 msgid "Sync user" msgstr "Синхронизировать пользователя" -#: source/ubl-strings.h:170 +#: source/ubl-strings.h:175 msgid "Sync user with password" msgstr "Синхронизировать пользователя с паролем" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:176 msgid "Encrypt all passwords" msgstr "Зашифровать все пароли" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:178 msgid "User configuration" msgstr "Настройка пользователя" -#: source/ubl-strings.h:174 +#: source/ubl-strings.h:179 msgid "User configuration synchronization" msgstr "Синхронизация настроек пользователя" -#: source/ubl-strings.h:175 +#: source/ubl-strings.h:180 msgid "During system startup, load the user from the configuration" msgstr "" "При запуске операционной системы применять настройки пользователя из " "конфигурации" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:181 msgid "When shutting down the system, save the user into the configuration" msgstr "" "При завершении работы операционной системы сохранить настройки пользователя " "в конфигурацию" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:182 msgid "User password configuration syncronization" msgstr "Синхронизация настроек пароля пользователя" -#: source/ubl-strings.h:178 +#: source/ubl-strings.h:183 msgid "" "During system startup, load the user's parameters from the configuration" msgstr "При загрузке системы загрузить параметры пользователя из конфигурации" -#: source/ubl-strings.h:179 +#: source/ubl-strings.h:184 msgid "" "When shutting down the system, save the user's parameters into the " "configuration" msgstr "" "При завершении работы системы сохранить параметры пользователя в конфигурацию" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:186 msgid "Basic" msgstr "Основные" -#: source/ubl-strings.h:182 +#: source/ubl-strings.h:187 msgid "Additional" msgstr "Дополнительные" -#: source/ubl-strings.h:183 +#: source/ubl-strings.h:188 msgid "Syncronization" msgstr "Синхронизация" -#: source/ubl-strings.h:185 +#: source/ubl-strings.h:190 msgid "Not specified" msgstr "Не задан" -#: source/ubl-strings.h:187 +#: source/ubl-strings.h:192 msgid "UID already busy" msgstr "UID уже существует" -#: source/ubl-strings.h:188 +#: source/ubl-strings.h:193 msgid "GID already busy" msgstr "GID уже существует" -#: source/ubl-strings.h:191 +#: source/ubl-strings.h:196 msgid "Repeat password:" msgstr "Подтверждение пароля:" -#: source/ubl-strings.h:192 +#: source/ubl-strings.h:197 msgid "Password hash:" msgstr "Хэш пароля:" -#: source/ubl-strings.h:193 +#: source/ubl-strings.h:198 msgid "Do not encrypt password" msgstr "Не шифровать пароль" -#: source/ubl-strings.h:196 +#: source/ubl-strings.h:201 msgid "Additional configuration of service parameter saving" msgstr "Дополнительные настройки сохранения параметров сервисов" -#: source/ubl-strings.h:197 +#: source/ubl-strings.h:202 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" @@ -715,54 +741,54 @@ msgstr "" "При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n" "в (hd)/ublinux-data/rootcopy/" -#: source/ubl-strings.h:198 +#: source/ubl-strings.h:203 msgid "For system save mode \"Sandbox\"" msgstr "Для режима сохранения системы \"Песочница\"" -#: source/ubl-strings.h:201 +#: source/ubl-strings.h:206 msgid "Group deletion" msgstr "Удаление групп(-ы)" -#: source/ubl-strings.h:202 +#: source/ubl-strings.h:207 msgid "Confirm group(-s) deletion:" msgstr "Подтвердите удаление групп(-ы):" -#: source/ubl-strings.h:204 +#: source/ubl-strings.h:209 msgid "User deletion" msgstr "Удаление пользователя(-ей)" -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:210 msgid "Confirm user(-s) deletion:" msgstr "Подтвердите удаление пользователя (-ей):" -#: source/ubl-strings.h:206 +#: source/ubl-strings.h:211 msgid "Chosen" msgstr "Выбран" -#: source/ubl-strings.h:207 +#: source/ubl-strings.h:212 msgid "User" msgstr "Пользователь" -#: source/ubl-strings.h:208 +#: source/ubl-strings.h:213 msgid "Home directory" msgstr "Домашний каталог" -#: source/ubl-strings.h:209 +#: source/ubl-strings.h:214 msgid "Delete home directory" msgstr "Удалить домашний каталог" -#: source/ubl-strings.h:211 +#: source/ubl-strings.h:216 msgid "Configuration users" msgstr "Пользователи конфигурации" -#: source/ubl-strings.h:212 +#: source/ubl-strings.h:217 msgid "Configuration groups" msgstr "Группы конфигурации" -#: source/ubl-strings.h:213 +#: source/ubl-strings.h:218 msgid "System users" msgstr "Пользователи системы" -#: source/ubl-strings.h:214 +#: source/ubl-strings.h:219 msgid "System groups" msgstr "Группы системы" -- 2.35.1 From 8044261302d1d47e040046012a140fb6447278e2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 26 Dec 2024 10:12:04 +0600 Subject: [PATCH 03/28] Fixed unencrypted password encryption --- source/ubl-settings-usergroups.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index dcc243e..589e7a9 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2639,6 +2639,11 @@ void on_main_edit(GtkWidget *, main_window *widgets){ } } if (parsed_size>5){ + if (check_is_password_hash(parameters[5])){ + char *temp = yon_char_append("%%",parameters[5]); + free(parameters[5]); + parameters[5]=temp; + } window->old_password=yon_char_new(parameters[5]); if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ if (yon_check_password_blocked(parameters[5])){ -- 2.35.1 From b04152b21140441532343733cd662cfb2fc6ba4c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 26 Dec 2024 16:55:23 +0600 Subject: [PATCH 04/28] Group adding from system implemented --- source/ubl-settings-usergroups.c | 36 +++++++++++++++++++------------- source/ubl-settings-usergroups.h | 7 +++++++ 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 589e7a9..0b677cb 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -161,9 +161,9 @@ void yon_interface_update(main_window *widgets){ } gtk_list_store_set(widgets->GroupsList,&iter, 1,login, - 0,parameters_size>1?parameters[1]:"", - 2,parameters_size>0?parameters[0]:"", - 3,parameters_size>2?parameters[2]:"", + 0,parameters_size>2?parameters[2]:"", + 2,parameters_size>1?parameters[1]:"", + 3,parameters_size>3?parameters[3]:"", 4,pars, -1); if(parameters) @@ -2854,28 +2854,34 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){ gtk_tree_model_get(model,&iter,1,&target,-1); dialog_confirmation_data data; if (config(USERADD(target))){ - data.action_text = SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target); + data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target); data.data=NULL; data.function=NULL; } else { - data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target); + data.action_text = SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target); data.data=NULL; data.function=NULL; } if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ return; } - int group_size; - config_str group = yon_config_load(get_system_group_command(target),&group_size); - if (group_size>0){ - yon_char_remove_last_symbol(group[0],'\n'); - free(yon_char_divide_search(group[0],"=",-1)); - yon_char_remove_brackets(group[0]); - char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target)); - yon_config_register(GROUPADD(target),group_command,group[0]); + char *group = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target); + char *group_shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target); + yon_char_remove_last_symbol(group,'\n'); + yon_char_remove_last_symbol(group_shadow,'\n'); + int group_size=0; + int group_shadow_size=0; + config_str parsed = yon_char_parse(group,&group_size,":"); + config_str parsed_shadow = yon_char_parse(group_shadow,&group_shadow_size,":"); + char *config_group = yon_char_unite(parsed[0],":",parsed[3],":",parsed[2],"::",parsed_shadow[2],":",strcmp(parsed[1],"x")?parsed[1]:parsed_shadow[1],NULL); + + if (!yon_char_is_empty(config_group)){ + char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD(target)); + yon_config_register(GROUPADD(target),group_command,config_group); + yon_interface_update(widgets); } } - }break; + }break; } } @@ -2905,6 +2911,8 @@ void config_init(){ main_config.save_config=0; main_config.groups = yon_file_open(groups_path,&main_config.groups_size); main_config.users = yon_file_open(users_path,&main_config.users_size); + main_config.shadow = yon_file_open(shadow_path,&main_config.shadow_size); + main_config.group_shadow = yon_file_open(group_shadow_path,&main_config.group_shadow_size); main_config.users_list=NULL; main_config.groups_list=NULL; main_config.password_min_length=6; diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index b2c05c9..e75ed76 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -54,6 +54,7 @@ #define groups_path "/etc/group" #define users_path "/etc/passwd" #define shadow_path "/etc/shadow" +#define group_shadow_path "/etc/gshadow" #define uid_path "/etc/login.defs" #define password_limits_path "/etc/security/pwquiality.conf" #define get_user_info_command(target) yon_char_unite("getent passwd \"",target,"\"",NULL) @@ -143,10 +144,16 @@ char *local; typedef struct { template_config_fields + config_str groups; int groups_size; config_str users; int users_size; + config_str shadow; + int shadow_size; + config_str group_shadow; + int group_shadow_size; + GtkListStore *users_list; GtkListStore *groups_list; -- 2.35.1 From 7b9581bc981041b8e0d890d84680ee4693fd03d9 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 27 Dec 2024 09:06:43 +0600 Subject: [PATCH 05/28] Russian localisation fixes --- 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 f1d114e..383dae0 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -219,7 +219,7 @@ msgstr "Дополнительные настройки сохранения" #: source/ubl-strings.h:54 msgid "This user doesn't exist in configuration. Are you sure want to add user" -msgstr "Пользователь в конфигурации отсутствует, но его можно добавить. Вы действительно хотите добавить пользвателя" +msgstr "Пользователь в конфигурации отсутствует, но его можно добавить. Вы действительно хотите добавить пользователя" #: source/ubl-strings.h:54 source/ubl-strings.h:56 #, fuzzy @@ -228,7 +228,7 @@ msgstr "в конфигурацию?" #: source/ubl-strings.h:55 msgid "This user exists in configuration. Are you sure want to update user" -msgstr "Пользователб уже присутствует в конфигурации. Хотите обновить данные пользователя" +msgstr "Пользователь уже присутствует в конфигурации. Хотите обновить данные пользователя" #: source/ubl-strings.h:55 source/ubl-strings.h:57 msgid "data at configuration?" -- 2.35.1 From 8e1f12c2fe5a1517a3404f937773a92f3a9c5ee4 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 27 Dec 2024 09:07:16 +0600 Subject: [PATCH 06/28] Added boldness to some dialog window labels --- source/ubl-settings-usergroups.c | 34 ++++++++++++++++++-------------- source/ubl-strings.h | 8 ++++---- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 0b677cb..2ff116e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2823,25 +2823,29 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){ if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ return; } - int user_size; - int shadow_size; - config_str user = yon_config_load(yon_debug_output("%s\n",get_system_user_command(target)),&user_size); - if (user_size>0){ - yon_char_remove_last_symbol(user[0],'\n'); - free(yon_char_divide_search(user[0],"=",-1)); - yon_char_remove_brackets(user[0]); + + char *user = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target); + char *shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target); + yon_char_remove_last_symbol(user,'\n'); + yon_char_remove_last_symbol(shadow,'\n'); + int user_size=0; + int shadow_size=0; + config_str parsed = yon_char_parse(user,&user_size,":"); + config_str parsed_shadow = yon_char_parse(shadow,&shadow_size,":"); + + char *optionals = yon_char_unite(user_size>5? parsed[5]:"",user_size>5?" ":"",user_size>6?parsed[6]:"",NULL); + char *config_user = yon_char_unite(parsed[0],":",parsed[4],":",parsed[2],":",parsed[3],":",optionals,":",strcmp(parsed[1],"x")?parsed[1]:parsed_shadow[1],NULL); + char *config_shadow = yon_char_unite(parsed[2],":",parsed[3],":",parsed[4],":",parsed[5],":",parsed[6],":",parsed[7],":",NULL); + + if (!yon_char_is_empty(config_user)){ char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target)); - yon_config_register(USERADD(target),user_command,user[0]); + yon_config_register(USERADD(target),user_command,config_user); } - config_str shadow = yon_config_load(yon_debug_output("%s\n",get_system_shadow_command(target)),&shadow_size); - if (shadow_size>0){ - yon_char_remove_last_symbol(shadow[0],'\n'); - free(yon_char_divide_search(shadow[0],"=",-1)); - yon_char_remove_brackets(shadow[0]); + if (!yon_char_is_empty(config_shadow)){ char *shadow_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(target)); - yon_config_register(USERSHADOW(target),shadow_command,shadow[0]); - + yon_config_register(USERSHADOW(target),shadow_command,config_shadow); } + yon_interface_update(widgets); } yon_interface_update((main_window*)widgets); }break; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 3f25dd8..2e81067 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -51,10 +51,10 @@ #define UPDATE_LABEL _("Update users and groups") #define SAVING_CONFIGURATION_LABEL _("Additional saving configuration") -#define SYSTEM_USER_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration. Are you sure want to add user")," ",target," ", _("to configuration?"),NULL) -#define SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to update user")," ",target," ", _("data at configuration?"),NULL) -#define SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration. Are you sure want to add group")," ",target," ", _("to configuration?"),NULL) -#define SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to update group")," ",target," ", _("data at configuration?"),NULL) +#define SYSTEM_USER_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration. Are you sure want to add user")," ",target," ", _("to configuration?"),NULL) +#define SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to update user")," ",target," ", _("data at configuration?"),NULL) +#define SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration. Are you sure want to add group")," ",target," ", _("to configuration?"),NULL) +#define SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to update group")," ",target," ", _("data at configuration?"),NULL) //ubl-settings-usergroups-additional-settings.glade -- 2.35.1 From 0ccd29acc72a84e4c94ab36cda56bf3ffc2bdc75 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 27 Dec 2024 12:19:44 +0600 Subject: [PATCH 07/28] Fixed UID/GID existing --- source/ubl-settings-usergroups.c | 22 +++++++--- source/ubl-strings.h | 6 ++- ubl-settings-usergroups-user.glade | 2 + ubl-settings-usergroups.pot | 48 +++++++++++++--------- ubl-settings-usergroups_ru.po | 65 ++++++++++++++++++------------ 5 files changed, 89 insertions(+), 54 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 2ff116e..65d56fc 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1367,8 +1367,7 @@ void on_group_save(GtkWidget *self, dictionary *dict){ int config_size=0; int final_size=0; - 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 config_users = yon_config_get_all_by_key(GROUPADD_SEARCH_macro,&config_size); config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_users,config_size,&final_size); if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck))){ int found=0; @@ -1376,11 +1375,16 @@ void on_group_save(GtkWidget *self, dictionary *dict){ for (int i=0;i1&&!strcmp(parsed[2],uid_string)&&strcmp(parsed[2],window->last_gid)) found = 1; + if (parsed_size>2&&!strcmp(parsed[2],uid_string)){ + if (yon_char_is_empty(window->last_gid)||(!yon_char_is_empty(window->last_gid)&&strcmp(parsed[2],window->last_gid))){ + found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2; + break; + } + } if (parsed_size) yon_char_parsed_free(parsed,parsed_size); } if (found){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),GID_ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?GID_ALREADY_EXIST_CONFIG_LABEL:GID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->userUIDEntry); return; } @@ -1986,11 +1990,17 @@ void on_user_save(GtkWidget *self, dictionary *dict){ for (int i=0;i1&&!strcmp(parsed[2],uid_string)&&(!yon_char_is_empty(window->last_uid)&&strcmp(parsed[2],window->last_uid))) found = 1; + if (parsed_size>2&&!strcmp(parsed[2],uid_string)){ + if (yon_char_is_empty(window->last_uid)||(!yon_char_is_empty(window->last_uid)&&strcmp(parsed[2],window->last_uid))){ + found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2; + break; + } + } + if (parsed_size) yon_char_parsed_free(parsed,parsed_size); } if (found){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),UID_ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?UID_ALREADY_EXIST_CONFIG_LABEL:UID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->userUIDEntry); return; } diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 2e81067..5f76afc 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -189,8 +189,10 @@ #define PASSWORD_NO_SET_LABEL _("Not specified") -#define UID_ALREADY_EXIST_LABEL _("UID already busy") -#define GID_ALREADY_EXIST_LABEL _("GID already busy") +#define UID_ALREADY_EXIST_CONFIG_LABEL _("UID already exists in configuration") +#define UID_ALREADY_EXIST_SYSTEM_LABEL _("UID already exists in system") +#define GID_ALREADY_EXIST_CONFIG_LABEL _("GID already exists in configuration") +#define GID_ALREADY_EXIST_SYSTEM_LABEL _("GID already exists in system") //ubl-settings-usergroups-password.glade #define PASSWORD_REPEAT_LABEL _("Repeat password:") diff --git a/ubl-settings-usergroups-user.glade b/ubl-settings-usergroups-user.glade index cd0c784..8e0cda4 100644 --- a/ubl-settings-usergroups-user.glade +++ b/ubl-settings-usergroups-user.glade @@ -1187,6 +1187,7 @@ True False start + True True @@ -1202,6 +1203,7 @@ True False start + True True diff --git a/ubl-settings-usergroups.pot b/ubl-settings-usergroups.pot index 5478896..cd450ad 100644 --- a/ubl-settings-usergroups.pot +++ b/ubl-settings-usergroups.pot @@ -666,83 +666,91 @@ msgid "Not specified" msgstr "" #: source/ubl-strings.h:192 -msgid "UID already busy" +msgid "UID already exists in configuration" msgstr "" #: source/ubl-strings.h:193 -msgid "GID already busy" +msgid "UID already exists in system" msgstr "" -#: source/ubl-strings.h:196 +#: source/ubl-strings.h:194 +msgid "GID already exists in configuration" +msgstr "" + +#: source/ubl-strings.h:195 +msgid "GID already exists in system" +msgstr "" + +#: source/ubl-strings.h:198 msgid "Repeat password:" msgstr "" -#: source/ubl-strings.h:197 +#: source/ubl-strings.h:199 msgid "Password hash:" msgstr "" -#: source/ubl-strings.h:198 +#: source/ubl-strings.h:200 msgid "Do not encrypt password" msgstr "" -#: source/ubl-strings.h:201 +#: source/ubl-strings.h:203 msgid "Additional configuration of service parameter saving" msgstr "" -#: source/ubl-strings.h:202 +#: source/ubl-strings.h:204 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" msgstr "" -#: source/ubl-strings.h:203 +#: source/ubl-strings.h:205 msgid "For system save mode \"Sandbox\"" msgstr "" -#: source/ubl-strings.h:206 +#: source/ubl-strings.h:208 msgid "Group deletion" msgstr "" -#: source/ubl-strings.h:207 +#: source/ubl-strings.h:209 msgid "Confirm group(-s) deletion:" msgstr "" -#: source/ubl-strings.h:209 +#: source/ubl-strings.h:211 msgid "User deletion" msgstr "" -#: source/ubl-strings.h:210 +#: source/ubl-strings.h:212 msgid "Confirm user(-s) deletion:" msgstr "" -#: source/ubl-strings.h:211 +#: source/ubl-strings.h:213 msgid "Chosen" msgstr "" -#: source/ubl-strings.h:212 +#: source/ubl-strings.h:214 msgid "User" msgstr "" -#: source/ubl-strings.h:213 +#: source/ubl-strings.h:215 msgid "Home directory" msgstr "" -#: source/ubl-strings.h:214 +#: source/ubl-strings.h:216 msgid "Delete home directory" msgstr "" -#: source/ubl-strings.h:216 +#: source/ubl-strings.h:218 msgid "Configuration users" msgstr "" -#: source/ubl-strings.h:217 +#: source/ubl-strings.h:219 msgid "Configuration groups" msgstr "" -#: source/ubl-strings.h:218 +#: source/ubl-strings.h:220 msgid "System users" msgstr "" -#: source/ubl-strings.h:219 +#: source/ubl-strings.h:221 msgid "System groups" msgstr "" diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index 383dae0..0fb8d1d 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -219,16 +219,19 @@ msgstr "Дополнительные настройки сохранения" #: source/ubl-strings.h:54 msgid "This user doesn't exist in configuration. Are you sure want to add user" -msgstr "Пользователь в конфигурации отсутствует, но его можно добавить. Вы действительно хотите добавить пользователя" +msgstr "" +"Пользователь в конфигурации отсутствует, но его можно добавить. Вы " +"действительно хотите добавить пользователя" #: source/ubl-strings.h:54 source/ubl-strings.h:56 -#, fuzzy msgid "to configuration?" msgstr "в конфигурацию?" #: source/ubl-strings.h:55 msgid "This user exists in configuration. Are you sure want to update user" -msgstr "Пользователь уже присутствует в конфигурации. Хотите обновить данные пользователя" +msgstr "" +"Пользователь уже присутствует в конфигурации. Хотите обновить данные " +"пользователя" #: source/ubl-strings.h:55 source/ubl-strings.h:57 msgid "data at configuration?" @@ -237,7 +240,9 @@ msgstr "в конфигурации?" #: source/ubl-strings.h:56 msgid "" "This group doesn't exist in configuration. Are you sure want to add group" -msgstr "Группа в конфигурации отсутствует, но ей можно добавить. Вы действительно хотите добавить группу" +msgstr "" +"Группа в конфигурации отсутствует, но ей можно добавить. Вы действительно " +"хотите добавить группу" #: source/ubl-strings.h:57 msgid "This group exists in configuration. Are you sure want to update group" @@ -710,30 +715,38 @@ msgid "Not specified" msgstr "Не задан" #: source/ubl-strings.h:192 -msgid "UID already busy" -msgstr "UID уже существует" +msgid "UID already exists in configuration" +msgstr "UID уже существует в конфигурации" #: source/ubl-strings.h:193 -msgid "GID already busy" -msgstr "GID уже существует" +msgid "UID already exists in system" +msgstr "UID уже существует в системе" + +#: source/ubl-strings.h:194 +msgid "GID already exists in configuration" +msgstr "GID уже существует в конфигурации" + +#: source/ubl-strings.h:195 +msgid "GID already exists in system" +msgstr "GID уже существует в системе" -#: source/ubl-strings.h:196 +#: source/ubl-strings.h:198 msgid "Repeat password:" msgstr "Подтверждение пароля:" -#: source/ubl-strings.h:197 +#: source/ubl-strings.h:199 msgid "Password hash:" msgstr "Хэш пароля:" -#: source/ubl-strings.h:198 +#: source/ubl-strings.h:200 msgid "Do not encrypt password" msgstr "Не шифровать пароль" -#: source/ubl-strings.h:201 +#: source/ubl-strings.h:203 msgid "Additional configuration of service parameter saving" msgstr "Дополнительные настройки сохранения параметров сервисов" -#: source/ubl-strings.h:202 +#: source/ubl-strings.h:204 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" @@ -741,54 +754,54 @@ msgstr "" "При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n" "в (hd)/ublinux-data/rootcopy/" -#: source/ubl-strings.h:203 +#: source/ubl-strings.h:205 msgid "For system save mode \"Sandbox\"" msgstr "Для режима сохранения системы \"Песочница\"" -#: source/ubl-strings.h:206 +#: source/ubl-strings.h:208 msgid "Group deletion" msgstr "Удаление групп(-ы)" -#: source/ubl-strings.h:207 +#: source/ubl-strings.h:209 msgid "Confirm group(-s) deletion:" msgstr "Подтвердите удаление групп(-ы):" -#: source/ubl-strings.h:209 +#: source/ubl-strings.h:211 msgid "User deletion" msgstr "Удаление пользователя(-ей)" -#: source/ubl-strings.h:210 +#: source/ubl-strings.h:212 msgid "Confirm user(-s) deletion:" msgstr "Подтвердите удаление пользователя (-ей):" -#: source/ubl-strings.h:211 +#: source/ubl-strings.h:213 msgid "Chosen" msgstr "Выбран" -#: source/ubl-strings.h:212 +#: source/ubl-strings.h:214 msgid "User" msgstr "Пользователь" -#: source/ubl-strings.h:213 +#: source/ubl-strings.h:215 msgid "Home directory" msgstr "Домашний каталог" -#: source/ubl-strings.h:214 +#: source/ubl-strings.h:216 msgid "Delete home directory" msgstr "Удалить домашний каталог" -#: source/ubl-strings.h:216 +#: source/ubl-strings.h:218 msgid "Configuration users" msgstr "Пользователи конфигурации" -#: source/ubl-strings.h:217 +#: source/ubl-strings.h:219 msgid "Configuration groups" msgstr "Группы конфигурации" -#: source/ubl-strings.h:218 +#: source/ubl-strings.h:220 msgid "System users" msgstr "Пользователи системы" -#: source/ubl-strings.h:219 +#: source/ubl-strings.h:221 msgid "System groups" msgstr "Группы системы" -- 2.35.1 From 8cf75a56ba4f94387a8aa8d2aff567ca80b29771 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 27 Dec 2024 16:12:04 +0600 Subject: [PATCH 08/28] Fixed password %% showing --- source/ubl-settings-usergroups.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 65d56fc..713c80c 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2650,9 +2650,11 @@ void on_main_edit(GtkWidget *, main_window *widgets){ } if (parsed_size>5){ if (check_is_password_hash(parameters[5])){ - char *temp = yon_char_append("%%",parameters[5]); - free(parameters[5]); - parameters[5]=temp; + if (strcmp(parameters[5],"!*")&&!yon_char_check_begins_with(parameters[5],"%%")){ + char *temp = yon_char_append("%%",parameters[5]); + free(parameters[5]); + parameters[5]=temp; + } } window->old_password=yon_char_new(parameters[5]); if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ @@ -2844,8 +2846,18 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){ config_str parsed_shadow = yon_char_parse(shadow,&shadow_size,":"); char *optionals = yon_char_unite(user_size>5? parsed[5]:"",user_size>5?" ":"",user_size>6?parsed[6]:"",NULL); - char *config_user = yon_char_unite(parsed[0],":",parsed[4],":",parsed[2],":",parsed[3],":",optionals,":",strcmp(parsed[1],"x")?parsed[1]:parsed_shadow[1],NULL); - char *config_shadow = yon_char_unite(parsed[2],":",parsed[3],":",parsed[4],":",parsed[5],":",parsed[6],":",parsed[7],":",NULL); + char *config_user = yon_char_unite(parsed[0],":", + user_size>4?parsed[4]:"",":", + user_size>2?parsed[2]:"",":", + user_size>3?parsed[3]:"",":", + !yon_char_is_empty(optionals)?optionals:"",":", + user_size>1&&strcmp(parsed[1],"x")?yon_char_return_if_exist(parsed[1],""):yon_char_return_if_exist(parsed_shadow[1],""),NULL); + char *config_shadow = yon_char_unite(yon_char_return_if_exist(parsed[2],""),":", + user_size>3?parsed[3]:"",":", + user_size>4?parsed[4]:"",":", + user_size>5?parsed[5]:"",":", + user_size>6?parsed[6]:"",":", + user_size>7?parsed[7]:"",":",NULL); if (!yon_char_is_empty(config_user)){ char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target)); -- 2.35.1 From a5f7c3e68289651fdf35b8d5dd8bc7468942f816 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 27 Dec 2024 16:51:23 +0600 Subject: [PATCH 09/28] Fixed lowest free UID/GID getting --- source/ubl-settings-usergroups.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 713c80c..d40984e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1319,18 +1319,15 @@ void on_GID_update(GtkWidget *, ubl_settings_usergroups_group_creation_window *w 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; + + int minimum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID; + int maximum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?68000:main_config.MAXGID; for (int i=0;i=main_config.MINGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))){ - if (atol(parsed[2])>main_config.MAXGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))) - break; - if (atol(parsed[2])==prev_busy+1) + if (minimumprev_busy){ prev_busy=atol(parsed[2]); - else { - yon_char_parsed_free(parsed, parsed_size); - break; } } yon_char_parsed_free(parsed, parsed_size); @@ -1915,17 +1912,18 @@ void on_UID_update(GtkWidget *, ubl_settings_usergroups_user_window *window){ int parsed_size; config_str parsed = yon_char_parse(final[i],&parsed_size,":"); - if (atol(parsed[2])>=main_config.MINUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))){ - if (atol(parsed[2])>main_config.MAXUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))) - break; - if (atol(parsed[2])==prev_busy+1) + int minimum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))?0:main_config.MINGID; + int maximum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))?68000:main_config.MAXGID; + for (int i=0;iprev_busy){ prev_busy=atol(parsed[2]); - else { - yon_char_parsed_free(parsed, parsed_size); - break; } } - yon_char_parsed_free(parsed, parsed_size); + } + yon_char_parsed_free(parsed, parsed_size); } gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1)); } -- 2.35.1 From e57acfb536ce607fbeaa536874954cfbe986a3e4 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 27 Dec 2024 17:24:32 +0600 Subject: [PATCH 10/28] Removed ability to sync user to samba with password if password is hashed --- source/ubl-settings-usergroups.c | 8 ++++++++ source/ubl-settings-usergroups.h | 1 + 2 files changed, 9 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index d40984e..1b116fb 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -411,6 +411,9 @@ void on_save_done(main_window *widgets, config_str output, int size){ textdomain(LocaleName); } +void on_save_failed(main_window *, config_str , int ){ + yon_samba_sync_proceed(); +} void on_config_save(GtkWidget *, main_window *){ @@ -2660,6 +2663,10 @@ void on_main_edit(GtkWidget *, main_window *widgets){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1); } if (!yon_char_is_empty(parameters[5])){ + if (check_is_password_hash(parameters[5])){ + gtk_widget_set_sensitive(window->userSyncSAMBAPasswordCheck,0); + g_signal_handlers_block_by_func(G_OBJECT(window->userSyncSAMBACheck),G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userSyncSAMBAPasswordCheck); + } if (!strcmp(parameters[5],"!*")){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),1); } else { @@ -3150,6 +3157,7 @@ main_window *yon_main_window_complete(main_window *widgets){ } g_list_free(list); yon_save_window_set_postsave_function(on_save_done,widgets); + yon_save_window_set_postsave_failure_function(on_save_failed,widgets); return widgets; } diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index e75ed76..20a3662 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -400,6 +400,7 @@ void yon_samba_sync_proceed(); void yon_accept_changes(); void yon_hide_passwords(template_saving_window *window); void on_save_done(main_window *widgets, config_str output, int size); +void on_save_failed(main_window *, config_str , int ); void on_config_save(GtkWidget *self, main_window *widgets); void on_config_global_save(GtkWidget *self, main_window *widgets); void on_config_local_save(GtkWidget *self, main_window *widgets); -- 2.35.1 From 3e14a498c75e2edf8ae902b2bbc290647627f5f8 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 09:43:54 +0600 Subject: [PATCH 11/28] Changed minumum sizes of some columns --- source/ubl-settings-usergroups.c | 14 ++++++++++---- ubl-settings-usergroups.glade | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 1b116fb..1c4b9e5 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -3138,21 +3138,27 @@ main_window *yon_main_window_complete(main_window *widgets){ yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size); - 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); yon_interface_update((main_window*)widgets); gtk_widget_realize(GTK_WIDGET(widgets->UsersTree)); - yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree)); gtk_widget_realize(GTK_WIDGET(widgets->GroupsTree)); - yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree)); + GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->UsersTree)); + gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,1)),50); + gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,2)),175); + gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,3)),175); for (guint i=0;iGroupsTree)); + gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,0)),50); + gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,1)),175); for (guint i=0;i True fixed - 10 + 50 10 UID 1 -- 2.35.1 From 315a16ae887f33a32ac03acc339ab4545ef596c9 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 09:50:13 +0600 Subject: [PATCH 12/28] Added debug output for samba command --- source/ubl-settings-usergroups.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 1c4b9e5..72c628d 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -214,10 +214,10 @@ if (main_config.sync_users){ int size; config_str parsed = yon_char_parse(main_config.sync_users[i],&size,":"); if (!yon_char_is_empty(parsed[1])){ - - if (system (samba_sync_password_command(parsed[0],parsed[1]))){}; + yon_launch (yon_debug_output("%s\n",samba_sync_password_command(parsed[0],parsed[1]))); + } else { - if (system ( samba_sync_command(parsed[0]))){}; + yon_launch (yon_debug_output("%s\n",samba_sync_command(parsed[0]))); } -- 2.35.1 From fe754048e57f7a1fc554366cec86827148e3e6ad Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 11:13:10 +0600 Subject: [PATCH 13/28] Russian localisation fixes --- ubl-settings-usergroups_ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index 0fb8d1d..67286f0 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -262,7 +262,7 @@ msgstr "Зашифрован" #: source/ubl-strings.h:65 msgid "Unencrypted" -msgstr "Незашифрован" +msgstr "Не зашифрован" #: source/ubl-strings.h:78 msgid "Accept" -- 2.35.1 From 031eaba69e34f8e45eb3f6f65b9e547c4645ca49 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 11:14:33 +0600 Subject: [PATCH 14/28] Russian localisation fixes --- ubl-settings-usergroups_ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index 67286f0..8c73536 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -241,7 +241,7 @@ msgstr "в конфигурации?" msgid "" "This group doesn't exist in configuration. Are you sure want to add group" msgstr "" -"Группа в конфигурации отсутствует, но ей можно добавить. Вы действительно " +"Группа в конфигурации отсутствует, но её можно добавить. Вы действительно " "хотите добавить группу" #: source/ubl-strings.h:57 -- 2.35.1 From 073db8195f65c4827b999f99985246e865f06195 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 11:57:42 +0600 Subject: [PATCH 15/28] Test fix for %% --- source/ubl-settings-usergroups.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 72c628d..9abaff3 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1005,8 +1005,10 @@ void on_password_change(GtkWidget *, dictionary *entry_dict){ if (!check_is_password_hash(password)){ gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); } else { - if (password[0]=='%'&&password[1]=='%') + if (password[0]=='%'&&password[1]=='%'){ + free(yon_char_divide(password,1)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1); + } gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password); } } -- 2.35.1 From 6919f0f64ab2b0f83007fad7d396345170912412 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 12:50:54 +0600 Subject: [PATCH 16/28] Design fixes --- ubl-settings-usergroups.glade | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ubl-settings-usergroups.glade b/ubl-settings-usergroups.glade index c5eabe9..64e36c0 100644 --- a/ubl-settings-usergroups.glade +++ b/ubl-settings-usergroups.glade @@ -408,8 +408,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. fixed 10 10 - User -name + User name 3 @@ -425,8 +424,7 @@ name fixed 10 10 - Main -group + Main group 4 -- 2.35.1 From 69d97a9187f1abd5194cccc3350bb27b1d64781a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 12:58:20 +0600 Subject: [PATCH 17/28] Design changes --- source/ubl-settings-usergroups.c | 4 ++-- ubl-settings-usergroups-system.glade | 3 +-- ubl-settings-usergroups.glade | 6 ++++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 9abaff3..784971a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -852,8 +852,8 @@ void on_groups_save(GtkWidget *self, dictionary *dict){ void on_groups_clicked(GtkWidget *, GtkEntry *output_target){ ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0); - gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),MAIN_GROUP_LABEL); - gtk_label_set_text(GTK_LABEL(window->HeaderLabel),MAIN_GROUP_LABEL); + gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),MAIN_GROUP_TITLE_LABEL); + gtk_label_set_text(GTK_LABEL(window->HeaderLabel),MAIN_GROUP_TITLE_LABEL); GtkTreeIter iter, itar,itor; int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.groups_list),&iter); for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){ diff --git a/ubl-settings-usergroups-system.glade b/ubl-settings-usergroups-system.glade index c9aedfb..9f9f569 100644 --- a/ubl-settings-usergroups-system.glade +++ b/ubl-settings-usergroups-system.glade @@ -199,8 +199,7 @@ True fixed 50 - Primary -group + Primary group 4 diff --git a/ubl-settings-usergroups.glade b/ubl-settings-usergroups.glade index 64e36c0..c5eabe9 100644 --- a/ubl-settings-usergroups.glade +++ b/ubl-settings-usergroups.glade @@ -408,7 +408,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. fixed 10 10 - User name + User +name 3 @@ -424,7 +425,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. fixed 10 10 - Main group + Main +group 4 -- 2.35.1 From 181c342d7214001624e22590a8694f908a7ab218 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 13:47:17 +0600 Subject: [PATCH 18/28] Fixed system data reloading --- source/ubl-settings-usergroups.c | 8 ++++++++ source/ubl-settings-usergroups.h | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 784971a..8c1b166 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -76,6 +76,14 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ void yon_interface_update(main_window *widgets){ gtk_list_store_clear(widgets->UsersList); gtk_list_store_clear(widgets->GroupsList); + if (main_config.groups_size) yon_char_parsed_free(main_config.groups,main_config.groups_size); + if (main_config.users_size) yon_char_parsed_free(main_config.users,main_config.users_size); + if (main_config.shadow_size) yon_char_parsed_free(main_config.shadow,main_config.shadow_size); + if (main_config.group_shadow_size) yon_char_parsed_free(main_config.group_shadow,main_config.group_shadow_size); + main_config.groups = yon_file_open(groups_path,&main_config.groups_size); + main_config.users = yon_file_open(users_path,&main_config.users_size); + main_config.shadow = yon_file_open(shadow_path,&main_config.shadow_size); + main_config.group_shadow = yon_file_open(group_shadow_path,&main_config.group_shadow_size); int size; GtkTreeIter iter; char *def_groups = yon_config_get_by_key(USERGROUPS_parameter); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 20a3662..3090a96 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -51,6 +51,10 @@ #define get_system_shadow_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_usershadow_from_system ",target,NULL) #define get_system_group_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_groupadd_from_system ",target,NULL) +#define remove_user_from_system_command(target) yon_char_append("userdel ",target) +#define remove_user_and_homedir_from_system_command yon_char_append("userdel -r ",target) +#define remove_group_from_system_command yon_char_append("groupdel ",target) + #define groups_path "/etc/group" #define users_path "/etc/passwd" #define shadow_path "/etc/shadow" -- 2.35.1 From 2748c7500e35096a609d82f4826016cc98ec3107 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 13:48:40 +0600 Subject: [PATCH 19/28] Fixed system data reloading --- source/ubl-settings-usergroups.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 8c1b166..42b4ca2 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -74,16 +74,7 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ } void yon_interface_update(main_window *widgets){ - gtk_list_store_clear(widgets->UsersList); - gtk_list_store_clear(widgets->GroupsList); - if (main_config.groups_size) yon_char_parsed_free(main_config.groups,main_config.groups_size); - if (main_config.users_size) yon_char_parsed_free(main_config.users,main_config.users_size); - if (main_config.shadow_size) yon_char_parsed_free(main_config.shadow,main_config.shadow_size); - if (main_config.group_shadow_size) yon_char_parsed_free(main_config.group_shadow,main_config.group_shadow_size); - main_config.groups = yon_file_open(groups_path,&main_config.groups_size); - main_config.users = yon_file_open(users_path,&main_config.users_size); - main_config.shadow = yon_file_open(shadow_path,&main_config.shadow_size); - main_config.group_shadow = yon_file_open(group_shadow_path,&main_config.group_shadow_size); + on_system_update(NULL,widgets); int size; GtkTreeIter iter; char *def_groups = yon_config_get_by_key(USERGROUPS_parameter); @@ -1832,8 +1823,16 @@ void yon_system_load(main_window *window){ void on_system_update(GtkWidget *, main_window *window){ + gtk_list_store_clear(widgets->UsersList); + gtk_list_store_clear(widgets->GroupsList); + if (main_config.groups_size) yon_char_parsed_free(main_config.groups,main_config.groups_size); + if (main_config.users_size) yon_char_parsed_free(main_config.users,main_config.users_size); + if (main_config.shadow_size) yon_char_parsed_free(main_config.shadow,main_config.shadow_size); + if (main_config.group_shadow_size) yon_char_parsed_free(main_config.group_shadow,main_config.group_shadow_size); main_config.groups = yon_file_open(groups_path,&main_config.groups_size); main_config.users = yon_file_open(users_path,&main_config.users_size); + main_config.shadow = yon_file_open(shadow_path,&main_config.shadow_size); + main_config.group_shadow = yon_file_open(group_shadow_path,&main_config.group_shadow_size); int login_size; config_str login_defs = yon_file_open(uid_path,&login_size); for (int i=0;i Date: Sat, 28 Dec 2024 13:49:12 +0600 Subject: [PATCH 20/28] Fixed system data reloading --- source/ubl-settings-usergroups.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 42b4ca2..4b70649 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1823,8 +1823,8 @@ void yon_system_load(main_window *window){ void on_system_update(GtkWidget *, main_window *window){ - gtk_list_store_clear(widgets->UsersList); - gtk_list_store_clear(widgets->GroupsList); + gtk_list_store_clear(window->UsersList); + gtk_list_store_clear(window->GroupsList); if (main_config.groups_size) yon_char_parsed_free(main_config.groups,main_config.groups_size); if (main_config.users_size) yon_char_parsed_free(main_config.users,main_config.users_size); if (main_config.shadow_size) yon_char_parsed_free(main_config.shadow,main_config.shadow_size); -- 2.35.1 From 5886ddb8464c7c6840259c11af310b7b13d0cf9d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 14:01:13 +0600 Subject: [PATCH 21/28] Fixed unencrypted password password window opening --- source/ubl-settings-usergroups.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 4b70649..8e883ee 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2673,6 +2673,11 @@ void on_main_edit(GtkWidget *, main_window *widgets){ } if (!yon_char_is_empty(parameters[5])){ if (check_is_password_hash(parameters[5])){ + if (yon_char_check_begins_with(parameters[5],"%%")==-1){ + char *temp = yon_char_append("%%",parameters[5]); + free(parameters[5]); + parameters[5]=temp; + } gtk_widget_set_sensitive(window->userSyncSAMBAPasswordCheck,0); g_signal_handlers_block_by_func(G_OBJECT(window->userSyncSAMBACheck),G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userSyncSAMBAPasswordCheck); } -- 2.35.1 From 76f0de818fd8086ea9fa167b3b9ef32485e05305 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 14:05:43 +0600 Subject: [PATCH 22/28] Fixed always unexistent group when syncing with system 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 8e883ee..cbd7828 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2898,7 +2898,7 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){ char *target; gtk_tree_model_get(model,&iter,1,&target,-1); dialog_confirmation_data data; - if (config(USERADD(target))){ + if (config(GROUPADD(target))){ data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target); data.data=NULL; data.function=NULL; -- 2.35.1 From e681880e68e33640738466a6d9cd59f6a81fab75 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 14:48:23 +0600 Subject: [PATCH 23/28] Crash fixe --- source/ubl-settings-usergroups.c | 56 ++++++++++++++++++++++++++++++-- source/ubl-strings.h | 5 +++ 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index cbd7828..2c71d36 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -715,6 +715,20 @@ yon_confirmation_window *yon_delete_confirmation_new(){ return window; } +void yon_system_delete_confirmation_open(main_window *widgets){ + yon_confirmation_window *window = yon_delete_confirmation_new(); + gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window)); + GtkTreeIter iter,itar; + dictionary *dict = NULL; + yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_delete_confirmation_save),dict); + GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ + gtk_tree_model_get(model,&iter,1,,2,,) + } +} + void yon_delete_confirmation_open(main_window *widgets){ yon_confirmation_window *window = yon_delete_confirmation_new(); gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window)); @@ -1329,7 +1343,7 @@ void on_GID_update(GtkWidget *, ubl_settings_usergroups_group_creation_window *w for (int i=0;i2&&minimumprev_busy){ prev_busy=atol(parsed[2]); } @@ -2815,10 +2829,46 @@ void on_main_delete(GtkWidget *, main_window *widgets){ dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data)); data->function=NULL; data->data=NULL; - if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ + int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook)); + switch(active){ + case 0: + yon_delete_confirmation_open(widgets); - } else { + break; + case 1: yon_group_delete_confirmation_open(widgets); + break; + case 2:{ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1); + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ + char *target; + gtk_tree_model_get(model,&iter,2,&target,-1); + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + int found = !!config(USERADD(target)); + if (found){ + data->action_text = SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target); + data->function=NULL; + data->data=NULL; + } else { + data->action_text = SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target); + data->function=NULL; + data->data=NULL; + + } + if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ + return; + } + if (found){ + yon_delete_confirmation_open(widgets); + } else { + yon_system_delete_confirmation_open(widgets); + } + } + }break; + case 3:{ + + }break; } } diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 5f76afc..e2f969f 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -56,6 +56,11 @@ #define SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration. Are you sure want to add group")," ",target," ", _("to configuration?"),NULL) #define SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to update group")," ",target," ", _("data at configuration?"),NULL) +#define SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration and will be removed from the system. Are you sure want to remove user")," ",target," ", _("from the system??"),NULL) +#define SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to remove user")," ",target," ", _("?"),NULL) +#define SYSTEM_GROUP_SYSTEM_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration and will be removed from the system. Are you sure want to remove group")," ",target," ", _("from the system?"),NULL) +#define SYSTEM_GROUP_CONFIG_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to remove group")," ",target,"", _("?"),NULL) + //ubl-settings-usergroups-additional-settings.glade #define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings") -- 2.35.1 From 7d775a23a3760d5c2f847218eb0993148956f006 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 14:50:57 +0600 Subject: [PATCH 24/28] Build fail fix --- source/ubl-settings-usergroups.c | 18 +++++++++--------- source/ubl-settings-usergroups.h | 2 ++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 2c71d36..fbc3007 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -718,14 +718,14 @@ yon_confirmation_window *yon_delete_confirmation_new(){ void yon_system_delete_confirmation_open(main_window *widgets){ yon_confirmation_window *window = yon_delete_confirmation_new(); gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window)); - GtkTreeIter iter,itar; + GtkTreeIter iter; dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_delete_confirmation_save),dict); GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ - gtk_tree_model_get(model,&iter,1,,2,,) + // gtk_tree_model_get(model,&iter,1,,2,,) } } @@ -2844,16 +2844,16 @@ void on_main_delete(GtkWidget *, main_window *widgets){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ char *target; gtk_tree_model_get(model,&iter,2,&target,-1); - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + dialog_confirmation_data data; int found = !!config(USERADD(target)); if (found){ - data->action_text = SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target); - data->function=NULL; - data->data=NULL; + data.action_text = SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target); + data.function=NULL; + data.data=NULL; } else { - data->action_text = SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target); - data->function=NULL; - data->data=NULL; + data.action_text = SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target); + data.function=NULL; + data.data=NULL; } if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 3090a96..f38b727 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -419,6 +419,8 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict); void yon_group_delete_confirmation_save(GtkWidget *self, dictionary *dict); int yon_check_password_blocked(char *password); yon_confirmation_window *yon_delete_confirmation_new(); + +void yon_system_delete_confirmation_open(main_window *widgets); void yon_delete_confirmation_open(main_window *widgets); void yon_group_delete_confirmation_open(main_window *widgets); yon_savasettings_window *yon_saving_settings_new(); -- 2.35.1 From 4e1ae06060e3bf1800470e30811b2a1bab8315d1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 14:58:23 +0600 Subject: [PATCH 25/28] Fixed error --- source/ubl-settings-usergroups.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index fbc3007..018e23e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1378,7 +1378,7 @@ void on_group_save(GtkWidget *self, dictionary *dict){ yon_ubl_status_highlight_incorrect(window->userUIDEntry); return; } - } + int config_size=0; int final_size=0; @@ -1404,6 +1404,7 @@ void on_group_save(GtkWidget *self, dictionary *dict){ return; } } + } group_name = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)); if (group_name[0]>'0'&&group_name[0]<'9'){ -- 2.35.1 From deba2ba8f96f14bcd8f2f8e66a52fc27b6008f1e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 15:19:03 +0600 Subject: [PATCH 26/28] Test fix for self-searching in system users/groups --- source/ubl-settings-usergroups.c | 76 +++++++++++++++++--------------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 018e23e..3f53c69 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1380,28 +1380,30 @@ void on_group_save(GtkWidget *self, dictionary *dict){ } - int config_size=0; - int final_size=0; - config_str config_users = yon_config_get_all_by_key(GROUPADD_SEARCH_macro,&config_size); - config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_users,config_size,&final_size); - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck))){ - int found=0; - char *uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry)); - for (int i=0;i2&&!strcmp(parsed[2],uid_string)){ - if (yon_char_is_empty(window->last_gid)||(!yon_char_is_empty(window->last_gid)&&strcmp(parsed[2],window->last_gid))){ - found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2; - break; + if (strcmp(gid,window->last_gid)){ + int config_size=0; + int final_size=0; + config_str config_users = yon_config_get_all_by_key(GROUPADD_SEARCH_macro,&config_size); + config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_users,config_size,&final_size); + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck))){ + int found=0; + char *uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry)); + for (int i=0;i2&&!strcmp(parsed[2],uid_string)){ + if (yon_char_is_empty(window->last_gid)||(!yon_char_is_empty(window->last_gid)&&strcmp(parsed[2],window->last_gid))){ + found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2; + break; + } } + if (parsed_size) yon_char_parsed_free(parsed,parsed_size); + } + if (found){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?GID_ALREADY_EXIST_CONFIG_LABEL:GID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userUIDEntry); + return; } - if (parsed_size) yon_char_parsed_free(parsed,parsed_size); - } - if (found){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?GID_ALREADY_EXIST_CONFIG_LABEL:GID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->userUIDEntry); - return; } } } @@ -2010,24 +2012,26 @@ 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 (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))){ - int found=0; - for (int i=0;i2&&!strcmp(parsed[2],uid_string)){ - if (yon_char_is_empty(window->last_uid)||(!yon_char_is_empty(window->last_uid)&&strcmp(parsed[2],window->last_uid))){ - found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2; - break; + if (strcmp(uid_string,window->last_uid)){ + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))){ + int found=0; + for (int i=0;i2&&!strcmp(parsed[2],uid_string)){ + if (yon_char_is_empty(window->last_uid)||(!yon_char_is_empty(window->last_uid)&&strcmp(parsed[2],window->last_uid))){ + found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2; + break; + } } - } - if (parsed_size) yon_char_parsed_free(parsed,parsed_size); - } - if (found){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?UID_ALREADY_EXIST_CONFIG_LABEL:UID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->userUIDEntry); - return; + if (parsed_size) yon_char_parsed_free(parsed,parsed_size); + } + if (found){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?UID_ALREADY_EXIST_CONFIG_LABEL:UID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userUIDEntry); + return; + } } } -- 2.35.1 From eeb9e8b5a282b85850a704d4c6ca8de107baacf4 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 15:26:58 +0600 Subject: [PATCH 27/28] Test fix for self-searching in system users/groups --- source/ubl-settings-usergroups.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 3f53c69..f05e89e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2628,6 +2628,8 @@ void on_main_edit(GtkWidget *, main_window *widgets){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),0); gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry), parsed_size>1?parameters[1]:""); } + if (!yon_char_is_empty(parameters[1])) + window->last_uid=yon_char_new(parameters[1]); } if (parsed_size>2){ if (!strcmp(parameters[2],"x")) @@ -2635,8 +2637,6 @@ void on_main_edit(GtkWidget *, main_window *widgets){ else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),0); gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:""); - if (!yon_char_is_empty(parameters[2])) - window->last_uid=yon_char_new(parameters[2]); } } if (parsed_size>3){ -- 2.35.1 From 14db41b97382e8d4b91e0d42bb02afc8ff1aeabd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 28 Dec 2024 16:02:17 +0600 Subject: [PATCH 28/28] Fixed users was deleting from users table --- 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 f05e89e..167591a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2883,7 +2883,7 @@ void on_config_update(GtkWidget *, main_window *widgets){ } else { on_config_local_load(NULL,widgets); } - on_system_update(NULL,widgets); + // on_system_update(NULL,widgets); } -- 2.35.1