$soap_location, 'uri' => $soap_uri, 'trace' => 1, 'exceptions' => 1, 'stream_context' => stream_context_create( array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false ) ) ) ) ); try { if ($session_id = $client->login($username, $password)) { //echo 'Logged in successfully. Session ID:' . $session_id . '
'; } // Get all zone $zones = $client->dns_zone_get($session_id, -1); $zone_id = 0; $client_id = 0; $server_id = 0; foreach ($zones as $zone) { // Find zone that needs to update if (preg_match("/" . $zone["origin"] . "/", $fulldomain . ".")) { $zone_id = $zone["id"]; $sys_userid = $zone["sys_userid"]; $server_id = $zone["server_id"]; } } //Get client id $client_id = $client->client_get_id($session_id, $sys_userid); if ($client_id == 0) { exit; } // Get all domain records of type txt // Bug it retrieves all domain records $dns_records = $client->dns_txt_get($session_id, -1); $dns_record_id = 0; foreach ($dns_records as $dns_record) { if ($dns_record["zone"] == $zone_id && $dns_record["type"] == "TXT" && $dns_record["name"] == "_acme-challenge.{$fulldomain}.") { $dns_record_id = $dns_record["id"]; } } // Add if zero else update $date = new DateTime(); switch ($action) { case "add": if ($dns_record_id == 0) { $dns_record = array( "server_id" => $server_id, "zone" => $zone_id, "name" => "_acme-challenge.{$fulldomain}.", "type" => "txt", "data" => $token, "aux" => 111, "ttl" => 300, "active" => 'y', "stamp" => date_format($date, 'Y-m-d H:i:s'), "serial" => date_format($date, 'Ymds') ); $result = $client->dns_txt_add($session_id, $client_id, $dns_record); echo "Created record for domain {$fulldomain} with token $token\n"; } else { $dns_record["data"] = $token; $dns_record["stamp"] = date_format($date, 'Y-m-d H:i:s'); $dns_record["serial"] = date_format($date, 'YmdH'); $result = $client->dns_txt_update($session_id, $client_id, $dns_record_id, $dns_record); echo "Updated the record for domain {$fulldomain} with token $token\n"; } break; case "del": if ($dns_record_id > 0) { $result = $client->dns_txt_delete($session_id, $dns_record_id); if ($result) { echo "The record was deleted from domain {$fulldomain} successfully\n"; } else { echo "Failed to delete the record for domain {$fulldomain}\n"; } } else { echo "The record was not found for deletion\n"; } break; default: echo "No action was specified as parameter\n"; break; } if ($client->logout($session_id)) { //echo 'Logged out.
'; } } catch (SoapFault $e) { echo $client->__getLastResponse(); die('SOAP Error: ' . $e->getMessage()); }