Skip to content
API Documentation
BastionGuard™
AppsPage.hpp
Go to the documentation of this file.
1/*
2 * BastionGuard™ Secure Connection
3 * Copyright (C) 2025–2026 Calogero Scarnà
4 * GPL-3.0
5 */
6
7#pragma once
8#include <gtkmm.h>
9
10#include <string>
11#include <unordered_map>
12
13#include "../ipc/UIServer.hpp"
14
15/**
16 * Pagina che elenca tutte le applicazioni che hanno aperto connessioni nella
17 * sessione corrente, con conteggio + ultimo host contattato + timestamp.
18 *
19 * Identita' applicazione: nome reale del processo dal kernel
20 * (/proc/<pid>/comm). Nessuna scansione dei file .desktop.
21 *
22 * Aggregazione per process_path (binario unico). Aggiornata a O(1) tramite
23 * mappa path -> iterator nel ListStore.
24 */
25class AppsPage : public Gtk::Box
26{
27public:
28 AppsPage();
29
30 /** Registra una connessione nella vista per-app. */
31 void noteConnection(const ConnectionInfo& info, const std::string& verdict);
32
33 /** Azzera la lista. */
34 void clear();
35
36private:
37 struct Columns : public Gtk::TreeModel::ColumnRecord {
39 add(col_name);
40 add(col_path);
41 add(col_count);
42 add(col_last_host);
44 add(col_last_time);
45 }
46 Gtk::TreeModelColumn<Glib::ustring> col_name; // nome reale processo
47 Gtk::TreeModelColumn<Glib::ustring> col_path; // path completo binario
48 Gtk::TreeModelColumn<uint32_t> col_count;
49 Gtk::TreeModelColumn<Glib::ustring> col_last_host;
50 Gtk::TreeModelColumn<Glib::ustring> col_last_verdict;
51 Gtk::TreeModelColumn<Glib::ustring> col_last_time;
52 };
53
55 Glib::RefPtr<Gtk::ListStore> m_store;
56 Gtk::TreeView m_treeView;
57 Gtk::ScrolledWindow m_scroll;
58 Gtk::Label m_headerLabel;
59 Gtk::Button m_clearBtn;
60
61 // path → iterator nel ListStore, per update O(1) di righe esistenti
62 std::unordered_map<std::string, Gtk::TreeModel::iterator> m_appRows;
63
64 void buildUI();
65 static std::string currentTimeString();
66 static std::string displayNameFor(const ConnectionInfo& info);
67};
Gtk::Button m_clearBtn
Definition AppsPage.hpp:59
static std::string currentTimeString()
Definition AppsPage.cpp:93
Gtk::ScrolledWindow m_scroll
Definition AppsPage.hpp:57
void clear()
Definition AppsPage.cpp:150
Glib::RefPtr< Gtk::ListStore > m_store
Definition AppsPage.hpp:55
Gtk::Label m_headerLabel
Definition AppsPage.hpp:58
std::unordered_map< std::string, Gtk::TreeModel::iterator > m_appRows
Definition AppsPage.hpp:62
static std::string displayNameFor(const ConnectionInfo &info)
Definition AppsPage.cpp:103
Gtk::TreeView m_treeView
Definition AppsPage.hpp:56
void noteConnection(const ConnectionInfo &info, const std::string &verdict)
Definition AppsPage.cpp:109
Columns m_columns
Definition AppsPage.hpp:54
void buildUI()
Definition AppsPage.cpp:27
Gtk::TreeModelColumn< Glib::ustring > col_name
Definition AppsPage.hpp:46
Gtk::TreeModelColumn< Glib::ustring > col_last_host
Definition AppsPage.hpp:49
Gtk::TreeModelColumn< Glib::ustring > col_last_verdict
Definition AppsPage.hpp:50
Gtk::TreeModelColumn< Glib::ustring > col_last_time
Definition AppsPage.hpp:51
Gtk::TreeModelColumn< Glib::ustring > col_path
Definition AppsPage.hpp:47
Gtk::TreeModelColumn< uint32_t > col_count
Definition AppsPage.hpp:48