libsshpp v0.1.7
Modern C++17 wrapper for libssh
Loading...
Searching...
No Matches
library.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later
2#pragma once
3
4#include <sshpp/config.hpp>
5
6#include <sshpp/export.hpp>
7#include <sshpp/error.hpp>
8
9#include <functional>
10#include <string>
11#include <vector>
12
13namespace sshpp {
14
15enum class LogLevel { none = 0, warning, info, debug, trace };
16
17struct LogRecord {
19 const char* function;
20 std::string message;
21};
22
23using LogCallback = std::function<void(const LogRecord&)>;
24
25struct Features {
26 std::string libssh_version;
28 bool zlib = false;
29 bool gssapi = false;
30 bool sftp = false;
31 bool server = false;
32 bool sftp_aio = false;
33 bool control_master = false;
34 bool channel_exit_state = false;
35 std::vector<std::string> ciphers, kex, macs, public_key_algorithms;
36};
37
41class SSHPP_API Library {
42public:
43 struct Config {
44 bool install_threading_callbacks = true;
45 LogLevel log_level = LogLevel::none;
46 LogCallback log_callback{};
47 };
48
49 Library();
50 explicit Library(const Config&);
51 ~Library();
52 Library(const Library&);
53 Library& operator=(const Library&);
54 Library(Library&&) noexcept;
55 Library& operator=(Library&&) noexcept;
56
57 static bool initialized() noexcept;
58 static Features features();
59 static std::string version_string();
60
61 static void set_log_level(LogLevel);
62 static LogLevel log_level() noexcept;
63 static void set_log_callback(LogCallback);
64
65 using DestructorErrorHandler = std::function<void(const ErrorInfo&)>;
66 static void set_destructor_error_handler(DestructorErrorHandler);
67
70 static void report_destructor_error(ErrorInfo) noexcept;
71
72private:
73 bool owns_ = false;
74};
75
76} // namespace sshpp
77
78#if SSHPP_HEADER_ONLY
80#endif
Definition library.hpp:41
std::function< void(const ErrorInfo &)> DestructorErrorHandler
Definition library.hpp:65
Definition auth.hpp:18
LogLevel
Definition library.hpp:15
std::function< void(const LogRecord &)> LogCallback
Definition library.hpp:23
Definition error.hpp:110
Definition error.hpp:119
Definition library.hpp:25
bool sftp_aio
Definition library.hpp:32
std::string libssh_version
Definition library.hpp:26
bool sftp
Definition library.hpp:30
bool gssapi
Definition library.hpp:29
bool zlib
Definition library.hpp:28
std::vector< std::string > kex
Definition library.hpp:35
int libssh_version_int
Definition library.hpp:27
bool control_master
Definition library.hpp:33
std::vector< std::string > public_key_algorithms
Definition library.hpp:35
bool channel_exit_state
Definition library.hpp:34
std::vector< std::string > macs
Definition library.hpp:35
std::vector< std::string > ciphers
Definition library.hpp:35
bool server
Definition library.hpp:31
Definition library.hpp:43
Definition library.hpp:17
std::string message
Definition library.hpp:20
LogLevel level
Definition library.hpp:18
const char * function
Definition library.hpp:19