#include "ubl-settings-usergroups.h" void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window){ if (self == window->DefaultUserNameEntry){ window->default_user_name = gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry)); } else if (self == window->DefaultPasswordEntry){ window->default_password = gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry)); } else if (self == window->RootPasswordEntry){ window->default_root_password = gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry)); } else if (self == window->PasswordHashCombo){ window->password_hash = ""; } else if (self == window->DefaultUserAdministratorCheck){ window->user_1000_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck)); } else if (self == window->UsersBootCheck){ window->user_boot = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck)); } else if (self == window->UsersShutdownCheck){ window->user_shutdown = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck)); } } void on_additional_settings_save(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){ const char *default_user = (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry)); if (!yon_char_is_empty(default_user)){ if (window->default_user_name) yon_config_register(DEFAULTUSER_parameter,DEFAULTUSER_parameter_command,yon_char_new((char*)default_user)); } else { if (window->default_user_name) yon_config_remove_by_key(DEFAULTUSER_parameter); } char *default_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->DefaultPasswordCombo))>1? (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry)):NULL; if (!yon_char_is_empty(default_password)){ if (window->default_password) yon_config_register(DEFAULTPASSWD_parameter,DEFAULTPASSWD_parameter_command,default_password); } else { if (window->default_password) yon_config_remove_by_key(DEFAULTPASSWD_parameter); } char *root_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RootPasswordCombo)) > 1 ? (char*)gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry)) : NULL; if (!yon_char_is_empty(root_password)){ if (window->default_root_password) yon_config_register(DEFAULTROOTPASSWD_parameter,DEFAULTROOTPASSWD_parameter_command,root_password); } else { if (window->default_root_password) yon_config_remove_by_key(DEFAULTROOTPASSWD_parameter); } int user_k_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck)); if (user_k_admin){ if (window->user_1000_admin) yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"yes"); } else { if (window->user_1000_admin) yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"no"); } if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordHashCombo))!=0){ char *hash = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PasswordHashCombo)); if (!yon_char_is_empty(hash)){ if (window->password_hash) yon_config_register(HASHPASSWD_parameter,HASHPASSWD_parameter_command,hash); } }else { if (window->password_hash) yon_config_remove_by_key(HASHPASSWD_parameter); } char *sync = ""; int boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck)); int shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck)); if (!boot_active&&!shutdown_active){ if (window->user_boot>-1||window->user_boot>-1) yon_config_remove_by_key(USERADD_SYNC_parameter); } else { if (boot_active){ if (window->user_boot>-1) sync = "boot"; } if (shutdown_active){ if (window->user_shutdown>-1) sync = yon_char_unite(sync,yon_char_is_empty(sync)?"":",","shutdown",NULL); } if (window->user_boot>-1||window->user_boot>-1) yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_parameter_command,sync); } } ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){ ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings); window->Window=yon_gtk_builder_get_widget(builder,"Window"); window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox"); window->DefaultUserNameEntry=yon_gtk_builder_get_widget(builder,"DefaultUserNameEntry"); window->DefaultUserAdministratorCheck=yon_gtk_builder_get_widget(builder,"DefaultUserAdministratorCheck"); window->DefaultPasswordCombo=yon_gtk_builder_get_widget(builder,"DefaultPasswordCombo"); window->DefaultPasswordEntry=yon_gtk_builder_get_widget(builder,"DefaultPasswordEntry"); window->DefaultPasswordButton=yon_gtk_builder_get_widget(builder,"DefaultPasswordButton"); window->RootPasswordCombo=yon_gtk_builder_get_widget(builder,"RootPasswordCombo"); window->RootPasswordEntry=yon_gtk_builder_get_widget(builder,"RootPasswordEntry"); window->RootPasswordButton=yon_gtk_builder_get_widget(builder,"RootPasswordButton"); window->PasswordHashCombo=yon_gtk_builder_get_widget(builder,"PasswordHashCombo"); window->EncryptAllPasswordsButton=yon_gtk_builder_get_widget(builder,"EncryptAllPasswordsButton"); window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton"); window->UsersBootCheck=yon_gtk_builder_get_widget(builder,"UsersBootCheck"); window->UsersShutdownCheck=yon_gtk_builder_get_widget(builder,"UsersShutdownCheck"); window->default_password=NULL; window->default_root_password=NULL; window->default_user_name=NULL; window->user_1000_admin=-1; window->user_shutdown=-1; window->user_boot=-1; window->password_hash=NULL; yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow"); gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL); char *sync_parameters = yon_config_get_by_key(USERADD_SYNC_parameter); if (sync_parameters){ if (strstr(sync_parameters,"boot")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1); } if (strstr(sync_parameters,"shutdown")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck),1); } } int hash_size=0; config_str hash_algos = yon_file_open(hash_list_path,&hash_size); if (main_config.hash_default_id==-1){ int size; config_str ret = yon_config_load(get_default_hash_command,&size); if (size>0){ char *hash = ret[0]; if (hash[strlen(hash)-1]=='\n') hash[strlen(hash)-1]='\0'; for (int i=0;iPasswordHashCombo),yon_char_unite(DEFAULT_USER_LABEL," (",def,")",NULL)); } } } } } for (int i=1;iPasswordHashCombo),parsed[0],_(parsed[1])); gtk_widget_set_tooltip_text(window->PasswordHashCombo,parsed[1]); yon_char_parsed_free(parsed,parsed_size); } } yon_char_parsed_free(hash_algos,hash_size); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordHashCombo),0); char *default_user = yon_config_get_by_key(DEFAULTUSER_parameter); if (!yon_char_is_empty(default_user)) gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user); g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton); g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton); char *default_password = yon_config_get_by_key(DEFAULTPASSWD_parameter); if (!yon_char_is_empty(default_password)){ gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password); if(!yon_config_check_ignore(DEFAULTPASSWD_parameter)) gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2); } char *root_password = yon_config_get_by_key(DEFAULTROOTPASSWD_parameter); if (!yon_char_is_empty(root_password)){ gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password); if(!yon_config_check_ignore(DEFAULTROOTPASSWD_parameter)) gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2); } char *is_k_admin = yon_config_get_by_key(ADDADM_parameter); if (!yon_char_is_empty(is_k_admin)) if (!strcmp(is_k_admin,"yes")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1); char *hash = yon_config_get_by_key(HASHPASSWD_parameter); if (!yon_char_is_empty(hash)){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->PasswordHashCombo),hash); } g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_additional_settings_save),window); dictionary *default_dict=NULL; yon_dictionary_add_or_create_if_exists_with_data(default_dict,"combo",window->DefaultPasswordCombo); yon_dictionary_add_or_create_if_exists_with_data(default_dict,"entry",window->DefaultPasswordEntry); dictionary *root_dict=NULL; yon_dictionary_add_or_create_if_exists_with_data(root_dict,"combo",window->RootPasswordCombo); 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); 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); g_signal_connect(G_OBJECT(window->DefaultUserNameEntry),"changed",G_CALLBACK(on_additional_settings_changed),window); g_signal_connect(G_OBJECT(window->DefaultPasswordEntry),"changed",G_CALLBACK(on_additional_settings_changed),window); g_signal_connect(G_OBJECT(window->RootPasswordEntry),"changed",G_CALLBACK(on_additional_settings_changed),window); g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_additional_settings_changed),window); g_signal_connect(G_OBJECT(window->DefaultUserAdministratorCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window); g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window); g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window); // g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_users_boot_toggled),NULL); // g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_users_shutdown_toggled),NULL); return window; } void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, 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); gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window)); gtk_widget_show(window->Window); }