libzypp  13.10.6
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;
68  Pathname _targetdir;
69 
74 
77  Pathname _ca_path;
79  Pathname _client_key_path;
80 
81  // workarounds
83 };
84 
85 TransferSettings::TransferSettings()
86  : _impl(new TransferSettings::Impl())
87 {
88 
89 }
90 
92 {
93  _impl.reset(new TransferSettings::Impl());
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 {
123  _impl->_username = username;
124 }
125 
126 std::string TransferSettings::username() const
127 {
128  return _impl->_username;
129 }
130 
131 void TransferSettings::setPassword( const std::string &password )
132 {
133  _impl->_password = password;
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 {
228  return _impl->_maxConcurrentConnections;
229 }
230 
232 {
233  _impl->_maxConcurrentConnections = v;
234 }
235 
237 {
238  return _impl->_minDownloadSpeed;
239 }
240 
242 {
243  _impl->_minDownloadSpeed = v;
244 }
245 
247 {
248  return _impl->_maxDownloadSpeed;
249 }
250 
252 {
253  _impl->_maxDownloadSpeed = v;
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 
286 void TransferSettings::setClientCertificatePath( const zypp::Pathname &path )
287 {
288  _impl->_client_cert_path = path;
289 }
290 
292 {
293  return _impl->_client_key_path;
294 }
295 
296 void TransferSettings::setClientKeyPath( const zypp::Pathname &path )
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 
312 void TransferSettings::setCertificateAuthoritiesPath( const zypp::Pathname &path )
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 {
334  return _impl->_head_requests_allowed;
335 }
336 
337 } // ns media
338 } // ns zypp
339 
std::string userPassword() const
returns the user and password as a user:pass string
bool verifyHostEnabled() const
Whether to verify host for ssl.
Pathname clientKeyPath() const
SSL client key file.
Impl * clone() const
clone for RWCOW_pointer
long connectTimeout() const
connection timeout
Headers::const_iterator headersEnd() const
end iterators to additional headers
void setClientKeyPath(const zypp::Pathname &path)
Sets the SSL client key file.
Holds transfer setting.
void setProxyUsername(const std::string &proxyuser)
sets the proxy user
Pathname certificateAuthoritiesPath() const
SSL certificate authorities path ( default: /etc/ssl/certs )
std::string password() const
auth password
void setHeadRequestsAllowed(bool allowed)
set whether HEAD requests are allowed
long minDownloadSpeed() const
Minimum download speed (bytes per second) until the connection is dropped.
void setConnectTimeout(long t)
set the connect timeout
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
bool headRequestsAllowed() const
whether HEAD requests are allowed
void setAnonymousAuth()
sets anonymous authentication (ie: for ftp)
std::string userAgentString() const
user agent string
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.
Interim helper class to collect global options and settings.
Definition: ZConfig.h:58
void setMaxSilentTries(long v)
Set maximum silent retries.
bool verifyPeerEnabled() const
Whether to verify peer for ssl.
void setTimeout(long t)
set the transfer timeout
std::string proxyUserPassword() const
returns the proxy user and password as a user:pass string
RWCOW_pointer< Impl > _impl
void setMaxDownloadSpeed(long v)
Set max download speed (bytes per second)
Headers::const_iterator headersBegin() const
begin iterators to additional headers
void setClientCertificatePath(const zypp::Pathname &path)
Sets the SSL client certificate file.
void reset()
reset the settings to the defaults
void setMaxConcurrentConnections(long v)
Set maximum number of concurrent connections for a single transfer.
void addHeader(const std::string &header)
add a header, on the form &quot;Foo: Bar&quot;
void setCertificateAuthoritiesPath(const zypp::Pathname &path)
Sets the SSL certificate authorities path.
std::string proxyPassword() const
proxy auth password
long maxConcurrentConnections() const
Maximum number of concurrent connections for a single transfer.
long maxSilentTries() const
Maximum silent retries.
std::string authType() const
get the allowed authentication types
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.
Pathname clientCertificatePath() const
SSL client certificate file.
std::string proxy() const
proxy host
bool proxyEnabled() const
proxy is enabled
void setVerifyHostEnabled(bool enabled)
Sets whether to verify host for ssl.
Url manipulation class.
Definition: Url.h:87
void setUserAgentString(const std::string &agent)
sets the user agent ie: &quot;Mozilla v3&quot;
long maxDownloadSpeed() const
Maximum download speed (bytes per second)
void setProxyEnabled(bool enabled)
whether the proxy is used or not
std::string username() const
auth username
std::string proxyUsername() const
proxy auth username
long timeout() const
transfer timeout