53{
54
55 char* host;
56 std::string host_string;
57 CURLUcode rc;
58 CURLU* curl = curl_url();
59 if (!curl) {
60 BOOST_LOG_TRIVIAL(error) << "Failed to init Curl library in function is_domain.";
61 return false;
62 }
63 rc = curl_url_set(curl, CURLUPART_URL, url.c_str(), 0);
64 if (rc != CURLUE_OK) {
65 curl_url_cleanup(curl);
66 return false;
67 }
68 rc = curl_url_get(curl, CURLUPART_HOST, &host, 0);
69 if (rc != CURLUE_OK || !host) {
70 curl_url_cleanup(curl);
71 return false;
72 }
73 host_string = std::string(host);
74 curl_free(host);
75
76 if (domain == host_string) {
77 curl_url_cleanup(curl);
78 return true;
79 }
80 if(boost::ends_with(host_string, "." + domain)) {
81 curl_url_cleanup(curl);
82 return true;
83 }
84 curl_url_cleanup(curl);
85 return false;
86}