#include #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/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-services" #define _(String) gettext(String) #define glade_path "/com/ublinux/ui/ubl-settings-services.glade" #define glade_path_terminal "/com/ublinux/ui/ubl-settings-services-terminal.glade" #define glade_path_log "/com/ublinux/ui/ubl-settings-services-log.glade" #define banner_path "/com/ublinux/images/ubl-settings-services-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-services.css" #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-services" #define load_services_command "systemctl list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' -e 's/running /running;/g' -e 's/inactive /inactive;/g'" #define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g'",NULL) #define load_system_services_command "systemctl --system list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'" #define load_enabled_command "systemctl list-unit-files --type=service --type=socket --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:" #define load_launched_command "systemctl list-units --type=service --type=socket --no-pager --state=active --all --no-legend|sed -e 's/^ //g' -e 's/ */:/g' |cut -f1 -d:" #define service_start_command(target) yon_char_append("systemctl start --no-pager ",target) #define service_stop_command(target) yon_char_append("systemctl stop --no-pager ",target) #define service_enable_command(target) yon_char_append("systemctl enable --no-pager ",target) #define service_disable_command(target) yon_char_append("systemctl disable --no-pager ",target) #define service_info_command(target) yon_char_append("systemctl status -l --no-pager ",target) #define service_kill_command(target) yon_char_append("systemctl kill ",target) #define service_check_active_command(target) yon_char_append("systemctl is-active ",target) #define start_log_command(target) yon_char_append("journalctl --all --no-pager --unit ",target) typedef char* string; string version_application; char *local; typedef struct { // Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT { int socket_id; int load_socket_id; int save_socket_id; int lock_help; int lock_save_local; int lock_save_global; int lock_load_global; int lock_load_system; int load_mode; int always_open_documentation; // } Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT // Type custom parameters below: int rmb_clicked; GtkTreeModel *ServiceFilter; GtkTreeModel *SocketFilter; GtkTreeModel *AutolaunchFilter; GtkTreeModel *StoppedFilter; GtkTreeModel *BlockedFilter; GtkTreeModel *SourceFilter; int update_thread_active; } config; typedef struct { GtkWidget *Menu; GtkWidget *MenuConfigAutostart; GtkWidget *MenuConfigAutostop; GtkWidget *MenuConfigBlock; GtkWidget *MenuSystemAutostart; GtkWidget *MenuSystemLaunched; GtkWidget *MenuReloadConfig; GtkWidget *MenuStatus; } menu_obj; typedef struct { // Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT { GtkWidget *Window; GtkWidget *HeadLabel; GtkWidget *PlugBox; GtkWidget *HeadOverlay; GtkWidget *HeadImage; GtkWidget *HeadBox; GtkWidget *HeadTitleLabel; GtkWidget *HeadInfoLabel; GtkWidget *StatusBox; GtkWidget *StatusIcon; GtkWidget *StatusLabel; GtkWidget *SaveMenuItem; GtkWidget *SaveGlobalMenuItem; GtkWidget *SaveLocalMenuItem; GtkWidget *RightBox; GtkWidget *LoadGlobalMenuItem; GtkWidget *LoadLocalMenuItem; GtkWidget *LeftBox; GtkWidget *DocumentationMenuItem; GtkWidget *AboutMenuItem; GtkWidget *InterfaceBox; // } Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT // Type custom parameters below: GtkListStore *liststore1; GtkListStore *liststore2; GtkWidget *BoxMain; GtkWidget *ServiceSourceCombo; GtkWidget *ServiceTypeCombo; GtkWidget *SearchEntry; GtkWidget *UpdateButton; GtkWidget *ConfigAutostartButton; GtkWidget *ConfigAutostopButton; GtkWidget *ConfigBlockButton; GtkWidget *SystemAutostartButton; GtkWidget *SystemLaunchButton; GtkWidget *InfoButton; GtkWidget *LogButton; GtkWidget *MainUpperTree; GtkWidget *MainTree; GtkWidget *RMBMenu; menu_obj *menu; GtkWidget *ServiceLabel; GtkWidget *DescriptionLabel; } main_window; typedef struct { GtkWidget *Window; GtkWidget *AlwaysOpenCheck; GtkWidget *CloseButton; GtkWidget *AcceptButton; } documentation_confirmation_window; typedef struct{ GtkListStore *liststore1; GtkListStore *liststore2; GtkWidget *BoxMain; GtkWidget *ServiceSourceCombo; GtkWidget *ServiceTypeCombo; GtkWidget *SearchEntry; GtkWidget *UpdateButton; GtkWidget *ConfigAutostartButton; GtkWidget *ConfigAutostopButton; GtkWidget *ConfigBlockButton; GtkWidget *SystemAutostartButton; GtkWidget *SystemLaunchButton; GtkWidget *InfoButton; GtkWidget *LogButton; GtkWidget *MainUpperTree; GtkWidget *MainTree; } bl_settings_services_window; typedef struct { GtkWidget *Window; GtkWidget *UpdateButton; GtkWidget *SystemTerminal; GtkWidget *webHeaderNameLabel; char *target; } terminal_window; typedef struct { GtkWidget *Window; GtkWidget *SystemTerminal; GtkWidget *webHeaderNameLabel; char *target; } log_window; void on_config_local_load(GtkWidget *self,main_window *widgets); void on_config_global_load(GtkWidget *self,main_window *widgets); void on_config_global_local_save(); void on_config_local_save(); void on_config_global_save(); log_window *yon_log_window_new(); gboolean yon_interface_update(main_window *widgets); GtkWidget *yon_menu_button_create(char *icon_name, char *text); void on_column_resize(GtkTreeViewColumn *self,GParamSpec *pspec,main_window *widgets); gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window *widgets); GtkWidget *yon_menu_separator_create(); void on_config_autostart_clicked(); void on_activate(GtkTreeView *self, main_window *widgets); void on_config_autostop_clicked(); void on_config_block_clicked(); void on_system_autostart_clicked(); void on_system_kill_confirmed(GtkWidget *self,char *service_name); void on_system_launch_clicked(); gboolean yon_service_source_check(GtkTreeModel *model, GtkTreeIter *iter, void *data); gboolean yon_service_type_check(GtkTreeModel *model, GtkTreeIter *iter,void *data); void on_type_changed(GtkWidget *self, main_window *widgets); void on_search(); void on_info_clicked(); void *yon_unthreaded_config_load(void *widgets); void on_update(); void on_status_show(); void yon_load_proceed(YON_CONFIG_TYPE type); void config_init(); void on_tree_selection_changed(GtkWidget *self, main_window *widgets); void yon_main_window_complete(main_window *widgets); void on_log_show(); void *update_delay(main_window *widgets); gboolean on_service_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_socket_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_autostart_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_stopped_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_source_user_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_source_system_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); terminal_window *yon_terminal_window_new(); void on_service_update(GtkWidget *self, terminal_window* window);