* Fix log file access, refactor configuration reading class * Remove bypass option in favor of failmode * fix loging, print enrolment info * Add EMAIL method * Add yubi authentication method * Add support for verification message * Add verification * Made changes in Vagrant's files to run different OSs * Switch off tests and packages demands to run PAM on Debian 11 * Add authentication totp * Changes in utils * Remove unnessesary interface * Changed vagrant files and postinstal script for Ubuntu 20 and 22 * Moved adding PasswordAuth to vagrant file from posinst * Added ubuntu 24.04 * Set version * Poprawki UI * WebSocket implementation * Add totp authentication method * fixup changes in utils * Remove unnessesary interface and simplify code * Remove "default" message handler from WebSocket class * Change display names of known authentication methods * Cleanup code in 'main' file * Add CheckApplication * Remove unused function * Changed vagrant files and postinstal script for Ubuntu 20 and 22 * Moved adding PasswordAuth to vagrant file from posinst * Added ubuntu 24.04 * Set version to 2.0.2 * Proper handle for missing configuration * Fixup use value of optional object * Add more vCPU/RAM to vagrant VM's + fix translations * Minor WS fixes, translations * Proper handler for Werification error * Make use of prompt parameter * Add max number of prompts * remove unused code, fir includes * Add Waiting status * Add check application status check --------- Co-authored-by: Madzik <m.w@linux.pl>
87 lines
3.2 KiB
C++
Executable File
87 lines
3.2 KiB
C++
Executable File
#pragma once
|
|
|
|
#include <memory_resource>
|
|
|
|
namespace rublon {
|
|
namespace memory {
|
|
struct default_memory_resource {
|
|
static inline std::pmr::memory_resource * _mr = std::pmr::get_default_resource();
|
|
};
|
|
|
|
inline void set_default_resource(std::pmr::memory_resource * memory_resource) {
|
|
default_memory_resource{}._mr = memory_resource;
|
|
}
|
|
|
|
inline std::pmr::memory_resource * default_resource() {
|
|
return default_memory_resource{}._mr;
|
|
}
|
|
|
|
template < std::size_t N >
|
|
class MonotonicStackResource : public std::pmr::monotonic_buffer_resource {
|
|
char _buffer[N];
|
|
|
|
public:
|
|
MonotonicStackResource() : std::pmr::monotonic_buffer_resource{_buffer, N, std::pmr::null_memory_resource()} {}
|
|
};
|
|
|
|
template < std::size_t N >
|
|
class UnsynchronizedStackResource : public std::pmr::unsynchronized_pool_resource {
|
|
MonotonicStackResource< N > _upstream;
|
|
|
|
public:
|
|
UnsynchronizedStackResource() : std::pmr::unsynchronized_pool_resource{&_upstream} {}
|
|
};
|
|
|
|
class MonotonicHeapResourceBase {
|
|
public:
|
|
std::pmr::memory_resource * _upstream{};
|
|
std::size_t _size{};
|
|
void * _buffer{nullptr};
|
|
|
|
MonotonicHeapResourceBase(std::size_t size) : _upstream{default_resource()}, _size{size}, _buffer{_upstream->allocate(size)} {}
|
|
|
|
~MonotonicHeapResourceBase() {
|
|
if(_buffer)
|
|
_upstream->deallocate(_buffer, _size);
|
|
}
|
|
};
|
|
|
|
template < std::size_t N >
|
|
class MonotonicHeapResource : MonotonicHeapResourceBase, public std::pmr::monotonic_buffer_resource {
|
|
public:
|
|
MonotonicHeapResource()
|
|
: MonotonicHeapResourceBase{N}, std::pmr::monotonic_buffer_resource{this->_buffer, this->_size, default_resource()} {}
|
|
};
|
|
|
|
template < std::size_t N >
|
|
class StrictMonotonicHeapResource : MonotonicHeapResourceBase, public std::pmr::monotonic_buffer_resource {
|
|
public:
|
|
StrictMonotonicHeapResource()
|
|
: MonotonicHeapResourceBase{N},
|
|
std::pmr::monotonic_buffer_resource{this->_buffer, this->_size, std::pmr::null_memory_resource()} {}
|
|
};
|
|
|
|
using StrictMonotonic_512_HeapResource = StrictMonotonicHeapResource< 512 >;
|
|
using StrictMonotonic_1k_HeapResource = StrictMonotonicHeapResource< 1 * 1024 >;
|
|
using StrictMonotonic_2k_HeapResource = StrictMonotonicHeapResource< 2 * 1024 >;
|
|
using StrictMonotonic_4k_HeapResource = StrictMonotonicHeapResource< 4 * 1024 >;
|
|
using StrictMonotonic_8k_HeapResource = StrictMonotonicHeapResource< 8 * 1024 >;
|
|
|
|
using Monotonic_1k_HeapResource = MonotonicHeapResource< 1 * 1024 >;
|
|
using Monotonic_2k_HeapResource = MonotonicHeapResource< 2 * 1024 >;
|
|
using Monotonic_4k_HeapResource = MonotonicHeapResource< 4 * 1024 >;
|
|
using Monotonic_8k_HeapResource = MonotonicHeapResource< 8 * 1024 >;
|
|
} // namespace memory
|
|
|
|
class RublonMemory {
|
|
public:
|
|
std::byte sharedMemory[32 * 1024] = {};
|
|
std::pmr::monotonic_buffer_resource mr{sharedMemory, std::size(sharedMemory)};
|
|
std::pmr::unsynchronized_pool_resource rublonPoolResource{&mr};
|
|
|
|
RublonMemory() {
|
|
std::pmr::set_default_resource(&rublonPoolResource);
|
|
}
|
|
};
|
|
} // namespace rublon
|