Skip to content
API Documentation
BastionGuard™
UIClient.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
9#include "bsc/rule/Rule.hpp"
11
12#include <cstdint>
13#include <functional>
14#include <memory>
15#include <optional>
16#include <string>
17#include <vector>
18
19namespace bsc::ui {
20
22 std::uint64_t id{0};
23 std::string type;
24 std::string data;
25 std::vector<bsc::rule::Rule> rules;
26};
27
28/**
29 * Client Unix-socket verso il server della UI. Sostituisce la precedente
30 * implementazione gRPC. Gestisce:
31 * - thread di lettura frame che smista pong / notification / ask_rule_reply
32 * - scrittore serializzato via mutex
33 * - reconnector che riprova finche' il socket non e' disponibile
34 */
35class UIClient {
36public:
37 explicit UIClient(std::string socket_uri);
39
40 UIClient(const UIClient&) = delete;
41 UIClient& operator=(const UIClient&) = delete;
42
43 void start();
44 void stop();
45 bool is_connected() const noexcept;
46
47 std::optional<bsc::rule::Rule> ask_rule(const bsc::model::Connection& conn);
48 bool ping(const bsc::stats::Statistics& stats);
49 bool post_alert(const std::string& text);
50 bool post_connection_alert(const bsc::model::Connection& conn,
51 const std::string& action,
52 const std::string& rule_name = {});
53
54 void set_notification_handler(std::function<void(const NotificationEvent&)> cb);
55
56private:
57 class Impl;
58 std::unique_ptr<Impl> impl_;
59};
60
61} // namespace bsc::ui
bool post_alert(const std::string &text)
Definition UIClient.cpp:456
void set_notification_handler(std::function< void(const NotificationEvent &)> cb)
Definition UIClient.cpp:384
std::unique_ptr< Impl > impl_
Definition UIClient.hpp:58
bool post_connection_alert(const bsc::model::Connection &conn, const std::string &action, const std::string &rule_name={})
Definition UIClient.cpp:467
bool ping(const bsc::stats::Statistics &stats)
Definition UIClient.cpp:436
UIClient & operator=(const UIClient &)=delete
UIClient(std::string socket_uri)
Definition UIClient.cpp:372
std::optional< bsc::rule::Rule > ask_rule(const bsc::model::Connection &conn)
Definition UIClient.cpp:389
UIClient(const UIClient &)=delete
bool is_connected() const noexcept
Definition UIClient.cpp:380
Definition Wire.hpp:41
std::vector< bsc::rule::Rule > rules
Definition UIClient.hpp:25