libDwmCredence-0.1.32
DwmCredenceServerConfig.hh
Go to the documentation of this file.
1//===========================================================================
2// @(#) $DwmPath$
3//===========================================================================
4// Copyright (c) Daniel W. McRobb 2022
5// All rights reserved.
6//
7// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions
9// are met:
10//
11// 1. Redistributions of source code must retain the above copyright
12// notice, this list of conditions and the following disclaimer.
13// 2. Redistributions in binary form must reproduce the above copyright
14// notice, this list of conditions and the following disclaimer in the
15// documentation and/or other materials provided with the distribution.
16// 3. The names of the authors and copyright holders may not be used to
17// endorse or promote products derived from this software without
18// specific prior written permission.
19//
20// IN NO EVENT SHALL DANIEL W. MCROBB BE LIABLE TO ANY PARTY FOR
21// DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
22// INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE,
23// EVEN IF DANIEL W. MCROBB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
24// DAMAGE.
25//
26// THE SOFTWARE PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND
27// DANIEL W. MCROBB HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
28// UPDATES, ENHANCEMENTS, OR MODIFICATIONS. DANIEL W. MCROBB MAKES NO
29// REPRESENTATIONS AND EXTENDS NO WARRANTIES OF ANY KIND, EITHER
30// IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
31// WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
32// OR THAT THE USE OF THIS SOFTWARE WILL NOT INFRINGE ANY PATENT,
33// TRADEMARK OR OTHER RIGHTS.
34//===========================================================================
35
36//---------------------------------------------------------------------------
40//---------------------------------------------------------------------------
41
42#ifndef _DWMCREDENCESERVERCONFIG_HH_
43#define _DWMCREDENCESERVERCONFIG_HH_
44
45#include <set>
46#include <boost/asio.hpp>
47
48#include "DwmIpPrefix.hh"
49
50namespace Dwm {
51
52 namespace Credence {
53
54 //------------------------------------------------------------------------
56 //------------------------------------------------------------------------
57 class ServerConfig
58 {
59 public:
60 bool ParseString(const std::string & configString);
61
62 //----------------------------------------------------------------------
64 //----------------------------------------------------------------------
65 const std::set<boost::asio::ip::tcp::endpoint> & Addresses() const;
66
67 //----------------------------------------------------------------------
69 //----------------------------------------------------------------------
70 const std::set<boost::asio::ip::tcp::endpoint> &
71 Addresses(const std::set<boost::asio::ip::tcp::endpoint> & addrs);
72
73 //----------------------------------------------------------------------
75 //----------------------------------------------------------------------
76 void AddAddress(const boost::asio::ip::tcp::endpoint & addr);
77
78 //----------------------------------------------------------------------
81 //----------------------------------------------------------------------
82 const std::string & KeyDirectory() const;
83
84 //----------------------------------------------------------------------
87 //----------------------------------------------------------------------
88 const std::string & KeyDirectory(const std::string & keyDir);
89
90 //----------------------------------------------------------------------
92 //----------------------------------------------------------------------
93 const std::set<IpPrefix> & AllowedClients() const;
94
95 //----------------------------------------------------------------------
97 //----------------------------------------------------------------------
98 std::set<IpPrefix> & AllowedClients();
99
100 //----------------------------------------------------------------------
102 //----------------------------------------------------------------------
103 void Clear();
104
105 //----------------------------------------------------------------------
107 //----------------------------------------------------------------------
108 friend std::ostream &
109 operator << (std::ostream & os, const ServerConfig & cfg);
110
111 private:
112 std::set<boost::asio::ip::tcp::endpoint> _serverAddresses;
113 std::string _keyDirectory;
114 std::set<IpPrefix> _allowedClients;
115 };
116
117
118 } // namespace Credence
119
120} // namespace Dwm
121
122#endif // _DWMCREDENCESERVERCONFIG_HH_