ebpf-blocker 1.0.0
XDP-based packet blocker using eBPF
Loading...
Searching...
No Matches
BlockerDB Class Reference

#include <db.h>

Public Member Functions

 BlockerDB (const std::string &path)
 
 ~BlockerDB ()
 
 BlockerDB (const BlockerDB &)=delete
 
BlockerDBoperator= (const BlockerDB &)=delete
 
 BlockerDB (BlockerDB &&)=delete
 
BlockerDBoperator= (BlockerDB &&)=delete
 
void Migrate ()
 
std::vector< BlockEntryGetWhitelist ()
 
std::vector< BlockEntryGetBlacklist ()
 
void UpdateLastBlockedAt (uint32_t ip)
 

Private Member Functions

std::vector< BlockEntryGetEntries (const std::string &table)
 

Private Attributes

sqlite3 * db_
 

Detailed Description

RAII-обёртка над SQLite3 для хранения белого и чёрного списков.

Управляет подключением к базе данных, создаёт таблицы при первом запуске и предоставляет методы для чтения и обновления записей.

Definition at line 41 of file db.h.

Constructor & Destructor Documentation

◆ BlockerDB() [1/3]

BlockerDB::BlockerDB ( const std::string & path)
explicit

Открывает (или создаёт) базу данных по указанному пути.

Parameters
[in]pathПуть к файлу SQLite-базы данных.
Exceptions
std::runtime_errorесли не удалось открыть БД.

Definition at line 71 of file db.cpp.

References db_.

◆ ~BlockerDB()

BlockerDB::~BlockerDB ( )

Definition at line 80 of file db.cpp.

References db_.

◆ BlockerDB() [2/3]

BlockerDB::BlockerDB ( const BlockerDB & )
delete

◆ BlockerDB() [3/3]

BlockerDB::BlockerDB ( BlockerDB && )
delete

Member Function Documentation

◆ GetBlacklist()

std::vector< BlockEntry > BlockerDB::GetBlacklist ( )

Возвращает все записи чёрного списка из базы данных.

Returns
Вектор записей BlockEntry.

Definition at line 198 of file db.cpp.

References GetEntries().

Referenced by main().

◆ GetEntries()

std::vector< BlockEntry > BlockerDB::GetEntries ( const std::string & table)
private

Обобщённый SELECT ip, comment из указанной таблицы.

Parameters
[in]tableИмя таблицы ("whitelist_ips" или "blocked_ips").
Returns
Вектор записей BlockEntry.

Definition at line 202 of file db.cpp.

References db_, and StepCallback().

Referenced by GetBlacklist(), and GetWhitelist().

◆ GetWhitelist()

std::vector< BlockEntry > BlockerDB::GetWhitelist ( )

Возвращает все записи белого списка из базы данных.

Returns
Вектор записей BlockEntry.

Definition at line 194 of file db.cpp.

References GetEntries().

Referenced by main().

◆ Migrate()

void BlockerDB::Migrate ( )

Создаёт таблицы, если они не существуют; применяет миграции схемы.

Включает WAL-режим журнала. Идемпотентна.

Exceptions
std::runtime_errorесли SQL миграции завершился ошибкой.

Definition at line 89 of file db.cpp.

References db_.

Referenced by main().

◆ operator=() [1/2]

BlockerDB & BlockerDB::operator= ( BlockerDB && )
delete

◆ operator=() [2/2]

BlockerDB & BlockerDB::operator= ( const BlockerDB & )
delete

◆ UpdateLastBlockedAt()

void BlockerDB::UpdateLastBlockedAt ( uint32_t ip)

Обновляет last_blocked_at текущим временем для указанного IP.

Также обновляет любую CIDR-запись, покрывающую этот IP.

Parameters
[in]ipIP-адрес источника в network byte order.

Definition at line 146 of file db.cpp.

References db_, IPToString(), and MatchesCIDR().

Referenced by main().

Field Documentation

◆ db_

sqlite3* BlockerDB::db_
private

Указатель на дескриптор SQLite3.

Definition at line 74 of file db.h.

Referenced by BlockerDB(), GetEntries(), Migrate(), UpdateLastBlockedAt(), and ~BlockerDB().


The documentation for this class was generated from the following files: