diff --git a/lib/letsencrypt.php b/lib/letsencrypt.php new file mode 100644 index 0000000..2bf96ac --- /dev/null +++ b/lib/letsencrypt.php @@ -0,0 +1,56 @@ + $domain) { + $curl_handles[$key] = curl_init($domain . self::HTTP_CHALLENGE_URL); + + // setting cURL options + curl_setopt($curl_handles[$key], CURLOPT_TIMEOUT, 3); + curl_setopt($curl_handles[$key], CURLOPT_HEADER, true); + curl_setopt($curl_handles[$key], CURLOPT_NOBODY, true); + curl_setopt($curl_handles[$key], CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl_handles[$key], CURLOPT_FOLLOWLOCATION, true); + curl_setopt($curl_handles[$key], CURLOPT_MAXREDIRS, 3); + curl_setopt($curl_handles[$key], CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP, CURLPROTO_HTTPS); + curl_setopt($curl_handles[$key], CURLOPT_RETURNTRANSFER, true); + + curl_multi_add_handle($curl_multi, $curl_handles[$key]); + } + + do { + curl_multi_exec($curl_multi, $active); + } while ($active); + + foreach ($curl_handles as $curl_handle) { + $returned_http_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE); + $returned_http_url = curl_getinfo($curl_handle, CURLINFO_EFFECTIVE_URL); + + if ($returned_http_code === self::HTTP_OK && strpos($returned_http_url, self::HTTP_CHALLENGE_URL)) { + array_push($checked_domains, $returned_http_url); + } + curl_multi_remove_handle($curl_multi, $curl_handle); + } + curl_multi_close($curl_multi); + + return $checked_domains; + } +}