From 9be8b14c1ff18033ba0d6bb48bd8a4d153b3d3ed Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Jul 2023 11:52:15 +0600 Subject: [PATCH] Template update --- .gitignore | 2 +- com.ublinux.ubl-settings-usergroups.policy | 12 +- com.ublinux.ubl-settings-usergroups.svg | 1127 ++++++++++++++++++-- source/ubl-settings-usergroups.c | 253 ++++- source/ubl-settings-usergroups.h | 79 +- source/ubl-utils.c | 14 +- source/ubl-utils.h | 2 +- ubl-settings-usergroups | Bin 247544 -> 267576 bytes ubl-settings-usergroups-group.glade | 29 +- ubl-settings-usergroups-user.glade | 58 +- ubl-settings-usergroups.glade | 41 +- 11 files changed, 1483 insertions(+), 134 deletions(-) diff --git a/.gitignore b/.gitignore index ed27715..3a308bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .vscode/ -ubl-settings-TEMPLATE +ubl-settings-usergroups *~ build/ compile/ diff --git a/com.ublinux.ubl-settings-usergroups.policy b/com.ublinux.ubl-settings-usergroups.policy index 087a6b3..2f5a741 100644 --- a/com.ublinux.ubl-settings-usergroups.policy +++ b/com.ublinux.ubl-settings-usergroups.policy @@ -7,17 +7,17 @@ UBLinux https://ublinux.ru - - Run ubl-ubl-settings-usergroups as root - Запуск утилиты ubl-ubl-settings-usergroups с правами root - Authentication is required to run ubl-ubl-settings-usergroups - Требуется авторизация для запуска утилиты ubl-ubl-settings-usergroups с правами root + + Run ubl-settings-usergroups as root + Запуск утилиты ubl-settings-usergroups с правами root + Authentication is required to run ubl-settings-usergroups + Требуется авторизация для запуска утилиты ubl-settings-usergroups с правами root auth_admin auth_admin auth_admin - /usr/bin/ubl-ubl-settings-usergroups + /usr/bin/ubl-settings-usergroups true diff --git a/com.ublinux.ubl-settings-usergroups.svg b/com.ublinux.ubl-settings-usergroups.svg index f636c26..963138d 100644 --- a/com.ublinux.ubl-settings-usergroups.svg +++ b/com.ublinux.ubl-settings-usergroups.svg @@ -1,14 +1,14 @@ + gradientTransform="matrix(3.779602,0,0,3.779602,-193.72728,-7.0470659)"> + + + + + id="filter55276" + x="-0.14871371" + y="-0.14870605" + width="1.2362248" + height="1.2362127"> + id="feFlood55266" /> + id="feComposite55268" /> + + + + + + + + + + + + + + + + id="feGaussianBlur104562" /> + id="feOffset104564" /> + id="feComposite104566" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:current-layer="layer3"> + + + inkscape:label="ubinstall_gui" + style="display:none"> - + id="g2035" + transform="matrix(1.7064512,0,0,1.7064512,182.08962,45.305852)" + style="filter:url(#filter104568)"> + + + + + + + + + + + + + cx="4.7361059" + cy="12.475146" + r="3.9282389" + fill="url(#linearGradient3529)" + stroke-width="0.927939" + id="circle34" + style="fill:url(#linearGradient3529)" /> + + + + + + + + + + + + + + + + + + + + + + + r="41.908859" + cy="102.92618" + cx="216" + id="path4700" + style="fill:url(#linearGradient4708);fill-opacity:1;stroke-width:2.17512;stroke-linecap:round" /> + + + + + diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index ee77d87..b149b9c 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -100,8 +100,88 @@ void on_about(){ gtk_widget_show(window); } +void on_toggle_button_switched(GtkToggleButton *self, GtkWidget *widget){ + gtk_widget_set_sensitive(widget,!gtk_toggle_button_get_active(self)); + +} + //functions +void on_uid_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->uid = atoi(gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(window->UserUIDEntry)))); +} + +void on_username_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->username = (char*)(gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(window->userUserNameEntry)))); +} + +void on_login_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->login = (char*)(gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(window->userLoginEntry)))); +} + +void on_password_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->password = (char*)(gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(window->userPasswordEntry)))); +} + +void on_group_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->main_group = (char*)(gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(window->userGroupsEntry)))); +} + +void on_hash_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->password_hash = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordHashAlgorithmCombo)); +} + +void on_extra_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->extra_options = (char*)(gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(window->userExtraOptionsEntry)))); +} + +void on_user_def_password_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->password=NULL; + user_cfg->password_default = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); + on_toggle_button_switched(GTK_TOGGLE_BUTTON(self),window->userPasswordEntry); +} + +void on_auto_uid_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->uid=0; + user_cfg->uid_default = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); + on_toggle_button_switched(GTK_TOGGLE_BUTTON(self),window->UserUIDEntry); +} + +void on_SAMBA_changed(GtkWidget *self, dictionary *dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + user_cfg->sync_SAMBA=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); +} + +void on_user_accept(GtkWidget *self, dictionary * dict){ + user_window *window = yon_dictionary_get_data(dict->first,user_window*); + user_config *user_cfg = yon_dictionary_get_data(dict->first->next,user_config*); + main_window *widgets = yon_dictionary_get_data(dict->first->next->next,main_window*); + GtkTreeIter iter; + gtk_list_store_append(main_config.usersListStore,&iter); + gtk_list_store_set(main_config.usersListStore,&iter,(user_cfg->uid_default==0) ? 0 : 1,(user_cfg->uid_default==0) ? user_cfg->uid : 1,2,user_cfg->login, 3,(user_cfg->password_default==0) ? "*******" : _("Default"),5,user_cfg->username,-1); + // widgets->MainUserTree; + on_close_subwindow(self); +} + void yon_load_proceed(char *command){ if (yon_config_load_register(command)) yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); @@ -110,19 +190,61 @@ void yon_load_proceed(char *command){ } -void on_groups_open(){ +void on_def_groups_accept(GtkWidget *self, dictionary *windowes){ + char *groups_string = ""; + main_window *widgets = yon_dictionary_get_data(windowes->first->next,main_window*); + groups_window *window = yon_dictionary_get_data(windowes->first,groups_window*); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsAdmCheck))==1) groups_string = yon_char_append(groups_string,"adm,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsAudioCheck))==1) groups_string = yon_char_append(groups_string,"audio,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsAutologinCheck))==1) groups_string = yon_char_append(groups_string,"autologin,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsAvahiCheck))==1) groups_string = yon_char_append(groups_string,"avahi,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsBinCheck))==1) groups_string = yon_char_append(groups_string,"bin,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsBrlapiCheck))==1) groups_string = yon_char_append(groups_string,"brlapi,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsBrittyCheck))==1) groups_string = yon_char_append(groups_string,"britty,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsBumblbeeCheck))==1) groups_string = yon_char_append(groups_string,"bumblbee,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsChronyCheck))==1) groups_string = yon_char_append(groups_string,"chrony,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsClamavCheck))==1) groups_string = yon_char_append(groups_string,"clamav,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsCockpitWsCheck))==1) groups_string = yon_char_append(groups_string,"cockpit-ws,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsCockpitWsinstanceCheck))==1) groups_string = yon_char_append(groups_string,"cockpit-wsinstance,"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsColordCheck))==1) groups_string = yon_char_append(groups_string,"colord,"); + if (strcmp(groups_string,"")!=0) groups_string[strlen(groups_string)-1]='\0'; + gtk_entry_buffer_set_text(gtk_entry_get_buffer(GTK_ENTRY(widgets->MainDefaultGroupsEntry)),groups_string,strlen(groups_string)); + on_close_subwindow(self); +} + +void on_groups_open(GtkWidget *self, main_window *widgets){ + +} + +void on_def_groups_open(GtkWidget *self, main_window *widgets){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_groups_path); groups_window *window = malloc(sizeof(groups_window)); window->Window = yon_gtk_builder_get_widget(builder,"GroupsWindow"); window->GroupsCancelButton = yon_gtk_builder_get_widget(builder,"GroupsCancelButton"); window->GroupsOkButton = yon_gtk_builder_get_widget(builder,"GroupsOkButton"); - g_signal_connect(G_OBJECT(window->GroupsCancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); - g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + window->GroupsAdmCheck = yon_gtk_builder_get_widget(builder,"groupsAdmGroupCheck"); + window->GroupsAudioCheck = yon_gtk_builder_get_widget(builder,"groupsAudioGroupCheck"); + window->GroupsAutologinCheck = yon_gtk_builder_get_widget(builder,"groupsAutologinGroupCheck"); + window->GroupsAvahiCheck = yon_gtk_builder_get_widget(builder,"groupsAvahiGroupCheck"); + window->GroupsBinCheck = yon_gtk_builder_get_widget(builder,"groupsBinGroupCheck"); + window->GroupsBrlapiCheck = yon_gtk_builder_get_widget(builder,"groupsBrlapiGroupCheck"); + window->GroupsBrittyCheck = yon_gtk_builder_get_widget(builder,"groupsBrittyGroupCheck"); + window->GroupsBumblbeeCheck = yon_gtk_builder_get_widget(builder,"groupsBumblbeeGroupCheck"); + window->GroupsChronyCheck = yon_gtk_builder_get_widget(builder,"groupsChronyGroupCheck"); + window->GroupsClamavCheck = yon_gtk_builder_get_widget(builder,"groupsClamavGroupCheck"); + window->GroupsCockpitWsCheck = yon_gtk_builder_get_widget(builder,"groupsCockpitWsGroupCheck"); + window->GroupsCockpitWsinstanceCheck = yon_gtk_builder_get_widget(builder,"groupsCockpitWsinstanceGroupCheck"); + window->GroupsColordCheck = yon_gtk_builder_get_widget(builder,"groupsColordGroupCheck"); + dictionary *windgets=NULL; + yon_dictionary_add_or_create_if_exists_with_data(windgets,"window",window); + yon_dictionary_add_or_create_if_exists_with_data(windgets,"widgets",widgets); + g_signal_connect(G_OBJECT(window->GroupsCancelButton),"clicked",G_CALLBACK(on_close_subwindow),window); + g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_def_groups_accept),windgets); gtk_widget_show(window->Window); } -void on_user_add(){ +void on_user_add(GtkWidget *self, main_window *widgets){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_user_path); user_window *window = malloc(sizeof(user_window)); window->Window = yon_gtk_builder_get_widget(builder,"CreateUserWindow"); @@ -130,9 +252,47 @@ void on_user_add(){ window->UserCancelButton = yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserOkButton = yon_gtk_builder_get_widget(builder,"UserOkButton"); + window->UserUIDAutoCheck = yon_gtk_builder_get_widget(builder,"userUIDAutoCheck"); + window->UserUIDEntry = yon_gtk_builder_get_widget(builder,"userUIDEntry"); + window->userUserNameEntry = yon_gtk_builder_get_widget(builder,"userUserNameEntry"); + window->userLoginEntry = yon_gtk_builder_get_widget(builder,"userLoginEntry"); + window->userPasswordDefaultCheck = yon_gtk_builder_get_widget(builder,"userPasswordDefaultCheck"); + window->userPasswordEntry = yon_gtk_builder_get_widget(builder,"userPasswordEntry"); + window->userGroupsEntry = yon_gtk_builder_get_widget(builder,"userGroupsEntry"); + window->userPasswordHashAlgorithmCombo = yon_gtk_builder_get_widget(builder,"userPasswordHashAlgorithmCombo"); + window->userSyncSAMBACheck = yon_gtk_builder_get_widget(builder,"userSyncSAMBACheck"); + window->userExtraOptionsEntry = yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry"); + user_config *user_cfg=malloc(sizeof(user_config)); + user_cfg->username=NULL; + user_cfg->login=NULL; + user_cfg->password=NULL; + user_cfg->main_group=NULL; + user_cfg->additional_groups=NULL; + user_cfg->extra_options=NULL; + user_cfg->uid=-1; + user_cfg->password_default=0; + user_cfg->password_hash=-1; + user_cfg->sync_SAMBA=0; + 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,"config",user_cfg); + yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); - g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_user_accept),dict); + // g_signal_connect(G_OBJECT(window->UserUIDAutoCheck),"clicked",G_CALLBACK(on_toggle_button_switched),window->UserUIDEntry); + // g_signal_connect(G_OBJECT(window->userPasswordDefaultCheck),"clicked",G_CALLBACK(on_toggle_button_switched),window->UserPasswordEntry); g_signal_connect(G_OBJECT(window->UserAdditionalGroupsButton),"clicked",G_CALLBACK(on_groups_open),NULL); + + g_signal_connect(G_OBJECT(window->UserUIDAutoCheck),"toggled",G_CALLBACK(on_auto_uid_changed),dict); + g_signal_connect(G_OBJECT(window->UserUIDEntry),"changed",G_CALLBACK(on_uid_changed),dict); + g_signal_connect(G_OBJECT(window->userUserNameEntry),"changed",G_CALLBACK(on_username_changed),dict); + g_signal_connect(G_OBJECT(window->userLoginEntry),"changed",G_CALLBACK(on_login_changed),dict); + g_signal_connect(G_OBJECT(window->userPasswordDefaultCheck),"toggled",G_CALLBACK(on_user_def_password_changed),dict); + g_signal_connect(G_OBJECT(window->userPasswordEntry),"changed",G_CALLBACK(on_password_changed),dict); + g_signal_connect(G_OBJECT(window->userGroupsEntry),"changed",G_CALLBACK(on_group_changed),dict); + g_signal_connect(G_OBJECT(window->userPasswordHashAlgorithmCombo),"changed",G_CALLBACK(on_hash_changed),dict); + g_signal_connect(G_OBJECT(window->userSyncSAMBACheck),"toggled",G_CALLBACK(on_SAMBA_changed),dict); + g_signal_connect(G_OBJECT(window->userExtraOptionsEntry),"changed",G_CALLBACK(on_extra_changed),dict); gtk_widget_show(window->Window); } @@ -144,22 +304,57 @@ void on_user_delete(){ } +void on_def_groups_edit(GtkCellEditable *self, main_window *widgets){ + main_config.default_groups=(char*)gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(widgets->MainDefaultGroupsEntry))); +} + +void on_def_user_edit(GtkCellEditable *self, main_window *widgets){ + main_config.default_user_name=(char*)gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(widgets->MainDefaultUserNameEntry))); + +} + +void on_def_admin_edit(GtkWidget *self, main_window *widgets){ + main_config.is_1000_administrator=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->MainDefaultUserAdministratorCheck)); + +} + +void on_def_password_edit(GtkCellEditable *self, main_window *widgets){ + main_config.default_password=(char*)gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(widgets->MainDefaultPasswordEntry))); +} + +void on_root_password_edit(GtkCellEditable *self, main_window *widgets){ + main_config.root_password=(char*)gtk_entry_buffer_get_text(gtk_entry_get_buffer(GTK_ENTRY(widgets->MainRootPasswordEntry))); + +} + +void on_hash_edit(GtkWidget *self, main_window *widgets){ + main_config.hash_alg=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->MainPasswordHashCombo)); + +} + // standard functions void config_init(){ - main_config.always_open_documentation=0; - main_config.win_height=0; - main_config.win_width=0; - main_config.win_pos_x=0; - main_config.win_pos_y=0; - main_config.socket_id=-1; - main_config.save_socket_id=-1; - main_config.load_socket_id=-1; - main_config.lock_help=0; - main_config.lock_help=0; - main_config.lock_load_global=0; - main_config.lock_save_global=0; - main_config.lock_save_local=0; + main_config.always_open_documentation = 0; + main_config.win_height = 0; + main_config.win_width = 0; + main_config.win_pos_x = 0; + main_config.win_pos_y = 0; + main_config.socket_id = -1; + main_config.save_socket_id = -1; + main_config.load_socket_id = -1; + main_config.lock_help = 0; + main_config.lock_help = 0; + main_config.lock_load_global = 0; + main_config.lock_save_global = 0; + main_config.lock_save_local = 0; + main_config.default_groups = NULL; + main_config.default_groups_config = NULL; + main_config.default_password = NULL; + main_config.default_user_name = NULL; + main_config.is_1000_administrator=0; + main_config.hash_alg=0; + main_config.root_password=NULL; } main_window *setup_window(){ @@ -199,6 +394,16 @@ main_window *setup_window(){ widgets->MainDeleteUserButton = yon_gtk_builder_get_widget(builder,"MainDeleteUserButton"); widgets->MainEditGroupsButton = yon_gtk_builder_get_widget(builder,"MainEditGroupsButton"); + + widgets->MainDefaultGroupsEntry = yon_gtk_builder_get_widget(builder,"mainDefaultGroupsEntry"); + widgets->MainDefaultUserNameEntry = yon_gtk_builder_get_widget(builder,"mainDefaultUserNameEntry"); + widgets->MainDefaultUserAdministratorCheck = yon_gtk_builder_get_widget(builder,"mainDefaultUserAdministratorCheck"); + widgets->MainDefaultPasswordEntry = yon_gtk_builder_get_widget(builder,"mainDefaultPasswordEntry"); + widgets->MainRootPasswordEntry = yon_gtk_builder_get_widget(builder,"mainRootPasswordEntry"); + widgets->MainUserTree = yon_gtk_builder_get_widget(builder,"mainUserTree"); + widgets->MainPasswordHashCombo = yon_gtk_builder_get_widget(builder,"mainPasswordHashCombo"); + + main_config.usersListStore = GTK_LIST_STORE(gtk_builder_get_object(builder,"UserList")); if (main_config.lock_load_global == 1){ @@ -217,10 +422,16 @@ main_window *setup_window(){ g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),NULL); - g_signal_connect(G_OBJECT(widgets->MainAddUserButton),"clicked",G_CALLBACK(on_user_add),NULL); + g_signal_connect(G_OBJECT(widgets->MainAddUserButton),"clicked",G_CALLBACK(on_user_add),widgets); g_signal_connect(G_OBJECT(widgets->MainEditUserButton),"clicked",G_CALLBACK(on_user_edit),NULL); g_signal_connect(G_OBJECT(widgets->MainDeleteUserButton),"clicked",G_CALLBACK(on_user_delete),NULL); - g_signal_connect(G_OBJECT(widgets->MainEditGroupsButton),"clicked",G_CALLBACK(on_groups_open),NULL); + g_signal_connect(G_OBJECT(widgets->MainEditGroupsButton),"clicked",G_CALLBACK(on_def_groups_open),widgets); + g_signal_connect(G_OBJECT(widgets->MainDefaultGroupsEntry),"changed",G_CALLBACK(on_def_groups_edit),widgets); + g_signal_connect(G_OBJECT(widgets->MainDefaultUserNameEntry),"changed",G_CALLBACK(on_def_user_edit),widgets); + g_signal_connect(G_OBJECT(widgets->MainDefaultUserAdministratorCheck),"toggled",G_CALLBACK(on_def_admin_edit),widgets); + g_signal_connect(G_OBJECT(widgets->MainDefaultPasswordEntry),"changed",G_CALLBACK(on_def_password_edit),widgets); + g_signal_connect(G_OBJECT(widgets->MainRootPasswordEntry),"changed",G_CALLBACK(on_root_password_edit),widgets); + g_signal_connect(G_OBJECT(widgets->MainPasswordHashCombo),"changed",G_CALLBACK(on_hash_edit),widgets); gtk_widget_show(widgets->Window); @@ -311,7 +522,7 @@ int main(int argc, char *argv[]){ if (getuid()!=0) yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); else - yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id); yon_window_config_setup(GTK_WINDOW(widgets->Window)); yon_window_config_load(config_path); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index afd0497..c3ce036 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -8,7 +8,7 @@ #include #include #include -#include "ubl-cmake.h" +#include "../compile/ubl-cmake.h" #ifdef WEBKIT_FOUND #include #endif @@ -30,7 +30,7 @@ #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-usergroups" typedef char* string; -string version_application; +string version_application=""; char *local; @@ -49,7 +49,17 @@ typedef struct { int lock_save_local; int lock_save_global; int lock_load_global; -} config; + + // Custom + char *default_groups; + char *default_user_name; + char *default_password; + char *root_password; + int hash_alg; + gboolean is_1000_administrator; + struct groups_config *default_groups_config; + GtkListStore *usersListStore; + } config; typedef struct { GtkWidget *Window; @@ -79,17 +89,39 @@ typedef struct { GtkWidget *DocumentationMenuItem; GtkWidget *AboutMenuItem; - + // Custom GtkWidget *MainAddUserButton; GtkWidget *MainEditUserButton; GtkWidget *MainDeleteUserButton; GtkWidget *MainEditGroupsButton; + GtkWidget *MainDefaultGroupsEntry; + GtkWidget *MainDefaultUserNameEntry; + GtkWidget *MainDefaultUserAdministratorCheck; + GtkWidget *MainDefaultPasswordEntry; + GtkWidget *MainRootPasswordEntry; + GtkWidget *MainPasswordHashCombo; + GtkWidget *MainUserTree; } main_window; +typedef struct { + gboolean adm; + gboolean audio; + gboolean autologin; + gboolean avahi; + gboolean bin; + gboolean brlapi; + gboolean britty; + gboolean bumblbee; + gboolean chrony; + gboolean clamav; + gboolean cockpit_ws; + gboolean cockpit_wsinstance; + gboolean colord; +} groups_config; typedef struct { GtkWidget *Window; @@ -107,13 +139,52 @@ typedef struct { GtkWidget *Window; GtkWidget *GroupsCancelButton; GtkWidget *GroupsOkButton; + + GtkWidget *GroupsAdmCheck; + GtkWidget *GroupsAudioCheck; + GtkWidget *GroupsAutologinCheck; + GtkWidget *GroupsAvahiCheck; + GtkWidget *GroupsBinCheck; + GtkWidget *GroupsBrlapiCheck; + GtkWidget *GroupsBrittyCheck; + GtkWidget *GroupsBumblbeeCheck; + GtkWidget *GroupsChronyCheck; + GtkWidget *GroupsClamavCheck; + GtkWidget *GroupsCockpitWsCheck; + GtkWidget *GroupsCockpitWsinstanceCheck; + GtkWidget *GroupsColordCheck; } groups_window; +typedef struct { + int uid; + gboolean uid_default; + char *username; + char *login; + char *password; + gboolean password_default; + char *main_group; + struct groups_config *additional_groups; + int password_hash; + gboolean sync_SAMBA; + char *extra_options; +} user_config; + typedef struct { GtkWidget *Window; GtkWidget *UserAdditionalGroupsButton; GtkWidget *UserCancelButton; GtkWidget *UserOkButton; + + GtkWidget *UserUIDAutoCheck; + GtkWidget *UserUIDEntry; + GtkWidget *userUserNameEntry; + GtkWidget *userLoginEntry; + GtkWidget *userPasswordDefaultCheck; + GtkWidget *userPasswordEntry; + GtkWidget *userGroupsEntry; + GtkWidget *userPasswordHashAlgorithmCombo; + GtkWidget *userSyncSAMBACheck; + GtkWidget *userExtraOptionsEntry; } user_window; main_window *setup_window(); \ No newline at end of file diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 341e091..1f80016 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -733,9 +733,18 @@ int yon_ubl_check_root(){ } char *yon_ubl_root_user_get(){ + char *user=NULL; if (yon_ubl_check_root()){ - char *user=getenv("SUDO_USER"); - return user; + user=getenv("SUDO_USER"); + if (user&&strcmp(user,"")!=0){ + return user; + }else { + FILE *file = popen("getent passwd $PKEXEC_UID | cut -d: -f1","r"); + user=g_malloc0(4096); + fgets(user,4096,file); + user=yon_char_divide_search(user,"\n",-1); + if (user) return user; + } } return getlogin(); } @@ -1352,7 +1361,6 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end int max=0; max=gtk_window_is_maximized(__yon_window_config_target_window); if(max==0){ - printf("resized\n"); gtk_window_get_size(__yon_window_config_target_window,&__yon_main_window_config.width,&__yon_main_window_config.height); gtk_window_get_position(__yon_window_config_target_window,&__yon_main_window_config.x,&__yon_main_window_config.y); } diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 8bc463d..4eb6137 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -13,7 +13,7 @@ #include #include -#include "ubl-cmake.h" +#include "../compile/ubl-cmake.h" #ifdef WEBKIT_FOUND #include #endif diff --git a/ubl-settings-usergroups b/ubl-settings-usergroups index 1e09c33dced8fd3332e1f3e6533c27d79bf5ed27..30c3b0dffaa5c9b539c1d1f8d431388f08456422 100755 GIT binary patch delta 78184 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 LVCK!g;=ca}Wu}Xp delta 58837 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 Y@?ME^ID)@R>D^Dr^esAn*JDfke_P2Qi2wiq diff --git a/ubl-settings-usergroups-group.glade b/ubl-settings-usergroups-group.glade index a9467bf..ac621cb 100644 --- a/ubl-settings-usergroups-group.glade +++ b/ubl-settings-usergroups-group.glade @@ -35,7 +35,7 @@ False vertical - + adm True True @@ -49,7 +49,7 @@ - + audio True True @@ -63,7 +63,7 @@ - + autologin True True @@ -77,7 +77,7 @@ - + avahi True True @@ -91,7 +91,7 @@ - + bin True True @@ -105,7 +105,7 @@ - + brlapi True True @@ -119,7 +119,7 @@ - + britty True True @@ -133,7 +133,7 @@ - + bumblbee True True @@ -147,7 +147,7 @@ - + chrony True True @@ -161,7 +161,7 @@ - + clamav True True @@ -175,7 +175,7 @@ - + cockpit-ws True True @@ -189,7 +189,7 @@ - + cockpit-wsinstance True True @@ -203,7 +203,7 @@ - + colord True True @@ -276,8 +276,9 @@ True False + True - + True False Users and groups diff --git a/ubl-settings-usergroups-user.glade b/ubl-settings-usergroups-user.glade index 97ce3c7..8719198 100644 --- a/ubl-settings-usergroups-user.glade +++ b/ubl-settings-usergroups-user.glade @@ -55,16 +55,32 @@ - + + Automatically True True + False + True - True + False True 1 + + + True + True + 1001 + number + + + True + True + 2 + + False @@ -91,9 +107,10 @@ - + True True + username True @@ -127,9 +144,10 @@ - + True True + login True @@ -163,7 +181,7 @@ - + Default True True @@ -177,9 +195,15 @@ - + True True + False + * + False + False + ****** + password True @@ -213,7 +237,7 @@ - + True True @@ -262,9 +286,10 @@ - + True False + 0 sha256 AIX md5 @@ -286,7 +311,7 @@ - + Sync with SAMBA user True True @@ -318,7 +343,7 @@ - + True True @@ -396,8 +421,9 @@ True False + True - + True False Users and groups @@ -409,4 +435,14 @@ + + + + + + + + + + diff --git a/ubl-settings-usergroups.glade b/ubl-settings-usergroups.glade index eced9ce..1645544 100644 --- a/ubl-settings-usergroups.glade +++ b/ubl-settings-usergroups.glade @@ -200,13 +200,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + - + + + - + + + + + - + @@ -662,7 +668,7 @@ translated and supported by community. - + True True @@ -712,7 +718,7 @@ translated and supported by community. - + True True @@ -730,7 +736,7 @@ translated and supported by community. - + User with ID 1000 is administrator True True @@ -763,7 +769,7 @@ translated and supported by community. - + True True 30 @@ -778,7 +784,7 @@ translated and supported by community. - + True True end @@ -834,9 +840,10 @@ translated and supported by community. - + True False + 0 sha256 AIX md5 @@ -876,7 +883,7 @@ translated and supported by community. external in - + True True UserList @@ -888,6 +895,9 @@ translated and supported by community. UID + + 0 + @@ -896,6 +906,9 @@ translated and supported by community. Login + + 2 + @@ -904,6 +917,9 @@ translated and supported by community. Password + + 3 + @@ -912,6 +928,9 @@ translated and supported by community. User name + + 5 +