libzypp  12.16.5
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 ARIA2C_BINARY "/usr/bin/aria2c"
16 #define CURL_BINARY "/usr/bin/curl"
17 
18 namespace zypp
19 {
20 namespace media
21 {
22 
24 {
25 public:
26  Impl()
27  : _useproxy(false)
28  , _timeout(0)
29  , _connect_timeout(0)
30  , _maxConcurrentConnections(ZConfig::instance().download_max_concurrent_connections())
31  , _minDownloadSpeed(ZConfig::instance().download_min_download_speed())
32  , _maxDownloadSpeed(ZConfig::instance().download_max_download_speed())
33  , _maxSilentTries(ZConfig::instance().download_max_silent_tries())
34  , _verify_host(false)
35  , _verify_peer(false)
36  , _ca_path("/etc/ssl/certs")
37  , _head_requests_allowed(true)
38  {}
39 
40  virtual ~Impl()
41  {}
42 
44  static shared_ptr<Impl> nullimpl()
45  {
46  static shared_ptr<Impl> _nullimpl( new Impl );
47  return _nullimpl;
48  }
49 
50 private:
51  friend Impl * rwcowClone<Impl>( const Impl * rhs );
53  Impl * clone() const
54  { return new Impl( *this ); }
55 
56 public:
57  vector<string> _headers;
58  string _useragent;
59  string _username;
60  string _password;
61  bool _useproxy;
62  string _proxy;
65  string _authtype;
66  long _timeout;
69  Pathname _targetdir;
70 
75 
78  Pathname _ca_path;
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 
286 void TransferSettings::setClientCertificatePath( const zypp::Pathname &path )
287 {
288  _impl->_client_cert_path = path;
289 }
290 
291 
293 {
294  _impl->_verify_peer = enabled;
295 }
296 
298 {
299  return _impl->_ca_path;
300 }
301 
302 void TransferSettings::setCertificateAuthoritiesPath( const zypp::Pathname &path )
303 {
304  _impl->_ca_path = path;
305 }
306 
307 void TransferSettings::setAuthType( const std::string &authtype)
308 {
309  _impl->_authtype = authtype;
310 }
311 
312 std::string TransferSettings::authType() const
313 {
314  return _impl->_authtype;
315 }
316 
318 {
319  _impl->_head_requests_allowed = allowed;
320 }
321 
323 {
325 }
326 
327 } // ns media
328 } // ns zypp
329