libsshpp v0.1.7
Modern C++17 wrapper for libssh
Loading...
Searching...
No Matches
message.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later
2//
3// Message-style server API. See docs/design/08-api-server.md §8.5. For the
4// event-driven callback style (§8.6), see <sshpp/server/handlers.hpp>.
5#pragma once
6
7#include <sshpp/config.hpp>
8
9#include <sshpp/channel.hpp>
11#include <sshpp/export.hpp>
12#include <sshpp/key.hpp>
13#include <sshpp/result.hpp>
14#include <sshpp/types.hpp>
15
16#include <string_view>
17#include <utility>
18
19namespace sshpp::server {
20
21class Session;
22
27enum class PublicKeyState { none, valid, wrong };
28
33class SSHPP_API Message {
34public:
35 Message() = default;
36 ~Message();
37 Message(Message&&) noexcept;
38 Message& operator=(Message&&) noexcept;
39 Message(const Message&) = delete;
40
41 explicit operator bool() const noexcept { return native_ != nullptr; }
42
43 MessageType type() const noexcept;
44 AuthSubtype auth_subtype() const noexcept;
45 ChannelOpenSubtype channel_open_subtype() const noexcept;
46 ChannelRequestSubtype channel_request_subtype() const noexcept;
47
48 // ---- auth accessors ---------------------------------------------------
49 std::string_view auth_user() const noexcept;
50 SecureString auth_password() const;
51 PublicKeyState auth_public_key_state() const noexcept;
53 Key auth_public_key() const;
54
55 Result<void> try_reply_auth_success();
56 Result<void> try_reply_auth_failure(bool partial = false);
58 Result<void> try_reply_auth_pk_ok();
59 Result<void> try_reply_default();
60
61 // ---- channel open ---------------------------------------------------------
63 Result<Channel> try_accept_channel_open();
64
65 // ---- channel request ---------------------------------------------------------
66 std::string_view exec_command() const noexcept;
67 std::string_view subsystem_name() const noexcept;
68 std::pair<std::string_view, std::string_view> env_pair() const noexcept;
69
70 Result<void> try_reply_success();
71 Result<void> try_reply_failure();
72
73private:
74 friend class Session;
75 Message(native_message n, Session& session) noexcept : native_(n), session_(&session) {}
76
77 native_message native_ = nullptr;
78 Session* session_ = nullptr;
79 bool replied_ = false;
80};
81
82} // namespace sshpp::server
83
84#if SSHPP_HEADER_ONLY
86#endif
Definition channel.hpp:36
Definition key.hpp:59
Definition result.hpp:16
Definition types.hpp:132
Definition message.hpp:33
One accepted server-side connection. See docs/design/08 §8.4.
Definition server_session.hpp:32
Definition server_bind.ipp:15
MessageType
Definition message.hpp:23
ChannelRequestSubtype
Definition message.hpp:26
PublicKeyState
Definition message.hpp:27
AuthSubtype
Definition message.hpp:24
ChannelOpenSubtype
Definition message.hpp:25
::ssh_message_struct * native_message
Definition native_fwd.hpp:29
Definition error.hpp:110