/* */ #ifndef _D_NETRC_H_ #define _D_NETRC_H_ #include "common.h" class Authenticatable { public: virtual ~Authenticatable() {} virtual bool match(const string& hostname) const = 0; }; typedef SharedHandle AuthenticatableHandle; typedef deque Authenticatables; class Authenticator : public Authenticatable { private: string machine; string login; string password; string account; public: Authenticator() {} Authenticator(const string& machine, const string& login, const string& password, const string& account) :machine(machine), login(login), password(password), account(account) {} virtual ~Authenticator() {} virtual bool match(const string& hostname) const { return hostname == machine; } const string& getMachine() const { return machine; } void setMachine(const string& machine) { this->machine = machine; } const string& getLogin() const { return login; } void setLogin(const string& login) { this->login = login; } const string& getPassword() const { return password; } void setPassword(const string& password) { this->password = password; } const string& getAccount() const { return account; } void setAccount(const string& account) { this->account = account; } }; typedef SharedHandle AuthenticatorHandle; class DefaultAuthenticator : public Authenticator { public: DefaultAuthenticator() {} DefaultAuthenticator(const string& login, const string& password, const string& account) :Authenticator("", login, password, account) {} virtual ~DefaultAuthenticator() {} virtual bool match(const string& hostname) const { return true; } }; typedef SharedHandle DefaultAuthenticatorHandle; class Netrc { private: Authenticatables authenticatables; void storeAuthenticatable(const AuthenticatableHandle& authenticatable); public: Netrc() {} void parse(const string& path); AuthenticatableHandle findAuthenticatable(const string& hostname) const; const Authenticatables& getAuthenticatables() const { return authenticatables; } void addAuthenticatable(const AuthenticatableHandle& authenticatable) { authenticatables.push_back(authenticatable); } }; typedef SharedHandle NetrcHandle; #endif // _D_NETRC_H_