1f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/* 2f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * Copyright 2007 The WebRTC Project Authors. All rights reserved. 3f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * 4f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * Use of this source code is governed by a BSD-style license 5f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 6f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 7f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * in the file PATENTS. All contributing project authors may 8f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org */ 10f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 11f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#ifndef WEBRTC_BASE_SSLSOCKETFACTORY_H__ 12f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define WEBRTC_BASE_SSLSOCKETFACTORY_H__ 13f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 14f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/proxyinfo.h" 15f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/socketserver.h" 16f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 17f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgnamespace rtc { 18f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 19f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/////////////////////////////////////////////////////////////////////////////// 20f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// SslSocketFactory 21f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/////////////////////////////////////////////////////////////////////////////// 22f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 23f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass SslSocketFactory : public SocketFactory { 24f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 2567186fe00cc68cbe03aa66d17fb4962458ca96d2kwiberg@webrtc.org SslSocketFactory(SocketFactory* factory, const std::string& user_agent); 2667186fe00cc68cbe03aa66d17fb4962458ca96d2kwiberg@webrtc.org ~SslSocketFactory() override; 27f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 28f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org void SetAutoDetectProxy() { 29f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org autodetect_proxy_ = true; 30f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org } 31f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org void SetForceConnect(bool force) { 32f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org force_connect_ = force; 33f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org } 34f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org void SetProxy(const ProxyInfo& proxy) { 35f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org autodetect_proxy_ = false; 36f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org proxy_ = proxy; 37f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org } 38f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org bool autodetect_proxy() const { return autodetect_proxy_; } 39f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org const ProxyInfo& proxy() const { return proxy_; } 40f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 41f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org void UseSSL(const char* hostname) { hostname_ = hostname; } 42f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org void DisableSSL() { hostname_.clear(); } 43f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org void SetIgnoreBadCert(bool ignore) { ignore_bad_cert_ = ignore; } 44f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org bool ignore_bad_cert() const { return ignore_bad_cert_; } 45f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 46f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org void SetLogging(LoggingSeverity level, const std::string& label, 47f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org bool binary_mode = false) { 48f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org logging_level_ = level; 49f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org logging_label_ = label; 50f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org binary_mode_ = binary_mode; 51f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org } 52f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 53f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org // SocketFactory Interface 5467186fe00cc68cbe03aa66d17fb4962458ca96d2kwiberg@webrtc.org Socket* CreateSocket(int type) override; 5567186fe00cc68cbe03aa66d17fb4962458ca96d2kwiberg@webrtc.org Socket* CreateSocket(int family, int type) override; 56f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 5767186fe00cc68cbe03aa66d17fb4962458ca96d2kwiberg@webrtc.org AsyncSocket* CreateAsyncSocket(int type) override; 5867186fe00cc68cbe03aa66d17fb4962458ca96d2kwiberg@webrtc.org AsyncSocket* CreateAsyncSocket(int family, int type) override; 59f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 60f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 61f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org friend class ProxySocketAdapter; 62f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org AsyncSocket* CreateProxySocket(const ProxyInfo& proxy, int family, int type); 63f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 64f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketFactory* factory_; 65f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org std::string agent_; 66f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org bool autodetect_proxy_, force_connect_; 67f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org ProxyInfo proxy_; 68f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org std::string hostname_, logging_label_; 69f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org LoggingSeverity logging_level_; 70f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org bool binary_mode_; 71f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org bool ignore_bad_cert_; 72f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 73f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 74f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/////////////////////////////////////////////////////////////////////////////// 75f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 76f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} // namespace rtc 77f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 78f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#endif // WEBRTC_BASE_SSLSOCKETFACTORY_H__ 79