From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- src/seastar/demos/tls_echo_server_demo.cc | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/seastar/demos/tls_echo_server_demo.cc (limited to 'src/seastar/demos/tls_echo_server_demo.cc') diff --git a/src/seastar/demos/tls_echo_server_demo.cc b/src/seastar/demos/tls_echo_server_demo.cc new file mode 100644 index 000000000..222412019 --- /dev/null +++ b/src/seastar/demos/tls_echo_server_demo.cc @@ -0,0 +1,67 @@ +/* + * This file is open source software, licensed to you under the terms + * of the Apache License, Version 2.0 (the "License"). See the NOTICE file + * distributed with this work for additional information regarding copyright + * ownership. 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. + */ +/* + * Copyright 2015 Cloudius Systems + */ +#include +#include +#include +#include +#include +#include "tls_echo_server.hh" + +using namespace seastar; +namespace bpo = boost::program_options; + + +int main(int ac, char** av) { + app_template app; + app.add_options() + ("port", bpo::value()->default_value(10000), "Server port") + ("address", bpo::value()->default_value("127.0.0.1"), "Server address") + ("cert,c", bpo::value()->required(), "Server certificate file") + ("key,k", bpo::value()->required(), "Certificate key") + ("verbose,v", bpo::value()->default_value(false)->implicit_value(true), "Verbose") + ; + return app.run_deprecated(ac, av, [&] { + auto&& config = app.configuration(); + uint16_t port = config["port"].as(); + auto crt = config["cert"].as(); + auto key = config["key"].as(); + auto addr = config["address"].as(); + auto verbose = config["verbose"].as(); + + std::cout << "Starting..." << std::endl; + return net::dns::resolve_name(addr).then([=](net::inet_address a) { + ipv4_addr ia(a, port); + + auto server = ::make_shared>(); + return server->start(verbose).then([=]() { + return server->invoke_on_all(&echoserver::listen, socket_address(ia), sstring(crt), sstring(key), tls::client_auth::NONE); + }).handle_exception([=](auto e) { + std::cerr << "Error: " << e << std::endl; + engine().exit(1); + }).then([=] { + std::cout << "TLS echo server running at " << addr << ":" << port << std::endl; + engine().at_exit([server] { + return server->stop().finally([server] {}); + }); + }); + }); + }); +} -- cgit v1.2.3