Lisans Devri Kancaları
Yazılım lisansını başka bir hesaba taşıyan ve kurulumu sıfırlayan on iki kanca.
Genel Bakış
Lisans devri, hizmet devrinden ayrı bir akıştır. Kendi kaydını tutar, kendi ücretini keser ve iki tarafın da e-posta doğrulaması ile ilerler.
Yeniden verme (reissue) ise devirle ilgisizdir: lisansın bağlı olduğu kurulum bilgisi sıfırlanır, böylece müşteri yazılımı başka bir sunucuya kurabilir.
Referans
Lisans devrini durdurma
Lisans devri başlamadan önce çalışır.
Hook::add('gate:service.license_transfer', 10, function ($service, $lt_config) {
// Ucretsiz verilen gelistirici lisansi devredilemez.
if (!empty($service['options']['developer']))
return 'Gelistirici lisansi baska bir hesaba devredilemez.';
return null;
});Devir ücretini değiştirme
Devir ücreti hesaplandıktan sonra, fatura kesilmeden önce çalışır.
type, amount, currency_id, basis, base_amount, base_currency_id. Yüzde tipinde taban ürünün güncel tek seferlik fiyatıdır (basis = product_price); ürünün aktif tek seferlik fiyatı yoksa hizmet tutarına düşer. Tutarı sıfırlamak devri ücretsiz yapar.Hook::add('filter:service.license_transfer_fee', 10,
function (&$fee, $service, $lt_config) {
// Kurum ici devirlerde ucret almayin.
if (Acme::sameCompany($service)) $fee['amount'] = 0.0;
});Devrin başladığını öğrenme
Devir kaydı oluşturulduktan sonra çalışır. Lisans bu noktada henüz geçmemiştir.
Hook::add('action:service.license_transfer_started', 10,
function ($transfer_id, $service_id, $transferor_id, $transferee_id) {
// Lisans HENUZ gecmedi: iki taraf da dogrulayana kadar bekler.
Audit::licenseTransfer('started', $transfer_id, $service_id);
});Bir tarafın onayını izleme
Taraflardan biri e-posta bağlantısını onayladığında çalışır. Her devir için iki kez çalışır.
transferor (gönderen) ya da transferee (alıcı). Hangi tarafın onayladığını buradan okuyun; kanca iki kez çalışır.Hook::add('action:license.transfer.verified', 10, function ($transfer, $party) {
// Kanca IKI kez calisir: yalniz alicinin onayina tepki verin.
if ($party === 'transferee') Crm::licenseAccepted($transfer['id'] ?? 0);
});Devrin tamamlandığını öğrenme
Lisans yeni sahibe geçtikten sonra çalışır.
Hook::add('action:service.license_transfer.completed', 10,
function ($transfer_id, $transfer) {
// Kayit taze okunmustur: durum ve zaman guncel.
Acme::licenseMoved((int) ($transfer['owner_id'] ?? 0), $transfer);
});Lisansın yeniden verilmesini izleme
Lisansın kurulum bağı sıfırlandıktan sonra çalışır; müşteri artık yazılımı başka bir sunucuya kurabilir.
['network' => string, 'queue_id' => int] biçiminde bildirebilir. Yalnız failed ekranı değiştirir: yönetici hızlı işlemi de müşterinin Yeniden Düzenle butonu da başarı mesajı yerine uyarı gösterir, çünkü sunucu değişikliği duymamıştır. queued, legacy ve unbound başarı mesajını korur. Başka biçimdeki dönüş ve null yoksayılır.Hook::add('action:service.license_reissued', 10, function ($service, $uid) {
// Eski kurulum bilgisi HALA kayitta: yeni degil, eskisini gorursunuz.
$ok = Acme::forgetInstall($service['options']['install'] ?? '');
// Istege bagli: sunucunuzun degisikligi duyup duymadigini panele bildirin.
return ['network' => $ok ? 'queued' : 'failed', 'queue_id' => 0];
});Lisans güncellemesini izleme
Operatör hizmetin Yönetim sekmesini kaydettikten ve lisansa dair bir şey değiştikten sonra çalışır. O lisansı başka bir yerde tutan her şey artık eskidi. Kendi kaydınızı burada güncellersiniz.
İzlenen alanlar: anahtar, alan adı, IP, sürüm ve lisans parametreleri. Hiçbiri değişmediyse kanca çalışmaz. Kayıt zaten yapıldı; döndürdüğünüz hiçbir şey okunmaz.
alan => ['old' => …, 'new' => …]. Anahtarlar: key, domain, ip, version, parameters.$changes['key'] nasıl okunur 3Hook::add('action:service.license_updated', 10,
function ($serviceId, $changes, $service) {
// Anahtar taşınmadı: başka bir alan değişti, yeniden yayınlamak yeter.
if (!isset($changes['key'])) return Acme::republish((int) $serviceId);
$old = (string) $changes['key']['old'];
$new = (string) $changes['key']['new'];
if ($new === '') return; // temizlendi, silinmedi
$old === ''
? Acme::register((int) $serviceId, $new) // ilk kez verildi
: Acme::rekey($old, $new); // yeni anahtara taşındı
});Lisans bildirimini izleme
Müşteri lisansıyla ilgili bir bildirim gönderdiğinde çalışır.
Hook::add('action:service.license_report_submitted', 10, function ($service, $uid) {
Ops::queue('license-report', (int) ($service['id'] ?? 0));
});Devrin iptalini izleme
Bir lisans devri sonlandığında çalışır. Üç ayrı son bu kancaya düşer: iptal, ret ve süre aşımı.
cancelled, rejected ya da expired.Hook::add('action:service.license_transfer_cancelled', 10,
function ($transfer_id, $status, $reason) {
// Lisans sunucusundaki devir kilidini kaldirin.
Acme::unlockTransfer($transfer_id);
});Doğrulamanın yeniden gönderilmesini izleme
Devir doğrulama e-postaları yeniden gönderildiğinde çalışır. Yalnız henüz doğrulamamış taraflara gider; onaylayanlara tekrar gönderilmez.
Hook::add('action:service.license_transfer.verification_resent', 10,
function ($service, $active, $pending) {
// Ikinci kanaldan hatirlatin: yalniz bekleyen taraflara.
foreach ($pending as $party) Acme::remind($party, (int) ($active['id'] ?? 0));
});Yazılım alan adı değişimini durdurma
Müşteri lisansının bağlı olduğu alan adını değiştirirken, çekirdek denetimleri geçtikten sonra ve kayıt yazılmadan önce çalışır.
Hook::add('gate:service.software_domain_change', 10,
function ($service, $old, $domain, $uid) {
// Kendi kara listenizi uygulayin.
if (Acme::blockedDomain($domain)) return 'Bu alan adi lisansa baglanamaz.';
return null;
});Yazılım alan adı değişimini izleme
Lisansın bağlı alan adı kaydedildikten sonra çalışır. Lisans sunucusuna haber vermenin yeri burasıdır.
Hook::add('action:service.software_domain_changed', 10,
function ($service, $old, $domain, $uid) {
Acme::rebindLicence((int) ($service['id'] ?? 0), $domain);
});Tuzaklar
Gönderen ve alıcı ayrı ayrı onaylar; kanca her ikisinde de çalışır. Tarafı okumadan tepki veren bir dinleyici aynı işi iki kez yapar. İkinci parametredeki taraf değerini ilk satırda kontrol edin.
Kanca size sıfırlama öncesi hizmet kaydını verir: kurulum ve adres alanları eski sunucuyu gösterir. Bu bir kusur değil, tek şansınızdır: eski kuruluma dair ne yapacaksanız burada yapın, çünkü değer birazdan silinecek.
Yeniden verme kancasındaki kimlik her zaman hizmetin sahibidir. İşlemi bir alt kullanıcı ya da personel tetiklemiş olabilir; o kimlik bu kancaya hiç gelmez. "Bunu kim yaptı" sorusunu buradan cevaplayamazsınız.
İki akış birbirine benzese de ayrı kancalar kullanır: lisans devrinin kendi kaydı, kendi ücreti ve iki taraflı e-posta doğrulaması vardır. Hizmet devri kancalarını dinleyen bir sistem lisans devirlerini hiç görmez.
İlgili Makaleler
- Hizmet Devir Kancaları
- Hizmet Durum Kancaları
- Fatura ve Ödeme Kancaları
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.