Ad Sunucuları ve Kayıtlar
Alan adının nereyi gösterdiğini belirleyen on dört uç.
Genel Bakış
Bir alan adının nereyi gösterdiği iki katmanda belirlenir. Önce ad sunucuları hangi sunucunun soruları yanıtlayacağını söyler; sonra o sunucudaki kayıtlar yanıtın ne olacağını söyler.
Bu ayrım uçlara da yansır: ad sunucusu değiştirmek her alan adında açıktır, ama kayıtları buradan yönetmek alan adı yönetimi ek hizmetini gerektirir.
Üç uç daha ileri gider. Kendi ad sunucunuzu işletiyorsanız onu alan adının altında tanımlarsınız; imza kayıtları ise yanıtların yolda değiştirilmediğini kanıtlar.
Referans
Ad Sunucularını Okuma
Alan adının ad sunucularını ve hesabın varsayılan setini döndürür.
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/nameservers' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/nameservers`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (data.is_custom) showResetToDefault(data.default);$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/nameservers');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu uc EK HIZMET ISTEMEZ: ad sunucusu degistirmek her alan adinda aciktir, DNS kayitlari degil.
$n = Kernel::internal('client:Domains/GetNameservers',
['owner_id' => $uid, 'domain' => $domain])['data'];
$set = $n['nameservers'];Ad Sunucularını Değiştirme
Alan adının ad sunucularını sağlayıcıda değiştirir.
curl -X PUT 'https://panel.ornek.com/api/v1/client/domains/example.com/nameservers' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"nameservers":["ns1.example.net","ns2.example.net"]}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/nameservers`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ nameservers: list }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/nameservers');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['nameservers' => $list]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Ad sunucusunu degistirmek SITEYI TASIR: eski sunucudaki kayitlar artik gecerli olmaz.
// Yeni sunucuda kayitlarin hazir oldugunu once dogrulayin.
Kernel::internal('client:Domains/UpdateNameservers',
['owner_id' => $uid, 'domain' => $domain, 'nameservers' => $list]);Varsayılan Ad Sunucularını Okuma
Hesabın yeni alan adlarına uygulanan varsayılan setini döndürür.
curl 'https://panel.ornek.com/api/v1/client/domains/default-nameservers' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/domains/default-nameservers', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (! data.nameservers.length) promptToSetDefaults();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/default-nameservers');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Varsayilan set YENI kayitlara uygulanir; var olan alan adlarini geriye donuk degistirmez.
$d = Kernel::internal('client:Domains/GetDefaultNameservers', ['owner_id' => $uid])['data'];Varsayılan Ad Sunucularını Kaydetme
Yeni alan adlarına uygulanacak varsayılan seti kaydeder.
curl -X PUT 'https://panel.ornek.com/api/v1/client/domains/default-nameservers' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"nameservers":["ns1.example.net","ns2.example.net"]}'const res = await fetch('https://panel.ornek.com/api/v1/client/domains/default-nameservers', {
method: 'PUT',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ nameservers: list }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/default-nameservers');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['nameservers' => $list]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu ayar HICBIR alan adina dokunmaz: yalniz sonraki kayitlarin baslangic degeridir.
Kernel::internal('client:Domains/UpdateDefaultNameservers',
['owner_id' => $uid, 'nameservers' => $list]);Kendi Ad Sunucularını Listeleme
Alan adının altında tanımlı ad sunucularını döndürür.
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/child-nameservers' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/child-nameservers`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/child-nameservers');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu kayitlar KENDI ad sunucunuzu isletmek icindir; siradan bir alan adinda gerekmez.
$g = Kernel::internal('client:Domains/GetChildNameservers',
['owner_id' => $uid, 'domain' => $domain])['data'];Kendi Ad Sunucusunu Tanımlama
Alan adının altında bir ad sunucusu tanımlar.
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/example.com/child-nameservers' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"host":"ns1.example.com","ip":"203.0.113.10"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/child-nameservers`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ host, ip }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/child-nameservers');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(compact('host', 'ip')),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Tanimlamak yetmez: alan adini o sunucuya YONLENDIRMEK icin ad sunucusu setini de yazin.
Kernel::internal('client:Domains/CreateChildNameserver',
['owner_id' => $uid, 'domain' => $domain, 'host' => $host, 'ip' => $ip]);
Kernel::internal('client:Domains/UpdateNameservers',
['owner_id' => $uid, 'domain' => $domain, 'nameservers' => [$host, $host2]]);Kendi Ad Sunucusunu Kaldırma
Alan adının altındaki bir ad sunucusu tanımını kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/client/domains/example.com/child-nameservers' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"host":"ns1.example.com"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/child-nameservers`, {
method: 'DELETE',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ host }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/child-nameservers');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['host' => $host]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Hala KULLANILAN bir sunucuyu kaldirmak baska alan adlarini erisilemez birakabilir.
Kernel::internal('client:Domains/DeleteChildNameserver',
['owner_id' => $uid, 'domain' => $domain, 'host' => $host]);DNS Kayıtlarını Listeleme
Alan adının DNS kayıtlarını sağlayıcıdan okur.
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/dns-records' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/dns-records`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const body = await res.json();
if (res.status === 422 && body.error.code.startsWith('addon_')) return offerAddon(body);
if (!res.ok) throw new Error(body.error.message); // dns_failed: 422 = saglayici reddetti, 500 = ulasilamadi (sonra yeniden deneyin)
const { data } = body;$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/dns-records');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kayit numarasi BOS gelebilir: o saglayici kaydi tur, ad ve deger uclusuyle tanir.
$rows = Kernel::internal('client:Domains/GetDnsRecords',
['owner_id' => $uid, 'domain' => $domain])['data'];
$keyed = (bool) ($rows[0]['identity'] ?? '');DNS Kaydı Ekleme
Alan adına yeni bir DNS kaydı ekler.
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/example.com/dns-records' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"type":"A","name":"www","value":"203.0.113.10","ttl":3600}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/dns-records`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ type: 'A', name: 'www', value: ip }),
});
const { data } = await res.json();
renderRecords(data);$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/dns-records');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($record),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yanit TAZE LISTEYI doner: ayrica okuma cagrisi yapmayin, ekranı bununla tazeleyin.
$rows = Kernel::internal('client:Domains/CreateDnsRecord',
['owner_id' => $uid, 'domain' => $domain] + $record)['data'];DNS Kaydını Düzenleme
Var olan bir DNS kaydını değiştirir.
curl -X PUT 'https://panel.ornek.com/api/v1/client/domains/example.com/dns-records' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"identity":"42","type":"A","name":"www","value":"203.0.113.20"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/dns-records`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ identity: rec.identity, ...next }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/dns-records');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($record),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Duzenleme her saglayicida YOKTUR: yetenek listesinde kapaliysa sil ve yeniden ekle.
$d = Kernel::internal('client:Domains/GetDomain',
['owner_id' => $uid, 'domain' => $domain])['data'];
if (! $d['capabilities']['dns_edit']) { /* delete + create */ }DNS Kaydını Silme
Bir DNS kaydını kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/client/domains/example.com/dns-records' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"identity":"42","type":"A","name":"www"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/dns-records`, {
method: 'DELETE',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ identity: rec.identity, type: rec.type, name: rec.name }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/dns-records');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($selector),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// YALNIZ tur gondermek ayni turdeki BIRDEN COK kaydi silebilir: numarayi ya da ad ve degeri ekleyin.
Kernel::internal('client:Domains/DeleteDnsRecord', ['owner_id' => $uid, 'domain' => $domain,
'identity' => $rec['identity'], 'type' => $rec['type'],
'name' => $rec['name'], 'value' => $rec['value']]);İmza Kayıtlarını Listeleme
Alan adının imza doğrulama kayıtlarını döndürür.
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/dnssec' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/dnssec`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const signed = data.length > 0;$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/dnssec');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu kayitlar EK HIZMET istemez ama saglayici destegi ister; yetenek listesinden dogrulayin.
$ds = Kernel::internal('client:Domains/GetDnssecRecords',
['owner_id' => $uid, 'domain' => $domain])['data'];İmza Kaydı Ekleme
Alan adına bir imza doğrulama kaydı ekler.
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/example.com/dnssec' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"key_tag":12345,"algorithm":13,"digest_type":2,"digest":"A1B2C3"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/dnssec`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(ds),
});
if (res.status === 422) showAllowed(await res.json());$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/dnssec');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($ds),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Izinli algoritma kumesi SAGLAYICIYA gore degisir: reddi okuyup izinli listeyi kullaniciya gosterin.
try { Kernel::internal('client:Domains/CreateDnssecRecord',
['owner_id' => $uid, 'domain' => $domain] + $ds); }
catch (\Throwable $e) { $allowed = $e->details['allowed'] ?? []; }İmza Kaydını Silme
Bir imza doğrulama kaydını kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/client/domains/example.com/dnssec' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"key_tag":12345,"digest":"A1B2C3"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/dnssec`, {
method: 'DELETE',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ key_tag: ds.key_tag, digest: ds.digest }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/dnssec');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($selector),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Son imza kaydini silmeden ONCE bolgeyi imzasiz hale getirin: sira ters olursa alan adi cozulmez.
$ds = Kernel::internal('client:Domains/GetDnssecRecords',
['owner_id' => $uid, 'domain' => $domain])['data'];
$isLast = count($ds) === 1;Tuzaklar
DNS kayıt uçları alan adı yönetimi ek hizmetinin arkasındadır: alınmamışsa ya da faturası ödenmemişse hepsi reddedilir ve yanıt hangi durumda olduğunu söyler. Ad sunucusu değiştirme uçları bu kapıdan geçmez; her alan adında çalışır.
Ad sunucusu setini değiştirmek, alan adının sorularını başka bir sunucuya yönlendirir. Buradan girdiğiniz kayıtlar eski sunucuda kalır ve artık kimse onlara sormaz. Yeni sunucuda kayıtların hazır olduğunu doğrulamadan seti değiştirmeyin.
Bazı sağlayıcılar kaydı bir numarayla anahtarlar, bazıları tür, ad ve değer üçlüsüyle tanır; ikinci durumda numara boş gelir. Düzenleme ve silme çağrılarında numara varsa mutlaka gönderin; yoksa üçlüyü tam verin, yoksa yanlış kayıt seçilebilir.
Silme çağrısında yalnız kayıt türü zorunludur; ad ve değer eşleşmeyi daraltır. Sadece tür göndermek, o türdeki birden çok kaydı birden götürebilir. Elinizde numara yoksa bile adı ve değeri ekleyin.
İmza doğrulama açıkken sicildeki kayıt ile bölgedeki imza uyuşmak zorundadır. Son kaydı bölge hâlâ imzalıyken kaldırmak ya da bölgeyi kayıt dururken imzasız bırakmak alan adını çözülemez hâle getirir. Önce bölgeyi imzasız hâle getirin, sonra kaydı silin.
Alan adının altında bir ad sunucusu tanımlamak onu yalnız var eder; alan adının o sunucuyu kullanması için ad sunucusu setini de yazmanız gerekir. Bu ikinci adım atlanırsa tanım sicilde durur ama hiçbir şey değişmez.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.