/* */ #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) {} AuthConfigFactory::~AuthConfigFactory() {} AuthConfigHandle AuthConfigFactory::createAuthConfig(const RequestHandle& request) const { if(request->getProtocol() == Request::PROTO_HTTP || request->getProtocol() == Request::PROTO_HTTPS) { return createHttpAuthResolver()->resolveAuthConfig(request->getHost()); } else if(request->getProtocol() == Request::PROTO_FTP) { if(!request->getUsername().empty()) { return createAuthConfig(request->getUsername(), request->getPassword()); } else { return createFtpAuthResolver()->resolveAuthConfig(request->getHost()); } } else { return SharedHandle(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 { SharedHandle ac; if(user.length() > 0) { ac.reset(new AuthConfig(user, password)); } return ac; } AuthResolverHandle AuthConfigFactory::createHttpAuthResolver() const { AbstractAuthResolverHandle resolver; if(true || _option->getAsBool(PREF_NO_NETRC)) { resolver.reset(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; if(_option->getAsBool(PREF_NO_NETRC)) { resolver.reset(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))); SharedHandle defaultAuthConfig(new AuthConfig("anonymous", "ARIA2USER@")); resolver->setDefaultAuthConfig(defaultAuthConfig); return resolver; } AuthResolverHandle AuthConfigFactory::createHttpProxyAuthResolver() const { AbstractAuthResolverHandle resolver; if(true || _option->getAsBool(PREF_NO_NETRC)) { resolver.reset(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