SNode.C
Loading...
Searching...
No Matches
tlslegacyclient.cpp
Go to the documentation of this file.
1/*
2 * SNode.C - A Slim Toolkit for Network Communication
3 * Copyright (C) Volker Christian <me@vchrist.at>
4 * 2020, 2021, 2022, 2023, 2024, 2025, 2026
5 */
6
8#include "core/SNodeC.h"
9#include "log/Logger.h"
10#include "net/in/stream/tls/SocketClient.h"
11
12int main(int argc, char* argv[]) {
13 core::SNodeC::init(argc, argv);
14
15 using SocketClient = net::in::stream::tls::SocketClient<apps::tlslegacy::TlsLegacyClientSocketContextFactory>;
16 const SocketClient client("tls-legacy-client");
17
18 client.getConfig()->setCaCert("/home/voc/projects/snodec/snode.c/certs/Volker_Christian_-_Web_CA.crt");
19
20 client.getConfig()->setCert("/home/voc/projects/snodec/snode.c/certs/snode.c_-_client.pem");
21 client.getConfig()->setCertKey("/home/voc/projects/snodec/snode.c/certs/snode.c_-_client.key.encrypted.pem");
23
25 client.getConfig()->setNoCloseNotifyIsEOF(true); // switch back to unencrypted exchange in case tls shutdown was successful
26
27 client.connect([instanceName = client.getConfig()->getInstanceName()](const SocketClient::SocketAddress& socketAddress,
28 const core::socket::State& state) {
29 if (state == core::socket::State::OK) {
30 VLOG(1) << instanceName << ": connected to " << socketAddress.toString();
31 } else if (state == core::socket::State::ERROR) {
32 LOG(ERROR) << instanceName << ": " << socketAddress.toString() << ": " << state.what();
33 }
34 });
35
36 return core::SNodeC::start();
37}
#define LOG(level)
Definition Logger.h:148
#define VLOG(level)
Definition Logger.h:164
static void init(int argc, char *argv[])
Definition SNodeC.cpp:54
static int start(const utils::Timeval &timeOut={LONG_MAX, 0})
Definition SNodeC.cpp:60
Config * getConfig() const
Definition Socket.hpp:65
bool operator==(const int &state) const
Definition State.cpp:74
static constexpr int ERROR
Definition State.h:57
std::string what() const
Definition State.cpp:114
static constexpr int OK
Definition State.h:55
const SocketClient & connect(const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
LogMessage(Level level, int verboseLevel=-1, bool withErrno=false)
Definition Logger.cpp:280
const std::string & getInstanceName() const
ConfigTls * setNoCloseNotifyIsEOF(bool noCloseNotifyIsEOF=true)
ConfigTls * setCertKey(const std::string &certKey)
Definition ConfigTls.cpp:63
ConfigTls * setCaCert(const std::string &caCert)
Definition ConfigTls.cpp:83
ConfigTls * setCert(const std::string &cert)
Definition ConfigTls.cpp:53
ConfigTls * setCaCertAcceptUnknown(bool set=true)
ConfigTls * setCertKeyPassword(const std::string &certKeyPassword)
Definition ConfigTls.cpp:73
std::string toString(bool expanded=true) const override
int main(int argc, char *argv[])
net::in::stream::SocketClient< core::socket::stream::tls::SocketConnector, net::in::stream::tls::config::ConfigSocketClient, SocketContextFactoryT, Args... > SocketClient