libzypp  16.3.2
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  _impl->_headers.push_back(header);
99 }
100 
101 TransferSettings::Headers::const_iterator TransferSettings::headersBegin() const
102 {
103  return _impl->_headers.begin();
104 }
105 
106 TransferSettings::Headers::const_iterator TransferSettings::headersEnd() const
107 {
108  return _impl->_headers.end();
109 }
110 
111 void TransferSettings::setUserAgentString( const std::string &agent )
112 {
113  _impl->_useragent = agent;
114 }
115 
117 {
118  return _impl->_useragent;
119 }
120 
121 void TransferSettings::setUsername( const std::string &username )
122 {
124 }
125 
126 std::string TransferSettings::username() const
127 {
128  return _impl->_username;
129 }
130 
131 void TransferSettings::setPassword( const std::string &password )
132 {
134 }
135 
137 {
138  setUsername("anonymous");
139  string id = "yast@";
140  setPassword(id + VERSION);
141 }
142 
143 std::string TransferSettings::password() const
144 {
145  return _impl->_password;
146 }
147 
149 {
150  string userpwd = username();
151  if ( password().size() ) {
152  userpwd += ":" + password();
153  }
154  return userpwd;
155 }
156 
158 {
159  _impl->_useproxy = enabled;
160 }
161 
163 {
164  return _impl->_useproxy;
165 }
166 
167 void TransferSettings::setProxy( const std::string &proxy )
168 {
169  _impl->_proxy = proxy;
170 }
171 
172 std::string TransferSettings::proxy() const
173 {
174  return _impl->_proxy;
175 }
176 
177 void TransferSettings::setProxyUsername( const std::string &proxyuser )
178 {
179  _impl->_proxy_username = proxyuser;
180 }
181 
183 {
184  return _impl->_proxy_username;
185 }
186 
187 void TransferSettings::setProxyPassword( const std::string &proxypass )
188 {
189  _impl->_proxy_password = proxypass;
190 }
191 
193 {
194  return _impl->_proxy_password;
195 }
196 
198 {
199  string userpwd = proxyUsername();
200  if ( proxyPassword().size() ) {
201  userpwd += ":" + proxyPassword();
202  }
203  return userpwd;
204 }
205 
207 {
208  _impl->_timeout = t;
209 }
210 
212 {
213  return _impl->_timeout;
214 }
215 
217 {
218  _impl->_connect_timeout = t;
219 }
220 
222 {
223  return _impl->_connect_timeout;
224 }
225 
227 {
229 }
230 
232 {
234 }
235 
237 {
238  return _impl->_minDownloadSpeed;
239 }
240 
242 {
244 }
245 
247 {
248  return _impl->_maxDownloadSpeed;
249 }
250 
252 {
254 }
255 
257 {
258  return _impl->_maxSilentTries;
259 }
260 
262 {
263  _impl->_maxSilentTries = v;
264 }
265 
267 {
268  return _impl->_verify_host;
269 }
270 
272 {
273  _impl->_verify_host = enabled;
274 }
275 
277 {
278  return _impl->_verify_peer;
279 }
280 
282 {
283  return _impl->_client_cert_path;
284 }
285 
287 {
288  _impl->_client_cert_path = path;
289 }
290 
292 {
293  return _impl->_client_key_path;
294 }
295 
297 {
298  _impl->_client_key_path = path;
299 }
300 
301 
303 {
304  _impl->_verify_peer = enabled;
305 }
306 
308 {
309  return _impl->_ca_path;
310 }
311 
313 {
314  _impl->_ca_path = path;
315 }
316 
317 void TransferSettings::setAuthType( const std::string &authtype)
318 {
319  _impl->_authtype = authtype;
320 }
321 
322 std::string TransferSettings::authType() const
323 {
324  return _impl->_authtype;
325 }
326 
328 {
329  _impl->_head_requests_allowed = allowed;
330 }
331 
333 {
335 }
336 
337 } // ns media
338 } // ns zypp
339 
long timeout() const
transfer timeout
std::string authType() const
get the allowed authentication types
std::string password() const
auth password
std::string proxyUserPassword() const
returns the proxy user and password as a user:pass string
Pathname clientCertificatePath() const
SSL client certificate file.
long maxDownloadSpeed() const
Maximum download speed (bytes per second)
std::string proxy() const
proxy host
void setClientKeyPath(const zypp::Pathname &path)
Sets the SSL client key file.
Holds transfer setting.
bool verifyHostEnabled() const
Whether to verify host for ssl.
void setProxyUsername(const std::string &proxyuser)
sets the proxy user
void setHeadRequestsAllowed(bool allowed)
set whether HEAD requests are allowed
Pathname certificateAuthoritiesPath() const
SSL certificate authorities path ( default: /etc/ssl/certs )
Definition: Arch.h:339
std::string username() const
auth username
void setConnectTimeout(long t)
set the connect timeout
Headers::const_iterator headersEnd() const
end iterators to additional headers
std::string userAgentString() const
user agent string
void setProxy(const std::string &proxyhost)
proxy to use if it is enabled
void setPassword(const std::string &password)
sets the auth password
void setUsername(const std::string &username)
sets the auth username
void setAnonymousAuth()
sets anonymous authentication (ie: for ftp)
bool verifyPeerEnabled() const
Whether to verify peer for ssl.
long maxSilentTries() const
Maximum silent retries.
void setProxyPassword(const std::string &proxypass)
sets the proxy password
void setAuthType(const std::string &authtype)
set the allowed authentication types
static shared_ptr< Impl > nullimpl()
Offer default Impl.
long connectTimeout() const
connection timeout
Interim helper class to collect global options and settings.
Definition: ZConfig.h:59
void setMaxSilentTries(long v)
Set maximum silent retries.
std::string proxyPassword() const
proxy auth password
void setTimeout(long t)
set the transfer timeout
Headers::const_iterator headersBegin() const
begin iterators to additional headers
Pathname clientKeyPath() const
SSL client key file.
RWCOW_pointer< Impl > _impl
void setMaxDownloadSpeed(long v)
Set max download speed (bytes per second)
long minDownloadSpeed() const
Minimum download speed (bytes per second) until the connection is dropped.
void setClientCertificatePath(const zypp::Pathname &path)
Sets the SSL client certificate file.
Impl * clone() const
clone for RWCOW_pointer
bool proxyEnabled() const
proxy is enabled
void reset()
reset the settings to the defaults
void setMaxConcurrentConnections(long v)
Set maximum number of concurrent connections for a single transfer.
long maxConcurrentConnections() const
Maximum number of concurrent connections for a single transfer.
void addHeader(const std::string &header)
add a header, on the form "Foo: Bar"
void setCertificateAuthoritiesPath(const zypp::Pathname &path)
Sets the SSL certificate authorities path.
std::string userPassword() const
returns the user and password as a user:pass string
std::string proxyUsername() const
proxy auth username
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
void setMinDownloadSpeed(long v)
Set minimum download speed (bytes per second) until the connection is dropped.
void setVerifyPeerEnabled(bool enabled)
Sets whether to verify host for ssl.
void setVerifyHostEnabled(bool enabled)
Sets whether to verify host for ssl.
Url manipulation class.
Definition: Url.h:87
bool headRequestsAllowed() const
whether HEAD requests are allowed
void setUserAgentString(const std::string &agent)
sets the user agent ie: "Mozilla v3"
void setProxyEnabled(bool enabled)
whether the proxy is used or not