#pragma once #include #include #include struct Settings { std::string host; std::uint16_t service; std::string password; std::string username; std::string realname; std::string nickname; std::string sasl_mechanism; std::string sasl_authcid; std::string sasl_authzid; std::string sasl_password; std::string sasl_key_file; std::string sasl_key_password; std::string tls_hostname; std::string tls_cert_file; std::string tls_key_file; std::string tls_key_password; std::string challenge_username; std::string challenge_key_file; std::string challenge_key_password; bool use_tls; static auto from_stream(std::istream &in) -> Settings; }; auto configure_sasl(const Settings &settings) -> std::unique_ptr;