#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/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-bootloader" #define _(String) gettext(String) #define glade_path "/com/ublinux/ui/ubl-settings-bootloader.glade" #define glade_path_password "/com/ublinux/ui/ubl-settings-bootloader-password.glade" #define glade_path_user "/com/ublinux/ui/ubl-settings-bootloader-user.glade" #define glade_path_ringtone "/com/ublinux/ui/ubl-settings-bootloader-ringtone.glade" #define glade_path_menu_window "/com/ublinux/ui/ubl-settings-bootloader-menu.glade" #define glade_path_menu_item "/com/ublinux/ui/ubl-settings-bootloader-menu-item.glade" #define banner_path "/com/ublinux/images/ubl-settings-bootloader-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-bootloader.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-bootloader" #define kernel_options_path "resource:///com/ublinux/csv/grub-parameters.csv" #define terminal_input_path "resource:///com/ublinux/csv/grub-terminal-input.csv" #define terminal_output_path "resource:///com/ublinux/csv/grub-terminal-output.csv" #define LocaleName "ubl-settings-bootloader" #define get_menus_entry_command "/usr/lib/ublinux/scripts/grub-functions exec_get_all_menuentry" #define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL)) #define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get boot GRUB_SUPERUSERS GRUB_TIMEOUT GRUB_DEFAULT GRUB_BOOT_SILENT GRUB_PASSWORD[*] GRUB_CMDLINE_LINUX GRUB_TERMINAL_INPUT GRUB_TERMINAL_OUTPUT GRUB_PLAY",NULL) #define config_get_local_command "ubconfig --source system get boot GRUB_SUPERUSERS GRUB_TIMEOUT GRUB_DEFAULT GRUB_BOOT_SILENT GRUB_PASSWORD[*] GRUB_CMDLINE_LINUX GRUB_TERMINAL_INPUT GRUB_TERMINAL_OUTPUT GRUB_PLAY" #define config_get_global_command "ubconfig --source global get boot GRUB_SUPERUSERS GRUB_TIMEOUT GRUB_DEFAULT GRUB_BOOT_SILENT GRUB_PASSWORD[*] GRUB_CMDLINE_LINUX GRUB_TERMINAL_INPUT GRUB_TERMINAL_OUTPUT GRUB_PLAY" #define config_get_default_command "" #define config_get_global_only_parameters "ubconfig --source global get boot GRUB_USER" #define config_get_local_only_parameters "" #define GRUB_TIMEOUT_parameter "GRUB_TIMEOUT" #define GRUB_TIMEOUT_command "ubconfig --source system get boot GRUB_TIMEOUT" #define GRUB_DEFAULT_parameter "GRUB_DEFAULT" #define GRUB_DEFAULT_command "ubconfig --source system get boot GRUB_DEFAULT" #define GRUB_BOOT_SILENT_parameter "GRUB_BOOT_SILENT" #define GRUB_BOOT_SILENT_command "ubconfig --source system get boot GRUB_BOOT_SILENT" #define GRUB_PASSWORD_parameter "GRUB_PASSWORD" #define GRUB_PASSWORD_search "GRUB_PASSWORD[" #define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL) #define GRUB_PASSWORD_command "ubconfig --source system get boot GRUB_PASSWORD[*]" #define GRUB_CMDLINE_LINUX_parameter "GRUB_CMDLINE_LINUX" #define GRUB_CMDLINE_LINUX_command "ubconfig --source system get boot GRUB_CMDLINE_LINUX" #define GRUB_TERMINAL_INPUT_parameter "GRUB_TERMINAL_INPUT" #define GRUB_TERMINAL_INPUT_command "ubconfig --source system get boot GRUB_TERMINAL_INPUT" #define GRUB_TERMINAL_OUTPUT_parameter "GRUB_TERMINAL_OUTPUT" #define GRUB_TERMINAL_OUTPUT_command "ubconfig --source system get boot GRUB_TERMINAL_OUTPUT" #define GRUB_USER_parameter "GRUB_USER" #define GRUB_USER_command "ubconfig --source system get boot GRUB_USER" #define GRUB_SUPERUSERS_parameter "GRUB_SUPERUSERS" #define GRUB_SUPERUSERS_command "ubconfig --source system get boot GRUB_SUPERUSERS" #define GRUB_PLAY_parameter "GRUB_PLAY" #define GRUB_PLAY_command "ubconfig --source system get boot GRUB_PLAY" typedef char* string; __attribute__((unused)) static \ string version_application; typedef struct { template_config_fields int save_config; config_str launch_arguments; int launch_size; int password_min_length; int kernel_size; config_str kernel_parameters; int input_size; config_str input_parameters; int output_size; config_str output_parameters; } config; extern config main_config; typedef struct { template_window_fields GtkWidget *BootDisplayMode; GtkWidget *BootRingtoneAddButton; GtkWidget *BootRingtoneEditButton; GtkWidget *BootRingtoneRemoveButton; GtkWidget *BootRingtoneTree; GtkWidget *BootSelectionTimerCheck; GtkWidget *BootSelectionTimerSpin; GtkWidget *BootUsersAddButton; GtkWidget *BootUsersEditButton; GtkWidget *BootUsersRemoveButton; GtkWidget *BootUsersTree; GtkWidget *CommandLineParametersEntry; GtkWidget *InputTerminalEntry; GtkWidget *InputTerminalTree; GtkWidget *KernelParametersTree; GtkWidget *MenuButton; GtkWidget *MenuOverlay; GtkWidget *OSDefaultEntry; GtkWidget *OutputTerminalEntry; GtkWidget *OutputTerminalTree; GtkCellRenderer *KernelChooseCell; GtkCellRenderer *OutputChosenCell; GtkCellRenderer *InputChosenCell; GtkListStore *BootUsersList; GtkListStore *BootRingtoneList; GtkListStore *KernelParametersList; GtkListStore *InputTerminalList; GtkListStore *OutputTerminalList; } main_window; typedef struct { GtkWidget *Window; GtkWidget *StatusBox; GtkWidget *TitleLabel; GtkWidget *UserCancelButton; GtkWidget *UserOkButton; GtkWidget *PasswordEntry; GtkWidget *RepeatPasswordEntry; GtkWidget *PasswordHashEntry; GtkWidget *HashBox; GtkWidget *PasswordBox; GtkWidget *NoEncriptionCheck; } yon_password_window; typedef struct { GtkWidget *Window; GtkWidget *StatusBox; GtkWidget *TitleLabel; GtkWidget *AdminCheck; GtkWidget *UsernameEntry; GtkWidget *PasswordEntry; GtkWidget *PasswordButton; GtkWidget *CancelButton; GtkWidget *AcceptButton; char *prev_name; } yon_user_window; typedef struct { GtkWidget *Window; GtkWidget *StatusBox; GtkWidget *TitleLabel; GtkWidget *ChooseCheck; GtkWidget *NameEntry; GtkWidget *CodeEntry; GtkWidget *CancelButton; GtkWidget *AcceptButton; char *prev_name; } yon_ringtone_window; //main void on_save_done(main_window *, config_str output, int size); void on_config_global_local_save(GtkWidget *, main_window *); void on_config_local_save(GtkWidget *, main_window *); void on_config_global_save(GtkWidget *, main_window *); void on_config_custom_save(GtkWidget *, main_window *); void on_config_local_load(GtkWidget *,main_window *); void on_config_global_load(GtkWidget *,main_window *); void on_config_custom_load(GtkWidget *,main_window *); void yon_load_proceed(YON_CONFIG_TYPE type); void yon_interface_update(main_window *); void on_save_done(main_window *widgets, config_str output, int size); void on_kernel_parameter_switch(GtkCellRenderer *, char *path, main_window *widgets); void on_input_option_switch(GtkCellRenderer *,char *path, main_window *widgets); void on_output_option_switch(GtkCellRenderer *,char *path, main_window *widgets); void config_init(); void on_parameter_changed(GtkWidget *self,main_window *widgets); void yon_main_window_complete(main_window *widgets); //password void yon_password_change(GtkWidget *, GtkEntry *entry); void on_password_accept(GtkWidget *self, dictionary *dict); yon_password_window *yon_ubl_settings_usergroups_password_new(); int yon_check_password_blocked(char *password); //user void on_user_accept(GtkWidget *,dictionary *dict); void on_user_add_clicked(GtkWidget *,main_window *widgets); void on_user_edit_clicked(GtkWidget *,main_window *widgets); void on_user_remove_clicked(GtkWidget *,main_window *widgets); yon_user_window *yon_user_window_new(); //ringtone void on_ringtone_accept(GtkWidget *,dictionary *dict); void on_ringtone_add_clicked(GtkWidget *,main_window *widgets); void on_ringtone_edit_clicked(GtkWidget *,main_window *widgets); void on_ringtone_remove_clicked(GtkWidget *,main_window *widgets); yon_ringtone_window *yon_ringtone_window_new(); //menu typedef struct { GtkWidget *MenuWindow; GtkWidget *BackButton; GtkWidget *ItemsRevealer; GtkWidget *ItemsListBox; GtkWidget *ChildrenRevealer; GtkWidget *ChildrenListBox; dictionary *menu_items; char *cur_selection; } yon_menu_window; typedef struct { GtkWidget *MenuItemBox; GtkWidget *MenuButton; GtkWidget *MenuTextLabel; GtkWidget *NextIconButton; char *target; dictionary *children; } yon_menu_item; yon_menu_window *yon_menu_window_open(GtkWidget *target, main_window *widgets); gboolean on_menu_clicked(GtkWidget *, GdkEventButton *, yon_menu_window *); yon_menu_window *yon_menu_window_new(); yon_menu_item *yon_menu_item_new(); void on_menu_chosen(GtkWidget *,dictionary *dict); void on_submenu_open(GtkWidget *,dictionary *dict); void on_children_clean(GtkWidget*, yon_menu_window *window);