Line data Source code
1 : #pragma once 2 : 3 : #include "envoy/extensions/transport_sockets/starttls/v3/starttls.pb.h" 4 : #include "envoy/registry/registry.h" 5 : #include "envoy/server/transport_socket_config.h" 6 : 7 : #include "source/common/config/utility.h" 8 : 9 : namespace Envoy { 10 : namespace Extensions { 11 : namespace TransportSockets { 12 : namespace StartTls { 13 : 14 : template <typename ConfigFactory, typename ConfigMessage> 15 : class BaseStartTlsSocketFactory : public ConfigFactory { 16 : public: 17 84 : std::string name() const override { return "envoy.transport_sockets.starttls"; } 18 : 19 4 : ProtobufTypes::MessagePtr createEmptyConfigProto() override { 20 4 : return std::make_unique<ConfigMessage>(); 21 4 : } 22 : 23 : protected: 24 0 : ConfigFactory& rawSocketConfigFactory() { 25 0 : return Config::Utility::getAndCheckFactoryByName<ConfigFactory>( 26 0 : "envoy.transport_sockets.raw_buffer"); 27 0 : } 28 : 29 0 : ConfigFactory& tlsSocketConfigFactory() { 30 0 : return Config::Utility::getAndCheckFactoryByName<ConfigFactory>("envoy.transport_sockets.tls"); 31 0 : } 32 : }; 33 : 34 : class DownstreamStartTlsSocketFactory 35 : : public BaseStartTlsSocketFactory< 36 : Server::Configuration::DownstreamTransportSocketConfigFactory, 37 : envoy::extensions::transport_sockets::starttls::v3::StartTlsConfig> { 38 : public: 39 : Network::DownstreamTransportSocketFactoryPtr 40 : createTransportSocketFactory(const Protobuf::Message& config, 41 : Server::Configuration::TransportSocketFactoryContext& context, 42 : const std::vector<std::string>& server_names) override; 43 : }; 44 : 45 : class UpstreamStartTlsSocketFactory 46 : : public BaseStartTlsSocketFactory< 47 : Server::Configuration::UpstreamTransportSocketConfigFactory, 48 : envoy::extensions::transport_sockets::starttls::v3::UpstreamStartTlsConfig> { 49 : public: 50 : Network::UpstreamTransportSocketFactoryPtr createTransportSocketFactory( 51 : const Protobuf::Message& config, 52 : Server::Configuration::TransportSocketFactoryContext& context) override; 53 : }; 54 : 55 : DECLARE_FACTORY(DownstreamStartTlsSocketFactory); 56 : DECLARE_FACTORY(UpstreamStartTlsSocketFactory); 57 : 58 : } // namespace StartTls 59 : } // namespace TransportSockets 60 : } // namespace Extensions 61 : } // namespace Envoy