From 90d4fd0d11b42bbdefebd3239ab298c2197899bd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 10:32:07 +0600 Subject: [PATCH 01/12] Homedir creation tracking --- source/ubl-settings-usergroups.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 57983e3..0d0e9f1 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1382,7 +1382,12 @@ void on_user_login_update(GtkWidget *self, ubl_settings_usergroups_user_window * gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry))); } else { gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),""); - } + } + if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo))==0){ + char *homepath = yon_char_append("/home/",(char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry))); + gtk_entry_set_text(GTK_ENTRY(window->userHomeEntry),homepath); + free(homepath); + } } void on_user_save(GtkWidget *self, dictionary *dict){ @@ -1522,6 +1527,10 @@ void on_user_save(GtkWidget *self, dictionary *dict){ int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo)); if (user_home_active==2){ user_home=yon_char_unite(" --home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL); + } else if (user_home_active==0){ + user_home=yon_char_unite(" --home-dir /home/",login,NULL); + } else if (user_home_active==1){ + user_home="--no-create-home"; } else user_home = ""; int system_user_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck)); -- 2.35.1 From 2961224c4baca65845c12baa1f88b3d034fe8c1e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 10:46:48 +0600 Subject: [PATCH 02/12] Added editing on table double click --- source/ubl-settings-usergroups.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 0d0e9f1..41f89fd 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2058,6 +2058,10 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ } +void on_main_edit_activate(GtkWidget *self, GtkTreePath *path, GtkTreeViewColumn *column, main_window *widgets){ + on_main_edit(self,widgets); +} + void on_main_delete(GtkWidget *self, main_window *widgets){ GtkTreeModel *model; GtkWidget *cur_tree; @@ -2242,7 +2246,9 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SavingSettingsButton),"clicked",G_CALLBACK(on_saving_settings_open),widgets); g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets); g_signal_connect(G_OBJECT(widgets->UsersTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->UsersTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets); g_signal_connect(G_OBJECT(widgets->GroupsTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->GroupsTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets); g_signal_connect(G_OBJECT(widgets->MainNotebook),"switch-page",G_CALLBACK(on_notebook_page_changed),widgets); g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); -- 2.35.1 From 7968d4187648f8f615dc99199968fcdd67de3fc2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 11:19:22 +0600 Subject: [PATCH 03/12] Default home directory loads from '/etc/default/useradd' --- source/ubl-settings-usergroups.c | 14 +++++++++++++- source/ubl-settings-usergroups.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 41f89fd..ea0c3cb 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1528,7 +1528,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ if (user_home_active==2){ user_home=yon_char_unite(" --home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL); } else if (user_home_active==0){ - user_home=yon_char_unite(" --home-dir /home/",login,NULL); + user_home=yon_char_unite(" --home-dir ",main_config.default_home,"/",login,NULL); } else if (user_home_active==1){ user_home="--no-create-home"; } else user_home = ""; @@ -2163,6 +2163,18 @@ void config_init(){ } } yon_char_parsed_free(login_defs,login_size); + int size=0; + main_config.default_home = NULL; + config_str file_output = yon_file_open(default_home_initiator_path,&size); + for (int i=0;i Date: Mon, 19 Feb 2024 11:36:16 +0600 Subject: [PATCH 04/12] Added dialog window --- source/ubl-settings-usergroups.c | 7 +- source/ubl-strings.h | 1 + ubl-settings-usergroups.pot | 188 ++++++++++++++++--------------- ubl-settings-usergroups_ru.po | 161 +++++++++++++------------- 4 files changed, 187 insertions(+), 170 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index ea0c3cb..2dedc99 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -819,8 +819,11 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ yon_dictionary_add_or_create_if_exists_with_data(root_dict,"entry",window->RootPasswordEntry); g_signal_connect(G_OBJECT(window->DefaultPasswordButton),"clicked",G_CALLBACK(on_password_change),default_dict); g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict); - - g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(on_passwords_encrypt),NULL); + dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data)); + data->function=on_passwords_encrypt; + data->action_text = ENCRYPT_SURE_LABEL; + data->data=NULL; + g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data); g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 7be22aa..7bc0220 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -72,6 +72,7 @@ #define DESCTRYPT_LABEL "desctrypt" #define NT_LABEL "nt" #define ACCEPT_LABEL _("Accept") +#define ENCRYPT_SURE_LABEL _("Are you sure want to encrypt all passwords?\nThis action can't be undone") //ubl-settings-usergroups-group-creation.glade #define CONFIGURE_GROUP_TITLE_LABEL _("Configure group") diff --git a/ubl-settings-usergroups.pot b/ubl-settings-usergroups.pot index e10d602..16a7227 100644 --- a/ubl-settings-usergroups.pot +++ b/ubl-settings-usergroups.pot @@ -108,7 +108,7 @@ msgid "UID" msgstr "" #: source/ubl-strings.h:15 source/ubl-strings.h:84 source/ubl-strings.h:14 -#: source/ubl-strings.h:83 source/ubl-strings.h:14 source/ubl-strings.h:83 +#: source/ubl-strings.h:83 source/ubl-strings.h:14 source/ubl-strings.h:84 msgid "Login" msgstr "" @@ -276,7 +276,7 @@ msgid "Set a password" msgstr "" #: source/ubl-strings.h:61 source/ubl-strings.h:87 source/ubl-strings.h:60 -#: source/ubl-strings.h:86 source/ubl-strings.h:60 source/ubl-strings.h:86 +#: source/ubl-strings.h:86 source/ubl-strings.h:60 source/ubl-strings.h:87 msgid "Encrypted password" msgstr "" @@ -288,382 +288,388 @@ msgstr "" msgid "Accept" msgstr "" -#: source/ubl-strings.h:78 source/ubl-strings.h:77 source/ubl-strings.h:77 +#: source/ubl-strings.h:78 source/ubl-strings.h:77 source/ubl-strings.h:78 msgid "Configure group" msgstr "" -#: source/ubl-strings.h:79 source/ubl-strings.h:78 source/ubl-strings.h:78 +#: source/ubl-strings.h:79 source/ubl-strings.h:78 source/ubl-strings.h:79 msgid "Add group" msgstr "" -#: source/ubl-strings.h:80 source/ubl-strings.h:79 source/ubl-strings.h:79 +#: source/ubl-strings.h:80 source/ubl-strings.h:79 source/ubl-strings.h:80 msgid "Group id:" msgstr "" -#: source/ubl-strings.h:81 source/ubl-strings.h:80 source/ubl-strings.h:80 +#: source/ubl-strings.h:81 source/ubl-strings.h:80 source/ubl-strings.h:81 msgid "Group name:" msgstr "" -#: source/ubl-strings.h:82 source/ubl-strings.h:81 source/ubl-strings.h:81 +#: source/ubl-strings.h:82 source/ubl-strings.h:81 source/ubl-strings.h:82 msgid "Group users:" msgstr "" -#: source/ubl-strings.h:83 source/ubl-strings.h:82 source/ubl-strings.h:82 +#: source/ubl-strings.h:83 source/ubl-strings.h:82 source/ubl-strings.h:83 msgid "Automatically" msgstr "" -#: source/ubl-strings.h:85 source/ubl-strings.h:84 source/ubl-strings.h:84 +#: source/ubl-strings.h:85 source/ubl-strings.h:84 source/ubl-strings.h:85 msgid "Create group with ununique GID" msgstr "" -#: source/ubl-strings.h:86 source/ubl-strings.h:85 source/ubl-strings.h:85 +#: source/ubl-strings.h:86 source/ubl-strings.h:85 source/ubl-strings.h:86 msgid "Create system group" msgstr "" -#: source/ubl-strings.h:88 source/ubl-strings.h:87 source/ubl-strings.h:87 +#: source/ubl-strings.h:88 source/ubl-strings.h:87 source/ubl-strings.h:88 msgid "Additional configuration" msgstr "" -#: source/ubl-strings.h:89 source/ubl-strings.h:88 source/ubl-strings.h:88 +#: source/ubl-strings.h:89 source/ubl-strings.h:88 source/ubl-strings.h:89 msgid "Group configuration synchronization" msgstr "" -#: source/ubl-strings.h:90 source/ubl-strings.h:89 source/ubl-strings.h:89 +#: source/ubl-strings.h:90 source/ubl-strings.h:89 source/ubl-strings.h:90 msgid "When shutting down the system, save the group into the configuration" msgstr "" -#: source/ubl-strings.h:91 source/ubl-strings.h:90 source/ubl-strings.h:90 +#: source/ubl-strings.h:91 source/ubl-strings.h:90 source/ubl-strings.h:91 msgid "Group administrators:" msgstr "" -#: source/ubl-strings.h:94 source/ubl-strings.h:93 source/ubl-strings.h:94 +#: source/ubl-strings.h:94 source/ubl-strings.h:93 source/ubl-strings.h:95 msgid "Default groups" msgstr "" -#: source/ubl-strings.h:95 source/ubl-strings.h:94 source/ubl-strings.h:95 +#: source/ubl-strings.h:95 source/ubl-strings.h:94 source/ubl-strings.h:96 msgid "Main group" msgstr "" -#: source/ubl-strings.h:96 source/ubl-strings.h:95 source/ubl-strings.h:96 +#: source/ubl-strings.h:96 source/ubl-strings.h:95 source/ubl-strings.h:97 msgid "Additional groups" msgstr "" -#: source/ubl-strings.h:97 source/ubl-strings.h:96 source/ubl-strings.h:97 +#: source/ubl-strings.h:97 source/ubl-strings.h:96 source/ubl-strings.h:98 msgid "Choose groups" msgstr "" -#: source/ubl-strings.h:98 source/ubl-strings.h:97 source/ubl-strings.h:98 +#: source/ubl-strings.h:98 source/ubl-strings.h:97 source/ubl-strings.h:99 msgid "Choose users" msgstr "" -#: source/ubl-strings.h:101 source/ubl-strings.h:100 source/ubl-strings.h:101 +#: source/ubl-strings.h:101 source/ubl-strings.h:100 source/ubl-strings.h:102 msgid "System users and groups" msgstr "" -#: source/ubl-strings.h:102 source/ubl-strings.h:101 source/ubl-strings.h:102 +#: source/ubl-strings.h:102 source/ubl-strings.h:101 source/ubl-strings.h:103 msgid "Blocked" msgstr "" -#: source/ubl-strings.h:103 source/ubl-strings.h:102 source/ubl-strings.h:103 +#: source/ubl-strings.h:103 source/ubl-strings.h:102 source/ubl-strings.h:104 msgid "Username" msgstr "" -#: source/ubl-strings.h:104 source/ubl-strings.h:103 source/ubl-strings.h:104 +#: source/ubl-strings.h:104 source/ubl-strings.h:103 source/ubl-strings.h:105 msgid "" "Primary\n" "group" msgstr "" -#: source/ubl-strings.h:105 source/ubl-strings.h:104 source/ubl-strings.h:105 +#: source/ubl-strings.h:105 source/ubl-strings.h:104 source/ubl-strings.h:106 msgid "" "Home\n" "directory" msgstr "" #: source/ubl-strings.h:106 source/ubl-strings.h:112 source/ubl-strings.h:105 -#: source/ubl-strings.h:111 source/ubl-strings.h:106 source/ubl-strings.h:112 +#: source/ubl-strings.h:111 source/ubl-strings.h:107 source/ubl-strings.h:113 msgid "Group" msgstr "" -#: source/ubl-strings.h:107 source/ubl-strings.h:106 source/ubl-strings.h:107 +#: source/ubl-strings.h:107 source/ubl-strings.h:106 source/ubl-strings.h:108 msgid "Update the system users and groups list" msgstr "" -#: source/ubl-strings.h:108 source/ubl-strings.h:107 source/ubl-strings.h:108 +#: source/ubl-strings.h:108 source/ubl-strings.h:107 source/ubl-strings.h:109 msgid "Toggle system groups and users" msgstr "" -#: source/ubl-strings.h:110 source/ubl-strings.h:109 source/ubl-strings.h:110 +#: source/ubl-strings.h:110 source/ubl-strings.h:109 source/ubl-strings.h:111 msgid "Password mismatch" msgstr "" -#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:111 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:112 msgid "Password must be at least" msgstr "" -#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:111 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:112 msgid "characters" msgstr "" -#: source/ubl-strings.h:113 source/ubl-strings.h:112 source/ubl-strings.h:113 +#: source/ubl-strings.h:113 source/ubl-strings.h:112 source/ubl-strings.h:114 msgid "" "Days until\n" "warning" msgstr "" -#: source/ubl-strings.h:114 source/ubl-strings.h:113 source/ubl-strings.h:114 +#: source/ubl-strings.h:114 source/ubl-strings.h:113 source/ubl-strings.h:115 msgid "" "Days\n" "without activity" msgstr "" -#: source/ubl-strings.h:115 source/ubl-strings.h:114 source/ubl-strings.h:115 +#: source/ubl-strings.h:115 source/ubl-strings.h:114 source/ubl-strings.h:116 msgid "" "Shell\n" "path" msgstr "" -#: source/ubl-strings.h:116 source/ubl-strings.h:115 source/ubl-strings.h:116 +#: source/ubl-strings.h:116 source/ubl-strings.h:115 source/ubl-strings.h:117 msgid "" "Password has\n" "been changed" msgstr "" -#: source/ubl-strings.h:117 source/ubl-strings.h:116 source/ubl-strings.h:117 +#: source/ubl-strings.h:117 source/ubl-strings.h:116 source/ubl-strings.h:118 msgid "" "Expiration\n" "date" msgstr "" -#: source/ubl-strings.h:118 source/ubl-strings.h:117 source/ubl-strings.h:118 +#: source/ubl-strings.h:118 source/ubl-strings.h:117 source/ubl-strings.h:119 msgid "" "Password change\n" "interval (min)" msgstr "" -#: source/ubl-strings.h:119 source/ubl-strings.h:118 source/ubl-strings.h:119 +#: source/ubl-strings.h:119 source/ubl-strings.h:118 source/ubl-strings.h:120 msgid "" "Password change\n" "interval (max)" msgstr "" -#: source/ubl-strings.h:122 source/ubl-strings.h:121 source/ubl-strings.h:122 +#: source/ubl-strings.h:122 source/ubl-strings.h:121 source/ubl-strings.h:123 msgid "Add user" msgstr "" -#: source/ubl-strings.h:123 source/ubl-strings.h:122 source/ubl-strings.h:123 +#: source/ubl-strings.h:123 source/ubl-strings.h:122 source/ubl-strings.h:124 msgid "Configure user" msgstr "" -#: source/ubl-strings.h:124 source/ubl-strings.h:123 source/ubl-strings.h:124 +#: source/ubl-strings.h:124 source/ubl-strings.h:123 source/ubl-strings.h:125 msgid "Set" msgstr "" -#: source/ubl-strings.h:125 source/ubl-strings.h:124 source/ubl-strings.h:125 +#: source/ubl-strings.h:125 source/ubl-strings.h:124 source/ubl-strings.h:126 msgid "Empty important field" msgstr "" -#: source/ubl-strings.h:126 source/ubl-strings.h:127 +#: source/ubl-strings.h:126 source/ubl-strings.h:127 source/ubl-strings.h:128 msgid "Loading has failed" msgstr "" -#: source/ubl-strings.h:127 source/ubl-strings.h:128 +#: source/ubl-strings.h:127 source/ubl-strings.h:128 source/ubl-strings.h:129 msgid "Login name" msgstr "" -#: source/ubl-strings.h:128 source/ubl-strings.h:129 +#: source/ubl-strings.h:128 source/ubl-strings.h:129 source/ubl-strings.h:130 msgid "Additional groups:" msgstr "" -#: source/ubl-strings.h:129 source/ubl-strings.h:130 +#: source/ubl-strings.h:129 source/ubl-strings.h:130 source/ubl-strings.h:131 msgid "Password configuration" msgstr "" -#: source/ubl-strings.h:130 source/ubl-strings.h:131 +#: source/ubl-strings.h:130 source/ubl-strings.h:131 source/ubl-strings.h:132 msgid "Password has been changed:" msgstr "" -#: source/ubl-strings.h:131 source/ubl-strings.h:132 +#: source/ubl-strings.h:131 source/ubl-strings.h:132 source/ubl-strings.h:133 msgid "expiration date:" msgstr "" -#: source/ubl-strings.h:132 source/ubl-strings.h:133 +#: source/ubl-strings.h:132 source/ubl-strings.h:133 source/ubl-strings.h:134 msgid "Password change interval: minimum" msgstr "" -#: source/ubl-strings.h:133 source/ubl-strings.h:134 +#: source/ubl-strings.h:133 source/ubl-strings.h:134 source/ubl-strings.h:135 msgid "days, maximum" msgstr "" -#: source/ubl-strings.h:134 source/ubl-strings.h:135 +#: source/ubl-strings.h:134 source/ubl-strings.h:135 source/ubl-strings.h:136 msgid "days" msgstr "" -#: source/ubl-strings.h:135 source/ubl-strings.h:136 +#: source/ubl-strings.h:135 source/ubl-strings.h:136 source/ubl-strings.h:137 msgid "Days until warning:" msgstr "" -#: source/ubl-strings.h:136 source/ubl-strings.h:137 +#: source/ubl-strings.h:136 source/ubl-strings.h:137 source/ubl-strings.h:138 msgid "Days without activity:" msgstr "" -#: source/ubl-strings.h:137 source/ubl-strings.h:138 +#: source/ubl-strings.h:137 source/ubl-strings.h:138 source/ubl-strings.h:139 msgid "Force change at next login" msgstr "" -#: source/ubl-strings.h:138 source/ubl-strings.h:139 +#: source/ubl-strings.h:138 source/ubl-strings.h:139 source/ubl-strings.h:140 msgid "User shell:" msgstr "" -#: source/ubl-strings.h:139 source/ubl-strings.h:140 +#: source/ubl-strings.h:139 source/ubl-strings.h:140 source/ubl-strings.h:141 msgid "Home directory:" msgstr "" -#: source/ubl-strings.h:140 source/ubl-strings.h:141 +#: source/ubl-strings.h:140 source/ubl-strings.h:141 source/ubl-strings.h:142 msgid "Don't set" msgstr "" -#: source/ubl-strings.h:141 source/ubl-strings.h:142 +#: source/ubl-strings.h:141 source/ubl-strings.h:142 source/ubl-strings.h:143 msgid "Create system user" msgstr "" -#: source/ubl-strings.h:142 source/ubl-strings.h:143 +#: source/ubl-strings.h:142 source/ubl-strings.h:143 source/ubl-strings.h:144 msgid "Create user with ununique (repeating) UID" msgstr "" -#: source/ubl-strings.h:143 source/ubl-strings.h:144 +#: source/ubl-strings.h:143 source/ubl-strings.h:144 source/ubl-strings.h:145 msgid "Do not check login for compliance with character rules" msgstr "" -#: source/ubl-strings.h:144 source/ubl-strings.h:145 +#: source/ubl-strings.h:144 source/ubl-strings.h:145 source/ubl-strings.h:146 msgid "Temporary deactivation" msgstr "" -#: source/ubl-strings.h:145 source/ubl-strings.h:146 +#: source/ubl-strings.h:145 source/ubl-strings.h:146 source/ubl-strings.h:147 msgid "Save" msgstr "" -#: source/ubl-strings.h:146 source/ubl-strings.h:147 +#: source/ubl-strings.h:146 source/ubl-strings.h:147 source/ubl-strings.h:148 msgid "login_name" msgstr "" -#: source/ubl-strings.h:147 source/ubl-strings.h:148 +#: source/ubl-strings.h:147 source/ubl-strings.h:148 source/ubl-strings.h:149 msgid "group_name" msgstr "" -#: source/ubl-strings.h:148 source/ubl-strings.h:149 +#: source/ubl-strings.h:148 source/ubl-strings.h:149 source/ubl-strings.h:150 msgid "User name" msgstr "" -#: source/ubl-strings.h:149 source/ubl-strings.h:150 +#: source/ubl-strings.h:149 source/ubl-strings.h:150 source/ubl-strings.h:151 msgid "Sync user" msgstr "" -#: source/ubl-strings.h:150 source/ubl-strings.h:151 +#: source/ubl-strings.h:150 source/ubl-strings.h:151 source/ubl-strings.h:152 msgid "Sync user with password" msgstr "" -#: source/ubl-strings.h:151 source/ubl-strings.h:152 +#: source/ubl-strings.h:151 source/ubl-strings.h:152 source/ubl-strings.h:153 msgid "Encrypt all passwords" msgstr "" -#: source/ubl-strings.h:153 source/ubl-strings.h:154 +#: source/ubl-strings.h:153 source/ubl-strings.h:154 source/ubl-strings.h:155 msgid "User configuration" msgstr "" -#: source/ubl-strings.h:154 source/ubl-strings.h:155 +#: source/ubl-strings.h:154 source/ubl-strings.h:155 source/ubl-strings.h:156 msgid "User configuration synchronization" msgstr "" -#: source/ubl-strings.h:155 source/ubl-strings.h:156 +#: source/ubl-strings.h:155 source/ubl-strings.h:156 source/ubl-strings.h:157 msgid "During system startup, load the user from the configuration" msgstr "" -#: source/ubl-strings.h:156 source/ubl-strings.h:157 +#: source/ubl-strings.h:156 source/ubl-strings.h:157 source/ubl-strings.h:158 msgid "When shutting down the system, save the user into the configuration" msgstr "" -#: source/ubl-strings.h:157 source/ubl-strings.h:158 +#: source/ubl-strings.h:157 source/ubl-strings.h:158 source/ubl-strings.h:159 msgid "User password configuration syncronization" msgstr "" -#: source/ubl-strings.h:158 source/ubl-strings.h:159 +#: source/ubl-strings.h:158 source/ubl-strings.h:159 source/ubl-strings.h:160 msgid "" "During system startup, load the user's parameters from the configuration" msgstr "" -#: source/ubl-strings.h:159 source/ubl-strings.h:160 +#: source/ubl-strings.h:159 source/ubl-strings.h:160 source/ubl-strings.h:161 msgid "" "When shutting down the system, save the user's parameters into the " "configuration" msgstr "" -#: source/ubl-strings.h:161 source/ubl-strings.h:162 +#: source/ubl-strings.h:161 source/ubl-strings.h:162 source/ubl-strings.h:163 msgid "Main" msgstr "" -#: source/ubl-strings.h:162 source/ubl-strings.h:163 +#: source/ubl-strings.h:162 source/ubl-strings.h:163 source/ubl-strings.h:164 msgid "Additional" msgstr "" -#: source/ubl-strings.h:163 source/ubl-strings.h:164 +#: source/ubl-strings.h:163 source/ubl-strings.h:164 source/ubl-strings.h:165 msgid "Syncronization" msgstr "" -#: source/ubl-strings.h:166 source/ubl-strings.h:167 +#: source/ubl-strings.h:166 source/ubl-strings.h:167 source/ubl-strings.h:168 msgid "Repeat password:" msgstr "" -#: source/ubl-strings.h:167 source/ubl-strings.h:168 +#: source/ubl-strings.h:167 source/ubl-strings.h:168 source/ubl-strings.h:169 msgid "Password hash:" msgstr "" -#: source/ubl-strings.h:168 source/ubl-strings.h:169 +#: source/ubl-strings.h:168 source/ubl-strings.h:169 source/ubl-strings.h:170 msgid "Do not encrypt password" msgstr "" -#: source/ubl-strings.h:171 source/ubl-strings.h:172 +#: source/ubl-strings.h:171 source/ubl-strings.h:172 source/ubl-strings.h:173 msgid "Additional configuration of service parameter saving" msgstr "" -#: source/ubl-strings.h:172 source/ubl-strings.h:173 +#: source/ubl-strings.h:172 source/ubl-strings.h:173 source/ubl-strings.h:174 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" msgstr "" -#: source/ubl-strings.h:173 source/ubl-strings.h:174 +#: source/ubl-strings.h:173 source/ubl-strings.h:174 source/ubl-strings.h:175 msgid "For system save mode \"Sandbox\"" msgstr "" -#: source/ubl-strings.h:176 source/ubl-strings.h:177 +#: source/ubl-strings.h:176 source/ubl-strings.h:177 source/ubl-strings.h:178 msgid "User deletion" msgstr "" -#: source/ubl-strings.h:177 source/ubl-strings.h:178 +#: source/ubl-strings.h:177 source/ubl-strings.h:178 source/ubl-strings.h:179 msgid "Confirm user(-s) deletion:" msgstr "" -#: source/ubl-strings.h:178 source/ubl-strings.h:179 +#: source/ubl-strings.h:178 source/ubl-strings.h:179 source/ubl-strings.h:180 msgid "Chosen" msgstr "" -#: source/ubl-strings.h:179 source/ubl-strings.h:180 +#: source/ubl-strings.h:179 source/ubl-strings.h:180 source/ubl-strings.h:181 msgid "User" msgstr "" -#: source/ubl-strings.h:180 source/ubl-strings.h:181 +#: source/ubl-strings.h:180 source/ubl-strings.h:181 source/ubl-strings.h:182 msgid "Home directory" msgstr "" -#: source/ubl-strings.h:181 source/ubl-strings.h:182 +#: source/ubl-strings.h:181 source/ubl-strings.h:182 source/ubl-strings.h:183 msgid "Delete home directory" msgstr "" -#: source/ubl-strings.h:125 source/ubl-strings.h:126 +#: source/ubl-strings.h:125 source/ubl-strings.h:126 source/ubl-strings.h:127 msgid "Login must not start with digit" msgstr "" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:91 source/ubl-strings.h:92 msgid "Group name must not start with digit" msgstr "" + +#: source/ubl-strings.h:75 +msgid "" +"Are you sure want to encrypt all passwords?\n" +"This action can't be undone" +msgstr "" diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index d204077..0334be2 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -349,39 +349,39 @@ msgstr "При завершении работы системы сохранит msgid "Group administrators:" msgstr "Администраторы группы:" -#: source/ubl-strings.h:94 source/ubl-strings.h:93 +#: source/ubl-strings.h:94 source/ubl-strings.h:93 source/ubl-strings.h:95 msgid "Default groups" msgstr "Группы пользователей по умолчанию" -#: source/ubl-strings.h:95 source/ubl-strings.h:94 +#: source/ubl-strings.h:95 source/ubl-strings.h:94 source/ubl-strings.h:96 msgid "Main group" msgstr "Основная группа" -#: source/ubl-strings.h:96 source/ubl-strings.h:95 +#: source/ubl-strings.h:96 source/ubl-strings.h:95 source/ubl-strings.h:97 msgid "Additional groups" msgstr "Дополнительные группы" -#: source/ubl-strings.h:97 source/ubl-strings.h:96 +#: source/ubl-strings.h:97 source/ubl-strings.h:96 source/ubl-strings.h:98 msgid "Choose groups" msgstr "Выбрать группы" -#: source/ubl-strings.h:98 source/ubl-strings.h:97 +#: source/ubl-strings.h:98 source/ubl-strings.h:97 source/ubl-strings.h:99 msgid "Choose users" msgstr "Выбрать пользователей" -#: source/ubl-strings.h:101 source/ubl-strings.h:100 +#: source/ubl-strings.h:101 source/ubl-strings.h:100 source/ubl-strings.h:102 msgid "System users and groups" msgstr "Пользователи и группы в системе" -#: source/ubl-strings.h:102 source/ubl-strings.h:101 +#: source/ubl-strings.h:102 source/ubl-strings.h:101 source/ubl-strings.h:103 msgid "Blocked" msgstr "Заблокировано" -#: source/ubl-strings.h:103 source/ubl-strings.h:102 +#: source/ubl-strings.h:103 source/ubl-strings.h:102 source/ubl-strings.h:104 msgid "Username" msgstr "Имя пользователя" -#: source/ubl-strings.h:104 source/ubl-strings.h:103 +#: source/ubl-strings.h:104 source/ubl-strings.h:103 source/ubl-strings.h:105 msgid "" "Primary\n" "group" @@ -389,7 +389,7 @@ msgstr "" "Основная\n" "группа" -#: source/ubl-strings.h:105 source/ubl-strings.h:104 +#: source/ubl-strings.h:105 source/ubl-strings.h:104 source/ubl-strings.h:106 msgid "" "Home\n" "directory" @@ -398,31 +398,31 @@ msgstr "" "каталог" #: source/ubl-strings.h:106 source/ubl-strings.h:112 source/ubl-strings.h:105 -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:111 source/ubl-strings.h:107 source/ubl-strings.h:113 msgid "Group" msgstr "Группа" -#: source/ubl-strings.h:107 source/ubl-strings.h:106 +#: source/ubl-strings.h:107 source/ubl-strings.h:106 source/ubl-strings.h:108 msgid "Update the system users and groups list" msgstr "Обновить список пользователей и групп системы" -#: source/ubl-strings.h:108 source/ubl-strings.h:107 +#: source/ubl-strings.h:108 source/ubl-strings.h:107 source/ubl-strings.h:109 msgid "Toggle system groups and users" msgstr "Переключить видимость системных пользователей и групп" -#: source/ubl-strings.h:110 source/ubl-strings.h:109 +#: source/ubl-strings.h:110 source/ubl-strings.h:109 source/ubl-strings.h:111 msgid "Password mismatch" msgstr "Несовпадение паролей" -#: source/ubl-strings.h:111 source/ubl-strings.h:110 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:112 msgid "Password must be at least" msgstr "Пароль должен состоять из как минимум" -#: source/ubl-strings.h:111 source/ubl-strings.h:110 +#: source/ubl-strings.h:111 source/ubl-strings.h:110 source/ubl-strings.h:112 msgid "characters" msgstr "символов" -#: source/ubl-strings.h:113 source/ubl-strings.h:112 +#: source/ubl-strings.h:113 source/ubl-strings.h:112 source/ubl-strings.h:114 msgid "" "Days until\n" "warning" @@ -430,7 +430,7 @@ msgstr "" "Дней до\n" "предупреждения" -#: source/ubl-strings.h:114 source/ubl-strings.h:113 +#: source/ubl-strings.h:114 source/ubl-strings.h:113 source/ubl-strings.h:115 msgid "" "Days\n" "without activity" @@ -438,7 +438,7 @@ msgstr "" "Дней без\n" "активности" -#: source/ubl-strings.h:115 source/ubl-strings.h:114 +#: source/ubl-strings.h:115 source/ubl-strings.h:114 source/ubl-strings.h:116 msgid "" "Shell\n" "path" @@ -446,7 +446,7 @@ msgstr "" "Путь до\n" "оболочки" -#: source/ubl-strings.h:116 source/ubl-strings.h:115 +#: source/ubl-strings.h:116 source/ubl-strings.h:115 source/ubl-strings.h:117 msgid "" "Password has\n" "been changed" @@ -454,7 +454,7 @@ msgstr "" "Пароль\n" "изменён" -#: source/ubl-strings.h:117 source/ubl-strings.h:116 +#: source/ubl-strings.h:117 source/ubl-strings.h:116 source/ubl-strings.h:118 msgid "" "Expiration\n" "date" @@ -462,7 +462,7 @@ msgstr "" "Дата\n" "устаревания" -#: source/ubl-strings.h:118 source/ubl-strings.h:117 +#: source/ubl-strings.h:118 source/ubl-strings.h:117 source/ubl-strings.h:119 msgid "" "Password change\n" "interval (min)" @@ -470,7 +470,7 @@ msgstr "" "Интервал смены\n" "пароля (мин.)" -#: source/ubl-strings.h:119 source/ubl-strings.h:118 +#: source/ubl-strings.h:119 source/ubl-strings.h:118 source/ubl-strings.h:120 msgid "" "Password change\n" "interval (max)" @@ -478,187 +478,187 @@ msgstr "" "Интервал смены\n" "пароля (макс.)" -#: source/ubl-strings.h:122 source/ubl-strings.h:121 +#: source/ubl-strings.h:122 source/ubl-strings.h:121 source/ubl-strings.h:123 msgid "Add user" msgstr "Добавить пользователя" -#: source/ubl-strings.h:123 source/ubl-strings.h:122 +#: source/ubl-strings.h:123 source/ubl-strings.h:122 source/ubl-strings.h:124 msgid "Configure user" msgstr "Редактировать пользователя" -#: source/ubl-strings.h:124 source/ubl-strings.h:123 +#: source/ubl-strings.h:124 source/ubl-strings.h:123 source/ubl-strings.h:125 msgid "Set" msgstr "Задать" -#: source/ubl-strings.h:125 source/ubl-strings.h:124 +#: source/ubl-strings.h:125 source/ubl-strings.h:124 source/ubl-strings.h:126 msgid "Empty important field" msgstr "Пустое важное поле" -#: source/ubl-strings.h:126 source/ubl-strings.h:127 +#: source/ubl-strings.h:126 source/ubl-strings.h:127 source/ubl-strings.h:128 msgid "Loading has failed" msgstr "Ошибка загрузки" -#: source/ubl-strings.h:127 source/ubl-strings.h:128 +#: source/ubl-strings.h:127 source/ubl-strings.h:128 source/ubl-strings.h:129 msgid "Login name" msgstr "Имя логина" -#: source/ubl-strings.h:128 source/ubl-strings.h:129 +#: source/ubl-strings.h:128 source/ubl-strings.h:129 source/ubl-strings.h:130 msgid "Additional groups:" msgstr "Дополнительные группы:" -#: source/ubl-strings.h:129 source/ubl-strings.h:130 +#: source/ubl-strings.h:129 source/ubl-strings.h:130 source/ubl-strings.h:131 msgid "Password configuration" msgstr "Конфигурация пароля" -#: source/ubl-strings.h:130 source/ubl-strings.h:131 +#: source/ubl-strings.h:130 source/ubl-strings.h:131 source/ubl-strings.h:132 msgid "Password has been changed:" msgstr "Пароль изменён:" -#: source/ubl-strings.h:131 source/ubl-strings.h:132 +#: source/ubl-strings.h:131 source/ubl-strings.h:132 source/ubl-strings.h:133 msgid "expiration date:" msgstr "Дата устаревания:" -#: source/ubl-strings.h:132 source/ubl-strings.h:133 +#: source/ubl-strings.h:132 source/ubl-strings.h:133 source/ubl-strings.h:134 msgid "Password change interval: minimum" msgstr "Интервал смены пароля: минимум" -#: source/ubl-strings.h:133 source/ubl-strings.h:134 +#: source/ubl-strings.h:133 source/ubl-strings.h:134 source/ubl-strings.h:135 msgid "days, maximum" msgstr "дней, максимум" -#: source/ubl-strings.h:134 source/ubl-strings.h:135 +#: source/ubl-strings.h:134 source/ubl-strings.h:135 source/ubl-strings.h:136 msgid "days" msgstr "дней" -#: source/ubl-strings.h:135 source/ubl-strings.h:136 +#: source/ubl-strings.h:135 source/ubl-strings.h:136 source/ubl-strings.h:137 msgid "Days until warning:" msgstr "Дней до предупреждения:" -#: source/ubl-strings.h:136 source/ubl-strings.h:137 +#: source/ubl-strings.h:136 source/ubl-strings.h:137 source/ubl-strings.h:138 msgid "Days without activity:" msgstr "Дней без активности:" -#: source/ubl-strings.h:137 source/ubl-strings.h:138 +#: source/ubl-strings.h:137 source/ubl-strings.h:138 source/ubl-strings.h:139 msgid "Force change at next login" msgstr "Принудительно сменить при следующем входе в систему" -#: source/ubl-strings.h:138 source/ubl-strings.h:139 +#: source/ubl-strings.h:138 source/ubl-strings.h:139 source/ubl-strings.h:140 msgid "User shell:" msgstr "Оболочка пользователя:" -#: source/ubl-strings.h:139 source/ubl-strings.h:140 +#: source/ubl-strings.h:139 source/ubl-strings.h:140 source/ubl-strings.h:141 msgid "Home directory:" msgstr "Домашний каталог:" -#: source/ubl-strings.h:140 source/ubl-strings.h:141 +#: source/ubl-strings.h:140 source/ubl-strings.h:141 source/ubl-strings.h:142 msgid "Don't set" msgstr "Не создавать" -#: source/ubl-strings.h:141 source/ubl-strings.h:142 +#: source/ubl-strings.h:141 source/ubl-strings.h:142 source/ubl-strings.h:143 msgid "Create system user" msgstr "Создать системного пользователя" -#: source/ubl-strings.h:142 source/ubl-strings.h:143 +#: source/ubl-strings.h:142 source/ubl-strings.h:143 source/ubl-strings.h:144 msgid "Create user with ununique (repeating) UID" msgstr "Создать пользователя с повторяющимися (не уникальными) UID" -#: source/ubl-strings.h:143 source/ubl-strings.h:144 +#: source/ubl-strings.h:143 source/ubl-strings.h:144 source/ubl-strings.h:145 msgid "Do not check login for compliance with character rules" msgstr "Не проверять логин на несоответствие правилам использования символов" -#: source/ubl-strings.h:144 source/ubl-strings.h:145 +#: source/ubl-strings.h:144 source/ubl-strings.h:145 source/ubl-strings.h:146 msgid "Temporary deactivation" msgstr "Временное отключение учётной записи" -#: source/ubl-strings.h:145 source/ubl-strings.h:146 +#: source/ubl-strings.h:145 source/ubl-strings.h:146 source/ubl-strings.h:147 msgid "Save" msgstr "Сохранить" -#: source/ubl-strings.h:146 source/ubl-strings.h:147 +#: source/ubl-strings.h:146 source/ubl-strings.h:147 source/ubl-strings.h:148 msgid "login_name" msgstr "Имя_логина" -#: source/ubl-strings.h:147 source/ubl-strings.h:148 +#: source/ubl-strings.h:147 source/ubl-strings.h:148 source/ubl-strings.h:149 msgid "group_name" msgstr "Имя_группы" -#: source/ubl-strings.h:148 source/ubl-strings.h:149 +#: source/ubl-strings.h:148 source/ubl-strings.h:149 source/ubl-strings.h:150 msgid "User name" msgstr "Имя пользователя" -#: source/ubl-strings.h:149 source/ubl-strings.h:150 +#: source/ubl-strings.h:149 source/ubl-strings.h:150 source/ubl-strings.h:151 msgid "Sync user" msgstr "Синхронизировать пользователя" -#: source/ubl-strings.h:150 source/ubl-strings.h:151 +#: source/ubl-strings.h:150 source/ubl-strings.h:151 source/ubl-strings.h:152 msgid "Sync user with password" msgstr "Синхронизировать пользователя с паролем" -#: source/ubl-strings.h:151 source/ubl-strings.h:152 +#: source/ubl-strings.h:151 source/ubl-strings.h:152 source/ubl-strings.h:153 msgid "Encrypt all passwords" msgstr "Зашифровать все пароли" -#: source/ubl-strings.h:153 source/ubl-strings.h:154 +#: source/ubl-strings.h:153 source/ubl-strings.h:154 source/ubl-strings.h:155 msgid "User configuration" msgstr "Настройка пользователя" -#: source/ubl-strings.h:154 source/ubl-strings.h:155 +#: source/ubl-strings.h:154 source/ubl-strings.h:155 source/ubl-strings.h:156 msgid "User configuration synchronization" msgstr "Синхронизация настроек пользователя" -#: source/ubl-strings.h:155 source/ubl-strings.h:156 +#: source/ubl-strings.h:155 source/ubl-strings.h:156 source/ubl-strings.h:157 msgid "During system startup, load the user from the configuration" msgstr "При загрузке системы загрузить пользователя из конфигурации" -#: source/ubl-strings.h:156 source/ubl-strings.h:157 +#: source/ubl-strings.h:156 source/ubl-strings.h:157 source/ubl-strings.h:158 msgid "When shutting down the system, save the user into the configuration" msgstr "При завершении работы системы сохранить пользователя в конфигурацию" -#: source/ubl-strings.h:157 source/ubl-strings.h:158 +#: source/ubl-strings.h:157 source/ubl-strings.h:158 source/ubl-strings.h:159 msgid "User password configuration syncronization" msgstr "Синхронизация настроек пароля пользователя" -#: source/ubl-strings.h:158 source/ubl-strings.h:159 +#: source/ubl-strings.h:158 source/ubl-strings.h:159 source/ubl-strings.h:160 msgid "" "During system startup, load the user's parameters from the configuration" msgstr "При загрузке системы загрузить параметры пользователя из конфигурации" -#: source/ubl-strings.h:159 source/ubl-strings.h:160 +#: source/ubl-strings.h:159 source/ubl-strings.h:160 source/ubl-strings.h:161 msgid "" "When shutting down the system, save the user's parameters into the " "configuration" msgstr "" "При завершении работы системы сохранить параметры пользователя в конфигурацию" -#: source/ubl-strings.h:161 source/ubl-strings.h:162 +#: source/ubl-strings.h:161 source/ubl-strings.h:162 source/ubl-strings.h:163 msgid "Main" msgstr "Основные" -#: source/ubl-strings.h:162 source/ubl-strings.h:163 +#: source/ubl-strings.h:162 source/ubl-strings.h:163 source/ubl-strings.h:164 msgid "Additional" msgstr "Дополнительные" -#: source/ubl-strings.h:163 source/ubl-strings.h:164 +#: source/ubl-strings.h:163 source/ubl-strings.h:164 source/ubl-strings.h:165 msgid "Syncronization" msgstr "Синхронизация" -#: source/ubl-strings.h:166 source/ubl-strings.h:167 +#: source/ubl-strings.h:166 source/ubl-strings.h:167 source/ubl-strings.h:168 msgid "Repeat password:" msgstr "Подтверждение пароля:" -#: source/ubl-strings.h:167 source/ubl-strings.h:168 +#: source/ubl-strings.h:167 source/ubl-strings.h:168 source/ubl-strings.h:169 msgid "Password hash:" msgstr "Хэш пароля:" -#: source/ubl-strings.h:168 source/ubl-strings.h:169 +#: source/ubl-strings.h:168 source/ubl-strings.h:169 source/ubl-strings.h:170 msgid "Do not encrypt password" msgstr "Не шифровать пароль" -#: source/ubl-strings.h:171 source/ubl-strings.h:172 +#: source/ubl-strings.h:171 source/ubl-strings.h:172 source/ubl-strings.h:173 msgid "Additional configuration of service parameter saving" msgstr "Дополнительные настройки сохранения параметров сервисов" -#: source/ubl-strings.h:172 source/ubl-strings.h:173 +#: source/ubl-strings.h:172 source/ubl-strings.h:173 source/ubl-strings.h:174 msgid "" "At every system shutdown save changes of (root)/var/lib/samba\n" "into (hd)/ublinux-data/rootcopy" @@ -666,39 +666,46 @@ msgstr "" "При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n" "в (hd)/ublinux-data/rootcopy/" -#: source/ubl-strings.h:173 source/ubl-strings.h:174 +#: source/ubl-strings.h:173 source/ubl-strings.h:174 source/ubl-strings.h:175 msgid "For system save mode \"Sandbox\"" msgstr "Для режима сохранения системы \"Песочница\"" -#: source/ubl-strings.h:176 source/ubl-strings.h:177 +#: source/ubl-strings.h:176 source/ubl-strings.h:177 source/ubl-strings.h:178 msgid "User deletion" msgstr "Удаление пользователя(-лей)" -#: source/ubl-strings.h:177 source/ubl-strings.h:178 +#: source/ubl-strings.h:177 source/ubl-strings.h:178 source/ubl-strings.h:179 msgid "Confirm user(-s) deletion:" msgstr "Подтвердите удаление пользователя (-ей):" -#: source/ubl-strings.h:178 source/ubl-strings.h:179 +#: source/ubl-strings.h:178 source/ubl-strings.h:179 source/ubl-strings.h:180 msgid "Chosen" msgstr "Выбран" -#: source/ubl-strings.h:179 source/ubl-strings.h:180 +#: source/ubl-strings.h:179 source/ubl-strings.h:180 source/ubl-strings.h:181 msgid "User" msgstr "Пользователь" -#: source/ubl-strings.h:180 source/ubl-strings.h:181 +#: source/ubl-strings.h:180 source/ubl-strings.h:181 source/ubl-strings.h:182 msgid "Home directory" msgstr "Домашний каталог" -#: source/ubl-strings.h:181 source/ubl-strings.h:182 +#: source/ubl-strings.h:181 source/ubl-strings.h:182 source/ubl-strings.h:183 msgid "Delete home directory" msgstr "Удалить домашний каталог" -#: source/ubl-strings.h:125 source/ubl-strings.h:126 +#: source/ubl-strings.h:125 source/ubl-strings.h:126 source/ubl-strings.h:127 msgid "Login must not start with digit" msgstr "Логин не должен начинаться с цифры" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:91 source/ubl-strings.h:92 #, fuzzy msgid "Group name must not start with digit" msgstr "Имя группы не должно начинаться с цифры" + +#: source/ubl-strings.h:75 +msgid "" +"Are you sure want to encrypt all passwords?\n" +"This action can't be undone" +msgstr "Вы уверены что хотите зашифровать все пароли?\n" +"Это действие нельзя отменить" -- 2.35.1 From fa4835f1891173761f99814bad0e5dbcc8840f8b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 11:46:57 +0600 Subject: [PATCH 05/12] Fixed space before first additional parameter --- source/ubl-settings-usergroups.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 2dedc99..fb9d858 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1529,9 +1529,9 @@ void on_user_save(GtkWidget *self, dictionary *dict){ int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo)); if (user_home_active==2){ - user_home=yon_char_unite(" --home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL); + user_home=yon_char_unite("--home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL); } else if (user_home_active==0){ - user_home=yon_char_unite(" --home-dir ",main_config.default_home,"/",login,NULL); + user_home=yon_char_unite("--home-dir ",main_config.default_home,"/",login,NULL); } else if (user_home_active==1){ user_home="--no-create-home"; } else user_home = ""; @@ -1609,10 +1609,13 @@ void on_user_save(GtkWidget *self, dictionary *dict){ ":",yon_char_return_if_exist(additional_groups,"x"), ":",yon_char_return_if_exist(user_home,""), yon_char_return_if_exist(user_shell,""), + !yon_char_is_empty(user_shell)?" ":"", yon_char_return_if_exist(create_system_user,""), + !yon_char_is_empty(create_system_user)?" ":"", yon_char_return_if_exist(create_ununique,""), + !yon_char_is_empty(create_ununique)?" ":"", yon_char_return_if_exist(do_not_check,""), - !yon_char_is_empty(extra_options)?extra_options:"", + !yon_char_is_empty(extra_options)?" ":"", yon_char_return_if_exist(extra_options,""), ":",yon_char_return_if_exist(password,""), NULL); -- 2.35.1 From 6b6cb93b313fe261506e8acfa7e0d47a4de3bf70 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 11:48:51 +0600 Subject: [PATCH 06/12] Localisation changes --- source/ubl-strings.h | 2 +- ubl-settings-usergroups.pot | 2 +- ubl-settings-usergroups_ru.po | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 7bc0220..9963a0f 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -72,7 +72,7 @@ #define DESCTRYPT_LABEL "desctrypt" #define NT_LABEL "nt" #define ACCEPT_LABEL _("Accept") -#define ENCRYPT_SURE_LABEL _("Are you sure want to encrypt all passwords?\nThis action can't be undone") +#define ENCRYPT_SURE_LABEL _("Are you sure want to encrypt all passwords?\nThis action can't be undone.") //ubl-settings-usergroups-group-creation.glade #define CONFIGURE_GROUP_TITLE_LABEL _("Configure group") diff --git a/ubl-settings-usergroups.pot b/ubl-settings-usergroups.pot index 16a7227..29d88ca 100644 --- a/ubl-settings-usergroups.pot +++ b/ubl-settings-usergroups.pot @@ -671,5 +671,5 @@ msgstr "" #: source/ubl-strings.h:75 msgid "" "Are you sure want to encrypt all passwords?\n" -"This action can't be undone" +"This action can't be undone." msgstr "" diff --git a/ubl-settings-usergroups_ru.po b/ubl-settings-usergroups_ru.po index 0334be2..52bbbb8 100644 --- a/ubl-settings-usergroups_ru.po +++ b/ubl-settings-usergroups_ru.po @@ -706,6 +706,6 @@ msgstr "Имя группы не должно начинаться с цифры #: source/ubl-strings.h:75 msgid "" "Are you sure want to encrypt all passwords?\n" -"This action can't be undone" +"This action can't be undone." msgstr "Вы уверены что хотите зашифровать все пароли?\n" -"Это действие нельзя отменить" +"Это действие нельзя отменить." -- 2.35.1 From cb2c4d7a56130ca5cd097ca8c65932367b037096 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 14:58:55 +0600 Subject: [PATCH 07/12] Password loading fixes --- source/ubl-settings-usergroups.c | 37 +++++++++++++++----------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index fb9d858..dd2780d 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -72,11 +72,11 @@ void yon_interface_update(main_window *widgets){ login = yon_char_divide_search(parameters[0],"=",-1); login[strlen(login)-1]='\0'; } - if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; - if (parameters_size>2&&!strcmp(parameters[2],"x")) parameters[2]=login; + if (parameters_size>1+1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; + if (parameters_size>2+1&&!strcmp(parameters[2],"x")) parameters[2]=login; char *pars = ""; - if (parameters_size>5&&strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ - if (!check_is_password_hash(parameters[5])){ + if (strcmp(parameters[parameters_size-1],"x")&&strcmp(parameters[parameters_size-1],"")){ + if (!check_is_password_hash(parameters[parameters_size-1])){ pars = ENCRYPTED_LABEL; } else { pars = UNENCRYPTED_LABEL; @@ -88,11 +88,11 @@ void yon_interface_update(main_window *widgets){ } gtk_list_store_set(widgets->UsersList,&iter, 2,login, - 3,parameters_size>0?parameters[0]:"", - 1,parameters_size>1&&!yon_char_is_empty(parameters[1])?parameters[1]:AUTOMATICALLY_LABEL, - 4,parameters_size>2&&!yon_char_is_empty(parameters[2])?parameters[2]:login, - 5,parameters_size>3?!strcmp(parameters[3],"x")||!strcmp(parameters[3],"")?def_groups:parameters[3]:def_groups, - 6,parameters_size>4?parameters[4]:"", + 3,parameters_size>0+1?parameters[0]:"", + 1,parameters_size>1+1&&!yon_char_is_empty(parameters[1])?parameters[1]:AUTOMATICALLY_LABEL, + 4,parameters_size>2+1&&!yon_char_is_empty(parameters[2])?parameters[2]:login, + 5,parameters_size>3+1?!strcmp(parameters[3],"x")||!strcmp(parameters[3],"")?def_groups:parameters[3]:def_groups, + 6,parameters_size>4+1?parameters[4]:"", 7,pars, -1); if(parameters) @@ -643,8 +643,8 @@ void on_password_change(GtkWidget *self, dictionary *entry_dict){// dictionary *dict = NULL; char *password = (char*)gtk_entry_get_text(output_target); if (!yon_char_is_empty(password)){ - password = yon_char_new(password); if (main_config.load_mode==0){ + password = yon_char_new(password); if (!check_is_password_hash(password)){ gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); } else { @@ -1891,19 +1891,19 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), name); gtk_entry_set_text(GTK_ENTRY(window->userUserNameEntry), parsed_size>0?parameters[0]:""); window->old_username=name; - if (parsed_size>1){ + if (parsed_size>1+1){ if (strcmp(parameters[1],"x")){ 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 (parsed_size>2){ + if (parsed_size>2+1){ if (!strcmp(parameters[2],"x")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),1); else gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:""); } - if (parsed_size>3){ + if (parsed_size>3+1){ if (strcmp(parameters[3],"x")){ gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parameters[3]); } else { @@ -1912,7 +1912,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ } } - if (parsed_size>4&&!yon_char_is_empty(parameters[4])){ + if (parsed_size>4+1&&!yon_char_is_empty(parameters[4])){ int params_size; config_str parameters_substring = yon_char_parse(parameters[4],¶ms_size," "); for (int i=0;i), parsed_size>4?parameters[4]:""); } - window->old_password=parameters[5]; - if(parsed_size>5){ - if (strcmp(parameters[5],"x")){ - gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry), parsed_size>5?parameters[5]:""); + window->old_password=parameters[parsed_size-1]; + if (strcmp(parameters[parsed_size-1],"x")){ + gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[parsed_size-1]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2); } - } int samba_sync = yon_samba_sync_get(name); if (samba_sync==1){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),1); @@ -2099,7 +2097,6 @@ void on_config_update(GtkWidget *self, main_window *widgets){ } else { on_config_local_load(NULL,widgets); } - // yon_interface_update(widgets); } -- 2.35.1 From 5b7ad6717a6e24730f6d54564245d581b77c8f55 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 17:32:12 +0600 Subject: [PATCH 08/12] Fixed folder searching --- source/ubl-settings-usergroups.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index dd2780d..4bb962f 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -128,6 +128,14 @@ void yon_interface_update(main_window *widgets){ } } + if (main_config.groups_size>0){ + yon_char_parsed_free(main_config.groups,main_config.groups_size); + main_config.groups = yon_file_open(groups_path,&main_config.groups_size); + } + if (main_config.users_size>0){ + yon_char_parsed_free(main_config.users,main_config.users_size); + main_config.users = yon_file_open(users_path,&main_config.users_size); + } } void on_config_local_load(GtkWidget *self, main_window *widgets){ @@ -291,7 +299,7 @@ void on_config_global_save(){ } -void on_config_local_save(){ +void on_config_local_save(GtkWidget *self, main_window *widgets){ int size; config_str keys = yon_config_get_all_by_key("USERADD[",&size); int passw_size; @@ -304,7 +312,11 @@ void on_config_local_save(){ if (parsed_size>5&&!yon_char_is_empty(parsed[5])){ yon_char_parsed_add_or_create_if_exists(passwords,&passw_size,yon_char_new(parsed[5])); parsed = yon_char_parsed_rip(parsed,&parsed_size,5); - yon_config_set(key,yon_char_parsed_to_string(parsed,parsed_size,":")); + char *final_string = yon_char_parsed_to_string(parsed,parsed_size,":"); + char *temp = yon_char_append(final_string,":"); + free(final_string); + final_string=temp; + yon_config_set(key,final_string); } free(key); free(value); @@ -318,6 +330,7 @@ void on_config_local_save(){ yon_config_parse_parameter(keys[i],&key,&value); yon_config_set(key,value); } + yon_interface_update(widgets); } void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window){ @@ -2116,6 +2129,7 @@ void config_init(){ main_config.lock_save_global=0; main_config.lock_save_local=0; main_config.groups_size=0; + main_config.users_size=0; main_config.load_mode=1; main_config.hash_default_id=-1; main_config.groups = yon_file_open(groups_path,&main_config.groups_size); -- 2.35.1 From da1918a4ba295c243e2abf0455f0cc7d51e3a97c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 17:41:11 +0600 Subject: [PATCH 09/12] Revert of password loading mechanism --- source/ubl-settings-usergroups.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 4bb962f..5dc5c7e 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -72,11 +72,11 @@ void yon_interface_update(main_window *widgets){ login = yon_char_divide_search(parameters[0],"=",-1); login[strlen(login)-1]='\0'; } - if (parameters_size>1+1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; - if (parameters_size>2+1&&!strcmp(parameters[2],"x")) parameters[2]=login; + if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; + if (parameters_size>2&&!strcmp(parameters[2],"x")) parameters[2]=login; char *pars = ""; - if (strcmp(parameters[parameters_size-1],"x")&&strcmp(parameters[parameters_size-1],"")){ - if (!check_is_password_hash(parameters[parameters_size-1])){ + if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ + if (!check_is_password_hash(parameters[5])){ pars = ENCRYPTED_LABEL; } else { pars = UNENCRYPTED_LABEL; @@ -88,11 +88,11 @@ void yon_interface_update(main_window *widgets){ } gtk_list_store_set(widgets->UsersList,&iter, 2,login, - 3,parameters_size>0+1?parameters[0]:"", - 1,parameters_size>1+1&&!yon_char_is_empty(parameters[1])?parameters[1]:AUTOMATICALLY_LABEL, - 4,parameters_size>2+1&&!yon_char_is_empty(parameters[2])?parameters[2]:login, - 5,parameters_size>3+1?!strcmp(parameters[3],"x")||!strcmp(parameters[3],"")?def_groups:parameters[3]:def_groups, - 6,parameters_size>4+1?parameters[4]:"", + 3,parameters_size>0?parameters[0]:"", + 1,parameters_size>1&&!yon_char_is_empty(parameters[1])?parameters[1]:AUTOMATICALLY_LABEL, + 4,parameters_size>2&&!yon_char_is_empty(parameters[2])?parameters[2]:login, + 5,parameters_size>3?!strcmp(parameters[3],"x")||!strcmp(parameters[3],"")?def_groups:parameters[3]:def_groups, + 6,parameters_size>4?parameters[4]:"", 7,pars, -1); if(parameters) @@ -1904,19 +1904,19 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), name); gtk_entry_set_text(GTK_ENTRY(window->userUserNameEntry), parsed_size>0?parameters[0]:""); window->old_username=name; - if (parsed_size>1+1){ + if (parsed_size>1){ if (strcmp(parameters[1],"x")){ 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 (parsed_size>2+1){ + if (parsed_size>2){ if (!strcmp(parameters[2],"x")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),1); else gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:""); } - if (parsed_size>3+1){ + if (parsed_size>3){ if (strcmp(parameters[3],"x")){ gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parameters[3]); } else { @@ -1925,7 +1925,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ } } - if (parsed_size>4+1&&!yon_char_is_empty(parameters[4])){ + if (parsed_size>4&&!yon_char_is_empty(parameters[4])){ int params_size; config_str parameters_substring = yon_char_parse(parameters[4],¶ms_size," "); for (int i=0;i), parsed_size>4?parameters[4]:""); } - window->old_password=parameters[parsed_size-1]; - if (strcmp(parameters[parsed_size-1],"x")){ - gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[parsed_size-1]); + window->old_password=parameters[5]; + if (strcmp(parameters[5],"x")){ + gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2); } -- 2.35.1 From 459f33565c9bc818dc0bd41514d0bb759ce46259 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 Feb 2024 18:00:57 +0600 Subject: [PATCH 10/12] Shortened user loading crash fix --- 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 5dc5c7e..e7a807d 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -75,7 +75,8 @@ void yon_interface_update(main_window *widgets){ if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; if (parameters_size>2&&!strcmp(parameters[2],"x")) parameters[2]=login; char *pars = ""; - if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ + if (parameters_size>5&&strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ + if (!check_is_password_hash(parameters[5])){ pars = ENCRYPTED_LABEL; } else { -- 2.35.1 From 7c76ee3902d4b289874a7aedf0769218c24cf7ac Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 20 Feb 2024 10:23:46 +0600 Subject: [PATCH 11/12] User window extra options entry shows current options string --- source/ubl-settings-usergroups.c | 96 ++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 11 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index e7a807d..bcdfe3a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1416,6 +1416,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ char *login = NULL; char *username = NULL; char *main_group = NULL; + char *no_user_group=NULL; char *additional_groups = NULL; char *password_changed_date = NULL; char *password_expiration_date = NULL; @@ -1490,9 +1491,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ if (!main_group_active){ main_group = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry)); if (yon_char_is_empty(main_group)){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->userGroupsEntry); - return; + no_user_group="--no-user-group"; } } else { main_group = ""; @@ -1621,14 +1620,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){ ":",yon_char_return_if_exist(uid_string,"x"), ":",yon_char_return_if_exist(main_group,"x"), ":",yon_char_return_if_exist(additional_groups,"x"), - ":",yon_char_return_if_exist(user_home,""), - yon_char_return_if_exist(user_shell,""), - !yon_char_is_empty(user_shell)?" ":"", - yon_char_return_if_exist(create_system_user,""), - !yon_char_is_empty(create_system_user)?" ":"", - yon_char_return_if_exist(create_ununique,""), - !yon_char_is_empty(create_ununique)?" ":"", - yon_char_return_if_exist(do_not_check,""), !yon_char_is_empty(extra_options)?" ":"", yon_char_return_if_exist(extra_options,""), ":",yon_char_return_if_exist(password,""), @@ -1740,6 +1731,80 @@ void on_date_selected(GtkWidget *self, ubl_settings_usergroups_user_window *wind window->expiration_unix=date_string; } +void on_parameter_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window){ + char *user_shell=NULL; + char *user_home=NULL; + char *login=NULL; + char *create_system_user=NULL; + char *create_ununique=NULL; + char *do_not_check=NULL; + char *main_group=NULL; + char *no_user_group=NULL; + + int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck)); + if (do_not_check_actve) + do_not_check = " --badnames"; + + login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)); + if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userLoginEntry); + return; + } + if (yon_char_is_empty(login)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userLoginEntry); + return; + } + + int user_shell_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo)); + if (user_shell_active>0){ + user_shell = yon_char_unite(" --shell ",(char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),NULL); + if (!strcmp(user_shell,SET_LABEL)){ + user_shell = yon_char_unite(" --shell ",(char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),NULL); + } + } else user_shell=""; + + int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo)); + if (user_home_active==2){ + user_home=yon_char_unite("--home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL); + } else if (user_home_active==0){ + user_home=yon_char_unite("--home-dir ",main_config.default_home,"/",login,NULL); + } else if (user_home_active==1){ + user_home="--no-create-home"; + } else user_home = ""; + + int system_user_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck)); + if (system_user_active) + create_system_user = " --system"; + + int create_ununique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck)); + if (create_ununique_active) + create_ununique = " --non-unique"; + int main_group_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck)); + if (!main_group_active){ + main_group = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry)); + if (yon_char_is_empty(main_group)){ + no_user_group="--no-user-group"; + } + } else { + main_group = ""; + } + char *final_string = yon_char_unite(yon_char_return_if_exist(user_home,""), + yon_char_return_if_exist(user_shell,""), + !yon_char_is_empty(user_shell)?" ":"", + yon_char_return_if_exist(create_system_user,""), + !yon_char_is_empty(create_system_user)?" ":"", + yon_char_return_if_exist(create_ununique,""), + !yon_char_is_empty(create_ununique)?" ":"", + yon_char_return_if_exist(do_not_check,""), + !yon_char_is_empty(do_not_check)?" ":"", + yon_char_return_if_exist(no_user_group,""), + NULL); + gtk_entry_set_text(GTK_ENTRY(window->userExtraOptionsEntry),final_string); + free(final_string); +} + ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user); @@ -1840,6 +1905,15 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_toggle_button_set_active_from_combo_box),window); g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_toggle_button_set_active_from_combo_box),window); g_signal_connect(G_OBJECT(window->userPasswordEntry),"changed",G_CALLBACK(on_password_user_changed),window); + g_signal_connect(G_OBJECT(window->userHomeEntry),"changed",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userShellEntry),"changed",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userCreateSystemCheck),"toggled",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userCreateUnuniqueCheck),"toggled",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userDontCheckCheck),"toggled",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_parameter_changed),window); + g_signal_connect(G_OBJECT(window->userGroupsEntry),"changed",G_CALLBACK(on_parameter_changed),window); return window; } -- 2.35.1 From 91d0a5e1e12079f4573adf8a441dad37fac29901 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 20 Feb 2024 10:35:40 +0600 Subject: [PATCH 12/12] Group window extra options entry shows current options string --- source/ubl-settings-usergroups.c | 27 +++++++++++++++++++++++++++ source/ubl-settings-usergroups.h | 1 + 2 files changed, 28 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index bcdfe3a..3a863b0 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -997,6 +997,30 @@ void on_group_save(GtkWidget *self, dictionary *dict){ on_subwindow_close(self); } +void on_system_parameter_changed(GtkWidget *self, ubl_settings_usergroups_group_creation_window *window){ + + char *non_unique = NULL; + char *gsystem = NULL; + + int non_unique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck)); + if(non_unique_active){ + non_unique="--non-unique"; + } else non_unique=""; + + int gsystem_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck)); + if(gsystem_active){ + gsystem="--system"; + } else gsystem=""; + + char *final_str = yon_char_unite( + yon_char_return_if_exist(non_unique,""), + !yon_char_is_empty(non_unique)?" ":"", + yon_char_return_if_exist(gsystem,"") + ); + gtk_entry_set_text(GTK_ENTRY(window->groupExtraOptionsEntry),final_str); + free(final_str); +} + ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group_creation_new(){ ubl_settings_usergroups_group_creation_window *window = malloc(sizeof(ubl_settings_usergroups_group_creation_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group_creation); @@ -1019,6 +1043,7 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group window->AdminGroupsEntry=yon_gtk_builder_get_widget(builder,"AdminGroupsEntry"); window->AdminGroupsButton=yon_gtk_builder_get_widget(builder,"AdminGroupsButton"); window->GroupaddShutdownCheck=yon_gtk_builder_get_widget(builder,"GroupaddShutdownCheck"); + window->groupExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"groupExtraOptionsEntry"); gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL); @@ -1039,6 +1064,8 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->SystemGroupCheck); g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button_inversed),window->UnuniqueGIDCheck); g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UnuniqueGIDCheck); + g_signal_connect(G_OBJECT(window->UnuniqueGIDCheck),"toggled",G_CALLBACK(on_system_parameter_changed),window); + g_signal_connect(G_OBJECT(window->SystemGroupCheck),"toggled",G_CALLBACK(on_system_parameter_changed),window); return window; } diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index dfece2a..c3ef689 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -207,6 +207,7 @@ typedef struct{ GtkWidget *AdminGroupsEntry; GtkWidget *AdminGroupsButton; GtkWidget *GroupaddShutdownCheck; + GtkWidget *groupExtraOptionsEntry; } ubl_settings_usergroups_group_creation_window; typedef struct{ -- 2.35.1