#ifndef USERGROUPS_H #define USERGROUPS_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef WEBKIT_FOUND #include #endif #include "ubl-strings.h" #define WIKI_LINK "https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-usergroups" #define _(String) gettext(String) #define glade_path "/com/ublinux/ui/ubl-settings-usergroups.glade" #define glade_path_ubl_settings_usergroups_additional_settings "/com/ublinux/ui/ubl-settings-usergroups-additional-settings.glade" #define glade_path_ubl_settings_usergroups_group_creation "/com/ublinux/ui/ubl-settings-usergroups-group-creation.glade" #define glade_path_ubl_settings_usergroups_group "/com/ublinux/ui/ubl-settings-usergroups-group.glade" #define glade_path_ubl_settings_usergroups_password "/com/ublinux/ui/ubl-settings-usergroups-password.glade" #define glade_path_ubl_settings_usergroups_system "/com/ublinux/ui/ubl-settings-usergroups-system.glade" #define glade_path_ubl_settings_usergroups_user "/com/ublinux/ui/ubl-settings-usergroups-user.glade" #define glade_path_ubl_settings_usergroups_savesettings "/com/ublinux/ui/ubl-settings-usergroups-savesettings.glade" #define glade_path_ubl_settings_usergroups_confirmation "/com/ublinux/ui/ubl-settings-usergroups-confirmation.glade" #define glade_path_ubl_settings_usergroups_system_deletion_confirmation "/com/ublinux/ui/ubl-settings-usergroups-system-deletion-confirmation.glade" #define banner_path "/com/ublinux/images/ubl-settings-usergroups-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-usergroups.css" #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define icon_path "com.ublinux.ubl-settings-usergroups" #define sync_parameters_path "resource:///com/ublinux/csv/sync_parameters.csv" #define icon_path_print "com.ublinux.libublsettingsui-gtk3.print-symbolic" #define icon_path_save "com.ublinux.libublsettingsui-gtk3.save-symbolic" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-usergroups" #define encrypt_passwords_command "/usr/lib/ublinux/functions globalconf_convert_pass_plain_to_hash" #define get_default_hash_command "ubconfig --raw --source default get [users] HASHPASSWD" #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 samba_sync_command(user) yon_char_unite("sudo smbpasswd -Lan ",user,NULL) #define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL) #define get_passwords_command "ubconfig --target global get [users] USERADD[*] GROUPADD[*]" #define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL)) #define get_system_user_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_useradd_from_system ",target,NULL) #define get_system_shadow_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_usershadow_from_system ",target,NULL) #define get_system_group_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_groupadd_from_system ",target,NULL) #define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ (\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"country_name\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\") ]] && echo \"${SELECT_LOCALE}|${BASH_REMATCH[2]}${BASH_REMATCH[7]}${BASH_REMATCH[11]}${BASH_REMATCH[5]:+ (${BASH_REMATCH[5]})}${BASH_REMATCH[9]:+ (${BASH_REMATCH[9]})}|${BASH_REMATCH[3]}${BASH_REMATCH[8]}${BASH_REMATCH[12]}${BASH_REMATCH[4]:+ (${BASH_REMATCH[4]})}\" || echo \"${SELECT_LOCALE}\"; done 3< \"/usr/share/i18n/SUPPORTED\"" #define remove_user_from_system_command(target) yon_char_append("userdel ",target) #define remove_user_and_homedir_from_system_command(target) yon_char_append("userdel -r ",target) #define remove_group_from_system_command(target) yon_char_append("groupdel ",target) #define groups_path "/etc/group" #define users_path "/etc/passwd" #define shadow_path "/etc/shadow" #define group_shadow_path "/etc/gshadow" #define uid_path "/etc/login.defs" #define password_limits_path "/etc/security/pwquiality.conf" #define get_user_info_command(target) yon_char_unite("getent passwd \"",target,"\"",NULL) #define get_group_info_command(target) yon_char_unite("getent group \"",target,"\"",NULL) #define get_home_command(target) yon_char_unite("getent passwd \"",target,"\" | cut -d: -f6",NULL) #define remove_home_dirs_command(users_string) yon_char_append("/usr/lib/ublinux/functions remove_userhome ", users_string) #define default_home_initiator_path "/etc/default/useradd" #define user_shadow_command "cat /etc/shadow" #define hash_list_path "resource:///com/ublinux/csv/hash_list.csv" #define shell_list_path "resource:///com/ublinux/csv/shell_list.csv" #define USERADD(user) yon_char_unite("USERADD[",user,"]",NULL) #define GROUPADD(group) yon_char_unite("GROUPADD[",group,"]",NULL) #define USERSHADOW(user) yon_char_unite("USERSHADOW[",user,"]",NULL) #define USERADD_SYNC(user) yon_char_unite("USERADD_SYNC[",user,"]",NULL) #define USERADD_SYNC_command(target) yon_char_unite("ubconfig --source system get users USERADD_SYNC[",target,"]",NULL) #define USERSHADOW_SYNC(user) yon_char_unite("USERSHADOW_SYNC[",user,"]",NULL) #define GROUPADD_SYNC(user) yon_char_unite("GROUPADD_SYNC[",user,"]",NULL) #define GROUPADD_SYNC_parameter "GROUPADD_SYNC" #define GROUPADD_SYNC_parameter_command "ubconfig --source system get users USERADD_SYNC" #define check_box_icon_name "com.ublinux.libublsettingsui-gtk3.checkbox-symbolic" #define check_checked_icon_name "com.ublinux.libublsettingsui-gtk3.checkbox-checked-symbolic" #define check_attention_icon_name "com.ublinux.libublsettingsui-gtk3.checkbox-attention-symbolic" #define add_icon_name "com.ublinux.libublsettingsui-gtk3.increase-symbolic" #define edit_icon_name "com.ublinux.libublsettingsui-gtk3.edit-symbolic" #define delete_icon_name "com.ublinux.libublsettingsui-gtk3.trash-symbolic" #define sync_icon_name "com.ublinux.libublsettingsui-gtk3.move-in-symbolic" #define update_icon_name "com.ublinux.libublsettingsui-gtk3.sync-symbolic" #define password_hash_get_command(passwd) yon_char_append("mkpasswd2 ",passwd) #define user_info_command(target) yon_char_append("echo ",target) #define user_info_pdf_command(target,path) yon_char_unite("echo ",target,path,NULL) #define user_info_txt_command(target,path) yon_char_unite("echo ",target,path,NULL) #define config_get_command(source) yon_char_unite("ubconfig --source ",source," -ea get [users] DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERADD_SYNC[*] USERSHADOW[*] USERSHADOW_SYNC[*] GROUPADD[*] GROUPADD_SYNC[*] GROUPADD_SYNC"," -- [system] SYSTEMBOOT_STATEMODE"," -- [save] SAVE_ROOTCOPY_CHANGES", " -- [locale] LOCALE",NULL) #define config_get_default_command "ubconfig --source default -ea get users DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM -- get [locale] LOCALE" #define config_get_global_only_parameters "ubconfig --source global -ea get users DEFAULTPASSWD DEFAULTROOTPASSWD" #define config_get_local_only_parameters "" #define SAVE_ROOTCOPY_CHANGES_get_command "ubconfig --source global get [save] SAVE_ROOTCOPY_CHANGES" #define DEFAULTUSER_get_command "ubconfig --source global get [users] DEFAULTUSER" #define DEFAULTPASSWD_get_command "ubconfig --source global get [users] DEFAULTPASSWD" #define DEFAULTROOTPASSWD_get_command "ubconfig --source global get [users] DEFAULTROOTPASSWD" #define ADDADM_get_command "ubconfig --source global get [users] ADDADM" #define HASHPASSWD_get_command "ubconfig --source global get [users] HASHPASSWD" #define USERADD_SYNC_get_command "ubconfig --source global get [users] USERADD_SYNC" #define USERGROUPS_get_command "ubconfig --source global get [users] USERGROUPS" #define USERGROUPS_parameter "USERGROUPS" #define USERGROUPS_parameter_command "ubconfig --source system get users USERGROUPS" #define DEFAULTPASSWD_parameter "DEFAULTPASSWD" #define DEFAULTPASSWD_parameter_command "ubconfig --source system get users DEFAULTPASSWD" #define DEFAULTROOTPASSWD_parameter "DEFAULTROOTPASSWD" #define DEFAULTROOTPASSWD_parameter_command "ubconfig --source system get users DEFAULTROOTPASSWD" #define ADDADM_parameter "ADDADM" #define ADDADM_parameter_command "ubconfig --source system get users ADDADM" #define HASHPASSWD_parameter "HASHPASSWD" #define HASHPASSWD_parameter_command "ubconfig --source system get users HASHPASSWD" #define DEFAULTUSER_parameter "DEFAULTUSER" #define DEFAULTUSER_parameter_command "ubconfig --source system get users DEFAULTUSER" #define SAVE_ROOTCOPY_CHANGES_parameter "SAVE_ROOTCOPY_CHANGES" #define SAVE_ROOTCOPY_CHANGES_parameter_command "ubconfig --source system get users SAVE_ROOTCOPY_CHANGES" #define USERADD_parameter "USERADD" #define USERADD_all_parameter_command "ubconfig --source system get users USERADD" #define GROUPADD_parameter "GROUPADD" #define GROUPADD_all_parameter_command "ubconfig --source system get users GROUPADD" #define USERADD_SHADOW_parameter "USERADD_SHADOW" #define USERADD_SHADOW_parameter_command "ubconfig --source system get users USERADD_SHADOW" #define GROUPADD_SHADOW_parameter "GROUPADD_SHADOW" #define GROUPADD_SHADOW_parameter_command "ubconfig --source system get users GROUPADD_SHADOW" #define USERADD_SYNC_parameter "USERADD_SYNC" #define USERADD_SYNC_parameter_command "ubconfig --source system get users USERADD_SYNC" #define LOCALE_parameter "LOCALE" #define LOCALE_parameter_command "ubconfig --source system get [locale] LOCALE" #define USERADD_SEARCH_macro "USERADD[" #define USERADD_parameter_command yon_char_unite("ubconfig --source system get users USERADD[",target,"]",NULL) #define GROUPADD_SEARCH_macro "GROUPADD[" #define GROUPADD_parameter_command yon_char_unite("GROUPADD[",target,"]",NULL) #define date_format_parameter "DateFormat" typedef char* string; __attribute__((unused)) static \ string version_application; typedef struct { template_config_fields config_str groups; int groups_size; config_str users; int users_size; config_str shadow; int shadow_size; config_str group_shadow; int group_shadow_size; GtkListStore *users_list; GtkListStore *groups_list; int MAXUID; int MINUID; int MAXGID; int MINGID; size_t password_min_length; int hash_default_id; config_str sync_users; int sync_size; config_str remove_homes; int homes_size; char *default_home; int save_config; int launch_size; config_str launch_arguments; GHashTable *locales_hash; } config; extern config main_config; typedef struct { template_window_fields GtkListStore *CacheAlgList; GtkListStore *GroupsList; GtkListStore *UsersList; GtkWidget *UserAddToConfigButton; GtkWidget *SystemTree; GtkWidget *SystemGroupsTree; GtkWidget *button2; GtkWidget *button3; GtkWidget *AddButton; GtkWidget *EditButton; GtkWidget *DeleteButton; GtkWidget *UpdateButton; GtkWidget *UserInfoButton; GtkWidget *UsersTree; GtkWidget *GroupsTree; GtkWidget *MainNotebook; GtkWidget *SavingSettingsButton; GtkWidget *ConfigUserShowSystemCheck; GtkWidget *ConfigUserSearchEntry; GtkWidget *ConfigGroupShowSystemCheck; GtkWidget *ConfigGroupSearchEntry; GtkWidget *SystemUserShowSystemCheck; GtkWidget *SystemUserSearchEntry; GtkWidget *SystemGroupShowSystemCheck; GtkWidget *SystemGroupSearchEntry; GtkTreeModel *ConfigUsersFilter; GtkTreeModel *ConfigUsersSort; GtkTreeModel *ConfigGroupsFilter; GtkTreeModel *ConfigGroupsSort; GtkTreeModel *SystemUsersFilter; GtkTreeModel *SystemUsersSort; GtkTreeModel *SystemGroupsFilter; GtkTreeModel *SystemGroupsSort; rmb_menu_window *UsersMenu; rmb_menu_window *GroupsMenu; rmb_menu_window *SystemUsersMenu; rmb_menu_window *SystemGroupsMenu; GtkListStore *liststore1; GtkListStore *liststore2; } main_window; typedef struct { GtkWidget *Window; GtkWidget *AlwaysOpenCheck; GtkWidget *CloseButton; GtkWidget *AcceptButton; } documentation_confirmation_window; typedef struct{ GtkWidget *Window; GtkWidget *StatusBox; GtkWidget *DefaultUserNameEntry; GtkWidget *DefaultUserAdministratorCheck; GtkWidget *DefaultPasswordCombo; GtkWidget *DefaultPasswordEntry; GtkWidget *DefaultPasswordButton; GtkWidget *RootPasswordCombo; GtkWidget *RootPasswordEntry; GtkWidget *RootPasswordButton; GtkWidget *PasswordHashCombo; GtkWidget *CancelButton; GtkWidget *AcceptButton; GtkWidget *EncryptAllPasswordsButton; GtkWidget *UsersBootCheck; GtkWidget *UsersShutdownCheck; GtkWidget *UsersShutdownExpander; GtkWidget *UserShutdownRevealer; GtkWidget *UsersTree; GtkWidget *UserAddButton; GtkWidget *UserRemoveButton; GtkWidget *GroupsBootCheck; GtkWidget *GroupsShutdownCheck; GtkWidget *GroupsShutdownExpander; GtkWidget *GroupShutdownRevealer; GtkWidget *GroupsTree; GtkWidget *GroupAddButton; GtkWidget *GroupRemoveButton; GtkListStore *UsersShutdownList; GtkListStore *GroupsShutdownList; GtkCellRenderer *UserActiveCell; GtkCellRenderer *UserMinCell; GtkCellRenderer *UserMaxCell; GtkCellRenderer *GroupActiveCell; GtkCellRenderer *GroupMinCell; GtkCellRenderer *GroupMaxCell; const char *default_user_name; const char *default_password; const char *default_root_password; const char *password_hash; int user_1000_admin; int user_boot; int user_shutdown; } ubl_settings_usergroups_additional_settings_window; typedef struct{ GtkWidget *CreateGroupWindow; GtkWidget *StatusBox; GtkWidget *userUIDAutoCheck; GtkWidget *userUIDEntry; GtkWidget *userLoginEntry; GtkWidget *userGroupsEntry; GtkWidget *UserAdditionalGroupsButton; GtkWidget *UserCancelButton; GtkWidget *UserOkButton; GtkWidget *AdditionalGroupsButton; GtkWidget *UnuniqueGIDCheck; GtkWidget *SystemGroupCheck; GtkWidget *PasswordCombo; GtkWidget *PasswordEntry; GtkWidget *ChangePasswordButton; GtkWidget *userTitleNameLabel; GtkWidget *AdminGroupsEntry; GtkWidget *AdminGroupsButton; GtkWidget *GroupaddShutdownCheck; GtkWidget *groupExtraOptionsEntry; GtkWidget *MainNotebook; char *last_gid; char *old_password; } ubl_settings_usergroups_group_creation_window; typedef struct{ GtkWidget *GroupsWindow; GtkWidget *StatusBox; GtkWidget *GroupsTree; GtkListStore *list; GtkWidget *GroupsCancelButton; GtkWidget *GroupsOkButton; GtkWidget *HeaderLabel; GtkWidget *DefaultCheck; GtkWidget *AddNewCheck; GtkWidget *AddNewEntry; GtkWidget *AddNewBox; GtkCellRenderer *StatusCell; GtkTreeViewColumn *GroupColumn; } ubl_settings_usergroups_group_window; typedef struct{ GtkWidget *CreateGroupWindow; GtkWidget *StatusBox; GtkWidget *UserCancelButton; GtkWidget *UserOkButton; GtkWidget *PasswordEntry; GtkWidget *RepeatPasswordEntry; GtkWidget *PasswordHashEntry; GtkWidget *HashBox; GtkWidget *PasswordBox; GtkWidget *NoEncriptionCheck; } ubl_settings_usergroups_password_window; typedef struct { GtkWidget *Window; GtkWidget *Terminal; GtkWidget *HeaderImage; GtkWidget *PrintButton; GtkWidget *SaveButton; char *target_user; } yon_user_info_window; typedef struct{ GtkListStore *liststore1; GtkListStore *liststore2; GtkWidget *MonitorWindow; GtkWidget *ToggleAllButton; GtkWidget *UpdateButton; GtkWidget *SystemTree; int show_all; } ubl_settings_usergroups_system_window; typedef struct{ GtkWidget *CreateUserWindow; GtkWidget *StatusBox; GtkWidget *userUIDAutoCheck; GtkWidget *userUIDEntry; GtkWidget *userLoginEntry; GtkWidget *userPasswordCombo; GtkWidget *userPasswordEntry; GtkWidget *userPasswordButton; GtkWidget *userUserNameEntry; GtkWidget *userGroupsCheck; GtkWidget *userGroupsEntry; GtkWidget *UserGroupsButton; GtkWidget *userAdditionalGroupsEntry; GtkWidget *userAdditionalGroupsButton; GtkWidget *userPasswordChangedEntry; GtkWidget *userPasswordExpirationEntry; GtkWidget *userPasswordExpirationButton; GtkWidget *userPasswordChangeDelayMinimumSpin; GtkWidget *userPasswordChangeDelayMaximumSpin; GtkWidget *userWarningSpin; GtkWidget *userActivitySpin; GtkWidget *userForceChangeCheck; GtkWidget *LanguageCombo; GtkWidget *userShellCombo; GtkWidget *userShellEntry; GtkWidget *userHomeCombo; GtkWidget *userHomeEntry; GtkWidget *userHomeButton; GtkWidget *userCreateSystemCheck; GtkWidget *userCreateUnuniqueCheck; GtkWidget *userDontCheckCheck; GtkWidget *userSyncSAMBACheck; GtkWidget *userDeactivatedCheck; GtkWidget *userExtraOptionsEntry; GtkWidget *UserCancelButton; GtkWidget *UserOkButton; GtkWidget *CalendarPopup; GtkWidget *ExpirationCalendar; GtkWidget *UseraddBootCheck; GtkWidget *UseraddShutdownCheck; GtkWidget *UsershadowBootCheck; GtkWidget *UsershadowShutdownCheck; GtkWidget *userTitleNameLabel; GtkWidget *userSyncSAMBAPasswordCheck; GtkWidget *MainNotebook; char *expiration_unix; char *old_password; char *old_username; char *last_uid; char *config_locale; GThread *locale_thread; } ubl_settings_usergroups_user_window; typedef struct { GtkWidget *Window; GtkWidget *StatusBox; GtkWidget *CancelButton; GtkWidget *AcceptButton; GtkWidget *SambaCheck; } yon_savasettings_window; typedef struct { GtkWidget *Window; GtkWidget *StatusBox; GtkWidget *CancelButton; GtkWidget *AcceptButton; GtkWidget *DeletionTree; GtkWidget *TitleLabel; GtkWidget *HatLabel; GtkListStore *list; GtkCellRenderer *DeleteCell; GtkCellRenderer *DeleteHomeCell; GtkTreeViewColumn *UserCell; } yon_confirmation_window; typedef struct { GtkWidget *Window; GtkWidget *HeaderLabel; GtkWidget *CancelButton; GtkWidget *StatusBox; GtkWidget *TitleLabel; GtkWidget *AcceptButton; GtkWidget *ConfigAcceptButton; GtkWidget *SystemAcceptButton; } system_remove_confirmation_window; struct target_struct{ GtkEntry *target; GtkToggleButton *defaut_toggle; }; ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(); void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_window *widgets); ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group_creation_new(); ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(); void on_standard_groups_open(GtkWidget *self, main_window *widgets); ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(); ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(); void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets); void on_remove_expired(GtkWidget *, GtkEntryIconPosition icon_pos, GdkEvent *, GtkEntry *target); ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(); void on_password_accept(GtkWidget *self, dictionary *dict); void on_config_update(GtkWidget *self, main_window *widgets); int yon_load_proceed(YON_CONFIG_TYPE type); void yon_interface_update(main_window *widgets); void on_config_local_load(GtkWidget *self, main_window *widgets); void on_config_global_load(GtkWidget *self, main_window *widgets); void on_config_custom_load(GtkWidget *self,main_window *widgets); void yon_samba_sync_proceed(); void yon_accept_changes(); void yon_hide_passwords(template_saving_window *window); void on_save_done(main_window *widgets, config_str output, int size); void on_save_failed(main_window *, config_str , int ); void on_config_save(GtkWidget *self, main_window *widgets); void on_config_global_save(GtkWidget *self, main_window *widgets); void on_config_local_save(GtkWidget *self, main_window *widgets); void on_config_custom_save(GtkWidget *self, main_window *widgets); void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window); void yon_samba_sync_add(char *user, char*password); void yon_samba_sync_remove(char *user); int yon_samba_sync_get(char *user); void on_delete_confirmation_delete_home_check(GtkCellRenderer *self, char *path, yon_confirmation_window *window); void on_delete_confirmation_delete_check(GtkCellRenderer *self, char *path, yon_confirmation_window *window); void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict); void yon_group_delete_confirmation_save(GtkWidget *self, dictionary *dict); int yon_check_password_blocked(char *password); yon_confirmation_window *yon_delete_confirmation_new(); void yon_system_delete_confirmation_open(main_window *widgets); void yon_delete_confirmation_open(main_window *widgets); void yon_group_delete_confirmation_open(main_window *widgets); yon_savasettings_window *yon_saving_settings_new(); void on_saving_settings_open(GtkWidget *self, main_window *widgets); void on_password_combo_changed(GtkComboBox *self, GtkWidget *target); void on_filechooser_open(GtkWidget *self, GtkEntry *output_target); void on_groups_save(GtkWidget *self, dictionary *dict); void on_groups_clicked(GtkWidget *self, struct target_struct *output_target); void on_groups_multiple_save(GtkWidget *self, dictionary *dict); void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target); void on_passwords_encrypt(); void on_password_change(GtkWidget *self, dictionary *entry_dict); void on_additional_settings_clicked(GtkWidget *self, GtkEntry *output_target); void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window *window); void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window); void on_additional_settings_save(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window); void on_hash_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window); ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(); void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_window *widgets); void on_user_choose(GtkWidget *self, GtkEntry *target); void on_GID_update(GtkWidget *self, ubl_settings_usergroups_group_creation_window *window); void on_group_save(GtkWidget *self, dictionary *dict); void on_system_parameter_changed(GtkWidget *self, ubl_settings_usergroups_group_creation_window *window); ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group_creation_new(); void on_group_clicked(GtkCellRenderer *self, char *path, ubl_settings_usergroups_group_window *window); ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int mode); void on_standard_groups_accept(GtkWidget *self, ubl_settings_usergroups_group_window *window); void on_standard_groups_open(GtkWidget *self, main_window *widgets); void on_password_show_hide(GtkEntry *self, GtkEntryIconPosition icon_pos, GdkEvent* event); void on_password_accept(GtkWidget *self, dictionary *dict); ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(); void yon_system_load(main_window *window); void on_system_update(GtkWidget *self, main_window *window); ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(); void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets); void on_user_shell_changed(GtkWidget *self, ubl_settings_usergroups_user_window *window); void on_UID_update(GtkWidget *self, ubl_settings_usergroups_user_window *window); void on_user_login_update(GtkWidget *self, ubl_settings_usergroups_user_window *window); void on_user_save(GtkWidget *self, dictionary *dict); void on_toggle_button_set_active_from_combo_box(GtkComboBox *self,ubl_settings_usergroups_user_window *window); void on_password_user_changed(GtkComboBox *self,ubl_settings_usergroups_user_window *window); void on_toggle_button_set_active_from_toggle_button_inversed(GtkToggleButton *self, ubl_settings_usergroups_user_window *window); void on_date_selected(GtkWidget *self, ubl_settings_usergroups_user_window *window); void on_parameter_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window); void on_main_add(GtkWidget *self, main_window *widgets); void on_main_edit(GtkWidget *self, main_window *widgets); void on_main_edit_activate(GtkWidget *self, GtkTreePath *path, GtkTreeViewColumn *column, main_window *widgets); void on_main_delete(GtkWidget *self, main_window *widgets); void on_config_update(GtkWidget *self, main_window *widgets); void on_user_sync_with_config(GtkWidget *,main_window *widgets); int yon_element_chosen(GtkWidget *target); void config_init(); void on_notebook_page_changed(GtkWidget *self, GtkWidget *page, int num, main_window *widgets); gboolean on_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window); gboolean on_system_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window); template_main_window *yon_main_window_complete(main_window *widgets); void yon_remove_confirmation_window_accept_clicked(GtkWidget *self,dictionary *dict); system_remove_confirmation_window *yon_system_remove_confirmation_window_new(); void on_delete_system_user(GtkWidget *, dictionary *dict); void on_delete_system_group(GtkWidget *, dictionary *dict); char *yon_char_parsed_to_string_include_empty(config_str parsed, int parsed_size, char *divider); config_str yon_parameter_parse(char *parameter, int *size); int yon_parameter_check_tag(char *tag,char *string); config_str yon_parameter_get_by_template(char *parameter, char *pattern, int *size); void on_additional_settings_group_sync_remove(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window); void on_additional_settings_user_sync_remove(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window); void on_additional_settings_user_sync_add(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window); void on_additional_settings_cell_toggled(GtkCellRenderer *self, char *path, ubl_settings_usergroups_additional_settings_window *window); void on_additional_settings_cell_edited(GtkCellRenderer *self, char *path, char *new_text, ubl_settings_usergroups_additional_settings_window *window); void on_adiitional_settings_tree_selection_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window); void on_useradd_sync_changed(ubl_settings_usergroups_additional_settings_window *window); void yon_gtk_login_block_symbols(GtkEntry *target); void on_login_insert_custom_restricted_check(GtkEditable *editable, const gchar *text, gint length, gint *position); void on_group_delete_toggled(GtkWidget *,gchar* path,yon_confirmation_window *window); char *yon_user_check_groups(GtkListStore *list, char *target); char *yon_user_get_group_string(char *user); void on_password_hash_sensitiveness(GtkWidget *,ubl_settings_usergroups_password_window *window); gboolean on_encrypt_update(dictionary *dict); void *yon_passwords_encrypt(dictionary *dict); gboolean on_filter(GtkTreeModel* model, GtkTreeIter *iter, main_window *widgets); void on_filter_changed(GtkWidget *self, main_window *widgets); void on_user_info(GtkWidget *,main_window *widgets); yon_user_info_window *yon_user_info_window_new(); void on_user_info_save(GtkWidget *,yon_user_info_window *window); void on_user_info_print(GtkWidget *,yon_user_info_window *window); void yon_shutdown_toggled(GtkWidget *self,ubl_settings_usergroups_additional_settings_window *window); void yon_gtk_tree_view_select_first(GtkTreeView *target); void on_date_format_changed(GtkWidget *, main_window *widgets); char *yon_user_get_system_groups(char *target_login); int yon_system_group_sync(char *group); int yon_system_user_sync(char *user); void on_homedir_changed(GtkComboBox *self, GtkWidget *target); int yon_config_check_valid(); void on_home_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window); gboolean yon_user_set_locales(GtkWidget *target); void *yon_load_languages(void *target); #endif