libzypp  17.7.0
TransferSettings.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <sstream>
3 
4 #include "zypp/base/String.h"
5 #include "zypp/base/Logger.h"
6 #include "zypp/base/WatchFile.h"
9 #include "zypp/ExternalProgram.h"
11 #include "zypp/ZConfig.h"
12 
13 using namespace std;
14 
15 #define CURL_BINARY "/usr/bin/curl"
16 
17 namespace zypp
18 {
19 namespace media
20 {
21 
23 {
24 public:
25  Impl()
26  : _useproxy(false)
27  , _timeout(0)
28  , _connect_timeout(0)
29  , _maxConcurrentConnections(ZConfig::instance().download_max_concurrent_connections())
30  , _minDownloadSpeed(ZConfig::instance().download_min_download_speed())
31  , _maxDownloadSpeed(ZConfig::instance().download_max_download_speed())
32  , _maxSilentTries(ZConfig::instance().download_max_silent_tries())
33  , _verify_host(false)
34  , _verify_peer(false)
35  , _ca_path("/etc/ssl/certs")
36  , _head_requests_allowed(true)
37  {}
38 
39  virtual ~Impl()
40  {}
41 
43  static shared_ptr<Impl> nullimpl()
44  {
45  static shared_ptr<Impl> _nullimpl( new Impl );
46  return _nullimpl;
47  }
48 
49 private:
50  friend Impl * rwcowClone<Impl>( const Impl * rhs );
52  Impl * clone() const
53  { return new Impl( *this ); }
54 
55 public:
56  vector<string> _headers;
57  string _useragent;
58  string _username;
59  string _password;
60  bool _useproxy;
61  string _proxy;
64  string _authtype;
65  long _timeout;
69 
74 
80 
81  // workarounds
83 };
84 
85 TransferSettings::TransferSettings()
86  : _impl(new TransferSettings::Impl())
87 {
88 
89 }
90 
92 {
94 }
95 
96 void TransferSettings::addHeader( const std::string &header )
97 {
98  if ( ! header.empty() )
99  _impl->_headers.push_back(header);
100 }
101 
102 TransferSettings::Headers::const_iterator TransferSettings::headersBegin() const
103 {
104  return _impl->_headers.begin();
105 }
106 
107 TransferSettings::Headers::const_iterator TransferSettings::headersEnd() const
108 {
109  return _impl->_headers.end();
110 }
111 
112 void TransferSettings::setUserAgentString( const std::string &agent )
113 {
114  _impl->_useragent = agent;
115 }
116 
118 {
119  return _impl->_useragent;
120 }
121 
122 void TransferSettings::setUsername( const std::string &username )
123 {
125 }
126 
127 std::string TransferSettings::username() const
128 {
129  return _impl->_username;
130 }
131 
132 void TransferSettings::setPassword( const std::string &password )
133 {
135 }
136 
138 {
139  setUsername("anonymous");
140  string id = "yast@";
141  setPassword(id + VERSION);
142 }
143 
144 std::string TransferSettings::password() const
145 {
146  return _impl->_password;
147 }
148 
150 {
151  string userpwd = username();
152  if ( password().size() ) {
153  userpwd += ":" + password();
154  }
155  return userpwd;
156 }
157 
159 {
160  _impl->_useproxy = enabled;
161 }
162 
164 {
165  return _impl->_useproxy;
166 }
167 
168 void TransferSettings::setProxy( const std::string &proxy )
169 {
170  _impl->_proxy = proxy;
171 }
172 
173 std::string TransferSettings::proxy() const
174 {
175  return _impl->_proxy;
176 }
177 
178 void TransferSettings::setProxyUsername( const std::string &proxyuser )
179 {
180  _impl->_proxy_username = proxyuser;
181 }
182 
184 {
185  return _impl->_proxy_username;
186 }
187 
188 void TransferSettings::setProxyPassword( const std::string &proxypass )
189 {
190  _impl->_proxy_password = proxypass;
191 }
192 
194 {
195  return _impl->_proxy_password;
196 }
197 
199 {
200  string userpwd = proxyUsername();
201  if ( proxyPassword().size() ) {
202  userpwd += ":" + proxyPassword();
203  }
204  return userpwd;
205 }
206 
208 {
209  _impl->_timeout = t;
210 }
211 
213 {
214  return _impl->_timeout;
215 }
216 
218 {
219  _impl->_connect_timeout = t;
220 }
221 
223 {
224  return _impl->_connect_timeout;
225 }
226 
228 {
230 }
231 
233 {
235 }
236 
238 {
239  return _impl->_minDownloadSpeed;
240 }
241 
243 {
245 }
246 
248 {
249  return _impl->_maxDownloadSpeed;
250 }
251 
253 {
255 }
256 
258 {
259  return _impl->_maxSilentTries;
260 }
261 
263 {
264  _impl->_maxSilentTries = v;
265 }
266 
268 {
269  return _impl->_verify_host;
270 }
271 
273 {
274  _impl->_verify_host = enabled;
275 }
276 
278 {
279  return _impl->_verify_peer;
280 }
281 
283 {
284  return _impl->_client_cert_path;
285 }
286 
288 {
289  _impl->_client_cert_path = path;
290 }
291 
293 {
294  return _impl->_client_key_path;
295 }
296 
298 {
299  _impl->_client_key_path = path;
300 }
301 
302 
304 {
305  _impl->_verify_peer = enabled;
306 }
307 
309 {
310  return _impl->_ca_path;
311 }
312 
314 {
315  _impl->_ca_path = path;
316 }
317 
318 void TransferSettings::setAuthType( const std::string &authtype)
319 {
320  _impl->_authtype = authtype;
321 }
322 
323 std::string TransferSettings::authType() const
324 {
325  return _impl->_authtype;
326 }
327 
329 {
330  _impl->_head_requests_allowed = allowed;
331 }
332 
334 {
336 }
337 
338 } // ns media
339 } // ns zypp
340 
zypp::media::TransferSettings::setClientKeyPath
void setClientKeyPath(const zypp::Pathname &path)
Sets the SSL client key file.
Definition: TransferSettings.cc:297
zypp::media::TransferSettings::verifyHostEnabled
bool verifyHostEnabled() const
Whether to verify host for ssl.
Definition: TransferSettings.cc:267
zypp::media::TransferSettings::Impl::_useragent
string _useragent
Definition: TransferSettings.cc:57
zypp::media::TransferSettings::Impl::_targetdir
Pathname _targetdir
Definition: TransferSettings.cc:68
zypp::media::TransferSettings::setUsername
void setUsername(const std::string &username)
sets the auth username
Definition: TransferSettings.cc:122
ExternalProgram.h
zypp::media::TransferSettings::verifyPeerEnabled
bool verifyPeerEnabled() const
Whether to verify peer for ssl.
Definition: TransferSettings.cc:277
zypp::media::TransferSettings::addHeader
void addHeader(const std::string &header)
add a header, on the form "Foo: Bar"
Definition: TransferSettings.cc:96
zypp::media::TransferSettings::Impl::_timeout
long _timeout
Definition: TransferSettings.cc:65
zypp::media::TransferSettings::setConnectTimeout
void setConnectTimeout(long t)
set the connect timeout
Definition: TransferSettings.cc:217
zypp::media::TransferSettings::userPassword
std::string userPassword() const
returns the user and password as a user:pass string
Definition: TransferSettings.cc:149
zypp::media::TransferSettings::setAuthType
void setAuthType(const std::string &authtype)
set the allowed authentication types
Definition: TransferSettings.cc:318
zypp::media::TransferSettings::reset
void reset()
reset the settings to the defaults
Definition: TransferSettings.cc:91
WatchFile.h
zypp::media::TransferSettings::setClientCertificatePath
void setClientCertificatePath(const zypp::Pathname &path)
Sets the SSL client certificate file.
Definition: TransferSettings.cc:287
zypp::media::TransferSettings::proxyPassword
std::string proxyPassword() const
proxy auth password
Definition: TransferSettings.cc:193
zypp::media::TransferSettings::Impl::_verify_peer
bool _verify_peer
Definition: TransferSettings.cc:76
zypp::media::TransferSettings::setTimeout
void setTimeout(long t)
set the transfer timeout
Definition: TransferSettings.cc:207
zypp::media::TransferSettings::setMaxSilentTries
void setMaxSilentTries(long v)
Set maximum silent retries.
Definition: TransferSettings.cc:262
zypp::media::TransferSettings::username
std::string username() const
auth username
Definition: TransferSettings.cc:127
zypp::media::TransferSettings::Impl::_password
string _password
Definition: TransferSettings.cc:59
zypp::media::TransferSettings::headersBegin
Headers::const_iterator headersBegin() const
begin iterators to additional headers
Definition: TransferSettings.cc:102
zypp::media::TransferSettings::minDownloadSpeed
long minDownloadSpeed() const
Minimum download speed (bytes per second) until the connection is dropped.
Definition: TransferSettings.cc:237
zypp::media::TransferSettings::Impl::_useproxy
bool _useproxy
Definition: TransferSettings.cc:60
ZConfig.h
zypp::media::TransferSettings::certificateAuthoritiesPath
Pathname certificateAuthoritiesPath() const
SSL certificate authorities path ( default: /etc/ssl/certs )
Definition: TransferSettings.cc:308
zypp::media::TransferSettings::timeout
long timeout() const
transfer timeout
Definition: TransferSettings.cc:212
zypp::media::TransferSettings::setProxyPassword
void setProxyPassword(const std::string &proxypass)
sets the proxy password
Definition: TransferSettings.cc:188
zypp::media::TransferSettings::Impl::_ca_path
Pathname _ca_path
Definition: TransferSettings.cc:77
zypp::media::TransferSettings::authType
std::string authType() const
get the allowed authentication types
Definition: TransferSettings.cc:323
zypp::media::TransferSettings::setMaxConcurrentConnections
void setMaxConcurrentConnections(long v)
Set maximum number of concurrent connections for a single transfer.
Definition: TransferSettings.cc:232
zypp::media::TransferSettings::maxConcurrentConnections
long maxConcurrentConnections() const
Maximum number of concurrent connections for a single transfer.
Definition: TransferSettings.cc:227
zypp::media::TransferSettings::Impl::_proxy_username
string _proxy_username
Definition: TransferSettings.cc:62
zypp::media::TransferSettings::proxyUserPassword
std::string proxyUserPassword() const
returns the proxy user and password as a user:pass string
Definition: TransferSettings.cc:198
zypp::media::TransferSettings::headRequestsAllowed
bool headRequestsAllowed() const
whether HEAD requests are allowed
Definition: TransferSettings.cc:333
zypp::media::TransferSettings::Impl::~Impl
virtual ~Impl()
Definition: TransferSettings.cc:39
zypp::media::TransferSettings::Impl::_proxy
string _proxy
Definition: TransferSettings.cc:61
zypp::media::TransferSettings::setVerifyHostEnabled
void setVerifyHostEnabled(bool enabled)
Sets whether to verify host for ssl.
Definition: TransferSettings.cc:272
zypp::media::TransferSettings::proxyEnabled
bool proxyEnabled() const
proxy is enabled
Definition: TransferSettings.cc:163
zypp::media::TransferSettings::setUserAgentString
void setUserAgentString(const std::string &agent)
sets the user agent ie: "Mozilla v3"
Definition: TransferSettings.cc:112
zypp::media::TransferSettings
Holds transfer setting.
Definition: TransferSettings.h:20
zypp::media::TransferSettings::setProxyEnabled
void setProxyEnabled(bool enabled)
whether the proxy is used or not
Definition: TransferSettings.cc:158
zypp::media::TransferSettings::setHeadRequestsAllowed
void setHeadRequestsAllowed(bool allowed)
set whether HEAD requests are allowed
Definition: TransferSettings.cc:328
zypp::media::TransferSettings::Impl::_username
string _username
Definition: TransferSettings.cc:58
zypp::media::TransferSettings::maxSilentTries
long maxSilentTries() const
Maximum silent retries.
Definition: TransferSettings.cc:257
zypp::media::TransferSettings::proxyUsername
std::string proxyUsername() const
proxy auth username
Definition: TransferSettings.cc:183
zypp::media::TransferSettings::Impl::_url
Url _url
Definition: TransferSettings.cc:67
Logger.h
zypp::media::TransferSettings::setProxy
void setProxy(const std::string &proxyhost)
proxy to use if it is enabled
Definition: TransferSettings.cc:168
zypp::media::TransferSettings::Impl::_minDownloadSpeed
long _minDownloadSpeed
Definition: TransferSettings.cc:71
zypp::media::TransferSettings::Impl::nullimpl
static shared_ptr< Impl > nullimpl()
Offer default Impl.
Definition: TransferSettings.cc:43
TransferSettings.h
zypp::media::TransferSettings::Impl
Definition: TransferSettings.cc:22
zypp::media::TransferSettings::Impl::_maxSilentTries
long _maxSilentTries
Definition: TransferSettings.cc:73
zypp::media::TransferSettings::Impl::clone
Impl * clone() const
clone for RWCOW_pointer
Definition: TransferSettings.cc:52
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
zypp::ZConfig
Interim helper class to collect global options and settings.
Definition: ZConfig.h:59
zypp::media::TransferSettings::userAgentString
std::string userAgentString() const
user agent string
Definition: TransferSettings.cc:117
zypp::media::TransferSettings::clientKeyPath
Pathname clientKeyPath() const
SSL client key file.
Definition: TransferSettings.cc:292
zypp::media::TransferSettings::clientCertificatePath
Pathname clientCertificatePath() const
SSL client certificate file.
Definition: TransferSettings.cc:282
zypp::media::TransferSettings::setVerifyPeerEnabled
void setVerifyPeerEnabled(bool enabled)
Sets whether to verify host for ssl.
Definition: TransferSettings.cc:303
zypp::media::TransferSettings::Impl::_connect_timeout
long _connect_timeout
Definition: TransferSettings.cc:66
zypp::media::TransferSettings::setMaxDownloadSpeed
void setMaxDownloadSpeed(long v)
Set max download speed (bytes per second)
Definition: TransferSettings.cc:252
zypp::media::TransferSettings::Impl::_headers
vector< string > _headers
Definition: TransferSettings.cc:56
zypp::media::TransferSettings::Impl::_verify_host
bool _verify_host
Definition: TransferSettings.cc:75
zypp::media::TransferSettings::Impl::_maxConcurrentConnections
long _maxConcurrentConnections
Definition: TransferSettings.cc:70
zypp::media::TransferSettings::setCertificateAuthoritiesPath
void setCertificateAuthoritiesPath(const zypp::Pathname &path)
Sets the SSL certificate authorities path.
Definition: TransferSettings.cc:313
zypp::media::TransferSettings::setPassword
void setPassword(const std::string &password)
sets the auth password
Definition: TransferSettings.cc:132
ReferenceCounted.h
zypp::media::TransferSettings::Impl::_proxy_password
string _proxy_password
Definition: TransferSettings.cc:63
std
Definition: Arch.h:344
zypp::media::TransferSettings::Impl::_maxDownloadSpeed
long _maxDownloadSpeed
Definition: TransferSettings.cc:72
zypp::media::TransferSettings::Impl::_head_requests_allowed
bool _head_requests_allowed
Definition: TransferSettings.cc:82
String.h
zypp::filesystem::Pathname
Pathname.
Definition: Pathname.h:43
zypp::media::TransferSettings::setProxyUsername
void setProxyUsername(const std::string &proxyuser)
sets the proxy user
Definition: TransferSettings.cc:178
zypp::media::TransferSettings::setMinDownloadSpeed
void setMinDownloadSpeed(long v)
Set minimum download speed (bytes per second) until the connection is dropped.
Definition: TransferSettings.cc:242
zypp::media::TransferSettings::connectTimeout
long connectTimeout() const
connection timeout
Definition: TransferSettings.cc:222
zypp::media::TransferSettings::Impl::Impl
Impl()
Definition: TransferSettings.cc:25
zypp::media::TransferSettings::headersEnd
Headers::const_iterator headersEnd() const
end iterators to additional headers
Definition: TransferSettings.cc:107
zypp::RWCOW_pointer::reset
void reset()
Definition: PtrTypes.h:482
zypp::media::TransferSettings::setAnonymousAuth
void setAnonymousAuth()
sets anonymous authentication (ie: for ftp)
Definition: TransferSettings.cc:137
zypp::Url
Url manipulation class.
Definition: Url.h:87
zypp::media::TransferSettings::proxy
std::string proxy() const
proxy host
Definition: TransferSettings.cc:173
zypp::media::TransferSettings::password
std::string password() const
auth password
Definition: TransferSettings.cc:144
zypp::media::TransferSettings::Impl::_authtype
string _authtype
Definition: TransferSettings.cc:64
zypp::media::TransferSettings::_impl
RWCOW_pointer< Impl > _impl
Definition: TransferSettings.h:278
zypp::media::TransferSettings::Impl::_client_key_path
Pathname _client_key_path
Definition: TransferSettings.cc:79
zypp::media::TransferSettings::Impl::_client_cert_path
Pathname _client_cert_path
Definition: TransferSettings.cc:78
NonCopyable.h
zypp::media::TransferSettings::maxDownloadSpeed
long maxDownloadSpeed() const
Maximum download speed (bytes per second)
Definition: TransferSettings.cc:247