#include #include #include "ubl-utils.h" #include #include #include #include #include #include #include #include #include "ubl-cmake.h" #include "sys/sysinfo.h" #ifdef WEBKIT_FOUND #include #endif #include "ubl-strings.h" #define config_path yon_char_unite("/home/",yon_ubl_root_user_get(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota" #define _(String) gettext(String) #define glade_path "/com/ublinux/ui/ubl-settings-resourcequota.glade" #define glade_filters_path "/com/ublinux/ui/ubl-settings-resourcequota-filters.glade" #define glade_quota_path "/com/ublinux/ui/ubl-settings-resourcequota-quota.glade" #define banner_path "/com/ublinux/images/ubl-settings-resourcequota-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-resourcequota.css" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-resourcequota" #define load_global_command "ubconfig --default --source global get security CGROUP_QUOTA[*]" #define load_local_command "ubconfig --default --source system get security CGROUP_QUOTA[*]" #define save_global_command "ubconfig --default --target global set security" #define save_local_command "ubconfig --default --target system set security" #define save_command "ubconfig set security " #define remove_command "ubconfig remove security " #define remove_global_command "ubconfig --target global --noexecute remove security " #define remove_local_command "ubconfig --target system remove security " #define get_devices_command "findmnt -lo source,target,fstype,label,size -t ext4 |grep -vE \"zram|\\]|\\[|SOURCE\"" #define get_processes_tree_command "clear; systemd-cgls --no-page" #define get_dispatcher_command "clear; systemd-cgtop" #define get_information_command "systemctl status " #define CGROUP_QUOTA(name) yon_char_unite("CGROUP_QUOTA[",name,"]",NULL) typedef char *string; string version_application; char *local; typedef struct { int always_open_documentation; int win_pos_x; int win_pos_y; int win_width; int win_height; 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; GtkListStore *list; long avaliable_ram; long avaliable_swap; long cores; config_str users; int users_size; config_str processes; int processes_size; config_str slices; int slices_size; char *last_info; } config; typedef struct { //Standard GtkWidget *Window; GtkWidget *HatLabel; GtkWidget *PlugBox; GtkWidget *HeadOverlay; GtkWidget *HeadImage; GtkWidget *HeadBox; GtkWidget *HeadTitleLabel; GtkWidget *HeadInfoLabel; GtkWidget *StatusBox; GtkWidget *StatusIcon; GtkWidget *StatusLabel; GtkWidget *SaveLabel; GtkWidget *SaveMenuItem; GtkWidget *SaveGlobalMenuItem; GtkWidget *SaveLocalMenuItem; GtkWidget *RightBox; GtkWidget *LoadLabel; GtkWidget *LoadGlobalMenuItem; GtkWidget *LoadLocalMenuItem; GtkWidget *LeftBox; GtkWidget *DocumentationMenuItem; GtkWidget *AboutMenuItem; // Custom GtkWidget *FiltersButton; GtkWidget *InformationButton; GtkWidget *RemoveButton; GtkWidget *EditButton; GtkWidget *AddButton; GtkWidget *MainTree; GtkWidget *MainNotebook; GtkWidget *DispatcherUpdateCheck; GtkWidget *DispatcherUpdateSpin; GtkWidget *DispatcherUpdateButton; GtkWidget *DispatcherTerminal; GtkWidget *ShowCoreCheck; GtkWidget *ShowAllCheck; GtkWidget *ProcessesUpdateButton; GtkWidget *ProcessesTerminal; GtkWidget *TargetTypeCombo; GtkWidget *TargetCombo; GtkWidget *InformationUpdateButton; GtkWidget *InformationTerminal; } main_window; typedef struct { GtkWidget *Window; GtkWidget *HatText; GtkWidget *HeaderText; GtkWidget *InfoText; GtkWidget *AlwaysOpenCheck; GtkWidget *CloseButton; GtkWidget *AcceptButton; } documentation_confirmation_window; typedef struct { GtkWidget *Window; GtkWidget *TitleLabel; GtkWidget *BlockUiBox; GtkWidget *EditQuotaTargetBox; GtkWidget *AddQuotaTargetBox; GtkWidget *TargetTypeCombo; GtkWidget *TargetCombo; GtkWidget *TargetLabel; GtkWidget *SoftRestrictionCheck; GtkWidget *SoftRestrictionSpin; GtkWidget *SoftRestrictionCombo; GtkWidget *HardRestrictionCheck; GtkWidget *HardRestrictionSpin; GtkWidget *HardRestrictionCombo; GtkWidget *PagingLimitCheck; GtkWidget *PagingLimitSpin; GtkWidget *PagingLimitCombo; GtkWidget *CpuLimitCheck; GtkWidget *CpuLimitSpin; GtkWidget *DeviceLimitCombo; GtkWidget *DeviceLimitReadCheck; GtkWidget *DeviceLimitReadSpin; GtkWidget *DeviceLimitReadCombo; GtkWidget *DeviceLimitWriteCheck; GtkWidget *DeviceLimitWriteSpin; GtkWidget *DeviceLimitWriteCombo; GtkWidget *ApplyChangesButton; GtkWidget *ManualInputEntry; GtkWidget *CancelButton; GtkWidget *SaveButton; dictionary *devices; } quota_window; typedef struct { GtkWidget *Window; GtkWidget *QuotaTypeCheck; GtkWidget *QuotaTargetCheck; GtkWidget *SoftRamLimitCheck; GtkWidget *HardRamLimitCheck; GtkWidget *PagingLimitCheck; GtkWidget *CpuLimitCheck; GtkWidget *ReadLimitCheck; GtkWidget *WriteLimitCheck; GtkWidget *CancelButton; GtkWidget *AcceptButton; } filters_window; typedef struct { char *read; char *write; } device_limits; main_window *setup_window();