-
Notifications
You must be signed in to change notification settings - Fork 72
/
Copy pathwwivd_non_http.h
70 lines (59 loc) · 2.91 KB
/
wwivd_non_http.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**************************************************************************/
/* */
/* WWIV BBS Software */
/* Copyright (C)2017-2022, WWIV Software Services */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
/* You may obtain a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, */
/* software distributed under the License is distributed on an */
/* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, */
/* either express or implied. See the License for the specific */
/* language governing permissions and limitations under the License. */
/**************************************************************************/
#ifndef INCLUDED_WWIVD_WWIVD_NON_HTTP_H
#define INCLUDED_WWIVD_WWIVD_NON_HTTP_H
#include "core/socket_connection.h"
#include "sdk/wwivd_config.h"
#include "wwivd/connection_data.h"
#include "wwivd/node_manager.h"
#include <filesystem>
#include <map>
#include <memory>
#include <utility>
#include <vector>
namespace wwiv::wwivd {
std::string to_string(const wwiv::sdk::wwivd_matrix_entry_t& e);
std::string to_string(const std::vector<wwiv::sdk::wwivd_matrix_entry_t>& elements);
std::filesystem::path node_file(const wwiv::sdk::Config& config, ConnectionType ct,
int node_number);
std::string CreateCommandLine(const std::string& tmpl, std::map<char, std::string> params);
class ConnectionHandler {
public:
enum class BlockedConnectionAction { ALLOW, DENY };
enum class MailerModeResult { ALLOW, DENY };
struct BlockedConnectionResult {
BlockedConnectionResult(const BlockedConnectionAction& a, std::string r)
: action(a), remote_peer(std::move(r)) {}
BlockedConnectionAction action{BlockedConnectionAction::ALLOW};
std::string remote_peer;
};
ConnectionHandler() = delete;
ConnectionHandler(ConnectionData d, wwiv::core::accepted_socket_t a);
void HandleConnection();
void HandleBinkPConnection();
private:
MailerModeResult DoMailerMode();
BlockedConnectionResult CheckForBlockedConnection();
wwiv::sdk::wwivd_matrix_entry_t DoMatrixLogon(const wwiv::sdk::wwivd_config_t& c);
ConnectionData data;
wwiv::core::accepted_socket_t r;
};
void HandleConnection(std::unique_ptr<ConnectionHandler> h);
void HandleBinkPConnection(std::unique_ptr<ConnectionHandler> h);
} // namespace
#endif