/* */ #include "NetrcAuthResolver.h" #include "AuthConfig.h" #include "Netrc.h" #include "a2functional.h" namespace aria2 { NetrcAuthResolver::NetrcAuthResolver() : netrc_(nullptr), ignoreDefault_(false) { } std::unique_ptr NetrcAuthResolver::resolveAuthConfig(const std::string& hostname) { auto authConfig = getUserDefinedAuthConfig(); if (authConfig) { return authConfig; } else { return findNetrcAuthenticator(hostname); } } std::unique_ptr NetrcAuthResolver::findNetrcAuthenticator(const std::string& hostname) const { if (!netrc_) { return getDefaultAuthConfig(); } else { auto auth = netrc_->findAuthenticator(hostname); if (!auth) { return getDefaultAuthConfig(); } else { if (ignoreDefault_ && auth->getMachine().empty()) { return getDefaultAuthConfig(); } else { return make_unique(auth->getLogin(), auth->getPassword()); } } } } void NetrcAuthResolver::setNetrc(Netrc* netrc) { netrc_ = netrc; } void NetrcAuthResolver::ignoreDefault() { ignoreDefault_ = true; } void NetrcAuthResolver::useDefault() { ignoreDefault_ = false; } } // namespace aria2