fort/src/ui/conf/firewallconf.h

165 lines
5.6 KiB
C
Raw Normal View History

2017-08-28 10:35:15 +00:00
#ifndef FIREWALLCONF_H
#define FIREWALLCONF_H
#include <QObject>
#include <QQmlListProperty>
2017-08-30 07:03:28 +00:00
#include <QVariant>
2017-08-28 10:35:15 +00:00
2017-12-06 02:51:40 +00:00
QT_FORWARD_DECLARE_CLASS(AddressGroup)
QT_FORWARD_DECLARE_CLASS(AppGroup)
2017-08-28 10:35:15 +00:00
2017-12-11 06:05:49 +00:00
#define DEFAULT_APP_GROUP_BITS 0xFFFF
#define DEFAULT_TRAF_HOUR_KEEP_DAYS 90 // ~3 months
2017-12-14 08:44:10 +00:00
#define DEFAULT_TRAF_DAY_KEEP_DAYS 365 // ~1 year
2017-12-11 06:05:49 +00:00
#define DEFAULT_TRAF_MONTH_KEEP_MONTHS 360 // ~3 years
2017-08-28 10:35:15 +00:00
class FirewallConf : public QObject
{
Q_OBJECT
Q_PROPERTY(bool provBoot READ provBoot WRITE setProvBoot NOTIFY provBootChanged)
Q_PROPERTY(bool filterEnabled READ filterEnabled WRITE setFilterEnabled NOTIFY filterEnabledChanged)
2017-12-23 06:15:36 +00:00
Q_PROPERTY(bool stopTraffic READ stopTraffic WRITE setStopTraffic NOTIFY stopTrafficChanged)
2017-11-20 14:39:57 +00:00
Q_PROPERTY(bool resolveAddress READ resolveAddress WRITE setResolveAddress NOTIFY resolveAddressChanged)
Q_PROPERTY(bool logErrors READ logErrors WRITE setLogErrors NOTIFY logErrorsChanged)
2017-11-03 04:18:37 +00:00
Q_PROPERTY(bool logBlocked READ logBlocked WRITE setLogBlocked NOTIFY logBlockedChanged)
Q_PROPERTY(bool logStat READ logStat WRITE setLogStat NOTIFY logStatChanged)
2017-08-28 10:35:15 +00:00
Q_PROPERTY(bool appBlockAll READ appBlockAll WRITE setAppBlockAll NOTIFY appBlockAllChanged)
Q_PROPERTY(bool appAllowAll READ appAllowAll WRITE setAppAllowAll NOTIFY appAllowAllChanged)
2017-12-11 06:05:49 +00:00
Q_PROPERTY(int trafHourKeepDays READ trafHourKeepDays WRITE setTrafHourKeepDays NOTIFY trafHourKeepDaysChanged)
Q_PROPERTY(int trafDayKeepDays READ trafDayKeepDays WRITE setTrafDayKeepDays NOTIFY trafDayKeepDaysChanged)
Q_PROPERTY(int trafMonthKeepMonths READ trafMonthKeepMonths WRITE setTrafMonthKeepMonths NOTIFY trafMonthKeepMonthsChanged)
Q_PROPERTY(int trafUnit READ trafUnit WRITE setTrafUnit NOTIFY trafUnitChanged)
Q_PROPERTY(bool hasPassword READ hasPassword NOTIFY passwordHashChanged)
Q_PROPERTY(QString passwordHash READ passwordHash WRITE setPasswordHash NOTIFY passwordHashChanged)
2017-09-02 10:17:51 +00:00
Q_PROPERTY(AddressGroup *ipInclude READ ipInclude CONSTANT)
Q_PROPERTY(AddressGroup *ipExclude READ ipExclude CONSTANT)
2017-08-28 10:35:15 +00:00
Q_PROPERTY(QQmlListProperty<AppGroup> appGroups READ appGroups NOTIFY appGroupsChanged)
Q_CLASSINFO("DefaultProperty", "appGroups")
public:
2017-12-11 06:05:49 +00:00
enum TrafUnit {
UnitAdaptive = 0,
UnitBytes,
UnitKB,
UnitMB,
UnitGB,
UnitTB
};
Q_ENUM(TrafUnit)
2017-08-28 10:35:15 +00:00
explicit FirewallConf(QObject *parent = nullptr);
bool provBoot() const { return m_provBoot; }
void setProvBoot(bool provBoot);
bool filterEnabled() const { return m_filterEnabled; }
void setFilterEnabled(bool filterEnabled);
2017-08-28 10:35:15 +00:00
2017-12-23 06:15:36 +00:00
bool stopTraffic() const { return m_stopTraffic; }
void setStopTraffic(bool stopTraffic);
2017-11-20 14:39:57 +00:00
bool resolveAddress() const { return m_resolveAddress; }
void setResolveAddress(bool resolveAddress);
bool logErrors() const { return m_logErrors; }
void setLogErrors(bool logErrors);
2017-11-03 04:18:37 +00:00
bool logBlocked() const { return m_logBlocked; }
void setLogBlocked(bool logBlocked);
bool logStat() const { return m_logStat; }
void setLogStat(bool logStat);
2017-08-28 10:35:15 +00:00
bool appBlockAll() const { return m_appBlockAll; }
void setAppBlockAll(bool appBlockAll);
bool appAllowAll() const { return m_appAllowAll; }
void setAppAllowAll(bool appAllowAll);
2017-12-11 06:05:49 +00:00
int trafHourKeepDays() const { return m_trafHourKeepDays; }
void setTrafHourKeepDays(int trafHourKeepDays);
int trafDayKeepDays() const { return m_trafDayKeepDays; }
void setTrafDayKeepDays(int trafDayKeepDays);
int trafMonthKeepMonths() const { return m_trafMonthKeepMonths; }
void setTrafMonthKeepMonths(int trafMonthKeepMonths);
int trafUnit() const { return m_trafUnit; }
void setTrafUnit(int trafUnit);
bool hasPassword() const { return !m_passwordHash.isEmpty(); }
QString passwordHash() const { return m_passwordHash; }
void setPasswordHash(const QString &passwordHash);
2017-08-30 16:20:31 +00:00
quint32 appGroupBits() const;
void setAppGroupBits(quint32 groupBits);
2017-09-02 10:17:51 +00:00
AddressGroup *ipInclude() const { return m_ipInclude; }
AddressGroup *ipExclude() const { return m_ipExclude; }
2017-08-28 10:35:15 +00:00
2017-08-29 08:40:23 +00:00
const QList<AppGroup *> &appGroupsList() const { return m_appGroups; }
2017-08-28 10:35:15 +00:00
QQmlListProperty<AppGroup> appGroups();
2017-09-03 03:48:29 +00:00
void copyFlags(const FirewallConf &o);
void copyImmediateFlags(const FirewallConf &o);
2017-09-03 03:48:29 +00:00
2017-08-30 07:03:28 +00:00
QVariant toVariant() const;
void fromVariant(const QVariant &v);
2018-01-09 08:25:51 +00:00
void setupDefault();
2017-08-28 10:35:15 +00:00
signals:
void provBootChanged();
void filterEnabledChanged();
2017-12-23 06:15:36 +00:00
void stopTrafficChanged();
2017-11-20 14:39:57 +00:00
void resolveAddressChanged();
void logErrorsChanged();
2017-11-03 04:18:37 +00:00
void logBlockedChanged();
void logStatChanged();
2017-08-28 10:35:15 +00:00
void appBlockAllChanged();
void appAllowAllChanged();
2017-12-11 06:05:49 +00:00
void trafHourKeepDaysChanged();
void trafDayKeepDaysChanged();
void trafMonthKeepMonthsChanged();
void trafUnitChanged();
void passwordHashChanged();
2017-08-28 10:35:15 +00:00
void appGroupsChanged();
public slots:
2017-09-02 12:52:39 +00:00
void addAppGroup(AppGroup *appGroup, int to = -1);
void addAppGroupByName(const QString &name);
void moveAppGroup(int from, int to);
void removeAppGroup(int from, int to);
2017-08-28 10:35:15 +00:00
private:
uint m_provBoot : 1;
uint m_filterEnabled : 1;
2017-12-23 06:15:36 +00:00
uint m_stopTraffic : 1;
2017-08-28 10:35:15 +00:00
2017-11-20 14:39:57 +00:00
uint m_resolveAddress : 1;
uint m_logErrors : 1;
2017-11-20 14:39:57 +00:00
uint m_logBlocked : 1;
2017-11-03 04:18:37 +00:00
uint m_logStat : 1;
2017-08-28 10:35:15 +00:00
uint m_appBlockAll : 1;
uint m_appAllowAll : 1;
2017-12-11 06:05:49 +00:00
int m_trafHourKeepDays;
int m_trafDayKeepDays;
int m_trafMonthKeepMonths;
TrafUnit m_trafUnit;
QString m_passwordHash;
2017-09-02 10:17:51 +00:00
AddressGroup *m_ipInclude;
AddressGroup *m_ipExclude;
2017-08-28 10:35:15 +00:00
QList<AppGroup *> m_appGroups;
};
#endif // FIREWALLCONF_H