diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index d78bea2..789b79f 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -211,7 +211,7 @@ void on_additional_settings_clicked(GtkWidget *self, GtkEntry *output_target){ } void on_expiration_clicked(GtkWidget *self, GtkEntry *output_target){ - + // gtk_popover_popdown(); } // standard functions @@ -303,7 +303,6 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ return window; } - void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_window *widgets){ ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new(); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); @@ -424,7 +423,6 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group return window; } - void on_group_clicked(GtkCellRenderer *self, char *path, ubl_settings_usergroups_group_window *window){ GtkTreeIter iter; gboolean status; @@ -512,7 +510,6 @@ void on_standard_groups_open(GtkWidget *self, main_window *widgets){ gtk_widget_show(window->GroupsWindow); } - void on_password_show_hide(GtkEntry *self, GtkEntryIconPosition icon_pos, GdkEvent* event){ if (icon_pos == GTK_ENTRY_ICON_SECONDARY){ int visible = gtk_entry_get_visibility(self); @@ -591,7 +588,108 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne return window; } +void on_mode_changed(GtkWidget *self, ubl_settings_usergroups_system_window *window){ + if (window->show_all==0){ + window->show_all=1; + } else { + window->show_all=0; + } + gtk_list_store_clear(window->liststore1); + gtk_list_store_clear(window->liststore2); + GtkTreeIter iter; + for (int i=0;i=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){ + gtk_list_store_append(window->liststore2,&iter); + gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1); + } + } + for (int i=0;i=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){ + char *groups_string=""; + char *main_group_name=""; + for (int j=0;jliststore1,&iter); + gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[0],4,main_group_name,5,groups_string,6,parsed[5],-1); + } + yon_char_parsed_free(parsed,parsed_size); + } +} +void on_system_update(GtkWidget *self, ubl_settings_usergroups_system_window *window){ + + main_config.groups = yon_file_open(groups_path,&main_config.groups_size); + main_config.users = yon_file_open(users_path,&main_config.users_size); + int login_size; + config_str login_defs = yon_file_open(uid_path,&login_size); + for (int i=0;iliststore1); + gtk_list_store_clear(window->liststore2); + GtkTreeIter iter; + for (int i=0;i=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){ + gtk_list_store_append(window->liststore2,&iter); + gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1); + } + } + for (int i=0;i=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){ + char *groups_string=""; + char *main_group_name=""; + for (int j=0;jliststore1,&iter); + gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[0],4,main_group_name,5,groups_string,6,parsed[5],-1); + } + yon_char_parsed_free(parsed,parsed_size); + } +} ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(){ ubl_settings_usergroups_system_window *window = malloc(sizeof(ubl_settings_usergroups_system_window)); @@ -599,14 +697,50 @@ ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(){ window->liststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); 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"); + window->ToggleAllButton=yon_gtk_builder_get_widget(builder,"ToggleAllButton"); + window->UpdateButton=yon_gtk_builder_get_widget(builder,"UpdateButton"); + window->show_all=0; gtk_window_set_title(GTK_WINDOW(window->MonitorWindow),INSPECTOR_TITLE_LABEL); + g_signal_connect(G_OBJECT(window->ToggleAllButton),"clicked",G_CALLBACK(on_mode_changed),window); + g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(on_system_update),window); + + GtkTreeIter iter; + for (int i=0;i=main_config.MINGID&&atoi(parsed[2])<=main_config.MAXGID){ + gtk_list_store_append(window->liststore2,&iter); + gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1); + } + } + for (int i=0;i=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID){ + char *groups_string=""; + char *main_group_name=""; + for (int j=0;jliststore1,&iter); + gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[0],4,main_group_name,5,groups_string,6,parsed[5],-1); + } + yon_char_parsed_free(parsed,parsed_size); + } return window; } void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets){ ubl_settings_usergroups_system_window *window = yon_ubl_settings_usergroups_system_new(); - gtk_window_set_transient_for(GTK_WINDOW(window->MonitorWindow),GTK_WINDOW(widgets->Window)); gtk_widget_show(window->MonitorWindow); } @@ -1068,8 +1202,32 @@ 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 = yon_file_open(users_path,&main_config.users_size); main_config.users_list=NULL; main_config.groups_list=NULL; + int login_size; + config_str login_defs = yon_file_open(uid_path,&login_size); + for (int i=0;i #include #include -#include #include #include +#include #include #include #include @@ -40,6 +40,7 @@ #define groups_path "/etc/group" #define users_path "/etc/passwd" +#define uid_path "/etc/login.defs" #define USERADD(user) yon_char_unite("USERADD[",user,"]",NULL) #define GROUPADD(group) yon_char_unite("GROUPADD[",group,"]",NULL) @@ -70,8 +71,16 @@ typedef struct { // Type custom parameters below: : config_str groups; int groups_size; + config_str users; + int users_size; GtkListStore *users_list; GtkListStore *groups_list; + + int MAXUID; + int MINUID; + + int MAXGID; + int MINGID; } config; @@ -191,7 +200,9 @@ typedef struct{ GtkListStore *liststore1; GtkListStore *liststore2; GtkWidget *MonitorWindow; - GtkWidget *SettingsBar; + GtkWidget *ToggleAllButton; + GtkWidget *UpdateButton; + int show_all; } ubl_settings_usergroups_system_window; typedef struct{ diff --git a/ubl-settings-usergroups-system.glade b/ubl-settings-usergroups-system.glade index 874f19e..5343ee5 100644 --- a/ubl-settings-usergroups-system.glade +++ b/ubl-settings-usergroups-system.glade @@ -13,8 +13,34 @@ False com.ublinux.ubl-settings-usergroups.sync-symbolic - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + 800 600 @@ -37,7 +63,7 @@ vertical 5 - + True True True @@ -54,7 +80,7 @@ - + True True True @@ -82,46 +108,116 @@ True True - + True True - liststore2 - - - - - - Blocked - - - - - UID - - - - - Login - - - - - Username - - - - Primary group - - - - - Additional groups - - - - - Home directory + + True + True + liststore1 + both + + + none + + + + + True + fixed + 50 + Blocked + + + + + + + + True + fixed + 50 + UID + 1 + + + + 1 + + + + + + + True + fixed + 50 + Login + + + + 2 + + + + + + + True + fixed + 50 + Username + + + + 3 + + + + + + + True + fixed + 50 + Primary group + + + + 4 + + + + + + + True + fixed + 50 + Additional groups + + + 150 + + + 5 + + + + + + + 50 + Home directory + + + + 6 + + + + @@ -137,34 +233,62 @@ - + True True - liststore1 - - - - - GID + + True + True + liststore2 + both + + + none + + - + + True + fixed + 50 + GID + 0 + + + + 0 + + + - - - - - Group - + + True + fixed + 50 + Group + + + 150 + + + 1 + + + - - - - - Group users - + + 50 + Group users + + + + 2 + + + @@ -194,7 +318,7 @@ - + True False True diff --git a/ubl-settings-usergroups-user.glade b/ubl-settings-usergroups-user.glade index 0215ba6..519ac3b 100644 --- a/ubl-settings-usergroups-user.glade +++ b/ubl-settings-usergroups-user.glade @@ -64,7 +64,6 @@ False True com.ublinux.ubl-settings-usergroups - Users and groups - user configuration True