#include <ConnectionsPage.hpp>
Classes | |
| struct | DetailColumns |
| struct | AppColumns |
| struct | ComboCol |
| struct | AppStats |
| struct | DetailEvent |
Public Member Functions | |
| ConnectionsPage (UIServer &uiServer) | |
| ~ConnectionsPage () override | |
| void | onNewConnection (const ConnectionInfo &info, bool pending=true) |
| void | setLastVerdict (const std::string &verdict) |
| void | saveLog () const |
| void | loadLog () |
| void | clearLog () |
Static Public Member Functions | |
| static std::string | logPath () |
Static Public Attributes | |
| static constexpr uint64_t | kEstimatedBytesPerConn = 4096 |
Private Member Functions | |
| void | buildVerdictModel () |
| void | buildToolbar () |
| void | buildAppTreeView () |
| void | buildDetailTreeView () |
| void | buildSparkline () |
| void | showAppsView () |
| void | showDetailView (const std::string &app) |
| void | onAppActivated (const Gtk::TreeModel::Path &path, Gtk::TreeViewColumn *column) |
| void | onBackClicked () |
| void | onVerdictEdited (const Glib::ustring &pathStr, const Glib::ustring &newText) |
| void | onClear () |
| void | addOrUpdateDetailRow (const ConnectionInfo &info, const std::string &app_display, const std::string &argsStr, bool pending) |
| void | updateAppAggregate (const std::string &app_display) |
| void | pushDetailEvent (const std::string &app_display, const DetailEvent &ev) |
| void | populateDetailFromRing (const std::string &app_display) |
| bool | onSparkTick () |
| void | onSparkDraw (const Cairo::RefPtr< Cairo::Context > &cr, int width, int height) |
| std::string | resolveIconName (const std::string &app_display) |
| void | buildDesktopIndex () |
| std::string | currentTime () |
| ReplyAction | parseReplyAction (const Glib::ustring &text) const |
Static Private Member Functions | |
| static std::string | groupKeyFor (const std::string &app, const std::string &protocol, const std::string &host, const std::string &ip, uint32_t port) |
| static std::string | formatBytes (uint64_t n) |
| static std::string | formatEpochTime (int64_t epoch) |
| static std::string | jsonEscapeStr (const std::string &s) |
| static std::string | jsonFieldStr (const std::string &jsonjson, const std::string &key) |
| static uint32_t | jsonFieldUint (const std::string &jsonjson, const std::string &key) |
| static bool | jsonFieldBool (const std::string &jsonjson, const std::string &key) |
Private Attributes | |
| std::unordered_map< std::string, std::deque< DetailEvent > > | m_detailRings |
| std::deque< uint64_t > | m_sparkBuckets |
| uint64_t | m_currentBucket = 0 |
| sigc::connection | m_sparkTick |
| DetailColumns | m_columns |
| AppColumns | m_appColumns |
| ComboCol | m_comboCol |
| Glib::RefPtr< Gtk::ListStore > | m_verdictModel |
| Glib::RefPtr< Gtk::ListStore > | m_store |
| Glib::RefPtr< Gtk::ListStore > | m_appStore |
| Gtk::TreeView | m_treeView |
| Gtk::TreeView | m_appTreeView |
| Gtk::ScrolledWindow | m_scroll |
| Gtk::ScrolledWindow | m_appScroll |
| Gtk::Stack | m_stack |
| Gtk::Box | m_toolbar { Gtk::Orientation::HORIZONTAL, 6 } |
| Gtk::Button | m_clearBtn |
| Gtk::Button | m_backBtn |
| Gtk::Label | m_detailTitle |
| Gtk::SearchEntry | m_search |
| Gtk::Frame | m_sparkFrame |
| Gtk::Box | m_sparkBox { Gtk::Orientation::VERTICAL, 4 } |
| Gtk::Label | m_sparkLabel |
| Gtk::DrawingArea | m_sparkArea |
| std::unordered_map< std::string, Gtk::TreeModel::iterator > | m_groupIndex |
| std::unordered_map< std::string, AppStats > | m_appStats |
| std::unordered_map< std::string, Gtk::TreeModel::iterator > | m_appIndex |
| std::string | m_currentAppFilter |
| std::unordered_map< std::string, std::string > | m_iconCache |
| std::unordered_map< std::string, std::string > | m_desktopIndex |
| bool | m_desktopIndexBuilt = false |
| UIServer & | m_uiServer |
Static Private Attributes | |
| static constexpr size_t | kDetailRingMax = 500 |
| static constexpr int64_t | kRetentionSeconds = 7 * 24 * 3600 |
| static constexpr int | kSparkBucketMs = 500 |
| static constexpr int | kSparkBucketsMax = 120 |
Definition at line 40 of file ConnectionsPage.hpp.
|
explicit |
Definition at line 36 of file ConnectionsPage.cpp.
References _, buildAppTreeView(), buildDetailTreeView(), buildSparkline(), buildToolbar(), buildVerdictModel(), kSparkBucketMs, m_appScroll, m_appTreeView, m_scroll, m_sparkFrame, m_sparkTick, m_stack, m_toolbar, m_treeView, m_uiServer, onSparkTick(), and showAppsView().
|
override |
Definition at line 72 of file ConnectionsPage.cpp.
References m_sparkTick.
|
private |
Definition at line 633 of file ConnectionsPage.cpp.
References _, ConnectionsPage::DetailColumns::col_app, ConnectionsPage::DetailColumns::col_args, ConnectionsPage::DetailColumns::col_count, ConnectionsPage::DetailColumns::col_group_key, ConnectionsPage::DetailColumns::col_host, ConnectionsPage::DetailColumns::col_ip, ConnectionsPage::DetailColumns::col_pending, ConnectionsPage::DetailColumns::col_pid, ConnectionsPage::DetailColumns::col_port, ConnectionsPage::DetailColumns::col_protocol, ConnectionsPage::DetailColumns::col_src_ip, ConnectionsPage::DetailColumns::col_time, ConnectionsPage::DetailColumns::col_verdict, currentTime(), ConnectionInfo::dest_host, ConnectionInfo::dest_ip, ConnectionInfo::dest_port, groupKeyFor(), m_columns, m_groupIndex, m_store, ConnectionInfo::pid, ConnectionInfo::protocol, and ConnectionInfo::src_ip.
Referenced by onNewConnection().
|
private |
Definition at line 128 of file ConnectionsPage.cpp.
References _, ConnectionsPage::AppColumns::col_app, ConnectionsPage::AppColumns::col_bytes_raw, ConnectionsPage::AppColumns::col_bytes_str, ConnectionsPage::AppColumns::col_conn_count, ConnectionsPage::AppColumns::col_icon_name, ConnectionsPage::AppColumns::col_last_seen, ConnectionsPage::AppColumns::col_last_ts, m_appColumns, m_appStore, m_appTreeView, and onAppActivated().
Referenced by ConnectionsPage().
|
private |
Definition at line 353 of file ConnectionsPage.cpp.
References m_desktopIndex, and m_desktopIndexBuilt.
|
private |
Definition at line 199 of file ConnectionsPage.cpp.
References _, ConnectionsPage::DetailColumns::col_app, ConnectionsPage::DetailColumns::col_args, ConnectionsPage::DetailColumns::col_count, ConnectionsPage::DetailColumns::col_host, ConnectionsPage::DetailColumns::col_ip, ConnectionsPage::DetailColumns::col_pending, ConnectionsPage::DetailColumns::col_pid, ConnectionsPage::DetailColumns::col_port, ConnectionsPage::DetailColumns::col_protocol, ConnectionsPage::DetailColumns::col_src_ip, ConnectionsPage::DetailColumns::col_time, ConnectionsPage::DetailColumns::col_verdict, m_columns, m_store, m_treeView, m_verdictModel, and onVerdictEdited().
Referenced by ConnectionsPage().
|
private |
Definition at line 257 of file ConnectionsPage.cpp.
References _, kSparkBucketsMax, m_sparkArea, m_sparkBox, m_sparkBuckets, m_sparkFrame, m_sparkLabel, and onSparkDraw().
Referenced by ConnectionsPage().
|
private |
Definition at line 93 of file ConnectionsPage.cpp.
References _, m_backBtn, m_clearBtn, m_detailTitle, m_search, m_toolbar, onBackClicked(), and onClear().
Referenced by ConnectionsPage().
|
private |
Definition at line 80 of file ConnectionsPage.cpp.
References kVerdictOptions, m_comboCol, m_verdictModel, and ConnectionsPage::ComboCol::val.
Referenced by ConnectionsPage().
| void ConnectionsPage::clearLog | ( | ) |
Definition at line 1064 of file ConnectionsPage.cpp.
References logPath(), m_appIndex, m_appStats, m_appStore, m_detailRings, m_groupIndex, and m_store.
Referenced by onClear().
|
private |
Definition at line 847 of file ConnectionsPage.cpp.
Referenced by addOrUpdateDetailRow(), and onNewConnection().
|
staticprivate |
Definition at line 440 of file ConnectionsPage.cpp.
Referenced by loadLog(), onSparkTick(), and updateAppAggregate().
|
staticprivate |
Definition at line 456 of file ConnectionsPage.cpp.
Referenced by loadLog(), and updateAppAggregate().
|
staticprivate |
Definition at line 425 of file ConnectionsPage.cpp.
Referenced by addOrUpdateDetailRow().
|
staticprivate |
Definition at line 863 of file ConnectionsPage.cpp.
Referenced by saveLog().
|
staticprivate |
Definition at line 900 of file ConnectionsPage.cpp.
Referenced by loadLog().
|
staticprivate |
Definition at line 881 of file ConnectionsPage.cpp.
Referenced by loadLog().
|
staticprivate |
Definition at line 891 of file ConnectionsPage.cpp.
Referenced by loadLog().
| void ConnectionsPage::loadLog | ( | ) |
Definition at line 956 of file ConnectionsPage.cpp.
References ConnectionsPage::DetailEvent::args, ConnectionsPage::AppColumns::col_app, ConnectionsPage::AppColumns::col_bytes_raw, ConnectionsPage::AppColumns::col_bytes_str, ConnectionsPage::AppColumns::col_conn_count, ConnectionsPage::AppColumns::col_icon_name, ConnectionsPage::AppColumns::col_last_seen, ConnectionsPage::AppColumns::col_last_ts, ConnectionsPage::AppStats::conn_count, ConnectionsPage::DetailEvent::count, ConnectionsPage::AppStats::estimated_bytes, formatBytes(), formatEpochTime(), ConnectionsPage::DetailEvent::host, ConnectionsPage::DetailEvent::ip, jsonFieldBool(), jsonFieldStr(), jsonFieldUint(), kEstimatedBytesPerConn, kRetentionSeconds, ConnectionsPage::AppStats::last_seen_epoch, logPath(), m_appColumns, m_appIndex, m_appStats, m_appStore, ConnectionsPage::DetailEvent::pending, ConnectionsPage::DetailEvent::pid, ConnectionsPage::DetailEvent::port, ConnectionsPage::DetailEvent::protocol, pushDetailEvent(), resolveIconName(), ConnectionsPage::DetailEvent::src_ip, ConnectionsPage::DetailEvent::time, ConnectionsPage::DetailEvent::ts_epoch, and ConnectionsPage::DetailEvent::verdict.
|
static |
Definition at line 857 of file ConnectionsPage.cpp.
Referenced by clearLog(), loadLog(), and saveLog().
|
private |
Definition at line 340 of file ConnectionsPage.cpp.
References ConnectionsPage::AppColumns::col_app, m_appColumns, m_appStore, and showDetailView().
Referenced by buildAppTreeView().
|
private |
Definition at line 335 of file ConnectionsPage.cpp.
References showAppsView().
Referenced by buildToolbar().
|
private |
Definition at line 831 of file ConnectionsPage.cpp.
References clearLog(), m_stack, and showAppsView().
Referenced by buildToolbar().
| void ConnectionsPage::onNewConnection | ( | const ConnectionInfo & | info, |
| bool | pending = true ) |
Aggiunge una riga con tutti i dati eBPF. Se esiste gia' una riga con stesso (app, host/ip, port, proto) incrementa il contatore invece di creare un duplicato. Aggiorna anche i contatori aggregati per-app e lo sparkline.
Definition at line 471 of file ConnectionsPage.cpp.
References addOrUpdateDetailRow(), ConnectionInfo::app_args, ConnectionInfo::app_comm, ConnectionInfo::app_path, ConnectionsPage::DetailEvent::args, bsc::ui_util::best_connection_display_name(), ConnectionsPage::DetailEvent::count, currentTime(), ConnectionInfo::dest_host, ConnectionInfo::dest_ip, ConnectionInfo::dest_port, ConnectionsPage::DetailEvent::host, ConnectionsPage::DetailEvent::ip, kEstimatedBytesPerConn, m_currentAppFilter, m_currentBucket, m_stack, ConnectionsPage::DetailEvent::pending, ConnectionInfo::pid, ConnectionsPage::DetailEvent::pid, ConnectionsPage::DetailEvent::port, ConnectionInfo::protocol, ConnectionsPage::DetailEvent::protocol, pushDetailEvent(), ConnectionInfo::src_ip, ConnectionsPage::DetailEvent::src_ip, ConnectionsPage::DetailEvent::time, ConnectionsPage::DetailEvent::ts_epoch, updateAppAggregate(), and ConnectionsPage::DetailEvent::verdict.
Referenced by MainWindow::onDaemonAlert(), and MainWindow::onNewConnection().
|
private |
Definition at line 742 of file ConnectionsPage.cpp.
References m_sparkBuckets.
Referenced by buildSparkline().
|
private |
Definition at line 712 of file ConnectionsPage.cpp.
References _, formatBytes(), kSparkBucketMs, kSparkBucketsMax, m_currentBucket, m_sparkArea, m_sparkBuckets, and m_sparkLabel.
Referenced by ConnectionsPage().
|
private |
Definition at line 808 of file ConnectionsPage.cpp.
References ConnectionsPage::DetailColumns::col_pending, ConnectionsPage::DetailColumns::col_verdict, m_columns, m_store, m_uiServer, parseReplyAction(), and UIServer::sendReply().
Referenced by buildDetailTreeView().
|
private |
Definition at line 823 of file ConnectionsPage.cpp.
References ALLOW_ALWAYS, ALLOW_ONCE, DENY_ALWAYS, and DENY_ONCE.
Referenced by onVerdictEdited().
|
private |
Definition at line 582 of file ConnectionsPage.cpp.
References ConnectionsPage::DetailColumns::col_app, ConnectionsPage::DetailColumns::col_args, ConnectionsPage::DetailColumns::col_count, ConnectionsPage::DetailColumns::col_group_key, ConnectionsPage::DetailColumns::col_host, ConnectionsPage::DetailColumns::col_ip, ConnectionsPage::DetailColumns::col_pending, ConnectionsPage::DetailColumns::col_pid, ConnectionsPage::DetailColumns::col_port, ConnectionsPage::DetailColumns::col_protocol, ConnectionsPage::DetailColumns::col_src_ip, ConnectionsPage::DetailColumns::col_time, ConnectionsPage::DetailColumns::col_verdict, m_columns, m_detailRings, m_store, and m_treeView.
Referenced by showDetailView().
|
private |
Definition at line 568 of file ConnectionsPage.cpp.
References kDetailRingMax, and m_detailRings.
Referenced by loadLog(), and onNewConnection().
|
private |
Definition at line 413 of file ConnectionsPage.cpp.
References bsc::ui_util::best_app_icon_name(), bsc::ui_util::safe_local_process_icon_name(), and bsc::ui_util::safe_local_process_label().
Referenced by loadLog(), and updateAppAggregate().
| void ConnectionsPage::saveLog | ( | ) | const |
Definition at line 909 of file ConnectionsPage.cpp.
References ConnectionsPage::AppStats::conn_count, ConnectionsPage::AppStats::estimated_bytes, jsonEscapeStr(), ConnectionsPage::AppStats::last_seen_epoch, logPath(), m_appStats, and m_detailRings.
Referenced by MainWindow::onDaemonAlert(), MainWindow::onNewConnection(), MainWindow::onVerdict(), and MainWindow::~MainWindow().
| void ConnectionsPage::setLastVerdict | ( | const std::string & | verdict | ) |
Aggiorna il verdetto dell'ultima riga pending.
Definition at line 789 of file ConnectionsPage.cpp.
References ConnectionsPage::DetailColumns::col_group_key, ConnectionsPage::DetailColumns::col_pending, ConnectionsPage::DetailColumns::col_verdict, m_columns, m_groupIndex, and m_store.
Referenced by MainWindow::onDaemonAlert(), MainWindow::onNewConnection(), and MainWindow::onVerdict().
|
private |
Definition at line 287 of file ConnectionsPage.cpp.
References m_backBtn, m_currentAppFilter, m_detailTitle, m_groupIndex, m_stack, and m_store.
Referenced by ConnectionsPage(), onBackClicked(), and onClear().
|
private |
Definition at line 302 of file ConnectionsPage.cpp.
References _, m_backBtn, m_currentAppFilter, m_detailTitle, m_groupIndex, m_stack, m_store, m_treeView, and populateDetailFromRing().
Referenced by onAppActivated().
|
private |
Definition at line 531 of file ConnectionsPage.cpp.
References ConnectionsPage::AppColumns::col_app, ConnectionsPage::AppColumns::col_bytes_raw, ConnectionsPage::AppColumns::col_bytes_str, ConnectionsPage::AppColumns::col_conn_count, ConnectionsPage::AppColumns::col_icon_name, ConnectionsPage::AppColumns::col_last_seen, ConnectionsPage::AppColumns::col_last_ts, formatBytes(), formatEpochTime(), kEstimatedBytesPerConn, m_appColumns, m_appIndex, m_appStats, m_appStore, and resolveIconName().
Referenced by onNewConnection().
|
staticconstexprprivate |
Definition at line 153 of file ConnectionsPage.hpp.
Referenced by pushDetailEvent().
|
staticconstexpr |
Definition at line 66 of file ConnectionsPage.hpp.
Referenced by loadLog(), onNewConnection(), and updateAppAggregate().
|
staticconstexprprivate |
Definition at line 162 of file ConnectionsPage.hpp.
Referenced by loadLog().
|
staticconstexprprivate |
Definition at line 167 of file ConnectionsPage.hpp.
Referenced by ConnectionsPage(), and onSparkTick().
|
staticconstexprprivate |
Definition at line 168 of file ConnectionsPage.hpp.
Referenced by buildSparkline(), and onSparkTick().
|
private |
Definition at line 175 of file ConnectionsPage.hpp.
Referenced by buildAppTreeView(), loadLog(), onAppActivated(), and updateAppAggregate().
|
private |
Definition at line 206 of file ConnectionsPage.hpp.
Referenced by clearLog(), loadLog(), and updateAppAggregate().
|
private |
Definition at line 183 of file ConnectionsPage.hpp.
Referenced by ConnectionsPage().
|
private |
Definition at line 205 of file ConnectionsPage.hpp.
Referenced by clearLog(), loadLog(), saveLog(), and updateAppAggregate().
|
private |
Definition at line 179 of file ConnectionsPage.hpp.
Referenced by buildAppTreeView(), clearLog(), loadLog(), onAppActivated(), and updateAppAggregate().
|
private |
Definition at line 181 of file ConnectionsPage.hpp.
Referenced by buildAppTreeView(), and ConnectionsPage().
|
private |
Definition at line 191 of file ConnectionsPage.hpp.
Referenced by buildToolbar(), showAppsView(), and showDetailView().
|
private |
Definition at line 190 of file ConnectionsPage.hpp.
Referenced by buildToolbar().
|
private |
Definition at line 174 of file ConnectionsPage.hpp.
Referenced by addOrUpdateDetailRow(), buildDetailTreeView(), onVerdictEdited(), populateDetailFromRing(), and setLastVerdict().
|
private |
Definition at line 176 of file ConnectionsPage.hpp.
Referenced by buildVerdictModel().
|
private |
Definition at line 211 of file ConnectionsPage.hpp.
Referenced by onNewConnection(), showAppsView(), and showDetailView().
|
private |
Definition at line 170 of file ConnectionsPage.hpp.
Referenced by onNewConnection(), and onSparkTick().
|
private |
Definition at line 220 of file ConnectionsPage.hpp.
Referenced by buildDesktopIndex().
|
private |
Definition at line 221 of file ConnectionsPage.hpp.
Referenced by buildDesktopIndex().
|
private |
Definition at line 156 of file ConnectionsPage.hpp.
Referenced by clearLog(), populateDetailFromRing(), pushDetailEvent(), and saveLog().
|
private |
Definition at line 192 of file ConnectionsPage.hpp.
Referenced by buildToolbar(), showAppsView(), and showDetailView().
|
private |
Definition at line 202 of file ConnectionsPage.hpp.
Referenced by addOrUpdateDetailRow(), clearLog(), setLastVerdict(), showAppsView(), and showDetailView().
|
private |
Definition at line 215 of file ConnectionsPage.hpp.
|
private |
Definition at line 182 of file ConnectionsPage.hpp.
Referenced by ConnectionsPage().
|
private |
Definition at line 193 of file ConnectionsPage.hpp.
Referenced by buildToolbar().
|
private |
Definition at line 199 of file ConnectionsPage.hpp.
Referenced by buildSparkline(), and onSparkTick().
|
private |
Definition at line 197 of file ConnectionsPage.hpp.
Referenced by buildSparkline().
|
private |
Definition at line 169 of file ConnectionsPage.hpp.
Referenced by buildSparkline(), onSparkDraw(), and onSparkTick().
|
private |
Definition at line 196 of file ConnectionsPage.hpp.
Referenced by buildSparkline(), and ConnectionsPage().
|
private |
Definition at line 198 of file ConnectionsPage.hpp.
Referenced by buildSparkline(), and onSparkTick().
|
private |
Definition at line 171 of file ConnectionsPage.hpp.
Referenced by ConnectionsPage(), and ~ConnectionsPage().
|
private |
Definition at line 186 of file ConnectionsPage.hpp.
Referenced by ConnectionsPage(), onClear(), onNewConnection(), showAppsView(), and showDetailView().
|
private |
Definition at line 178 of file ConnectionsPage.hpp.
Referenced by addOrUpdateDetailRow(), buildDetailTreeView(), clearLog(), onVerdictEdited(), populateDetailFromRing(), setLastVerdict(), showAppsView(), and showDetailView().
|
private |
Definition at line 189 of file ConnectionsPage.hpp.
Referenced by buildToolbar(), and ConnectionsPage().
|
private |
Definition at line 180 of file ConnectionsPage.hpp.
Referenced by buildDetailTreeView(), ConnectionsPage(), populateDetailFromRing(), and showDetailView().
|
private |
Definition at line 223 of file ConnectionsPage.hpp.
Referenced by ConnectionsPage(), and onVerdictEdited().
|
private |
Definition at line 177 of file ConnectionsPage.hpp.
Referenced by buildDetailTreeView(), and buildVerdictModel().