mirror of
https://github.com/tnodir/fort
synced 2024-11-15 08:35:08 +00:00
UI: StatisticsPage: Show traffic.
This commit is contained in:
parent
d050e5e7de
commit
04509a5815
@ -1,6 +1,9 @@
|
|||||||
include(../common/Test.pri)
|
include(../common/Test.pri)
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
|
$$UIPATH/conf/addressgroup.cpp \
|
||||||
|
$$UIPATH/conf/appgroup.cpp \
|
||||||
|
$$UIPATH/conf/firewallconf.cpp \
|
||||||
$$UIPATH/db/databasemanager.cpp \
|
$$UIPATH/db/databasemanager.cpp \
|
||||||
$$UIPATH/db/databasesql.cpp \
|
$$UIPATH/db/databasesql.cpp \
|
||||||
$$UIPATH/fortcommon.cpp \
|
$$UIPATH/fortcommon.cpp \
|
||||||
@ -8,6 +11,9 @@ SOURCES += \
|
|||||||
$$UIPATH/util/fileutil.cpp
|
$$UIPATH/util/fileutil.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
$$UIPATH/conf/addressgroup.h \
|
||||||
|
$$UIPATH/conf/appgroup.h \
|
||||||
|
$$UIPATH/conf/firewallconf.h \
|
||||||
$$UIPATH/db/databasemanager.h \
|
$$UIPATH/db/databasemanager.h \
|
||||||
$$UIPATH/db/databasesql.h \
|
$$UIPATH/db/databasesql.h \
|
||||||
$$UIPATH/fortcommon.h \
|
$$UIPATH/fortcommon.h \
|
||||||
|
@ -12,6 +12,10 @@ FirewallConf::FirewallConf(QObject *parent) :
|
|||||||
m_logStat(false),
|
m_logStat(false),
|
||||||
m_appBlockAll(true),
|
m_appBlockAll(true),
|
||||||
m_appAllowAll(false),
|
m_appAllowAll(false),
|
||||||
|
m_trafHourKeepDays(DEFAULT_TRAF_HOUR_KEEP_DAYS),
|
||||||
|
m_trafDayKeepDays(DEFAULT_TRAF_DAY_KEEP_DAYS),
|
||||||
|
m_trafMonthKeepMonths(DEFAULT_TRAF_MONTH_KEEP_MONTHS),
|
||||||
|
m_trafUnit(UnitAdaptive),
|
||||||
m_ipInclude(new AddressGroup(this)),
|
m_ipInclude(new AddressGroup(this)),
|
||||||
m_ipExclude(new AddressGroup(this))
|
m_ipExclude(new AddressGroup(this))
|
||||||
{
|
{
|
||||||
@ -73,6 +77,38 @@ void FirewallConf::setAppAllowAll(bool appAllowAll)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FirewallConf::setTrafHourKeepDays(int trafHourKeepDays)
|
||||||
|
{
|
||||||
|
if (m_trafHourKeepDays != trafHourKeepDays) {
|
||||||
|
m_trafHourKeepDays = trafHourKeepDays;
|
||||||
|
emit trafHourKeepDaysChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FirewallConf::setTrafDayKeepDays(int trafDayKeepDays)
|
||||||
|
{
|
||||||
|
if (m_trafDayKeepDays != trafDayKeepDays) {
|
||||||
|
m_trafDayKeepDays = trafDayKeepDays;
|
||||||
|
emit trafDayKeepDaysChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FirewallConf::setTrafMonthKeepMonths(int trafMonthKeepMonths)
|
||||||
|
{
|
||||||
|
if (m_trafMonthKeepMonths != trafMonthKeepMonths) {
|
||||||
|
m_trafMonthKeepMonths = trafMonthKeepMonths;
|
||||||
|
emit trafMonthKeepMonthsChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FirewallConf::setTrafUnit(int trafUnit)
|
||||||
|
{
|
||||||
|
if (m_trafUnit != trafUnit) {
|
||||||
|
m_trafUnit = static_cast<TrafUnit>(trafUnit);
|
||||||
|
emit trafUnitChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
quint32 FirewallConf::appGroupBits() const
|
quint32 FirewallConf::appGroupBits() const
|
||||||
{
|
{
|
||||||
quint32 groupBits = 0;
|
quint32 groupBits = 0;
|
||||||
@ -146,14 +182,15 @@ void FirewallConf::copyFlags(const FirewallConf &o)
|
|||||||
setAppAllowAll(o.appAllowAll());
|
setAppAllowAll(o.appAllowAll());
|
||||||
setAppGroupBits(o.appGroupBits());
|
setAppGroupBits(o.appGroupBits());
|
||||||
|
|
||||||
copyImmediateFlags(o);
|
copyImmediateValues(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FirewallConf::copyImmediateFlags(const FirewallConf &o)
|
void FirewallConf::copyImmediateValues(const FirewallConf &o)
|
||||||
{
|
{
|
||||||
setResolveAddress(o.resolveAddress());
|
setResolveAddress(o.resolveAddress());
|
||||||
setLogBlocked(o.logBlocked());
|
setLogBlocked(o.logBlocked());
|
||||||
setLogStat(o.logStat());
|
setLogStat(o.logStat());
|
||||||
|
setTrafUnit(o.trafUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant FirewallConf::toVariant() const
|
QVariant FirewallConf::toVariant() const
|
||||||
|
@ -8,6 +8,11 @@
|
|||||||
QT_FORWARD_DECLARE_CLASS(AddressGroup)
|
QT_FORWARD_DECLARE_CLASS(AddressGroup)
|
||||||
QT_FORWARD_DECLARE_CLASS(AppGroup)
|
QT_FORWARD_DECLARE_CLASS(AppGroup)
|
||||||
|
|
||||||
|
#define DEFAULT_APP_GROUP_BITS 0xFFFF
|
||||||
|
#define DEFAULT_TRAF_HOUR_KEEP_DAYS 90 // ~3 months
|
||||||
|
#define DEFAULT_TRAF_DAY_KEEP_DAYS 356 // ~1 year
|
||||||
|
#define DEFAULT_TRAF_MONTH_KEEP_MONTHS 360 // ~3 years
|
||||||
|
|
||||||
class FirewallConf : public QObject
|
class FirewallConf : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -18,12 +23,26 @@ class FirewallConf : public QObject
|
|||||||
Q_PROPERTY(bool logStat READ logStat WRITE setLogStat NOTIFY logStatChanged)
|
Q_PROPERTY(bool logStat READ logStat WRITE setLogStat NOTIFY logStatChanged)
|
||||||
Q_PROPERTY(bool appBlockAll READ appBlockAll WRITE setAppBlockAll NOTIFY appBlockAllChanged)
|
Q_PROPERTY(bool appBlockAll READ appBlockAll WRITE setAppBlockAll NOTIFY appBlockAllChanged)
|
||||||
Q_PROPERTY(bool appAllowAll READ appAllowAll WRITE setAppAllowAll NOTIFY appAllowAllChanged)
|
Q_PROPERTY(bool appAllowAll READ appAllowAll WRITE setAppAllowAll NOTIFY appAllowAllChanged)
|
||||||
|
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(AddressGroup *ipInclude READ ipInclude CONSTANT)
|
Q_PROPERTY(AddressGroup *ipInclude READ ipInclude CONSTANT)
|
||||||
Q_PROPERTY(AddressGroup *ipExclude READ ipExclude CONSTANT)
|
Q_PROPERTY(AddressGroup *ipExclude READ ipExclude CONSTANT)
|
||||||
Q_PROPERTY(QQmlListProperty<AppGroup> appGroups READ appGroups NOTIFY appGroupsChanged)
|
Q_PROPERTY(QQmlListProperty<AppGroup> appGroups READ appGroups NOTIFY appGroupsChanged)
|
||||||
Q_CLASSINFO("DefaultProperty", "appGroups")
|
Q_CLASSINFO("DefaultProperty", "appGroups")
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum TrafUnit {
|
||||||
|
UnitAdaptive = 0,
|
||||||
|
UnitBytes,
|
||||||
|
UnitKB,
|
||||||
|
UnitMB,
|
||||||
|
UnitGB,
|
||||||
|
UnitTB
|
||||||
|
};
|
||||||
|
Q_ENUM(TrafUnit)
|
||||||
|
|
||||||
explicit FirewallConf(QObject *parent = nullptr);
|
explicit FirewallConf(QObject *parent = nullptr);
|
||||||
|
|
||||||
bool provBoot() const { return m_provBoot; }
|
bool provBoot() const { return m_provBoot; }
|
||||||
@ -47,6 +66,18 @@ public:
|
|||||||
bool appAllowAll() const { return m_appAllowAll; }
|
bool appAllowAll() const { return m_appAllowAll; }
|
||||||
void setAppAllowAll(bool appAllowAll);
|
void setAppAllowAll(bool appAllowAll);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
quint32 appGroupBits() const;
|
quint32 appGroupBits() const;
|
||||||
void setAppGroupBits(quint32 groupBits);
|
void setAppGroupBits(quint32 groupBits);
|
||||||
|
|
||||||
@ -57,7 +88,7 @@ public:
|
|||||||
QQmlListProperty<AppGroup> appGroups();
|
QQmlListProperty<AppGroup> appGroups();
|
||||||
|
|
||||||
void copyFlags(const FirewallConf &o);
|
void copyFlags(const FirewallConf &o);
|
||||||
void copyImmediateFlags(const FirewallConf &o);
|
void copyImmediateValues(const FirewallConf &o);
|
||||||
|
|
||||||
QVariant toVariant() const;
|
QVariant toVariant() const;
|
||||||
void fromVariant(const QVariant &v);
|
void fromVariant(const QVariant &v);
|
||||||
@ -70,6 +101,10 @@ signals:
|
|||||||
void logStatChanged();
|
void logStatChanged();
|
||||||
void appBlockAllChanged();
|
void appBlockAllChanged();
|
||||||
void appAllowAllChanged();
|
void appAllowAllChanged();
|
||||||
|
void trafHourKeepDaysChanged();
|
||||||
|
void trafDayKeepDaysChanged();
|
||||||
|
void trafMonthKeepMonthsChanged();
|
||||||
|
void trafUnitChanged();
|
||||||
void appGroupsChanged();
|
void appGroupsChanged();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
@ -90,6 +125,12 @@ private:
|
|||||||
uint m_appBlockAll : 1;
|
uint m_appBlockAll : 1;
|
||||||
uint m_appAllowAll : 1;
|
uint m_appAllowAll : 1;
|
||||||
|
|
||||||
|
int m_trafHourKeepDays;
|
||||||
|
int m_trafDayKeepDays;
|
||||||
|
int m_trafMonthKeepMonths;
|
||||||
|
|
||||||
|
TrafUnit m_trafUnit;
|
||||||
|
|
||||||
AddressGroup *m_ipInclude;
|
AddressGroup *m_ipInclude;
|
||||||
AddressGroup *m_ipExclude;
|
AddressGroup *m_ipExclude;
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include "databasemanager.h"
|
#include "databasemanager.h"
|
||||||
|
|
||||||
|
#include "../conf/firewallconf.h"
|
||||||
#include "../util/dateutil.h"
|
#include "../util/dateutil.h"
|
||||||
#include "../util/fileutil.h"
|
#include "../util/fileutil.h"
|
||||||
#include "databasesql.h"
|
#include "databasesql.h"
|
||||||
@ -14,6 +15,7 @@ DatabaseManager::DatabaseManager(const QString &filePath,
|
|||||||
m_lastTrafDay(0),
|
m_lastTrafDay(0),
|
||||||
m_lastTrafMonth(0),
|
m_lastTrafMonth(0),
|
||||||
m_filePath(filePath),
|
m_filePath(filePath),
|
||||||
|
m_conf(nullptr),
|
||||||
m_sqliteDb(new SqliteDb())
|
m_sqliteDb(new SqliteDb())
|
||||||
{
|
{
|
||||||
SqliteEngine::initialize();
|
SqliteEngine::initialize();
|
||||||
@ -28,6 +30,15 @@ DatabaseManager::~DatabaseManager()
|
|||||||
SqliteEngine::shutdown();
|
SqliteEngine::shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DatabaseManager::setFirewallConf(const FirewallConf *conf)
|
||||||
|
{
|
||||||
|
m_conf = conf;
|
||||||
|
|
||||||
|
if (m_conf && !m_conf->logStat()) {
|
||||||
|
logClear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool DatabaseManager::initialize()
|
bool DatabaseManager::initialize()
|
||||||
{
|
{
|
||||||
const bool fileExists = FileUtil::fileExists(m_filePath);
|
const bool fileExists = FileUtil::fileExists(m_filePath);
|
||||||
@ -40,8 +51,11 @@ bool DatabaseManager::initialize()
|
|||||||
return fileExists || createTables();
|
return fileExists || createTables();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseManager::logProcNew(const QString &appPath, bool &isNew)
|
qint64 DatabaseManager::logProcNew(const QString &appPath, bool &isNew)
|
||||||
{
|
{
|
||||||
|
if (m_conf && !m_conf->logStat())
|
||||||
|
return 0;
|
||||||
|
|
||||||
qint64 appId = getAppId(appPath);
|
qint64 appId = getAppId(appPath);
|
||||||
if (appId == 0) {
|
if (appId == 0) {
|
||||||
appId = createAppId(appPath);
|
appId = createAppId(appPath);
|
||||||
@ -50,6 +64,8 @@ void DatabaseManager::logProcNew(const QString &appPath, bool &isNew)
|
|||||||
|
|
||||||
m_appPaths.prepend(appPath);
|
m_appPaths.prepend(appPath);
|
||||||
m_appIds.prepend(appId);
|
m_appIds.prepend(appId);
|
||||||
|
|
||||||
|
return appId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseManager::logStatTraf(quint16 procCount, const quint8 *procBits,
|
void DatabaseManager::logStatTraf(quint16 procCount, const quint8 *procBits,
|
||||||
@ -57,6 +73,9 @@ void DatabaseManager::logStatTraf(quint16 procCount, const quint8 *procBits,
|
|||||||
{
|
{
|
||||||
Q_ASSERT(procCount == m_appIds.size());
|
Q_ASSERT(procCount == m_appIds.size());
|
||||||
|
|
||||||
|
if (m_conf && !m_conf->logStat())
|
||||||
|
return;
|
||||||
|
|
||||||
QVector<quint16> delProcIndexes;
|
QVector<quint16> delProcIndexes;
|
||||||
|
|
||||||
const qint64 unixTime = DateUtil::getUnixTime();
|
const qint64 unixTime = DateUtil::getUnixTime();
|
||||||
@ -78,28 +97,28 @@ void DatabaseManager::logStatTraf(quint16 procCount, const quint8 *procBits,
|
|||||||
m_sqliteDb->beginTransaction();
|
m_sqliteDb->beginTransaction();
|
||||||
|
|
||||||
// Insert Statemets
|
// Insert Statemets
|
||||||
QStmtList insertTrafAppStmts = QStmtList()
|
const QStmtList insertTrafAppStmts = QStmtList()
|
||||||
<< getTrafficStmt(DatabaseSql::sqlInsertTrafficAppHour, trafHour)
|
<< getTrafficStmt(DatabaseSql::sqlInsertTrafAppHour, trafHour)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlInsertTrafficAppDay, trafDay)
|
<< getTrafficStmt(DatabaseSql::sqlInsertTrafAppDay, trafDay)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlInsertTrafficAppMonth, trafMonth)
|
<< getTrafficStmt(DatabaseSql::sqlInsertTrafAppMonth, trafMonth)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficAppTotal, -1);
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafAppTotal, -1);
|
||||||
|
|
||||||
QStmtList insertTrafStmts = QStmtList()
|
const QStmtList insertTrafStmts = QStmtList()
|
||||||
<< getTrafficStmt(DatabaseSql::sqlInsertTrafficHour, trafHour)
|
<< getTrafficStmt(DatabaseSql::sqlInsertTrafHour, trafHour)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlInsertTrafficDay, trafDay)
|
<< getTrafficStmt(DatabaseSql::sqlInsertTrafDay, trafDay)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlInsertTrafficMonth, trafMonth);
|
<< getTrafficStmt(DatabaseSql::sqlInsertTrafMonth, trafMonth);
|
||||||
|
|
||||||
// Update Statemets
|
// Update Statemets
|
||||||
QStmtList updateTrafAppStmts = QStmtList()
|
const QStmtList updateTrafAppStmts = QStmtList()
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficAppHour, trafHour)
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafAppHour, trafHour)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficAppDay, trafDay)
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafAppDay, trafDay)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficAppMonth, trafMonth)
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafAppMonth, trafMonth)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficAppTotal, -1);
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafAppTotal, -1);
|
||||||
|
|
||||||
QStmtList updateTrafStmts = QStmtList()
|
const QStmtList updateTrafStmts = QStmtList()
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficHour, trafHour)
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafHour, trafHour)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficDay, trafDay)
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafDay, trafDay)
|
||||||
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafficMonth, trafMonth);
|
<< getTrafficStmt(DatabaseSql::sqlUpdateTrafMonth, trafMonth);
|
||||||
|
|
||||||
for (quint16 i = 0; i < procCount; ++i) {
|
for (quint16 i = 0; i < procCount; ++i) {
|
||||||
const bool active = procBits[i / 8] & (1 << (i & 7));
|
const bool active = procBits[i / 8] & (1 << (i & 7));
|
||||||
@ -124,6 +143,30 @@ void DatabaseManager::logStatTraf(quint16 procCount, const quint8 *procBits,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete old data
|
||||||
|
if (isNewDay) {
|
||||||
|
const qint32 oldTrafHour = trafHour
|
||||||
|
- 24 * (m_conf ? m_conf->trafHourKeepDays()
|
||||||
|
: DEFAULT_TRAF_HOUR_KEEP_DAYS);
|
||||||
|
const qint32 oldTrafDay = trafHour
|
||||||
|
- 24 * (m_conf ? m_conf->trafDayKeepDays()
|
||||||
|
: DEFAULT_TRAF_DAY_KEEP_DAYS);
|
||||||
|
const qint32 oldTrafMonth = DateUtil::addUnixMonths(
|
||||||
|
trafHour, -(m_conf ? m_conf->trafMonthKeepMonths()
|
||||||
|
: DEFAULT_TRAF_MONTH_KEEP_MONTHS));
|
||||||
|
|
||||||
|
// Delete Statemets
|
||||||
|
const QStmtList deleteTrafStmts = QStmtList()
|
||||||
|
<< getTrafficStmt(DatabaseSql::sqlDeleteTrafAppHour, oldTrafHour)
|
||||||
|
<< getTrafficStmt(DatabaseSql::sqlDeleteTrafAppDay, oldTrafDay)
|
||||||
|
<< getTrafficStmt(DatabaseSql::sqlDeleteTrafAppMonth, oldTrafMonth)
|
||||||
|
<< getTrafficStmt(DatabaseSql::sqlDeleteTrafHour, oldTrafHour)
|
||||||
|
<< getTrafficStmt(DatabaseSql::sqlDeleteTrafDay, oldTrafDay)
|
||||||
|
<< getTrafficStmt(DatabaseSql::sqlDeleteTrafMonth, oldTrafMonth);
|
||||||
|
|
||||||
|
deleteTrafficList(deleteTrafStmts);
|
||||||
|
}
|
||||||
|
|
||||||
m_sqliteDb->commitTransaction();
|
m_sqliteDb->commitTransaction();
|
||||||
|
|
||||||
// Delete inactive processes
|
// Delete inactive processes
|
||||||
@ -237,6 +280,14 @@ bool DatabaseManager::updateTraffic(SqliteStmt *stmt, quint32 inBytes,
|
|||||||
&& m_sqliteDb->changes() != 0;
|
&& m_sqliteDb->changes() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DatabaseManager::deleteTrafficList(const QStmtList &deleteStmtList)
|
||||||
|
{
|
||||||
|
foreach (SqliteStmt *stmtDelete, deleteStmtList) {
|
||||||
|
stmtDelete->step();
|
||||||
|
stmtDelete->reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
qint32 DatabaseManager::getTrafficTime(const char *sql, qint64 appId)
|
qint32 DatabaseManager::getTrafficTime(const char *sql, qint64 appId)
|
||||||
{
|
{
|
||||||
qint32 trafTime = 0;
|
qint32 trafTime = 0;
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
|
QT_FORWARD_DECLARE_CLASS(FirewallConf)
|
||||||
QT_FORWARD_DECLARE_CLASS(SqliteDb)
|
QT_FORWARD_DECLARE_CLASS(SqliteDb)
|
||||||
QT_FORWARD_DECLARE_CLASS(SqliteStmt)
|
QT_FORWARD_DECLARE_CLASS(SqliteStmt)
|
||||||
|
|
||||||
@ -18,11 +19,14 @@ public:
|
|||||||
QObject *parent = nullptr);
|
QObject *parent = nullptr);
|
||||||
virtual ~DatabaseManager();
|
virtual ~DatabaseManager();
|
||||||
|
|
||||||
bool initialize();
|
const FirewallConf *firewallConf() const { return m_conf; }
|
||||||
|
void setFirewallConf(const FirewallConf *conf);
|
||||||
|
|
||||||
SqliteDb *sqliteDb() const { return m_sqliteDb; }
|
SqliteDb *sqliteDb() const { return m_sqliteDb; }
|
||||||
|
|
||||||
void logProcNew(const QString &appPath, bool &isNew);
|
bool initialize();
|
||||||
|
|
||||||
|
qint64 logProcNew(const QString &appPath, bool &isNew);
|
||||||
void logStatTraf(quint16 procCount, const quint8 *procBits,
|
void logStatTraf(quint16 procCount, const quint8 *procBits,
|
||||||
const quint32 *trafBytes);
|
const quint32 *trafBytes);
|
||||||
void logClear();
|
void logClear();
|
||||||
@ -56,6 +60,8 @@ private:
|
|||||||
bool updateTraffic(SqliteStmt *stmt, quint32 inBytes,
|
bool updateTraffic(SqliteStmt *stmt, quint32 inBytes,
|
||||||
quint32 outBytes, qint64 appId = 0);
|
quint32 outBytes, qint64 appId = 0);
|
||||||
|
|
||||||
|
void deleteTrafficList(const QStmtList &deleteStmtList);
|
||||||
|
|
||||||
SqliteStmt *getTrafficStmt(const char *sql, qint32 trafTime);
|
SqliteStmt *getTrafficStmt(const char *sql, qint32 trafTime);
|
||||||
|
|
||||||
SqliteStmt *getSqliteStmt(const char *sql);
|
SqliteStmt *getSqliteStmt(const char *sql);
|
||||||
@ -67,6 +73,8 @@ private:
|
|||||||
|
|
||||||
QString m_filePath;
|
QString m_filePath;
|
||||||
|
|
||||||
|
const FirewallConf *m_conf;
|
||||||
|
|
||||||
SqliteDb *m_sqliteDb;
|
SqliteDb *m_sqliteDb;
|
||||||
|
|
||||||
QHash<const char *, SqliteStmt *> m_sqliteStmts;
|
QHash<const char *, SqliteStmt *> m_sqliteStmts;
|
||||||
|
@ -72,79 +72,79 @@ const char * const DatabaseSql::sqlSelectAppPaths =
|
|||||||
"SELECT app_id, path FROM app ORDER BY creat_time;"
|
"SELECT app_id, path FROM app ORDER BY creat_time;"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlInsertTrafficAppHour =
|
const char * const DatabaseSql::sqlInsertTrafAppHour =
|
||||||
"INSERT INTO traffic_app_hour(app_id, traf_time, in_bytes, out_bytes)"
|
"INSERT INTO traffic_app_hour(app_id, traf_time, in_bytes, out_bytes)"
|
||||||
" VALUES(?4, ?1, ?2, ?3);"
|
" VALUES(?4, ?1, ?2, ?3);"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlInsertTrafficAppDay =
|
const char * const DatabaseSql::sqlInsertTrafAppDay =
|
||||||
"INSERT INTO traffic_app_day(app_id, traf_time, in_bytes, out_bytes)"
|
"INSERT INTO traffic_app_day(app_id, traf_time, in_bytes, out_bytes)"
|
||||||
" VALUES(?4, ?1, ?2, ?3);"
|
" VALUES(?4, ?1, ?2, ?3);"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlInsertTrafficAppMonth =
|
const char * const DatabaseSql::sqlInsertTrafAppMonth =
|
||||||
"INSERT INTO traffic_app_month(app_id, traf_time, in_bytes, out_bytes)"
|
"INSERT INTO traffic_app_month(app_id, traf_time, in_bytes, out_bytes)"
|
||||||
" VALUES(?4, ?1, ?2, ?3);"
|
" VALUES(?4, ?1, ?2, ?3);"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlInsertTrafficHour =
|
const char * const DatabaseSql::sqlInsertTrafHour =
|
||||||
"INSERT INTO traffic_hour(traf_time, in_bytes, out_bytes)"
|
"INSERT INTO traffic_hour(traf_time, in_bytes, out_bytes)"
|
||||||
" VALUES(?1, ?2, ?3);"
|
" VALUES(?1, ?2, ?3);"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlInsertTrafficDay =
|
const char * const DatabaseSql::sqlInsertTrafDay =
|
||||||
"INSERT INTO traffic_day(traf_time, in_bytes, out_bytes)"
|
"INSERT INTO traffic_day(traf_time, in_bytes, out_bytes)"
|
||||||
" VALUES(?1, ?2, ?3);"
|
" VALUES(?1, ?2, ?3);"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlInsertTrafficMonth =
|
const char * const DatabaseSql::sqlInsertTrafMonth =
|
||||||
"INSERT INTO traffic_month(traf_time, in_bytes, out_bytes)"
|
"INSERT INTO traffic_month(traf_time, in_bytes, out_bytes)"
|
||||||
" VALUES(?1, ?2, ?3);"
|
" VALUES(?1, ?2, ?3);"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlUpdateTrafficAppHour =
|
const char * const DatabaseSql::sqlUpdateTrafAppHour =
|
||||||
"UPDATE traffic_app_hour"
|
"UPDATE traffic_app_hour"
|
||||||
" SET in_bytes = in_bytes + ?2,"
|
" SET in_bytes = in_bytes + ?2,"
|
||||||
" out_bytes = out_bytes + ?3"
|
" out_bytes = out_bytes + ?3"
|
||||||
" WHERE app_id = ?4 and traf_time = ?1;"
|
" WHERE app_id = ?4 and traf_time = ?1;"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlUpdateTrafficAppDay =
|
const char * const DatabaseSql::sqlUpdateTrafAppDay =
|
||||||
"UPDATE traffic_app_day"
|
"UPDATE traffic_app_day"
|
||||||
" SET in_bytes = in_bytes + ?2,"
|
" SET in_bytes = in_bytes + ?2,"
|
||||||
" out_bytes = out_bytes + ?3"
|
" out_bytes = out_bytes + ?3"
|
||||||
" WHERE app_id = ?4 and traf_time = ?1;"
|
" WHERE app_id = ?4 and traf_time = ?1;"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlUpdateTrafficAppMonth =
|
const char * const DatabaseSql::sqlUpdateTrafAppMonth =
|
||||||
"UPDATE traffic_app_month"
|
"UPDATE traffic_app_month"
|
||||||
" SET in_bytes = in_bytes + ?2,"
|
" SET in_bytes = in_bytes + ?2,"
|
||||||
" out_bytes = out_bytes + ?3"
|
" out_bytes = out_bytes + ?3"
|
||||||
" WHERE app_id = ?4 and traf_time = ?1;"
|
" WHERE app_id = ?4 and traf_time = ?1;"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlUpdateTrafficAppTotal =
|
const char * const DatabaseSql::sqlUpdateTrafAppTotal =
|
||||||
"UPDATE app"
|
"UPDATE app"
|
||||||
" SET in_bytes = in_bytes + ?2,"
|
" SET in_bytes = in_bytes + ?2,"
|
||||||
" out_bytes = out_bytes + ?3"
|
" out_bytes = out_bytes + ?3"
|
||||||
" WHERE app_id = ?4 and 0 != ?1;"
|
" WHERE app_id = ?4 and 0 != ?1;"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlUpdateTrafficHour =
|
const char * const DatabaseSql::sqlUpdateTrafHour =
|
||||||
"UPDATE traffic_hour"
|
"UPDATE traffic_hour"
|
||||||
" SET in_bytes = in_bytes + ?2,"
|
" SET in_bytes = in_bytes + ?2,"
|
||||||
" out_bytes = out_bytes + ?3"
|
" out_bytes = out_bytes + ?3"
|
||||||
" WHERE traf_time = ?1;"
|
" WHERE traf_time = ?1;"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlUpdateTrafficDay =
|
const char * const DatabaseSql::sqlUpdateTrafDay =
|
||||||
"UPDATE traffic_day"
|
"UPDATE traffic_day"
|
||||||
" SET in_bytes = in_bytes + ?2,"
|
" SET in_bytes = in_bytes + ?2,"
|
||||||
" out_bytes = out_bytes + ?3"
|
" out_bytes = out_bytes + ?3"
|
||||||
" WHERE traf_time = ?1;"
|
" WHERE traf_time = ?1;"
|
||||||
;
|
;
|
||||||
|
|
||||||
const char * const DatabaseSql::sqlUpdateTrafficMonth =
|
const char * const DatabaseSql::sqlUpdateTrafMonth =
|
||||||
"UPDATE traffic_month"
|
"UPDATE traffic_month"
|
||||||
" SET in_bytes = in_bytes + ?2,"
|
" SET in_bytes = in_bytes + ?2,"
|
||||||
" out_bytes = out_bytes + ?3"
|
" out_bytes = out_bytes + ?3"
|
||||||
@ -229,3 +229,33 @@ const char * const DatabaseSql::sqlSelectTrafTotal =
|
|||||||
"SELECT sum(in_bytes), sum(out_bytes)"
|
"SELECT sum(in_bytes), sum(out_bytes)"
|
||||||
" FROM app WHERE 0 != ?1;"
|
" FROM app WHERE 0 != ?1;"
|
||||||
;
|
;
|
||||||
|
|
||||||
|
const char * const DatabaseSql::sqlDeleteTrafAppHour =
|
||||||
|
"DELETE FROM traffic_app_hour"
|
||||||
|
" WHERE traf_time < ?1"
|
||||||
|
" and app_id in (SELECT app_id FROM app);"
|
||||||
|
;
|
||||||
|
|
||||||
|
const char * const DatabaseSql::sqlDeleteTrafAppDay =
|
||||||
|
"DELETE FROM traffic_app_day"
|
||||||
|
" WHERE traf_time < ?1"
|
||||||
|
" and app_id in (SELECT app_id FROM app);"
|
||||||
|
;
|
||||||
|
|
||||||
|
const char * const DatabaseSql::sqlDeleteTrafAppMonth =
|
||||||
|
"DELETE FROM traffic_app_month"
|
||||||
|
" WHERE traf_time < ?1"
|
||||||
|
" and app_id in (SELECT app_id FROM app);"
|
||||||
|
;
|
||||||
|
|
||||||
|
const char * const DatabaseSql::sqlDeleteTrafHour =
|
||||||
|
"DELETE FROM traffic_hour WHERE traf_time < ?1;"
|
||||||
|
;
|
||||||
|
|
||||||
|
const char * const DatabaseSql::sqlDeleteTrafDay =
|
||||||
|
"DELETE FROM traffic_day WHERE traf_time < ?1;"
|
||||||
|
;
|
||||||
|
|
||||||
|
const char * const DatabaseSql::sqlDeleteTrafMonth =
|
||||||
|
"DELETE FROM traffic_month WHERE traf_time < ?1;"
|
||||||
|
;
|
||||||
|
@ -12,23 +12,23 @@ public:
|
|||||||
|
|
||||||
static const char * const sqlSelectAppPaths;
|
static const char * const sqlSelectAppPaths;
|
||||||
|
|
||||||
static const char * const sqlInsertTrafficAppHour;
|
static const char * const sqlInsertTrafAppHour;
|
||||||
static const char * const sqlInsertTrafficAppDay;
|
static const char * const sqlInsertTrafAppDay;
|
||||||
static const char * const sqlInsertTrafficAppMonth;
|
static const char * const sqlInsertTrafAppMonth;
|
||||||
|
|
||||||
static const char * const sqlInsertTrafficHour;
|
static const char * const sqlInsertTrafHour;
|
||||||
static const char * const sqlInsertTrafficDay;
|
static const char * const sqlInsertTrafDay;
|
||||||
static const char * const sqlInsertTrafficMonth;
|
static const char * const sqlInsertTrafMonth;
|
||||||
|
|
||||||
static const char * const sqlUpdateTrafficAppHour;
|
static const char * const sqlUpdateTrafAppHour;
|
||||||
static const char * const sqlUpdateTrafficAppDay;
|
static const char * const sqlUpdateTrafAppDay;
|
||||||
static const char * const sqlUpdateTrafficAppMonth;
|
static const char * const sqlUpdateTrafAppMonth;
|
||||||
|
|
||||||
static const char * const sqlUpdateTrafficHour;
|
static const char * const sqlUpdateTrafHour;
|
||||||
static const char * const sqlUpdateTrafficDay;
|
static const char * const sqlUpdateTrafDay;
|
||||||
static const char * const sqlUpdateTrafficMonth;
|
static const char * const sqlUpdateTrafMonth;
|
||||||
|
|
||||||
static const char * const sqlUpdateTrafficAppTotal;
|
static const char * const sqlUpdateTrafAppTotal;
|
||||||
|
|
||||||
static const char * const sqlSelectMinTrafAppHour;
|
static const char * const sqlSelectMinTrafAppHour;
|
||||||
static const char * const sqlSelectMinTrafAppDay;
|
static const char * const sqlSelectMinTrafAppDay;
|
||||||
@ -49,6 +49,14 @@ public:
|
|||||||
static const char * const sqlSelectTrafDay;
|
static const char * const sqlSelectTrafDay;
|
||||||
static const char * const sqlSelectTrafMonth;
|
static const char * const sqlSelectTrafMonth;
|
||||||
static const char * const sqlSelectTrafTotal;
|
static const char * const sqlSelectTrafTotal;
|
||||||
|
|
||||||
|
static const char * const sqlDeleteTrafAppHour;
|
||||||
|
static const char * const sqlDeleteTrafAppDay;
|
||||||
|
static const char * const sqlDeleteTrafAppMonth;
|
||||||
|
|
||||||
|
static const char * const sqlDeleteTrafHour;
|
||||||
|
static const char * const sqlDeleteTrafDay;
|
||||||
|
static const char * const sqlDeleteTrafMonth;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DATABASESQL_H
|
#endif // DATABASESQL_H
|
||||||
|
@ -245,11 +245,11 @@ bool FortManager::applyConf(bool onlyFlags)
|
|||||||
return saveSettings(newConf, onlyFlags);
|
return saveSettings(newConf, onlyFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FortManager::applyConfImmediateFlags()
|
bool FortManager::applyConfImmediateValues()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_firewallConfToEdit != nullConf());
|
Q_ASSERT(m_firewallConfToEdit != nullConf());
|
||||||
|
|
||||||
m_firewallConf->copyImmediateFlags(*m_firewallConfToEdit);
|
m_firewallConf->copyImmediateValues(*m_firewallConfToEdit);
|
||||||
|
|
||||||
return saveSettings(m_firewallConf, true, true);
|
return saveSettings(m_firewallConf, true, true);
|
||||||
}
|
}
|
||||||
@ -276,9 +276,9 @@ bool FortManager::loadSettings(FirewallConf *conf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool FortManager::saveSettings(FirewallConf *newConf, bool onlyFlags,
|
bool FortManager::saveSettings(FirewallConf *newConf, bool onlyFlags,
|
||||||
bool immediateFlags)
|
bool immediateValues)
|
||||||
{
|
{
|
||||||
if (!(onlyFlags ? m_fortSettings->writeConfFlags(*newConf)
|
if (!(onlyFlags ? m_fortSettings->writeConfIni(*newConf)
|
||||||
: m_fortSettings->writeConf(*newConf))) {
|
: m_fortSettings->writeConf(*newConf))) {
|
||||||
showErrorBox("Save Settings: " + m_fortSettings->errorMessage());
|
showErrorBox("Save Settings: " + m_fortSettings->errorMessage());
|
||||||
return false;
|
return false;
|
||||||
@ -289,7 +289,7 @@ bool FortManager::saveSettings(FirewallConf *newConf, bool onlyFlags,
|
|||||||
m_firewallConf = newConf;
|
m_firewallConf = newConf;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!immediateFlags) {
|
if (!immediateValues) {
|
||||||
updateTrayMenu();
|
updateTrayMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,7 +308,7 @@ bool FortManager::updateDriverConf(FirewallConf *conf)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLogManager(conf);
|
updateDatabaseManager(conf);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -324,19 +324,14 @@ bool FortManager::updateDriverConfFlags(FirewallConf *conf)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLogManager(conf);
|
updateDatabaseManager(conf);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FortManager::updateLogManager(FirewallConf *conf)
|
void FortManager::updateDatabaseManager(FirewallConf *conf)
|
||||||
{
|
{
|
||||||
if (!conf->logStat()) {
|
m_databaseManager->setFirewallConf(conf);
|
||||||
m_databaseManager->logClear();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_logManager->setLogBlockedEnabled(conf->logBlocked());
|
|
||||||
m_logManager->setLogStatEnabled(conf->logStat());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FortManager::setLanguage(int language)
|
void FortManager::setLanguage(int language)
|
||||||
@ -360,7 +355,7 @@ void FortManager::saveTrayFlags()
|
|||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fortSettings->writeConfFlags(*m_firewallConf);
|
m_fortSettings->writeConfIni(*m_firewallConf);
|
||||||
|
|
||||||
updateDriverConfFlags(m_firewallConf);
|
updateDriverConfFlags(m_firewallConf);
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ public slots:
|
|||||||
bool saveOriginConf(const QString &message);
|
bool saveOriginConf(const QString &message);
|
||||||
bool saveConf(bool onlyFlags = false);
|
bool saveConf(bool onlyFlags = false);
|
||||||
bool applyConf(bool onlyFlags = false);
|
bool applyConf(bool onlyFlags = false);
|
||||||
bool applyConfImmediateFlags();
|
bool applyConfImmediateValues();
|
||||||
|
|
||||||
void setLanguage(int language);
|
void setLanguage(int language);
|
||||||
|
|
||||||
@ -78,12 +78,12 @@ private:
|
|||||||
|
|
||||||
bool loadSettings(FirewallConf *conf);
|
bool loadSettings(FirewallConf *conf);
|
||||||
bool saveSettings(FirewallConf *newConf, bool onlyFlags = false,
|
bool saveSettings(FirewallConf *newConf, bool onlyFlags = false,
|
||||||
bool immediateFlags = false);
|
bool immediateValues = false);
|
||||||
|
|
||||||
bool updateDriverConf(FirewallConf *conf);
|
bool updateDriverConf(FirewallConf *conf);
|
||||||
bool updateDriverConfFlags(FirewallConf *conf);
|
bool updateDriverConfFlags(FirewallConf *conf);
|
||||||
|
|
||||||
void updateLogManager(FirewallConf *conf);
|
void updateDatabaseManager(FirewallConf *conf);
|
||||||
|
|
||||||
FirewallConf *cloneConf(const FirewallConf &conf);
|
FirewallConf *cloneConf(const FirewallConf &conf);
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ bool FortSettings::readConf(FirewallConf &conf)
|
|||||||
return (!(fileExists || backupFileExists)
|
return (!(fileExists || backupFileExists)
|
||||||
|| (fileExists && tryToReadConf(conf, filePath))
|
|| (fileExists && tryToReadConf(conf, filePath))
|
||||||
|| tryToReadConf(conf, backupFilePath))
|
|| tryToReadConf(conf, backupFilePath))
|
||||||
&& readConfFlags(conf); // read flags at the end to use correct app groups
|
&& readConfIni(conf); // read flags at the end to use correct app groups
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FortSettings::tryToReadConf(FirewallConf &conf, const QString &filePath)
|
bool FortSettings::tryToReadConf(FirewallConf &conf, const QString &filePath)
|
||||||
@ -165,7 +165,7 @@ bool FortSettings::writeConf(const FirewallConf &conf)
|
|||||||
const QString filePath = confFilePath();
|
const QString filePath = confFilePath();
|
||||||
const QString backupFilePath = confBackupFilePath();
|
const QString backupFilePath = confBackupFilePath();
|
||||||
|
|
||||||
if (!writeConfFlags(conf)) {
|
if (!writeConfIni(conf)) {
|
||||||
setErrorMessage(tr("Can't write .ini file"));
|
setErrorMessage(tr("Can't write .ini file"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -204,7 +204,7 @@ bool FortSettings::tryToWriteConf(const FirewallConf &conf, const QString &fileP
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FortSettings::readConfFlags(FirewallConf &conf) const
|
bool FortSettings::readConfIni(FirewallConf &conf) const
|
||||||
{
|
{
|
||||||
m_ini->beginGroup("confFlags");
|
m_ini->beginGroup("confFlags");
|
||||||
conf.setProvBoot(iniBool("provBoot"));
|
conf.setProvBoot(iniBool("provBoot"));
|
||||||
@ -216,13 +216,20 @@ bool FortSettings::readConfFlags(FirewallConf &conf) const
|
|||||||
conf.ipExclude()->setUseAll(iniBool("ipExcludeAll"));
|
conf.ipExclude()->setUseAll(iniBool("ipExcludeAll"));
|
||||||
conf.setAppBlockAll(iniBool("appBlockAll", true));
|
conf.setAppBlockAll(iniBool("appBlockAll", true));
|
||||||
conf.setAppAllowAll(iniBool("appAllowAll"));
|
conf.setAppAllowAll(iniBool("appAllowAll"));
|
||||||
conf.setAppGroupBits(iniUInt("appGroupBits", 0xFFFF));
|
conf.setAppGroupBits(iniUInt("appGroupBits", DEFAULT_APP_GROUP_BITS));
|
||||||
|
m_ini->endGroup();
|
||||||
|
|
||||||
|
m_ini->beginGroup("stat");
|
||||||
|
conf.setTrafHourKeepDays(iniInt("trafHourKeepDays", DEFAULT_TRAF_HOUR_KEEP_DAYS));
|
||||||
|
conf.setTrafDayKeepDays(iniInt("trafDayKeepDays", DEFAULT_TRAF_DAY_KEEP_DAYS));
|
||||||
|
conf.setTrafMonthKeepMonths(iniInt("trafMonthKeepMonths", DEFAULT_TRAF_MONTH_KEEP_MONTHS));
|
||||||
|
conf.setTrafUnit(iniInt("trafUnit"));
|
||||||
m_ini->endGroup();
|
m_ini->endGroup();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FortSettings::writeConfFlags(const FirewallConf &conf)
|
bool FortSettings::writeConfIni(const FirewallConf &conf)
|
||||||
{
|
{
|
||||||
m_ini->beginGroup("confFlags");
|
m_ini->beginGroup("confFlags");
|
||||||
setIniValue("provBoot", conf.provBoot());
|
setIniValue("provBoot", conf.provBoot());
|
||||||
@ -234,7 +241,14 @@ bool FortSettings::writeConfFlags(const FirewallConf &conf)
|
|||||||
setIniValue("ipExcludeAll", conf.ipExclude()->useAll());
|
setIniValue("ipExcludeAll", conf.ipExclude()->useAll());
|
||||||
setIniValue("appBlockAll", conf.appBlockAll());
|
setIniValue("appBlockAll", conf.appBlockAll());
|
||||||
setIniValue("appAllowAll", conf.appAllowAll());
|
setIniValue("appAllowAll", conf.appAllowAll());
|
||||||
setIniValue("appGroupBits", conf.appGroupBits());
|
setIniValue("appGroupBits", conf.appGroupBits(), DEFAULT_APP_GROUP_BITS);
|
||||||
|
m_ini->endGroup();
|
||||||
|
|
||||||
|
m_ini->beginGroup("stat");
|
||||||
|
setIniValue("trafHourKeepDays", conf.trafHourKeepDays(), DEFAULT_TRAF_HOUR_KEEP_DAYS);
|
||||||
|
setIniValue("trafDayKeepDays", conf.trafDayKeepDays(), DEFAULT_TRAF_DAY_KEEP_DAYS);
|
||||||
|
setIniValue("trafMonthKeepMonths", conf.trafMonthKeepMonths(), DEFAULT_TRAF_MONTH_KEEP_MONTHS);
|
||||||
|
setIniValue("trafUnit", conf.trafUnit());
|
||||||
m_ini->endGroup();
|
m_ini->endGroup();
|
||||||
|
|
||||||
return iniSync();
|
return iniSync();
|
||||||
@ -250,7 +264,7 @@ int FortSettings::iniInt(const QString &key, int defaultValue) const
|
|||||||
return iniValue(key, defaultValue).toInt();
|
return iniValue(key, defaultValue).toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
int FortSettings::iniUInt(const QString &key, int defaultValue) const
|
uint FortSettings::iniUInt(const QString &key, int defaultValue) const
|
||||||
{
|
{
|
||||||
return iniValue(key, defaultValue).toUInt();
|
return iniValue(key, defaultValue).toUInt();
|
||||||
}
|
}
|
||||||
|
@ -54,8 +54,8 @@ public slots:
|
|||||||
bool readConf(FirewallConf &conf);
|
bool readConf(FirewallConf &conf);
|
||||||
bool writeConf(const FirewallConf &conf);
|
bool writeConf(const FirewallConf &conf);
|
||||||
|
|
||||||
bool readConfFlags(FirewallConf &conf) const;
|
bool readConfIni(FirewallConf &conf) const;
|
||||||
bool writeConfFlags(const FirewallConf &conf);
|
bool writeConfIni(const FirewallConf &conf);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void processArguments(const QStringList &args);
|
void processArguments(const QStringList &args);
|
||||||
@ -71,7 +71,7 @@ private:
|
|||||||
|
|
||||||
bool iniBool(const QString &key, bool defaultValue = false) const;
|
bool iniBool(const QString &key, bool defaultValue = false) const;
|
||||||
int iniInt(const QString &key, int defaultValue = 0) const;
|
int iniInt(const QString &key, int defaultValue = 0) const;
|
||||||
int iniUInt(const QString &key, int defaultValue = 0) const;
|
uint iniUInt(const QString &key, int defaultValue = 0) const;
|
||||||
int iniReal(const QString &key, qreal defaultValue = 0) const;
|
int iniReal(const QString &key, qreal defaultValue = 0) const;
|
||||||
QString iniText(const QString &key, const QString &defaultValue = QString()) const;
|
QString iniText(const QString &key, const QString &defaultValue = QString()) const;
|
||||||
QStringList iniList(const QString &key) const;
|
QStringList iniList(const QString &key) const;
|
||||||
|
@ -14,8 +14,6 @@ LogManager::LogManager(DatabaseManager *databaseManager,
|
|||||||
QObject *parent) :
|
QObject *parent) :
|
||||||
QObject(parent),
|
QObject(parent),
|
||||||
m_active(false),
|
m_active(false),
|
||||||
m_logBlockedEnabled(false),
|
|
||||||
m_logStatEnabled(false),
|
|
||||||
m_driverWorker(driverWorker),
|
m_driverWorker(driverWorker),
|
||||||
m_appBlockedModel(new AppBlockedModel(this)),
|
m_appBlockedModel(new AppBlockedModel(this)),
|
||||||
m_appStatModel(new AppStatModel(databaseManager, this))
|
m_appStatModel(new AppStatModel(databaseManager, this))
|
||||||
@ -39,22 +37,6 @@ void LogManager::setActive(bool active)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogManager::setLogBlockedEnabled(bool enabled)
|
|
||||||
{
|
|
||||||
if (m_logBlockedEnabled != enabled) {
|
|
||||||
m_logBlockedEnabled = enabled;
|
|
||||||
emit logBlockedEnabledChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LogManager::setLogStatEnabled(bool enabled)
|
|
||||||
{
|
|
||||||
if (m_logStatEnabled != enabled) {
|
|
||||||
m_logStatEnabled = enabled;
|
|
||||||
emit logStatEnabledChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LogManager::setErrorMessage(const QString &errorMessage)
|
void LogManager::setErrorMessage(const QString &errorMessage)
|
||||||
{
|
{
|
||||||
if (m_errorMessage != errorMessage) {
|
if (m_errorMessage != errorMessage) {
|
||||||
@ -120,26 +102,20 @@ void LogManager::readLogEntries(LogBuffer *logBuffer)
|
|||||||
switch (logBuffer->peekEntryType()) {
|
switch (logBuffer->peekEntryType()) {
|
||||||
case LogEntry::AppBlocked: {
|
case LogEntry::AppBlocked: {
|
||||||
logBuffer->readEntryBlocked(&entryBlocked);
|
logBuffer->readEntryBlocked(&entryBlocked);
|
||||||
if (m_logBlockedEnabled) {
|
m_appBlockedModel->addLogEntry(entryBlocked);
|
||||||
m_appBlockedModel->addLogEntry(entryBlocked);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LogEntry::ProcNew: {
|
case LogEntry::ProcNew: {
|
||||||
logBuffer->readEntryProcNew(&entryProcNew);
|
logBuffer->readEntryProcNew(&entryProcNew);
|
||||||
if (m_logStatEnabled) {
|
m_appStatModel->handleProcNew(entryProcNew.path());
|
||||||
m_appStatModel->handleProcNew(entryProcNew.path());
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LogEntry::StatTraf: {
|
case LogEntry::StatTraf: {
|
||||||
logBuffer->readEntryStatTraf(&entryStatTraf);
|
logBuffer->readEntryStatTraf(&entryStatTraf);
|
||||||
if (m_logStatEnabled) {
|
m_appStatModel->handleStatTraf(
|
||||||
m_appStatModel->handleStatTraf(
|
entryStatTraf.procCount(),
|
||||||
entryStatTraf.procCount(),
|
entryStatTraf.procBits(),
|
||||||
entryStatTraf.procBits(),
|
entryStatTraf.trafBytes());
|
||||||
entryStatTraf.trafBytes());
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -27,20 +27,12 @@ public:
|
|||||||
|
|
||||||
void setActive(bool active);
|
void setActive(bool active);
|
||||||
|
|
||||||
bool logBlockedEnabled() const { return m_logBlockedEnabled; }
|
|
||||||
void setLogBlockedEnabled(bool enabled);
|
|
||||||
|
|
||||||
bool logStatEnabled() const { return m_logStatEnabled; }
|
|
||||||
void setLogStatEnabled(bool enabled);
|
|
||||||
|
|
||||||
QString errorMessage() const { return m_errorMessage; }
|
QString errorMessage() const { return m_errorMessage; }
|
||||||
|
|
||||||
void initialize();
|
void initialize();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void activeChanged();
|
void activeChanged();
|
||||||
void logBlockedEnabledChanged();
|
|
||||||
void logStatEnabledChanged();
|
|
||||||
void errorMessageChanged();
|
void errorMessageChanged();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
@ -63,8 +55,6 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_active;
|
bool m_active;
|
||||||
bool m_logBlockedEnabled;
|
|
||||||
bool m_logStatEnabled;
|
|
||||||
|
|
||||||
DriverWorker *m_driverWorker;
|
DriverWorker *m_driverWorker;
|
||||||
QList<LogBuffer *> m_freeBuffers;
|
QList<LogBuffer *> m_freeBuffers;
|
||||||
|
@ -18,8 +18,10 @@ void AppStatModel::initialize()
|
|||||||
|
|
||||||
TrafListModel *AppStatModel::trafListModel(int trafType, int row) const
|
TrafListModel *AppStatModel::trafListModel(int trafType, int row) const
|
||||||
{
|
{
|
||||||
|
Q_ASSERT(row < m_appIds.size());
|
||||||
|
|
||||||
m_trafListModel->setType(static_cast<TrafListModel::TrafType>(trafType));
|
m_trafListModel->setType(static_cast<TrafListModel::TrafType>(trafType));
|
||||||
m_trafListModel->setAppId(row == -1 ? 0 : m_appIds.at(row));
|
m_trafListModel->setAppId(row < 0 ? 0 : m_appIds.at(row));
|
||||||
m_trafListModel->reset();
|
m_trafListModel->reset();
|
||||||
|
|
||||||
return m_trafListModel;
|
return m_trafListModel;
|
||||||
@ -46,9 +48,10 @@ void AppStatModel::updateList()
|
|||||||
void AppStatModel::handleProcNew(const QString &appPath)
|
void AppStatModel::handleProcNew(const QString &appPath)
|
||||||
{
|
{
|
||||||
bool isNew = false;
|
bool isNew = false;
|
||||||
m_databaseManager->logProcNew(appPath, isNew);
|
const qint64 appId = m_databaseManager->logProcNew(appPath, isNew);
|
||||||
|
|
||||||
if (isNew) {
|
if (isNew) {
|
||||||
|
m_appIds.append(appId);
|
||||||
insert(appPath);
|
insert(appPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
#include "traflistmodel.h"
|
#include "traflistmodel.h"
|
||||||
|
|
||||||
|
#include <QLocale>
|
||||||
|
|
||||||
|
#include "../../conf/firewallconf.h"
|
||||||
#include "../../db/databasemanager.h"
|
#include "../../db/databasemanager.h"
|
||||||
#include "../../db/databasesql.h"
|
#include "../../db/databasesql.h"
|
||||||
#include "../../util/dateutil.h"
|
#include "../../util/dateutil.h"
|
||||||
@ -65,9 +68,10 @@ QVariant TrafListModel::data(const QModelIndex &index, int role) const
|
|||||||
|
|
||||||
switch (role) {
|
switch (role) {
|
||||||
case DateTimeRole: return formatTrafTime(m_rowCache.trafTime);
|
case DateTimeRole: return formatTrafTime(m_rowCache.trafTime);
|
||||||
case DownloadRole: return m_rowCache.inBytes;
|
case DownloadRole: return formatTrafUnit(m_rowCache.inBytes);
|
||||||
case UploadRole: return m_rowCache.outBytes;
|
case UploadRole: return formatTrafUnit(m_rowCache.outBytes);
|
||||||
case SumRole: return m_rowCache.inBytes + m_rowCache.outBytes;
|
case SumRole: return formatTrafUnit(m_rowCache.inBytes
|
||||||
|
+ m_rowCache.outBytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return QVariant();
|
return QVariant();
|
||||||
@ -102,6 +106,36 @@ void TrafListModel::updateRowCache(int row) const
|
|||||||
m_appId);
|
m_appId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString TrafListModel::formatTrafUnit(qint64 bytes) const
|
||||||
|
{
|
||||||
|
static const QVector<qint64> unitMults = {
|
||||||
|
1, // Adaptive
|
||||||
|
1, // Bytes
|
||||||
|
1024, // KB
|
||||||
|
1024 * 1024, // MB
|
||||||
|
qint64(1024) * 1024 * 1024, // GB
|
||||||
|
qint64(1024) * 1024 * 1024 * 1024 // TB
|
||||||
|
};
|
||||||
|
|
||||||
|
if (bytes == 0) {
|
||||||
|
return QLatin1String("0");
|
||||||
|
}
|
||||||
|
|
||||||
|
const FirewallConf *conf = m_databaseManager->firewallConf();
|
||||||
|
const int trafUnit = conf ? conf->trafUnit() : 0;
|
||||||
|
const int trafPrec = (trafUnit == FirewallConf::UnitBytes) ? 0 : 2;
|
||||||
|
|
||||||
|
QLocale locale;
|
||||||
|
|
||||||
|
if (trafUnit == FirewallConf::UnitAdaptive) {
|
||||||
|
return locale.formattedDataSize(bytes, trafPrec);
|
||||||
|
}
|
||||||
|
|
||||||
|
const qint64 unitMult = unitMults.at(trafUnit);
|
||||||
|
|
||||||
|
return locale.toString(qreal(bytes) / unitMult, 'f', trafPrec);
|
||||||
|
}
|
||||||
|
|
||||||
QString TrafListModel::formatTrafTime(qint32 trafTime) const
|
QString TrafListModel::formatTrafTime(qint32 trafTime) const
|
||||||
{
|
{
|
||||||
const qint64 unixTime = DateUtil::toUnixTime(trafTime);
|
const qint64 unixTime = DateUtil::toUnixTime(trafTime);
|
||||||
|
@ -61,6 +61,7 @@ public slots:
|
|||||||
private:
|
private:
|
||||||
void updateRowCache(int row) const;
|
void updateRowCache(int row) const;
|
||||||
|
|
||||||
|
QString formatTrafUnit(qint64 bytes) const;
|
||||||
QString formatTrafTime(qint32 trafTime) const;
|
QString formatTrafTime(qint32 trafTime) const;
|
||||||
|
|
||||||
qint32 getTrafTime(int row) const;
|
qint32 getTrafTime(int row) const;
|
||||||
|
@ -31,6 +31,8 @@ BasePage {
|
|||||||
spacing: 10
|
spacing: 10
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
spacing: 15
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
enabled: appListView.count
|
enabled: appListView.count
|
||||||
text: translationManager.dummyBool
|
text: translationManager.dummyBool
|
||||||
@ -48,7 +50,7 @@ BasePage {
|
|||||||
|
|
||||||
firewallConf.resolveAddress = checked;
|
firewallConf.resolveAddress = checked;
|
||||||
|
|
||||||
fortManager.applyConfImmediateFlags();
|
fortManager.applyConfImmediateValues();
|
||||||
|
|
||||||
hostInfoCache.cacheChanged(); // refresh ipListView
|
hostInfoCache.cacheChanged(); // refresh ipListView
|
||||||
}
|
}
|
||||||
@ -69,7 +71,7 @@ BasePage {
|
|||||||
|
|
||||||
firewallConf.logBlocked = checked;
|
firewallConf.logBlocked = checked;
|
||||||
|
|
||||||
fortManager.applyConfImmediateFlags();
|
fortManager.applyConfImmediateValues();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,24 @@ BasePage {
|
|||||||
trafsContainer.width * 0.2
|
trafsContainer.width * 0.2
|
||||||
]
|
]
|
||||||
|
|
||||||
|
readonly property var trafUnitNames:
|
||||||
|
translationManager.dummyBool
|
||||||
|
&& [
|
||||||
|
qsTranslate("qml", "Adaptive"),
|
||||||
|
qsTranslate("qml", "Bytes"),
|
||||||
|
qsTranslate("qml", "KiB"),
|
||||||
|
qsTranslate("qml", "MiB"),
|
||||||
|
qsTranslate("qml", "GiB"),
|
||||||
|
qsTranslate("qml", "TiB")
|
||||||
|
]
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
spacing: 10
|
spacing: 10
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
spacing: 15
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
enabled: appListView.currentIndex >= 0
|
enabled: appListView.currentIndex >= 0
|
||||||
text: translationManager.dummyBool
|
text: translationManager.dummyBool
|
||||||
@ -36,6 +49,31 @@ BasePage {
|
|||||||
onClicked: trafListModel.refresh()
|
onClicked: trafListModel.refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
spacing: 5
|
||||||
|
|
||||||
|
Label {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
text: translationManager.dummyBool
|
||||||
|
&& qsTranslate("qml", "Units:")
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: comboTrafUnit
|
||||||
|
|
||||||
|
currentIndex: firewallConf.trafUnit
|
||||||
|
model: trafUnitNames
|
||||||
|
|
||||||
|
onActivated: {
|
||||||
|
firewallConf.trafUnit = index;
|
||||||
|
|
||||||
|
fortManager.applyConfImmediateValues();
|
||||||
|
|
||||||
|
trafListModel.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
@ -52,7 +90,7 @@ BasePage {
|
|||||||
|
|
||||||
firewallConf.logStat = checked;
|
firewallConf.logStat = checked;
|
||||||
|
|
||||||
fortManager.applyConfImmediateFlags();
|
fortManager.applyConfImmediateValues();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user