Sandboxie/SandboxiePlus/SandMan/Windows/OptionsWindow.h

636 lines
18 KiB
C
Raw Normal View History

2021-10-16 16:19:51 +01:00
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_OptionsWindow.h"
#include "SbiePlusAPI.h"
2022-08-15 12:18:26 +01:00
#include "../../MiscHelpers/Common/SettingsWidgets.h"
2021-10-16 16:19:51 +01:00
2022-08-15 12:18:26 +01:00
//////////////////////////////////////////////////////////////////////////
// COptionsWindow
class COptionsWindow : public CConfigDialog
2021-10-16 16:19:51 +01:00
{
Q_OBJECT
public:
COptionsWindow(const QSharedPointer<CSbieIni>& pBox, const QString& Name, QWidget *parent = Q_NULLPTR);
~COptionsWindow();
virtual void accept() {}
virtual void reject();
2021-12-03 19:26:09 +00:00
QStringList GetCurrentGroups();
QSet<QString> GetPrograms() { return m_Programs; }
2022-01-29 09:18:22 +00:00
static void TriggerPathReload();
2021-12-03 19:26:09 +00:00
enum EntryTypes {
eUndefined = 0,
eProcess,
ePath,
eText,
eTemplate
};
2021-10-16 16:19:51 +01:00
signals:
2022-09-29 17:28:48 +01:00
//void OptionsChanged();
2021-10-16 16:19:51 +01:00
void Closed();
public slots:
void ok();
2023-08-24 17:39:00 +01:00
bool apply();
2021-10-16 16:19:51 +01:00
2023-07-08 10:46:29 +01:00
void showTab(const QString& Name);
2021-10-16 16:19:51 +01:00
private slots:
//void OnWithTemplates();
2021-11-13 08:28:32 +00:00
void OnOptChanged();
2022-12-16 12:08:49 +00:00
void OnUseIcon(bool bUse);
bool OnPickIcon();
2021-10-16 16:19:51 +01:00
void OnPickColor();
2022-09-29 17:28:48 +01:00
void OnColorSlider(int value);
2021-10-16 16:19:51 +01:00
2021-11-13 08:28:32 +00:00
void OnBoxTypChanged();
void UpdateBoxType();
2023-01-25 11:54:41 +00:00
void OnCopyItemDoubleClicked(QTreeWidgetItem* pItem, int Column);
void OnCopySelectionChanged() { CloseCopyEdit(); OnOptChanged(); }
void OnCopyChanged(QTreeWidgetItem* pItem, int Column);
void OnShowCopyTmpl() { LoadCopyRulesTmpl(true); }
void OnAddCopyRule();
void OnDelCopyRule();
2021-10-16 16:19:51 +01:00
void OnBrowsePath();
void OnAddCommand();
2023-04-13 18:46:51 +01:00
void OnCommandUp();
void OnCommandDown();
2021-10-16 16:19:51 +01:00
void OnDelCommand();
2022-02-26 11:39:08 +00:00
void OnRunChanged() { m_GeneralChanged = true; OnOptChanged(); }
2021-10-16 16:19:51 +01:00
2022-04-02 16:37:11 +01:00
void OnVmRead();
2023-08-24 17:39:00 +01:00
void OnDiskChanged();
void OnSetPassword();
2023-09-25 10:40:29 +01:00
void OnBackupHeader();
void OnRestoreHeader();
2023-08-24 17:39:00 +01:00
2021-10-16 16:19:51 +01:00
void OnAddGroup();
void OnAddProg();
void OnDelProg();
void OnShowGroupTmpl() { LoadGroupsTmpl(true); }
2021-12-03 19:26:09 +00:00
void OnGroupsChanged(QTreeWidgetItem* pItem, int Index) { m_GroupsChanged = true; OnOptChanged(); }
2021-10-16 16:19:51 +01:00
void OnForceProg();
2022-09-29 17:28:48 +01:00
void OnForceBrowse();
2021-10-16 16:19:51 +01:00
void OnForceDir();
void OnDelForce();
void OnShowForceTmpl() { LoadForcedTmpl(true); }
2023-04-23 19:08:25 +01:00
void OnForcedChanged();
2023-10-22 13:49:41 +01:00
void OnForcedChanged(QTreeWidgetItem *pItem, int);
2021-10-16 16:19:51 +01:00
2022-09-29 17:28:48 +01:00
void OnBreakoutProg();
void OnBreakoutBrowse();
void OnBreakoutDir();
void OnDelBreakout();
2022-10-28 18:30:18 +01:00
void OnShowBreakoutTmpl() { LoadBreakoutTmpl(true); }
2023-10-22 13:49:41 +01:00
void OnBreakoutChanged(QTreeWidgetItem *pItem, int);
2022-09-29 17:28:48 +01:00
2021-10-16 16:19:51 +01:00
void OnAddLingering();
void OnDelStopProg();
2022-09-29 17:28:48 +01:00
void OnShowStopTmpl() { LoadStopTmpl(true); }
2024-03-23 11:14:25 +00:00
void OnStopChanged() { m_StopChanged = true; OnOptChanged(); }
2022-09-29 17:28:48 +01:00
void OnAddLeader();
void OnDelLeader();
void OnShowLeaderTmpl() { LoadLeaderTmpl(true); }
2021-10-16 16:19:51 +01:00
void OnRestrictStart();
void OnAddStartProg();
void OnDelStartProg();
2022-09-29 17:28:48 +01:00
//void OnShowStartTmpl() { LoadStartTmpl(true); }
2021-12-03 19:26:09 +00:00
void OnStartChanged(QTreeWidgetItem* pItem, int Index);
2021-10-16 16:19:51 +01:00
2023-07-31 07:30:20 +01:00
void OnToggleInjectDll(QTreeWidgetItem* pItem, int Column);
void OnDblClickInjedtDll(QTreeWidgetItem* pItem, int Column);
2023-04-24 16:30:02 +01:00
void OnHostProtectChanged();
2021-10-16 16:19:51 +01:00
// net
void OnINetItemDoubleClicked(QTreeWidgetItem* pItem, int Column);
2021-11-13 08:28:32 +00:00
void OnINetSelectionChanged() { CloseINetEdit(); OnOptChanged();}
2021-12-03 19:26:09 +00:00
void OnINetChanged(QTreeWidgetItem* pItem, int Column);
2021-10-16 16:19:51 +01:00
void OnBlockINet();
void OnAddINetProg();
void OnDelINetProg();
void OnNetFwItemDoubleClicked(QTreeWidgetItem* pItem, int Column);
2021-11-13 08:28:32 +00:00
void OnNetFwSelectionChanged() { CloseNetFwEdit(); OnOptChanged();}
2021-12-03 19:26:09 +00:00
void OnNetFwChanged(QTreeWidgetItem* pItem, int Column);
2021-10-16 16:19:51 +01:00
void OnAddNetFwRule();
void OnDelNetFwRule();
void OnShowNetFwTmpl() { LoadNetFwRulesTmpl(true); }
void OnTestNetFwRule();
void OnClearNetFwTest();
2024-04-11 18:00:12 +01:00
2024-05-10 18:50:17 +01:00
void OnAddDnsFilter();
void OnDelDnsFilter();
void OnDnsFilterChanged(QTreeWidgetItem * pItem, int Column) { m_DnsFilterChanged = true; OnOptChanged(); }
void OnNetProxyItemDoubleClicked(QTreeWidgetItem* pItem, int Column);
void OnNetProxySelectionChanged() { CloseNetProxyEdit(); OnOptChanged(); }
void OnAddNetProxy();
void OnDelNetProxy();
void OnTestNetProxy();
void OnProxyResolveHostnames();
void OnNetProxyMoveUp();
void OnNetProxyMoveDown();
void OnNetProxyChanged(QTreeWidgetItem * pItem, int Column) { m_NetProxyChanged = true; OnOptChanged(); }
2024-04-11 18:00:12 +01:00
void OnBlockDns();
void OnBlockSamba();
2022-09-29 17:28:48 +01:00
//
2021-10-16 16:19:51 +01:00
// access
//void OnAccessItemClicked(QTreeWidgetItem* pItem, int Column);
void OnAccessItemDoubleClicked(QTreeWidgetItem* pItem, int Column);
2021-11-13 08:28:32 +00:00
void OnAccessSelectionChanged() { CloseAccessEdit(); OnOptChanged();}
2021-12-03 19:26:09 +00:00
void OnAccessChanged(QTreeWidgetItem* pItem, int Column);
2021-10-16 16:19:51 +01:00
2024-06-17 12:23:57 +01:00
void OnAddFile() { AddAccessEntry(eFile, eOpen, "", ""); OnAccessChanged(); }
2021-10-16 16:19:51 +01:00
void OnBrowseFile();
void OnBrowseFolder();
2024-06-17 12:23:57 +01:00
void OnDelFile() { DeleteAccessEntry(ui.treeFiles->currentItem()); OnAccessChanged(); }
2022-09-29 17:28:48 +01:00
void OnShowFilesTmpl() { LoadAccessListTmpl(eFile, ui.chkShowFilesTmpl->isChecked(), true); }
2024-06-17 12:23:57 +01:00
void OnAddKey() { AddAccessEntry(eKey, eOpen, "", ""); OnAccessChanged(); }
void OnDelKey() { DeleteAccessEntry(ui.treeKeys->currentItem()); OnAccessChanged(); }
2022-09-29 17:28:48 +01:00
void OnShowKeysTmpl() { LoadAccessListTmpl(eKey, ui.chkShowKeysTmpl->isChecked(), true); }
2024-06-17 12:23:57 +01:00
void OnAddIPC() { AddAccessEntry(eIPC, eOpen, "", ""); OnAccessChanged(); }
void OnDelIPC() { DeleteAccessEntry(ui.treeIPC->currentItem()); OnAccessChanged(); }
2022-09-29 17:28:48 +01:00
void OnShowIPCTmpl() { LoadAccessListTmpl(eIPC, ui.chkShowIPCTmpl->isChecked(), true); }
2024-06-17 12:23:57 +01:00
void OnAddWnd() { AddAccessEntry(eWnd, eOpen, "", ""); OnAccessChanged(); }
void OnDelWnd() { DeleteAccessEntry(ui.treeWnd->currentItem()); OnAccessChanged(); }
2022-09-29 17:28:48 +01:00
void OnShowWndTmpl() { LoadAccessListTmpl(eWnd, ui.chkShowWndTmpl->isChecked(), true); }
2024-06-17 12:23:57 +01:00
void OnAddCOM() { AddAccessEntry(eCOM, eOpen, "", ""); OnAccessChanged(); }
void OnDelCOM() { DeleteAccessEntry(ui.treeCOM->currentItem()); OnAccessChanged(); }
2022-09-29 17:28:48 +01:00
void OnShowCOMTmpl() { LoadAccessListTmpl(eCOM, ui.chkShowCOMTmpl->isChecked(), true); }
2024-06-17 12:23:57 +01:00
//void OnDelAccess() { DeleteAccessEntry(ui.treeAccess->currentItem()); OnAccessChanged(); }
2022-09-29 17:28:48 +01:00
//void OnShowAccessTmpl() { LoadAccessListTmpl(true); }
2021-10-16 16:19:51 +01:00
//
void OnAddRecFolder();
void OnAddRecIgnore();
void OnAddRecIgnoreExt();
void OnDelRecEntry();
2022-09-29 17:28:48 +01:00
void OnDelRecIgnoreEntry();
2021-10-16 16:19:51 +01:00
void OnShowRecoveryTmpl() { LoadRecoveryListTmpl(true); }
2022-09-29 17:28:48 +01:00
void OnShowRecIgnoreTmpl() { LoadRecIgnoreListTmpl(true); }
2021-10-16 16:19:51 +01:00
2022-02-04 21:08:25 +00:00
// advanced
void OnNoWindowRename();
2022-09-29 17:28:48 +01:00
void OnAddOption();
void OnShowOptionTmpl() { LoadOptionListTmpl(true); }
void OnDelOption();
//void OnOptionItemClicked(QTreeWidgetItem* pItem, int Column);
void OnOptionItemDoubleClicked(QTreeWidgetItem* pItem, int Column);
void OnOptionSelectionChanged() { CloseOptionEdit(); OnOptChanged();}
void OnOptionChanged(QTreeWidgetItem* pItem, int Column);
2022-02-04 21:08:25 +00:00
void OnTriggerChanged() { m_AdvancedChanged = true; OnOptChanged(); }
void OnShowTriggersTmpl() { ShowTriggersTmpl(true); }
void OnAddAutoRun();
void OnAddAutoSvc();
2021-10-16 16:19:51 +01:00
void OnAddAutoExec();
2022-09-29 17:28:48 +01:00
void OnAddRecoveryCheck();
2022-02-04 21:08:25 +00:00
void OnAddDeleteCmd();
void OnAddTerminateCmd();
2022-02-04 21:08:25 +00:00
void OnDelAuto();
2021-10-16 16:19:51 +01:00
void OnAddProcess();
void OnDelProcess();
2022-09-29 17:28:48 +01:00
void OnShowHiddenProcTmpl() { ShowHiddenProcTmpl(true); }
2023-11-27 18:56:12 +00:00
void OnConfidentialChanged();
void OnLessConfidentialChanged();
2023-08-24 17:39:00 +01:00
void OnHostProcessAllow();
void OnHostProcessDeny();
2022-09-29 17:28:48 +01:00
void OnDelHostProcess();
void OnShowHostProcTmpl() { ShowHostProcTmpl(true); }
2021-10-16 16:19:51 +01:00
void OnAddUser();
void OnDelUser();
2022-02-04 21:08:25 +00:00
//
2021-10-16 16:19:51 +01:00
void OnFilterTemplates() { ShowTemplates(); }
void OnTemplateClicked(QTreeWidgetItem* pItem, int Column);
void OnTemplateDoubleClicked(QTreeWidgetItem* pItem, int Column);
void OnAddTemplates();
2023-03-31 20:51:45 +01:00
void OnTemplateWizard();
2024-04-20 13:43:30 +01:00
void OnOpenTemplate();
2021-10-16 16:19:51 +01:00
void OnDelTemplates();
void OnFolderChanged();
void OnScreenReaders();
2022-09-29 17:28:48 +01:00
void OnTab() { OnTab(ui.tabs->currentWidget()); }
void OnAccessTab() { OnTab(ui.tabsAccess->currentWidget()); }
2024-05-12 15:25:53 +01:00
void OnInternetTab() { OnTab(ui.tabsInternet->currentWidget()); }
2021-10-16 16:19:51 +01:00
void OnGeneralChanged();
2022-08-14 17:57:18 +01:00
void OnPSTChanged();
2022-12-16 12:08:49 +00:00
void OnActionChanged();
2022-08-09 17:19:46 +01:00
void OnSecurityMode();
2021-11-13 08:28:32 +00:00
void OnStartChanged() { m_StartChanged = true; OnOptChanged(); }
//void OnRestrictionChanged() { m_RestrictionChanged = true; OnOptChanged(); }
void OnINetBlockChanged() { m_INetBlockChanged = true; OnOptChanged(); }
void OnRecoveryChanged() { m_RecoveryChanged = true; OnOptChanged(); }
void OnAccessChanged();
2024-06-17 12:23:57 +01:00
void OnAccessChangedEx();
2021-12-20 11:55:02 +00:00
void OnSysSvcChanged();
2021-10-16 16:19:51 +01:00
void OnAdvancedChanged();
2021-11-13 08:28:32 +00:00
void OnOpenCOM();
void OnIsolationChanged();
2021-10-16 16:19:51 +01:00
void OnDebugChanged();
void SetIniEdit(bool bEnable);
void OnEditIni();
void OnSaveIni();
2023-04-13 18:46:51 +01:00
void OnIniChanged();
2021-10-16 16:19:51 +01:00
void OnCancelEdit();
2022-08-15 12:18:26 +01:00
void OnSetTree();
2022-08-15 10:58:39 +01:00
2021-10-16 16:19:51 +01:00
protected:
void closeEvent(QCloseEvent *e);
bool eventFilter(QObject *watched, QEvent *e);
2022-09-29 17:28:48 +01:00
void OnTab(QWidget* pTab);
2022-08-15 12:18:26 +01:00
2023-04-13 18:46:51 +01:00
public:
2023-01-25 11:54:41 +00:00
enum ECopyAction
{
eCopyAlways,
eDontCopy,
eCopyEmpty,
};
2021-10-16 16:19:51 +01:00
enum ENetWfAction
{
eAllow,
eBlock
};
enum ENetWfProt
{
eAny,
eTcp,
eUdp,
eIcmp,
};
enum EAccessEntry
{
2021-11-13 08:28:32 +00:00
eNormalFilePath,
2021-10-16 16:19:51 +01:00
eOpenFilePath,
eOpenPipePath,
eClosedFilePath,
eReadFilePath,
eWriteFilePath,
2021-11-13 08:28:32 +00:00
eNormalKeyPath,
2021-10-16 16:19:51 +01:00
eOpenKeyPath,
2021-11-13 08:28:32 +00:00
eOpenConfPath,
2021-10-16 16:19:51 +01:00
eClosedKeyPath,
eReadKeyPath,
eWriteKeyPath,
2021-11-13 08:28:32 +00:00
eNormalIpcPath,
2021-10-16 16:19:51 +01:00
eOpenIpcPath,
eClosedIpcPath,
2022-02-13 11:55:52 +00:00
eReadIpcPath,
2021-10-16 16:19:51 +01:00
eOpenWinClass,
2022-09-17 20:59:11 +01:00
eNoRenameWinClass,
2021-10-16 16:19:51 +01:00
eOpenCOM,
eClosedCOM,
eClosedCOM_RT,
2022-09-29 17:28:48 +01:00
eMaxAccessEntry
2021-10-16 16:19:51 +01:00
};
enum EAccessType
{
eFile,
eKey,
eIPC,
eWnd,
2022-09-29 17:28:48 +01:00
eCOM,
eMaxAccessType
2021-10-16 16:19:51 +01:00
};
enum EAccessMode
{
2021-11-13 08:28:32 +00:00
eNormal,
eOpen,
eOpen4All,
2022-09-17 20:59:11 +01:00
eNoRename,
2021-10-16 16:19:51 +01:00
eClosed,
eClosedRT,
eReadOnly,
2022-09-29 17:28:48 +01:00
eBoxOnly,
2023-04-13 18:46:51 +01:00
eIgnoreUIPI,
2023-08-24 17:39:00 +01:00
2023-04-13 18:46:51 +01:00
eMaxAccessMode
2021-10-16 16:19:51 +01:00
};
2022-02-04 21:08:25 +00:00
enum ETriggerAction {
eOnStartCmd,
eOnStartSvc,
eAutoExec,
2022-09-29 17:28:48 +01:00
eRecoveryCheck,
eDeleteCmd,
eTerminateCmd
2022-02-04 21:08:25 +00:00
};
2024-05-10 18:50:17 +01:00
enum EAuthMode {
eAuthDisabled,
eAuthEnabled ,
};
2023-08-24 17:39:00 +01:00
static QString AccessTypeToName(EAccessEntry Type);
static QPair<EAccessType, EAccessMode> SplitAccessType(EAccessEntry Type);
static QString GetAccessTypeStr(EAccessType Type);
static QString GetAccessModeStr(EAccessMode Mode);
static QString GetAccessModeTip(EAccessMode Mode);
2024-05-10 18:50:17 +01:00
static QString GetAuthModeStr(EAuthMode Mode);
2023-04-13 18:46:51 +01:00
protected:
2022-09-29 17:28:48 +01:00
void SetBoxColor(const QColor& color);
void UpdateBoxColor();
2022-12-16 12:08:49 +00:00
QString GetActionFile();
2023-01-25 11:54:41 +00:00
QString GetCopyActionStr(ECopyAction Action);
void ParseAndAddCopyRule(const QString& Value, ECopyAction Action, bool disabled = false, const QString& Template = QString());
void CloseCopyEdit(bool bSave = true);
void CloseCopyEdit(QTreeWidgetItem* pItem, bool bSave = true);
2023-11-29 20:12:46 +00:00
void SetProgramItem(QString Program, QTreeWidgetItem* pItem, int Column, const QString& Suffix = QString(), bool bList = true);
2021-10-16 16:19:51 +01:00
QString SelectProgram(bool bOrGroup = true);
void AddProgramToGroup(const QString& Program, const QString& Group);
2021-12-03 19:26:09 +00:00
bool DelProgramFromGroup(const QString& Program, const QString& Group);
2021-10-16 16:19:51 +01:00
QTreeWidgetItem* FindGroupByName(const QString& Group, bool bAdd = false);
2022-12-07 16:32:40 +00:00
void CopyGroupToList(const QString& Group, QTreeWidget* pTree, bool disabled = false);
2021-10-16 16:19:51 +01:00
QTreeWidgetItem* GetAccessEntry(EAccessType Type, const QString& Program, EAccessMode Mode, const QString& Path);
2023-02-12 14:56:23 +00:00
bool IsAccessEntrySet(EAccessType Type, const QString& Program, EAccessMode Mode, const QString& Path);
2021-10-16 16:19:51 +01:00
void SetAccessEntry(EAccessType Type, const QString& Program, EAccessMode Mode, const QString& Path);
void DelAccessEntry(EAccessType Type, const QString& Program, EAccessMode Mode, const QString& Path);
2023-09-25 10:40:29 +01:00
bool RunImBox(const QStringList& Arguments);
2021-10-16 16:19:51 +01:00
void LoadConfig();
void SaveConfig();
void UpdateCurrentTab();
void CreateGeneral();
void LoadGeneral();
void SaveGeneral();
2023-01-25 11:54:41 +00:00
void LoadCopyRules();
void LoadCopyRulesTmpl(bool bUpdate = false);
void SaveCopyRules();
2022-08-09 17:19:46 +01:00
void UpdateBoxSecurity();
2021-10-16 16:19:51 +01:00
void LoadGroups();
void LoadGroupsTmpl(bool bUpdate = false);
void SaveGroups();
void LoadForced();
void LoadForcedTmpl(bool bUpdate = false);
2021-12-03 19:26:09 +00:00
void AddForcedEntry(const QString& Name, int type, bool disabled = false, const QString& Template = QString());
2022-09-29 17:28:48 +01:00
void LoadBreakoutTmpl(bool bUpdate = false);
void AddBreakoutEntry(const QString& Name, int type, bool disabled = false, const QString& Template = QString());
2021-10-16 16:19:51 +01:00
void SaveForced();
2023-10-22 13:49:41 +01:00
bool CheckForcedItem(const QString& Value, int type);
2021-10-16 16:19:51 +01:00
2022-09-29 17:28:48 +01:00
2021-10-16 16:19:51 +01:00
void LoadStop();
void LoadStopTmpl(bool bUpdate = false);
2022-09-29 17:28:48 +01:00
void LoadLeaderTmpl(bool bUpdate = false);
void AddStopEntry(const QString& Name, bool disabled = false, const QString& Template = QString());
void AddLeaderEntry(const QString& Name, bool disabled = false, const QString& Template = QString());
2021-10-16 16:19:51 +01:00
void SaveStop();
void LoadStart();
2022-09-29 17:28:48 +01:00
//void LoadStartTmpl(bool bUpdate = false);
2021-10-16 16:19:51 +01:00
void SaveStart();
// Network
void CreateNetwork();
int GroupToINetMode(const QString& Mode);
QString INetModeToGroup(int Mode);
void LoadBlockINet();
QString GetINetModeStr(int Mode);
void CloseINetEdit(bool bSave = true);
void CloseINetEdit(QTreeWidgetItem* pItem, bool bSave = true);
bool FindEntryInSettingList(const QString& Name, const QString& Value);
void LoadINetAccess();
void SaveINetAccess();
2021-12-03 19:26:09 +00:00
void ParseAndAddFwRule(const QString& Value, bool disabled = false, const QString& Template = QString());
2021-10-16 16:19:51 +01:00
void CloseNetFwEdit(bool bSave = true);
void CloseNetFwEdit(QTreeWidgetItem* pItem, bool bSave = true);
ENetWfProt GetFwRuleProt(const QString& Value);
ENetWfAction GetFwRuleAction(const QString& Value);
QString GetFwRuleActionStr(ENetWfAction Action);
void LoadNetFwRules();
void SaveNetFwRules();
void LoadNetFwRulesTmpl(bool bUpdate = false);
2024-05-10 18:50:17 +01:00
void LoadDnsFilter();
void AddDnsFilter(const QString& Value, bool disabled = false, const QString& Template = QString());
void AddDnsFilter(const QString& Prog, const QString& Domain, const QStringList& IPs = QStringList(), bool disabled = false, const QString& Template = QString());
void SaveDnsFilter();
void ParseAndAddNetProxy(const QString& Value, bool disabled = false, const QString& Template = QString());
void CloseNetProxyEdit(bool bSave = true);
void CloseNetProxyEdit(QTreeWidgetItem* pItem, bool bSave = true);
EAuthMode GetAuthMode(const QString& Value);
void LoadNetProxy();
void SaveNetProxy();
void WriteNetProxy(const QString& Setting, const QStringList& List);
2021-10-16 16:19:51 +01:00
//
// access
void CreateAccess();
void LoadAccessList();
void LoadAccessListTmpl(bool bUpdate = false);
2022-09-29 17:28:48 +01:00
void LoadAccessListTmpl(EAccessType Type, bool bChecked, bool bUpdate = false);
2021-12-03 19:26:09 +00:00
void ParseAndAddAccessEntry(EAccessEntry EntryType, const QString& Value, bool disabled = false, const QString& Template = QString());
2022-09-29 17:28:48 +01:00
void ParseAndAddAccessEntry(EAccessType Type, EAccessMode Mode, const QString& Value, bool disabled = false, const QString& Template = QString());
2023-01-29 12:09:10 +00:00
QString ExpandPath(EAccessType Type, const QString& Path);
2022-09-29 17:28:48 +01:00
void AddAccessEntry(EAccessType Type, EAccessMode Mode, QString Program, const QString& Path, bool disabled = false, const QString& Template = QString());
2021-10-16 16:19:51 +01:00
QString MakeAccessStr(EAccessType Type, EAccessMode Mode);
void SaveAccessList();
QList<EAccessMode> GetAccessModes(EAccessType Type);
2022-09-29 17:28:48 +01:00
void DeleteAccessEntry(QTreeWidgetItem* pItem, int Column = 0);
2021-10-16 16:19:51 +01:00
void CloseAccessEdit(bool bSave = true);
void CloseAccessEdit(QTreeWidgetItem* pItem, bool bSave = true);
2021-11-13 08:28:32 +00:00
void UpdateAccessPolicy();
2022-09-29 17:28:48 +01:00
2024-06-17 12:23:57 +01:00
void UpdateJobOptions();
2022-09-29 17:28:48 +01:00
QTreeWidget* GetAccessTree(EAccessType Type);
2021-10-16 16:19:51 +01:00
//
void LoadRecoveryList();
void LoadRecoveryListTmpl(bool bUpdate = false);
2022-09-29 17:28:48 +01:00
void LoadRecIgnoreListTmpl(bool bUpdate = false);
void AddRecoveryEntry(const QString& Name, const QString& Template = QString());
void AddRecIgnoreEntry(const QString& Name, const QString& Template = QString());
2021-10-16 16:19:51 +01:00
void SaveRecoveryList();
2022-02-04 21:08:25 +00:00
// advanced
2021-10-16 16:19:51 +01:00
void CreateAdvanced();
void LoadAdvanced();
void SaveAdvanced();
2021-11-13 08:28:32 +00:00
void UpdateBoxIsolation();
2022-02-04 21:08:25 +00:00
void ShowTriggersTmpl(bool bUpdate = false);
2024-04-20 13:09:16 +01:00
void AddTriggerItem(const QString& Value, ETriggerAction Type, bool disabled = false, const QString& Template = QString());
2022-09-29 17:28:48 +01:00
void ShowHiddenProcTmpl(bool bUpdate = false);
void ShowHostProcTmpl(bool bUpdate = false);
void AddHiddenProcEntry(const QString& Name, const QString& Template = QString());
2023-08-24 17:39:00 +01:00
void AddHostProcEntry(const QString& Name, bool Deny, const QString& Template = QString());
2022-08-28 11:43:08 +01:00
void CheckOpenCOM();
2022-02-04 21:08:25 +00:00
//
2021-10-16 16:19:51 +01:00
2022-09-29 17:28:48 +01:00
void LoadOptionList();
void LoadOptionListTmpl(bool bUpdate = false);
void SaveOptionList();
void AddOptionEntry(const QString& Name, QString Program, const QString& Value, const QString& Template = QString());
void CloseOptionEdit(bool bSave = true);
void CloseOptionEdit(QTreeWidgetItem* pItem, bool bSave = true);
2021-10-16 16:19:51 +01:00
void CreateDebug();
void LoadDebug();
void SaveDebug();
void LoadTemplates();
void ShowTemplates();
void SaveTemplates();
2021-12-20 11:55:02 +00:00
void SetTemplate(const QString& Template, bool bEnabled);
2021-10-16 16:19:51 +01:00
void LoadFolders();
void ShowFolders();
void SaveFolders();
void LoadIniSection();
void SaveIniSection();
void ApplyIniEditFont();
2021-10-16 16:19:51 +01:00
QString GetCategoryName(const QString& Category);
2021-11-13 08:28:32 +00:00
bool m_HoldChange;
2021-10-16 16:19:51 +01:00
bool m_ConfigDirty;
QColor m_BorderColor;
2022-12-16 12:08:49 +00:00
QString m_BoxIcon;
2021-10-16 16:19:51 +01:00
2021-11-13 08:28:32 +00:00
bool m_HoldBoxType;
2021-10-16 16:19:51 +01:00
bool m_GeneralChanged;
2023-01-25 11:54:41 +00:00
bool m_CopyRulesChanged;
2021-10-16 16:19:51 +01:00
bool m_GroupsChanged;
bool m_ForcedChanged;
bool m_StopChanged;
bool m_StartChanged;
//bool m_RestrictionChanged;
bool m_INetBlockChanged;
bool m_NetFwRulesChanged;
2024-05-10 18:50:17 +01:00
bool m_DnsFilterChanged;
bool m_NetProxyChanged;
2021-10-16 16:19:51 +01:00
bool m_AccessChanged;
bool m_TemplatesChanged;
bool m_FoldersChanged;
bool m_RecoveryChanged;
bool m_AdvancedChanged;
bool m_WFPisBlocking;
bool m_Template;
QMultiMap<QString, QPair<QString, QString>> m_AllTemplates;
QStringList m_GlobalTemplates;
QStringList m_BoxTemplates;
QStringList m_BoxFolders;
QList<QPair<QString, QString>> m_Settings;
QSharedPointer<CSbieIni> m_pBox;
QSet<QString> m_Programs;
2022-09-29 17:28:48 +01:00
enum EProcCpec {
eNoSpec,
eSpec,
eOnlySpec,
2024-06-17 12:41:59 +01:00
eList
2022-09-29 17:28:48 +01:00
};
struct SAdvOption
{
EProcCpec ProcSpec;
QStringList Values;
QString Description;
};
QMap<QString, SAdvOption> m_AdvOptions;
2023-08-24 17:39:00 +01:00
QString m_Password;
quint64 m_ImageSize;
2021-10-16 16:19:51 +01:00
private:
2022-07-09 15:29:16 +01:00
2021-10-16 16:19:51 +01:00
void ReadAdvancedCheck(const QString& Name, QCheckBox* pCheck, const QString& Value = "y");
2022-09-29 17:28:48 +01:00
void ReadGlobalCheck(QCheckBox* pCheck, const QString& Setting, bool bDefault);
void WriteGlobalCheck(QCheckBox* pCheck, const QString& Setting, bool bDefault);
2021-10-16 16:19:51 +01:00
void WriteAdvancedCheck(QCheckBox* pCheck, const QString& Name, const QString& Value = "y");
void WriteAdvancedCheck(QCheckBox* pCheck, const QString& Name, const QString& OnValue, const QString& OffValue);
void WriteText(const QString& Name, const QString& Value);
void WriteTextList(const QString& Setting, const QStringList& List);
2023-07-20 19:28:05 +01:00
void WriteTextSafe(const QString& Name, const QString& Value);
QString ReadTextSafe(const QString& Name, const QString& Default);
2021-10-16 16:19:51 +01:00
Ui::OptionsWindow ui;
2022-12-16 12:08:49 +00:00
QCheckBox* m_pUseIcon;
QToolButton* m_pPickIcon;
2022-09-29 17:28:48 +01:00
QSlider* m_pColorSlider;
2021-10-16 16:19:51 +01:00
struct SDbgOpt {
QString Name;
QString Value;
bool Changed;
};
QMap<QCheckBox*, SDbgOpt> m_DebugOptions;
};
2022-08-15 10:58:39 +01:00