11static std::string
expected =
"0 [errors-to-stderr]\n"
12 "1 [log] [/Library/Application Support/OpenVPN/log/ovpn3_yonan_net_p0977.log]\n"
13 "2 [config] [stdin]\n"
14 "3 [proto-force] [udp]\n"
15 "4 [management] [/Library/Application Support/OpenVPN/sock/ovpn-6QSai9SzvRcm.sock] [unix]\n"
16 "5 [setenv] [UV_ASCLI_VER] [2.0.18.200]\n"
17 "6 [setenv] [UV_PLAT_REL] [12.5.0]\n"
19 "8 [management-hold]\n"
20 "9 [management-client]\n"
21 "10 [management-query-passwords]\n"
22 "11 [management-query-remote]\n"
23 "12 [management-up-down]\n"
24 "13 [management-client-user] [root]\n"
25 "14 [allow-pull-fqdn]\n"
26 "15 [auth-retry] [interact]\n"
27 "16 [push-peer-info]\n"
28 "17 [setenv] [UV_ASCLI_VER] [2.0.18.200]\n"
29 "18 [setenv] [UV_PLAT_REL] [12.5.0]\n";
35 "--log",
"/Library/Application Support/OpenVPN/log/ovpn3_yonan_net_p0977.log",
37 "--proto-force",
"udp",
38 "--management",
"/Library/Application Support/OpenVPN/sock/ovpn-6QSai9SzvRcm.sock",
40 "--setenv",
"UV_ASCLI_VER",
"2.0.18.200",
41 "--setenv",
"UV_PLAT_REL",
"12.5.0",
44 "--management-client",
45 "--management-query-passwords",
46 "--management-query-remote",
47 "--management-up-down",
48 "--management-client-user",
"root",
50 "--auth-retry",
"interact",
52 "--setenv",
"UV_ASCLI_VER",
"2.0.18.200",
53 "--setenv",
"UV_PLAT_REL",
"12.5.0"
60 const_cast<char **
>(
input),
65static const char config[] =
"listen 1.2.3.4 1000 tcp 2\n"
66 "listen 0.0.0.0 4000 tcp 4*N\n"
67 "listen ::0 8000 tcp\n"
68 "listen sock/ststrack-%s.sock unix-stream\n";
76 "listen 1.2.3.4 1000 TCPv4 2\nlisten 0.0.0.0 4000 TCPv4 16\nlisten ::0 8000 TCPv6 1\nlisten sock/ststrack-%s.sock UnixStream 1\n",
79 std::string exp2(
"listen 1.2.3.4 1000 TCPv4 0\nlisten 1.2.3.4 1001 TCPv4 0\n");
81 for (
int i = 4000; i < 4016; i++)
82 exp2 +=
"listen 0.0.0.0 " + std::to_string(i) +
" TCPv4 0\n";
84 exp2 +=
"listen ::0 8000 TCPv6 0\n"
85 "listen sock/ststrack-0.sock UnixStream 0\n";
95 for (
unsigned int unit = 0; unit < 4; ++unit)
97 std::stringstream exp;
98 exp <<
"listen 1.2.3.4 " << 1000 + unit <<
" TCPv4 0\n";
100 exp <<
"listen 0.0.0.0 400" << unit <<
" TCPv4 0\n";
101 exp <<
"listen ::0 800" << unit <<
" TCPv6 0\n";
102 exp <<
"listen sock/ststrack-" << unit <<
".sock UnixStream 0\n";
113 ASSERT_EQ(
"auth-token SESS_ID_wJdhHMc7tr9GwbMNEW6b+A==", o.
render(0));
120 if (o.
ref(1) !=
"subnet")
121 throw option_error(
"only topology subnet supported");
130 ASSERT_EQ(
"5.5.8.4", ip);
131 ASSERT_EQ(
"255.255.252.0", mask);
136 const std::string opt_csv =
"explicit-exit-notify,topology subnet,route-delay 5 30,dhcp-pre-release,dhcp-renew,dhcp-release,route-metric 101,ping 5,ping-restart 40,redirect-gateway def1,redirect-gateway bypass-dhcp,redirect-gateway autolocal,route-gateway 5.5.8.1,dhcp-option DNS 172.16.0.23,register-dns,auth-token SESS_ID_wJdhHMc7tr9GwbMNEW6b+A==,comp-lzo no,ifconfig 5.5.8.4 255.255.252.0";
141 ASSERT_EQ(
"explicit-exit-notify\n"
150 "redirect-gateway def1\n"
151 "redirect-gateway bypass-dhcp\n"
152 "redirect-gateway autolocal\n"
153 "route-gateway 5.5.8.1\n"
154 "dhcp-option DNS 172.16.0.23\n"
156 "auth-token SESS_ID_wJdhHMc7tr9GwbMNEW6b+A==\n"
158 "ifconfig 5.5.8.4 255.255.252.0\n",
170 std::copy(list.begin(), list.end(), std::ostream_iterator<std::string>(s,
"\n"));
184 std::copy(list.begin(), list.end(), std::ostream_iterator<std::string>(s,
"\n"));
199 "cipher AES-256-CBC\n"
208 "key-method [ 11 ]\n"
224 OptionList::IndexMap::const_iterator e = olist.
map().find(elem);
225 ASSERT_TRUE(e != olist.
map().end());
231 csv_test(
"this,is,,a,\"foo,bar\",test");
232 space_test(R
"( this is a "foo \\ bar" test of something \"rather\" grt )", "this\nis\na\nfoo \\ bar\ntest\nof\nsomething\n\"rather\"\ngrt\n");
233 space_test(R
"(this is a te""st a "" b)", "this\nis\na\ntest\na\n\nb\n");
234 options_csv_test(
"V4,dev-type tun,link-mtu 1558,tun-mtu 1500,proto UDPv4,comp-lzo,keydir 1,cipher AES-256-CBC,auth SHA1,keysize 256,tls-auth,key-method 2,tls-client",
240 auto str =
"\"abc,def\",\'abc,def\',\"abc',def\",\'abc\"def\',\'abc\"";
243 std::copy(list.begin(), list.end(), std::ostream_iterator<std::string>(s,
"\n"));
244 ASSERT_EQ(
"\"abc,def\"\n"
static std::string validate(const std::string &ipstr, const TITLE &title, const Version required_version)
List expand_ports_by_n_threads(const size_t max_size) const
std::string to_string() const
List expand_ports_by_unit(const unsigned int unit) const
std::uint64_t get_bytes() const
static OptionList parse_from_argv_static(const std::vector< std::string > &argv)
const IndexMap & map() const
std::string render_map() const
static OptionList parse_from_csv_static(const std::string &str, Limits *lim)
void parse_from_csv(const std::string &str, Limits *lim)
const Option & get(const std::string &name) const
static OptionList parse_from_config_static(const std::string &str, Limits *lim)
std::string render(const unsigned int flags) const
void exact_args(const size_t n) const
void min_args(const size_t n) const
const std::string & ref(const size_t i) const
std::string render(const unsigned int flags) const
std::vector< std::string > from_argv(int argc, char *argv[], const bool skip_first)
os<< "Session Name: "<< tbc-> session_name<< '\n';os<< "Layer: "<< tbc-> layer str()<< '\n'
std::string getSortedString(const std::string &output)
static void extract_ifconfig(const OptionList &opt)
static void space_test(const std::string &str, const std::string &expected)
static void verify_topology(const OptionList &opt)
static std::string expected
static void csv_test(const std::string &str)
static void extract_auth_token(const OptionList &opt)
static const char config[]
static void options_csv_test(const std::string &str, const std::string &elem)
static const char * input[]