Я работал над созданием плагина, который будет добавлять клонированное приложение в Cloudways, а затем создавать CNAME в Cloudflare.
все работает нормально с приведенными ниже кодами.
Добавить приложение в код Cloudways:
public function clone_cloudways_app($server_id, $application, $app_version, $app_label) {
error_log("Cloning cloudways app!");
//Fetch Access Token
$tokenResponse = $this->call_cloudways_API('POST', '/oauth/access_token', null,
[
'email' => 'my email',
'api_key' => 'my api key'
]);
$accessToken = $tokenResponse->access_token;
//Create an app
$addCloneResponse = $this->call_cloudways_API('POST', '/app', $accessToken, [
'server_id' => $server_id,
'application' => $application,
'app_label' => $app_label,
'app_version' => $app_version
]);
error_log("Cloudways clone response: " . json_encode($addCloneResponse));
return $addCloneResponse;
}
function call_cloudways_API($method, $url, $accessToken, $post = [])
{
error_log("call cloudways api!");
$baseURL = 'https://api.cloudways.com/api/v1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_URL, $baseURL . $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($accessToken) {
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $accessToken]);
}
//Set Post Parameters
$encoded = '';
if (count($post)) {
foreach ($post as $name => $value) {
$encoded .= urlencode($name) . '=' . urlencode($value) . '&';
}
$encoded = substr($encoded, 0, strlen($encoded) - 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($ch, CURLOPT_POST, 1);
}
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpcode != '200') {
error_log('Unable to clone app: ' . $httpcode . ' output: ' . substr($output, 0, 10000));
}
curl_close($ch);
return json_decode($output);
}
Таким образом, вышеприведенные коды работают и приложение добавляется в облачные сервисы, а также ниже приведены мои коды для создания нового домена в cloudflare:
public function create_new_domain( $domain_name, $cname ) {
error_log('curl create new domain works!');
$headers = array(
"X-Auth-Email: my email goes here",
"X-Auth-Key: my key goes here",
"Content-Type: application/json");
$ch = curl_init();
// set URL and other appropriate options
$url = "https://api.cloudflare.com/client/v4/zones/5a1af5f2251b5afbce3e332de37b67b3/dns_records";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers );
//Set Post Parameters
$post = array (
"type" => "CNAME",
"name" => $domain_name,
"content" =>$cname,
"ttl" => 120,
"proxied"=> true
);
$encoded = " ";
if (count($post)) {
$encoded = json_encode($post);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($ch, CURLOPT_POST, 1);
}
$result = curl_exec($ch);
error_log( "API result: " . json_decode( $result ) );
return json_decode($result);
}
Проблема, с которой я столкнулся, состоит в том, что созданный домен превратился в cloudflare, который является примером:Http: //wp-99.mywebsite/ я получаю сообщение об ошибке 1016 ID луча: 3fb50bbf650542a9 • 2018-03-14 07:32:21 UTC
Ошибка исходного DNS
Кто-нибудь может помочь мне решить эту проблему? Я новичок в Php, но учусь через него.
Задача ещё не решена.
Других решений пока нет …