Added implementation of gnudip protocol.
[bpdyndnsd] / src / service_gnudip.h
CommitLineData
a78b44b5
BS
1/** @file
2 * @brief GNUDIP Service class header. This class represents the GNUDIP service.
3 *
4 *
5 *
6 * @copyright Intra2net AG
7 * @license GPLv2
8*/
9
10#ifndef ServiceGnudip_H
11#define ServiceGnudip_H
12
13#include <string>
14
15#include "service.h"
16#include "logger.h"
17
18#include <boost/serialization/array.hpp>
19#include <boost/shared_ptr.hpp>
20#include <list>
21#include <map>
22
23class ServiceGnudip : public Service
24{
25
26private:
27
28 friend class boost::serialization::access;
29 template<class Archive>
30 void serialize(Archive & ar, const unsigned int version);
31
32 std::string GnudipServer;
33 std::string BaseUrl;
34
35 HTTPHelper::Ptr HTTPHelp;
36
37 std::string assemble_base_url(const std::string& fqhn, const std::string& gnudip_server) const;
38 std::map<std::string,std::string> parse_initial_request(const std::string& curl_data) const;
39 std::string assemble_update_url(const std::string& salt, const std::string& time, const std::string& sign, const std::string& secret, const std::string& ip) const;
40
41public:
42
43 typedef boost::shared_ptr<ServiceGnudip> Ptr;
44
45 ServiceGnudip();
46
47 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 dns_cache_ttl, const std::string& proxy, const int proxy_port);
48
49 ~ServiceGnudip();
50
51 int perform_update(const std::string& ip);
52
53};
54
55#endif