/* */ #include "AuthConfigFactory.h" #include "Option.h" #include "AuthConfig.h" #include "Netrc.h" #include "DefaultAuthResolver.h" #include "NetrcAuthResolver.h" #include "prefs.h" #include "Request.h" namespace aria2 { AuthConfigFactory::AuthConfigFactory(const Option* option): _option(option), _netrc(0) {} AuthConfigFactory::~AuthConfigFactory() {} AuthConfigHandle AuthConfigFactory::createAuthConfig(const RequestHandle& request) const { if(request->getProtocol() == "http" || request->getProtocol() == "https") { return createHttpAuthResolver()->resolveAuthConfig(request->getHost()); } else if(request->getProtocol() == "ftp") { if(!request->getUsername().empty()) { return createAuthConfig(request->getUsername(), request->getPassword()); } else { return createFtpAuthResolver()->resolveAuthConfig(request->getHost()); } } else { return new AuthConfig(); } } AuthConfigHandle AuthConfigFactory::createAuthConfigForHttpProxy(const RequestHandle& request) const { return createHttpProxyAuthResolver()->resolveAuthConfig(request->getHost()); } AuthConfigHandle AuthConfigFactory::createAuthConfig(const std::string& user, const std::string& password) const { if(user.length() > 0) { return new AuthConfig(user, password); } else { return 0; } } AuthResolverHandle AuthConfigFactory::createHttpAuthResolver() const { AbstractAuthResolverHandle resolver = 0; if(true || _option->getAsBool(PREF_NO_NETRC)) { resolver = new DefaultAuthResolver(); } else { NetrcAuthResolverHandle authResolver = new NetrcAuthResolver(); authResolver->setNetrc(_netrc); resolver = authResolver; } resolver->setUserDefinedAuthConfig(createAuthConfig(_option->get(PREF_HTTP_USER), _option->get(PREF_HTTP_PASSWD))); return resolver; } AuthResolverHandle AuthConfigFactory::createFtpAuthResolver() const { AbstractAuthResolverHandle resolver = 0; if(_option->getAsBool(PREF_NO_NETRC)) { resolver = new DefaultAuthResolver(); } else { NetrcAuthResolverHandle authResolver = new NetrcAuthResolver(); authResolver->setNetrc(_netrc); resolver = authResolver; } resolver->setUserDefinedAuthConfig(createAuthConfig(_option->get(PREF_FTP_USER), _option->get(PREF_FTP_PASSWD))); resolver->setDefaultAuthConfig(new AuthConfig("anonymous", "ARIA2USER@")); return resolver; } AuthResolverHandle AuthConfigFactory::createHttpProxyAuthResolver() const { AbstractAuthResolverHandle resolver = 0; if(true || _option->getAsBool(PREF_NO_NETRC)) { resolver = new DefaultAuthResolver(); } else { NetrcAuthResolverHandle authResolver = new NetrcAuthResolver(); authResolver->setNetrc(_netrc); resolver = authResolver; } resolver->setUserDefinedAuthConfig(createAuthConfig(_option->get(PREF_HTTP_PROXY_USER), _option->get(PREF_HTTP_PROXY_PASSWD))); return resolver; } void AuthConfigFactory::setNetrc(const NetrcHandle& netrc) { _netrc = netrc; } } // namespace aria2