Alan Adı Yönlendirme Kancaları

1.6k görüntülenme Markdown

Gelen ziyaretçiyi ve postayı başka bir yere taşıyan sekiz kanca, artı bu iki türü satın alan ek hizmet çağrısı.

Genel Bakış

Yönlendirmenin iki türü vardır ve ikisi de aynı ek hizmetin arkasındadır: adrese geleni taşıyan yönlendirme ve postayı taşıyan yönlendirme.

Aralarında bir sayı farkı var. Adres yönlendirmesi alan adı başına tektir, posta yönlendirmesi ise bir listedir. Bu fark kancaların parametrelerine de yansır: biri tek bir kayıt taşır, diğeri kaynak ve hedef çiftleri.

Referans

Adres yönlendirmesini durdurma

gatedomain.url_forwarding_change
ClientDomains kurma ve kaldırma

Yönlendirme sağlayıcıda kurulmadan ya da kaldırılmadan önce çalışır.

Parametreler 3
$servicearrayAlan adı hizmet kaydı.
$fwdarrayYönlendirme: protocol (http/https), target (şemasız hedef, sondaki eğik çizgi kırpılmış), method (301/302). Kaldırma çağrısında boş dizi gelir.
$verbstringsave ya da cancel.
Dönüş 1
stringBoş olmayan bir string işlemi durdurur; metin hata olarak fırlatılır ve sağlayıcı çağrılmaz.
Dinleyici
Hook::add('gate:domain.url_forwarding_change', 10,
    function ($service, $fwd, $verb) {
        if ($verb === 'cancel') return null;          // kaldirmaya karisma

        // Kalici yonlendirme tarayicida saklanir; guvensiz hedefe izin verme.
        if (($fwd['protocol'] ?? '') !== 'https' && (int) ($fwd['method'] ?? 0) === 301)
            return 'Kalici yonlendirme yalniz guvenli adrese yapilir.';

        return null;
    });

Adres yönlendirmesini izleme

actiondomain.url_forwarding_changed
ClientDomains yalnız başarıda

Yönlendirme sağlayıcıda kurulduktan ya da kaldırıldıktan sonra çalışır.

Parametreler 3
$servicearrayAlan adı hizmet kaydı.
$fwdarrayKurulan yönlendirme. Kaldırma çağrısında boş dizi; hedefi buradan okumaya çalışmayın.
$verbstringYapılan işlem.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:domain.url_forwarding_changed', 10,
    function ($service, $fwd, $verb) {
        Audit::note('forwarding', $service['name'] ?? '',
            $verb === 'cancel' ? 'kaldirildi' : ($fwd['target'] ?? ''));
    });

Okunan yönlendirmeyi değiştirme

filterdomain.url_forwarding
Hook::runRefs referansla

Sağlayıcıdan okunan yönlendirme normalleştirildikten sonra, ekrana gitmeden önce çalışır.

Parametreler 2
$forwardingarrayrefTek kayıt: active, protocol, method, domain (şemasız hedef), url (tam adres). active ekranın "yönlendirme var mı" durumunu, url ise hedef kutusunun ön dolumunu belirler.
$servicearrayAlan adı hizmet kaydı.
Dönüş 1
voidDeğer referansla değişir; dönüş kullanılmaz.
Dinleyici
Hook::add('filter:domain.url_forwarding', 10, function (&$forwarding, $service) {
    // active ile url birlikte tutarli olmali: biri dolu digeri bos kalmasin.
    if (empty($forwarding['url'])) $forwarding['active'] = false;
});

Posta yönlendirmesini durdurma

gatedomain.email_forward_save
ClientDomains ekleme ve silme

Posta yönlendirme kuralı sağlayıcıda eklenmeden ya da silinmeden önce çalışır.

Parametreler 4
$servicearrayAlan adı hizmet kaydı.
$prefixstringAlan adındaki yerel kısım. Yalnız kısım gelir, tam adres değil: info demek [email protected] demektir.
$targetstringHedef kutu. Silmede boş gelebilir.
$verbstringcreate ya da delete.
Dönüş 1
stringBoş olmayan bir string işlemi durdurur; metin hata olarak fırlatılır ve sağlayıcı çağrılmaz.
Dinleyici
Hook::add('gate:domain.email_forward_save', 10,
    function ($service, $prefix, $target, $verb) {
        if ($verb === 'delete') return null;

        // Yonetim kutularini disari yonlendirmek hesap devralmaya kapi acar.
        if (in_array(strtolower($prefix), ['admin', 'postmaster', 'hostmaster'], true))
            return 'Bu yerel kisim yonlendirilemez.';

        return null;
    });

Posta yönlendirmesini izleme

actiondomain.email_forward_saved
ClientDomains yalnız başarıda

Kural sağlayıcıda işlendikten sonra çalışır.

Parametreler 4
$servicearrayAlan adı hizmet kaydı.
$prefixstringKaynağın yerel kısmı.
$targetstringHedef kutu.
$verbstringYapılan işlem.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:domain.email_forward_saved', 10,
    function ($service, $prefix, $target, $verb) {
        MailAudit::rule($verb, $prefix . '@' . ($service['name'] ?? ''), $target);
    });

Yönlendirme listesini değiştirme

filterdomain.email_forwards
Hook::runRefs referansla

Sağlayıcıdan okunan kurallar normalleştirildikten sonra çalışır.

Parametreler 2
$forwardsarrayrefKural listesi: her satır identity, prefix, source (prefix@alanadı) ve target taşır. Silme çağrısı bu üç alanı geri gönderir; düşürmeyin.
$servicearrayAlan adı hizmet kaydı.
Dönüş 1
voidDeğer referansla değişir; dönüş kullanılmaz.
Dinleyici
Hook::add('filter:domain.email_forwards', 10, function (&$forwards, $service) {
    // identity/prefix/target ucunu de KORU: silme bunlarla hedefler.
    usort($forwards, fn ($a, $b) => strcmp($a['prefix'] ?? '', $b['prefix'] ?? ''));
});

Ek hizmet satın almayı durdurma

gatedomain.addon_purchase
ClientDomains fatura kesilmeden

Müşteri ek hizmeti satın almadan, hiçbir kayıt oluşmadan çalışır.

Parametreler 2
$servicearrayAlan adı hizmet kaydı.
$addonKeystringSatın alınan ek hizmet: dns-manage, whois-privacy ya da forwarding. Anahtar tireli yazılır; alt çizgi eşleşmez.
Dönüş 1
stringBoş olmayan bir string satın almayı durdurur; müşteriye hata olarak döner ve hiçbir kayıt oluşmaz.
Dinleyici
Hook::add('gate:domain.addon_purchase', 10, function ($service, $addonKey) {
    // Suresi dolmak uzere olan ada yillik ek hizmet satmak dogru degil.
    if (Acme::daysLeft($service) < 30)
        return 'Alan adinin suresi dolmak uzere; once yenileyin.';

    return null;
});

Ek hizmet siparişini izleme

actiondomain.addon_ordered
ClientDomains fatura ödenmemiş

Sipariş kurulduktan sonra çalışır. Ek hizmet bu noktada beklemededir: faturası ödenene kadar etkinleşmez.

Parametreler 3
$servicearrayAlan adı hizmet kaydı.
$addonKeystringSipariş edilen ek hizmet.
$contextarraySipariş bağlamı: invoice_id (kesilen ödenmemiş fatura), addon_id (bekleyen kayıt), addon_name.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:domain.addon_ordered', 10,
    function ($service, $addonKey, $context) {
        // Hizmet HENUZ acik degil: faturasi odenince etkinlesir.
        Crm::pendingAddon((int) ($context['invoice_id'] ?? 0), $addonKey);
    });

Tuzaklar

Kaldırma çağrısında yönlendirme boş gelir

Adres yönlendirmesi kaldırılırken kanca ikinci parametreyi boş dizi olarak verir. Eski hedefi oradan okumaya çalışan bir dinleyici boş bulur ve sessizce yanlış iş yapar. Neyin kaldırıldığını bilmeniz gerekiyorsa kapıda okuyup saklayın.

Posta kancasında yerel kısım gelir

Kaynak parametresi yalnız yerel kısımdır, tam adres değil. Alan adını kendiniz eklemeniz gerekir ve bunu yaparken hizmet kaydındaki addan alın. Tam adres bekleyen bir dinleyici, kayıt eşleştirmesinde hiçbir şey bulamaz.

Sipariş kancası hizmetin açıldığı an değildir

Ek hizmet siparişi kesildiğinde kayıt beklemede, faturası ise ödenmemiş durumdadır. Erişimi burada açmaya kalkmak, parası ödenmemiş bir hizmeti teslim etmek olur. Gerçek açılış ödeme tarafındaki kancalarda olur.

Ek hizmet anahtarı tirelidir

Anahtarlar dns-manage, whois-privacy, forwarding biçimindedir. Alt çizgiyle yazmak sessizce eşleşmez: dinleyiciniz çalışır ama koşulunuz hiçbir zaman tutmaz.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.