diff --git a/csv/hash_list.csv b/csv/hash_list.csv new file mode 100644 index 0000000..77a078e --- /dev/null +++ b/csv/hash_list.csv @@ -0,0 +1,16 @@ +hash_algoritm:hash_description +des +md5 +yescrypt +gost-yescrypt:GOST-YESCRYPT (Конструкция согласно ГОСТ Р 34.11─2012) +scrypt +bf +bcrypt +bcrypt-a +sha512crypt:SHA512 (Хеш-функция из семейства алгоритмов SHA-2) +sha256crypt +sunmd5 +md5crypt +bsdicrypt +descrypt +nt \ No newline at end of file diff --git a/csv/shell_list.csv b/csv/shell_list.csv index 5cb00f0..5b334ac 100644 --- a/csv/shell_list.csv +++ b/csv/shell_list.csv @@ -1,4 +1,4 @@ -Shell +shell /bin/bash /bin/sh /bin/ksh diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 90df422..c557557 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -124,6 +124,15 @@ void on_groups_save(GtkWidget *self, dictionary *dict){ void on_groups_clicked(GtkWidget *self, GtkEntry *output_target){ ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); + GtkTreeIter iter, itar; + 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)){ + char *groupname; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1); + gtk_list_store_append(window->list,&itar); + gtk_list_store_set(window->list,&itar,1,groupname,-1); + free(groupname); + } gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),0),0); gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->GroupsTree)),GTK_SELECTION_SINGLE); dictionary *dict = NULL; @@ -158,6 +167,15 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){ ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); + GtkTreeIter iter, itar; + 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)){ + char *groupname; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1); + gtk_list_store_append(window->list,&itar); + gtk_list_store_set(window->list,&itar,1,groupname,-1); + free(groupname); + } dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"output",output_target); @@ -246,6 +264,8 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton"); + gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL); + char *default_user = yon_config_get_by_key("DEFAULTUSER"); if (!yon_char_is_empty(default_user)) gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user); @@ -295,6 +315,15 @@ void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_w void on_user_choose(GtkWidget *self, GtkEntry *target){ ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); + GtkTreeIter iter, itar; + int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.users_list),&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.users_list),&iter)){ + char *groupname; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.users_list),&iter,2,&groupname,-1); + gtk_list_store_append(window->list,&itar); + gtk_list_store_set(window->list,&itar,1,groupname,-1); + free(groupname); + } gtk_list_store_new(2,G_TYPE_BOOLEAN,G_TYPE_STRING); dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); @@ -383,7 +412,7 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group window->PasswordEntry=yon_gtk_builder_get_widget(builder,"PasswordEntry"); window->ChangePasswordButton=yon_gtk_builder_get_widget(builder,"ChangePasswordButton"); - gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),TITLE_LABEL); + gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUP_TITLE_LABEL); dictionary *entry_dict=NULL; yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->PasswordCombo); yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->PasswordEntry); @@ -414,6 +443,7 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(){ window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell")); window->list = gtk_list_store_new(2,G_TYPE_BOOLEAN,G_TYPE_STRING); + gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL); g_signal_connect(G_OBJECT(window->StatusCell),"toggled",G_CALLBACK(on_group_clicked),window); GtkTreeIter iter; gtk_tree_view_set_model(GTK_TREE_VIEW(window->GroupsTree),GTK_TREE_MODEL(window->list)); @@ -451,6 +481,15 @@ void on_standard_groups_accept(GtkWidget *self, ubl_settings_usergroups_group_wi void on_standard_groups_open(GtkWidget *self, main_window *widgets){ ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(); + GtkTreeIter iter, itar; + 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)){ + char *groupname; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.groups_list),&iter,1,&groupname,-1); + gtk_list_store_append(window->list,&itar); + gtk_list_store_set(window->list,&itar,1,groupname,-1); + free(groupname); + } g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_standard_groups_accept),window); gtk_window_set_transient_for(GTK_WINDOW(window->GroupsWindow),GTK_WINDOW(widgets->Window)); char *groups = yon_config_get_by_key("USERGROUPS"); @@ -547,7 +586,7 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne g_signal_connect(G_OBJECT(window->PasswordHashEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL); g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_changed),window); g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_changed),window); - gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),TITLE_LABEL); + gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL); return window; } @@ -561,6 +600,7 @@ ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(){ window->liststore2=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2")); window->MonitorWindow=yon_gtk_builder_get_widget(builder,"MonitorWindow"); window->SettingsBar=yon_gtk_builder_get_widget(builder,"SettingsBar"); + gtk_window_set_title(GTK_WINDOW(window->MonitorWindow),INSPECTOR_TITLE_LABEL); return window; } @@ -803,7 +843,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ window->userExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry"); window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton"); - + gtk_window_set_title(GTK_WINDOW(window->CreateUserWindow),USER_TITLE_LABEL); window->old_password=NULL; dictionary *entry_dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->userPasswordCombo); @@ -991,13 +1031,22 @@ void on_main_delete(GtkWidget *self, main_window *widgets){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ model = GTK_TREE_MODEL(widgets->UsersList); cur_tree=widgets->UsersTree; + if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){ + char *name; + gtk_tree_model_get(model,&iter,2,&name,-1); + yon_config_remove_by_key(USERADD(name)); + gtk_list_store_remove(GTK_LIST_STORE(model),&iter); + } } else { model = GTK_TREE_MODEL(widgets->GroupsList); cur_tree=widgets->GroupsTree; - } if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){ + char *name; + gtk_tree_model_get(model,&iter,1,&name,-1); + yon_config_remove_by_key(USERADD(name)); gtk_list_store_remove(GTK_LIST_STORE(model),&iter); } + } } @@ -1019,6 +1068,8 @@ void config_init(){ main_config.groups_size=0; main_config.load_mode=1; main_config.groups = yon_file_open(groups_path,&main_config.groups_size); + main_config.users_list=NULL; + main_config.groups_list=NULL; } /**yon_main_window_complete(main_window *widgets) @@ -1060,6 +1111,8 @@ void yon_main_window_complete(main_window *widgets){ gtk_widget_set_sensitive(widgets->SaveLocalMenuItem,0); gtk_widget_set_sensitive(widgets->SaveMenuItem,0); } + main_config.users_list = widgets->UsersList; + main_config.groups_list = widgets->GroupsList; /* Signal connection | Присоединение сигналов */ g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_main_add),widgets); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index ca5ce0f..07e4cea 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -39,7 +39,8 @@ #define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER" #define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER" -#define groups_path "/etc/passwd" +#define groups_path "/etc/group" +#define users_path "/etc/passwd" #define USERADD(user) yon_char_unite("USERADD[",user,"]",NULL) #define GROUPADD(group) yon_char_unite("GROUPADD[",group,"]",NULL) @@ -70,6 +71,8 @@ typedef struct { // Type custom parameters below: : config_str groups; int groups_size; + GtkListStore *users_list; + GtkListStore *groups_list; } config; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 8a04bb9..6060c9e 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -39,6 +39,8 @@ #define GROUPS_USERS_LABEL _("Group users") #define GROUPS_LABEL _("Groups") +#define PASSWORD_TITLE_LABEL _("Users and groups - password") + #define INSPECT_SYSTEM_LABEL _("Inspect users and groups in system") #define ADDITIONAL_SETTINGS_LABEL _("Additional settings") #define SHARED_GROUPS_SETTINGS_LABEL _("Shared groups configuration") diff --git a/ubl-settings-usergroups-additional-settings.glade b/ubl-settings-usergroups-additional-settings.glade index 28670dd..b559c9c 100644 --- a/ubl-settings-usergroups-additional-settings.glade +++ b/ubl-settings-usergroups-additional-settings.glade @@ -399,7 +399,7 @@ True False - Users and groups + Users and groups - additional settings diff --git a/ubl-settings-usergroups-group-creation.glade b/ubl-settings-usergroups-group-creation.glade index e852c66..24ee6d7 100644 --- a/ubl-settings-usergroups-group-creation.glade +++ b/ubl-settings-usergroups-group-creation.glade @@ -67,7 +67,7 @@ True False - Group Id: + Group id: 0 @@ -411,7 +411,7 @@ True False - Users and groups + Users and groups - group configuration diff --git a/ubl-settings-usergroups-group.glade b/ubl-settings-usergroups-group.glade index 48784f1..cef5285 100644 --- a/ubl-settings-usergroups-group.glade +++ b/ubl-settings-usergroups-group.glade @@ -170,7 +170,7 @@ True False - Users and groups + Users and groups - groups diff --git a/ubl-settings-usergroups-password.glade b/ubl-settings-usergroups-password.glade index 1fcc102..3ce32e0 100644 --- a/ubl-settings-usergroups-password.glade +++ b/ubl-settings-usergroups-password.glade @@ -279,7 +279,7 @@ True False - Users and groups + Users and groups - password diff --git a/ubl-settings-usergroups-system.glade b/ubl-settings-usergroups-system.glade index facfde8..874f19e 100644 --- a/ubl-settings-usergroups-system.glade +++ b/ubl-settings-usergroups-system.glade @@ -41,6 +41,7 @@ True True True + Toggle system groups and users image1