mirror of
https://github.com/tnodir/fort
synced 2024-11-15 10:15:07 +00:00
Driver: Always collect traffic statistics
This commit is contained in:
parent
dd9f7ee2de
commit
9940f16daa
@ -24,18 +24,23 @@ typedef struct fort_conf_flags
|
|||||||
UINT32 boot_filter : 1;
|
UINT32 boot_filter : 1;
|
||||||
UINT32 filter_enabled : 1;
|
UINT32 filter_enabled : 1;
|
||||||
UINT32 filter_locals : 1;
|
UINT32 filter_locals : 1;
|
||||||
|
|
||||||
UINT32 stop_traffic : 1;
|
UINT32 stop_traffic : 1;
|
||||||
UINT32 stop_inet_traffic : 1;
|
UINT32 stop_inet_traffic : 1;
|
||||||
|
|
||||||
UINT32 allow_all_new : 1;
|
UINT32 allow_all_new : 1;
|
||||||
UINT32 ask_to_connect : 1;
|
UINT32 ask_to_connect : 1;
|
||||||
UINT32 app_block_all : 1;
|
UINT32 app_block_all : 1;
|
||||||
UINT32 app_allow_all : 1;
|
UINT32 app_allow_all : 1;
|
||||||
UINT32 log_blocked : 1;
|
|
||||||
UINT32 log_stat : 1;
|
UINT32 log_stat : 1;
|
||||||
UINT32 log_stat_no_filter : 1;
|
UINT32 log_stat_no_filter : 1;
|
||||||
|
UINT32 log_blocked : 1;
|
||||||
|
|
||||||
UINT32 log_allowed_ip : 1;
|
UINT32 log_allowed_ip : 1;
|
||||||
UINT32 log_blocked_ip : 1;
|
UINT32 log_blocked_ip : 1;
|
||||||
UINT32 log_alerted_blocked_ip : 1;
|
UINT32 log_alerted_blocked_ip : 1;
|
||||||
|
|
||||||
UINT32 group_apply_child : 1;
|
UINT32 group_apply_child : 1;
|
||||||
|
|
||||||
UINT32 group_bits : 16;
|
UINT32 group_bits : 16;
|
||||||
|
@ -437,18 +437,19 @@ FORT_API void fort_stat_close(PFORT_STAT stat)
|
|||||||
|
|
||||||
FORT_API void fort_stat_log_update(PFORT_STAT stat, BOOL log_stat)
|
FORT_API void fort_stat_log_update(PFORT_STAT stat, BOOL log_stat)
|
||||||
{
|
{
|
||||||
|
const UCHAR old_stat_flags = fort_stat_flags_set(stat, FORT_STAT_LOG, log_stat);
|
||||||
|
|
||||||
|
if (log_stat || (old_stat_flags & FORT_STAT_LOG) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
KLOCK_QUEUE_HANDLE lock_queue;
|
KLOCK_QUEUE_HANDLE lock_queue;
|
||||||
KeAcquireInStackQueuedSpinLock(&stat->lock, &lock_queue);
|
KeAcquireInStackQueuedSpinLock(&stat->lock, &lock_queue);
|
||||||
|
|
||||||
const UCHAR old_stat_flags = fort_stat_flags_set(stat, FORT_STAT_LOG, log_stat);
|
|
||||||
|
|
||||||
if (!log_stat && (old_stat_flags & FORT_STAT_LOG) != 0) {
|
|
||||||
/* Clear the processes' active list */
|
/* Clear the processes' active list */
|
||||||
fort_stat_traf_flush(stat, /*proc_count=*/FORT_PROC_COUNT_MAX, /*out=*/NULL);
|
fort_stat_traf_flush(stat, /*proc_count=*/FORT_PROC_COUNT_MAX, /*out=*/NULL);
|
||||||
|
|
||||||
/* Clear the processes' logged flag */
|
/* Clear the processes' logged flag */
|
||||||
tommy_hashdyn_foreach_node(&stat->procs_map, &fort_stat_proc_unlog);
|
tommy_hashdyn_foreach_node(&stat->procs_map, &fort_stat_proc_unlog);
|
||||||
}
|
|
||||||
|
|
||||||
KeReleaseInStackQueuedSpinLock(&lock_queue);
|
KeReleaseInStackQueuedSpinLock(&lock_queue);
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,9 @@ FirewallConf::FirewallConf(Settings *settings, QObject *parent) :
|
|||||||
m_stopInetTraffic(false),
|
m_stopInetTraffic(false),
|
||||||
m_allowAllNew(false),
|
m_allowAllNew(false),
|
||||||
m_askToConnect(false),
|
m_askToConnect(false),
|
||||||
m_logBlocked(false),
|
|
||||||
m_logStat(false),
|
m_logStat(false),
|
||||||
m_logStatNoFilter(false),
|
m_logStatNoFilter(false),
|
||||||
|
m_logBlocked(false),
|
||||||
m_logAllowedIp(false),
|
m_logAllowedIp(false),
|
||||||
m_logBlockedIp(false),
|
m_logBlockedIp(false),
|
||||||
m_logAlertedBlockedIp(false),
|
m_logAlertedBlockedIp(false),
|
||||||
@ -70,17 +70,9 @@ void FirewallConf::setAskToConnect(bool askToConnect)
|
|||||||
m_askToConnect = askToConnect;
|
m_askToConnect = askToConnect;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FirewallConf::setLogBlocked(bool logBlocked)
|
|
||||||
{
|
|
||||||
m_logBlocked = logBlocked;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FirewallConf::setLogStat(bool logStat)
|
void FirewallConf::setLogStat(bool logStat)
|
||||||
{
|
{
|
||||||
if (m_logStat != logStat) {
|
|
||||||
m_logStat = logStat;
|
m_logStat = logStat;
|
||||||
emit logStatChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FirewallConf::setLogStatNoFilter(bool logStatNoFilter)
|
void FirewallConf::setLogStatNoFilter(bool logStatNoFilter)
|
||||||
@ -88,6 +80,11 @@ void FirewallConf::setLogStatNoFilter(bool logStatNoFilter)
|
|||||||
m_logStatNoFilter = logStatNoFilter;
|
m_logStatNoFilter = logStatNoFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FirewallConf::setLogBlocked(bool logBlocked)
|
||||||
|
{
|
||||||
|
m_logBlocked = logBlocked;
|
||||||
|
}
|
||||||
|
|
||||||
void FirewallConf::setLogAllowedIp(bool logAllowedIp)
|
void FirewallConf::setLogAllowedIp(bool logAllowedIp)
|
||||||
{
|
{
|
||||||
m_logAllowedIp = logAllowedIp;
|
m_logAllowedIp = logAllowedIp;
|
||||||
@ -335,9 +332,9 @@ void FirewallConf::copyFlags(const FirewallConf &o)
|
|||||||
m_allowAllNew = o.allowAllNew();
|
m_allowAllNew = o.allowAllNew();
|
||||||
m_askToConnect = o.askToConnect();
|
m_askToConnect = o.askToConnect();
|
||||||
|
|
||||||
m_logBlocked = o.logBlocked();
|
|
||||||
m_logStat = o.logStat();
|
m_logStat = o.logStat();
|
||||||
m_logStatNoFilter = o.logStatNoFilter();
|
m_logStatNoFilter = o.logStatNoFilter();
|
||||||
|
m_logBlocked = o.logBlocked();
|
||||||
|
|
||||||
m_logAllowedIp = o.logAllowedIp();
|
m_logAllowedIp = o.logAllowedIp();
|
||||||
m_logBlockedIp = o.logBlockedIp();
|
m_logBlockedIp = o.logBlockedIp();
|
||||||
@ -383,9 +380,9 @@ QVariant FirewallConf::flagsToVariant() const
|
|||||||
map["allowAllNew"] = allowAllNew();
|
map["allowAllNew"] = allowAllNew();
|
||||||
map["askToConnect"] = askToConnect();
|
map["askToConnect"] = askToConnect();
|
||||||
|
|
||||||
map["logBlocked"] = logBlocked();
|
|
||||||
map["logStat"] = logStat();
|
map["logStat"] = logStat();
|
||||||
map["logStatNoFilter"] = logStatNoFilter();
|
map["logStatNoFilter"] = logStatNoFilter();
|
||||||
|
map["logBlocked"] = logBlocked();
|
||||||
|
|
||||||
map["logAllowedIp"] = logAllowedIp();
|
map["logAllowedIp"] = logAllowedIp();
|
||||||
map["logBlockedIp"] = logBlockedIp();
|
map["logBlockedIp"] = logBlockedIp();
|
||||||
|
@ -64,15 +64,15 @@ public:
|
|||||||
bool askToConnect() const { return m_askToConnect; }
|
bool askToConnect() const { return m_askToConnect; }
|
||||||
void setAskToConnect(bool askToConnect);
|
void setAskToConnect(bool askToConnect);
|
||||||
|
|
||||||
bool logBlocked() const { return m_logBlocked; }
|
|
||||||
void setLogBlocked(bool logBlocked);
|
|
||||||
|
|
||||||
bool logStat() const { return m_logStat; }
|
bool logStat() const { return m_logStat; }
|
||||||
void setLogStat(bool logStat);
|
void setLogStat(bool logStat);
|
||||||
|
|
||||||
bool logStatNoFilter() const { return m_logStatNoFilter; }
|
bool logStatNoFilter() const { return m_logStatNoFilter; }
|
||||||
void setLogStatNoFilter(bool logStatNoFilter);
|
void setLogStatNoFilter(bool logStatNoFilter);
|
||||||
|
|
||||||
|
bool logBlocked() const { return m_logBlocked; }
|
||||||
|
void setLogBlocked(bool logBlocked);
|
||||||
|
|
||||||
bool logAllowedIp() const { return m_logAllowedIp; }
|
bool logAllowedIp() const { return m_logAllowedIp; }
|
||||||
void setLogAllowedIp(bool logAllowedIp);
|
void setLogAllowedIp(bool logAllowedIp);
|
||||||
|
|
||||||
@ -137,7 +137,6 @@ public:
|
|||||||
static uint editedFlagsFromVariant(const QVariant &v);
|
static uint editedFlagsFromVariant(const QVariant &v);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void logStatChanged();
|
|
||||||
void appGroupsChanged();
|
void appGroupsChanged();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
@ -181,9 +180,9 @@ private:
|
|||||||
uint m_allowAllNew : 1;
|
uint m_allowAllNew : 1;
|
||||||
uint m_askToConnect : 1;
|
uint m_askToConnect : 1;
|
||||||
|
|
||||||
uint m_logBlocked : 1;
|
|
||||||
uint m_logStat : 1;
|
uint m_logStat : 1;
|
||||||
uint m_logStatNoFilter : 1;
|
uint m_logStatNoFilter : 1;
|
||||||
|
uint m_logBlocked : 1;
|
||||||
|
|
||||||
uint m_logAllowedIp : 1;
|
uint m_logAllowedIp : 1;
|
||||||
uint m_logBlockedIp : 1;
|
uint m_logBlockedIp : 1;
|
||||||
|
@ -560,23 +560,6 @@ void ApplicationsPage::setupGroupLimitBufferSize()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApplicationsPage::setupGroupOptionsEnabled()
|
|
||||||
{
|
|
||||||
const auto refreshOptionsEnabled = [&] {
|
|
||||||
const bool logStat = conf()->logStat();
|
|
||||||
|
|
||||||
m_cbLogBlocked->setEnabled(logStat);
|
|
||||||
m_cbLogConn->setEnabled(logStat);
|
|
||||||
|
|
||||||
m_cscLimitIn->setEnabled(logStat);
|
|
||||||
m_cscLimitOut->setEnabled(logStat);
|
|
||||||
};
|
|
||||||
|
|
||||||
refreshOptionsEnabled();
|
|
||||||
|
|
||||||
connect(conf(), &FirewallConf::logStatChanged, this, refreshOptionsEnabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ApplicationsPage::setupBlockApps()
|
void ApplicationsPage::setupBlockApps()
|
||||||
{
|
{
|
||||||
m_blockApps = new AppsColumn();
|
m_blockApps = new AppsColumn();
|
||||||
|
@ -55,7 +55,6 @@ private:
|
|||||||
void setupGroupLimitLatency();
|
void setupGroupLimitLatency();
|
||||||
void setupGroupLimitPacketLoss();
|
void setupGroupLimitPacketLoss();
|
||||||
void setupGroupLimitBufferSize();
|
void setupGroupLimitBufferSize();
|
||||||
void setupGroupOptionsEnabled();
|
|
||||||
void setupBlockApps();
|
void setupBlockApps();
|
||||||
void setupAllowApps();
|
void setupAllowApps();
|
||||||
void setupSplitter();
|
void setupSplitter();
|
||||||
|
@ -313,9 +313,9 @@ void FortSettings::readConfIni(FirewallConf &conf) const
|
|||||||
conf.setStopInetTraffic(iniBool("stopInetTraffic"));
|
conf.setStopInetTraffic(iniBool("stopInetTraffic"));
|
||||||
conf.setAllowAllNew(iniBool("allowAllNew", true));
|
conf.setAllowAllNew(iniBool("allowAllNew", true));
|
||||||
conf.setAskToConnect(iniBool("askToConnect"));
|
conf.setAskToConnect(iniBool("askToConnect"));
|
||||||
conf.setLogBlocked(iniBool("logBlocked", true));
|
|
||||||
conf.setLogStat(iniBool("logStat", true));
|
conf.setLogStat(iniBool("logStat", true));
|
||||||
conf.setLogStatNoFilter(iniBool("logStatNoFilter", true));
|
conf.setLogStatNoFilter(iniBool("logStatNoFilter", true));
|
||||||
|
conf.setLogBlocked(iniBool("logBlocked", true));
|
||||||
conf.setLogAllowedIp(iniBool("logAllowedIp", true));
|
conf.setLogAllowedIp(iniBool("logAllowedIp", true));
|
||||||
conf.setLogBlockedIp(iniBool("logBlockedIp", true));
|
conf.setLogBlockedIp(iniBool("logBlockedIp", true));
|
||||||
conf.setLogAlertedBlockedIp(iniBool("logAlertedBlockedIp"));
|
conf.setLogAlertedBlockedIp(iniBool("logAlertedBlockedIp"));
|
||||||
@ -355,9 +355,9 @@ void FortSettings::writeConfIni(const FirewallConf &conf)
|
|||||||
setIniValue("stopInetTraffic", conf.stopInetTraffic());
|
setIniValue("stopInetTraffic", conf.stopInetTraffic());
|
||||||
setIniValue("allowAllNew", conf.allowAllNew());
|
setIniValue("allowAllNew", conf.allowAllNew());
|
||||||
setIniValue("askToConnect", conf.askToConnect());
|
setIniValue("askToConnect", conf.askToConnect());
|
||||||
setIniValue("logBlocked", conf.logBlocked());
|
|
||||||
setIniValue("logStat", conf.logStat());
|
setIniValue("logStat", conf.logStat());
|
||||||
setIniValue("logStatNoFilter", conf.logStatNoFilter());
|
setIniValue("logStatNoFilter", conf.logStatNoFilter());
|
||||||
|
setIniValue("logBlocked", conf.logBlocked());
|
||||||
setIniValue("logAllowedIp", conf.logAllowedIp());
|
setIniValue("logAllowedIp", conf.logAllowedIp());
|
||||||
setIniValue("logBlockedIp", conf.logBlockedIp());
|
setIniValue("logBlockedIp", conf.logBlockedIp());
|
||||||
setIniValue("logAlertedBlockedIp", conf.logAlertedBlockedIp());
|
setIniValue("logAlertedBlockedIp", conf.logAlertedBlockedIp());
|
||||||
|
@ -59,9 +59,9 @@ void writeConfFlags(const FirewallConf &conf, PFORT_CONF_FLAGS confFlags)
|
|||||||
confFlags->app_block_all = conf.appBlockAll();
|
confFlags->app_block_all = conf.appBlockAll();
|
||||||
confFlags->app_allow_all = conf.appAllowAll();
|
confFlags->app_allow_all = conf.appAllowAll();
|
||||||
|
|
||||||
confFlags->log_blocked = conf.logBlocked();
|
confFlags->log_stat = true; // always enabled for driver
|
||||||
confFlags->log_stat = conf.logStat();
|
|
||||||
confFlags->log_stat_no_filter = conf.logStatNoFilter();
|
confFlags->log_stat_no_filter = conf.logStatNoFilter();
|
||||||
|
confFlags->log_blocked = conf.logBlocked();
|
||||||
|
|
||||||
confFlags->log_allowed_ip = conf.logAllowedIp();
|
confFlags->log_allowed_ip = conf.logAllowedIp();
|
||||||
confFlags->log_blocked_ip = conf.logBlockedIp();
|
confFlags->log_blocked_ip = conf.logBlockedIp();
|
||||||
|
Loading…
Reference in New Issue
Block a user