/** @file * @brief GNUDIP Service class header. This class represents the GNUDIP service. * * * * @copyright Intra2net AG * @license GPLv2 */ #ifndef ServiceGnudip_H #define ServiceGnudip_H #include "service.hpp" #include "logger.hpp" #include "httphelper.hpp" #include #include #include class ServiceGnudip : public Service { protected: friend class boost::serialization::access; template void serialize(Archive & ar, const unsigned int version) { ar & boost::serialization::base_object(*this); } std::string GnudipServer; std::string BaseUrl; HTTPHelper::Ptr HTTPHelp; std::string assemble_base_url(const std::string& gnudip_server) const; std::map parse_initial_request(const std::string& curl_data) const; virtual std::string assemble_update_url(const std::string& salt, const std::string& curr_time, const std::string& sign, const std::string& secret, const std::string& ip) const; std::string parse_return_code(const std::string& curl_data) const; public: typedef boost::shared_ptr Ptr; ServiceGnudip(); ServiceGnudip(const std::string& _protocol, const std::string& _gnudip_server ,const std::string& _hostname, const std::string& _login, const std::string& _password, const Logger::Ptr& _logger, const int _update_interval, const int _max_updates_within_interval, const int _max_equal_updates_in_succession, const int dns_cache_ttl, const std::string& proxy, const int proxy_port); ~ServiceGnudip(); UpdateErrorCode perform_update(const std::string& ip); }; #endif