Ana içeriğe geç

Rentiva v4.33.0 — Pro Gate Birleştirme

· 5 dakikalık okuma
MaxHandMade
Maintainer

v4.33.0, v4.31.0 RSA token migration'ından kalan üç boşluğu kapatıyor: token kontrolünü atlayan 22 callsite, yanıltıcı bir License Admin mesajı, ve lokalde lisans sunucusu çalıştırmadan Pro özelliklerini test edememe.

6.0.0 öncesinde yazıldı

Bu yazı, 6.0.0'dan önce çıkmış bir sürümün kaydıdır; 6.0.0 eklentinin içerik tiplerini, taksonomilerini, ayarlarını, meta anahtarlarını ve hook'larını yeniden adlandırdı. Aşağıdaki tanımlayıcılar o sürümlerin gerçekten kullandığı adlardır ve bilerek öyle bırakılmıştır. Güncel adlar ve dönüşüm tablosu için 6.0.7 sürüm yazısına bakın.

Bu sürüm neden var​

v4.31.0, RSA-imzalı feature token'larını Mode::featureGranted() aracılığıyla tek Pro otorite olarak getirdi. Her Pro feature gate'inin bu metodu (veya delege eden canUse*() wrapper'larından birini) çağırması gerekiyordu. Ama codebase'de 22 yer hâlâ eski Mode::featureEnabled() API'sini çağırıyordu — bu yalnızca isPro() kontrol ediyordu, token doğrulaması yok. Cracked bir binary'nin LicenseManager::isActive() metodunu true döndürecek şekilde patch'lemesi, geçerli bir token olmadan o callsite'larda mesajları, gelişmiş raporları ve export'u açabiliyordu.

Bu sürüm her callsite'ı migrate ediyor, eski API'yi soft-deprecate ediyor, ve birikmiş iki UX düzeltmesi ekliyor.

Değişiklikler​

🔒 Güvenlik: 22 callsite artık token doğruluyor​

DosyaCallsite
Frontend/Account/AccountRenderer.php1
Frontend/Account/WooCommerceIntegration.php2
Messages/Core/Messages.php1
Messages/Frontend/CustomerMessages.php1
Messages/REST/*.php (3 dosya)3
Reports/Reports.php2
Utilities/Export/Export.php3
Utilities/Export/ExportReports.php6
Utilities/Menu/Menu.php3

Tümü uygun Mode::canUse*() metoduna migrate edildi. Mode::featureEnabled() artık WP_DEBUG'da _deprecated_function() notice'ı yayan soft-deprecated bir wrapper. Body üçüncü taraf çağrıcılar için korundu; tam kaldırma v5.0 için planlandı.

🔧 License Admin: sabit metin yerine gerçek durum​

Lisans sayfası bir lisans aktif olduğunda her seferinde "All Pro features active: Unlimited vehicles/bookings, export, advanced reports, Vendor & Payout." yazıyordu — sunucunun aslında hangi feature token'larını verdiğine bakmaksızın. Boş veya kısmi token'ı olan müşteriler bu satırı okuyup Vendor menüsünün neden eksik olduğunu merak ediyordu.

Yeni render gerçek gate kararlarından türeyen liste:

Aktif Pro özellikleri: Vendor & Payout, Gelişmiş Raporlar, Mesajlar, Genişletilmiş Export

Hiç gate aktif değilse (lisans aktif ama token boş — normal şartlarda olmaması gereken ama v4.30.x → v4.31.0 geçişinde olan durum), sayfa artık yanıltıcı metin yerine "Re-validate Now" CTA'lı bir uyarı bildirimi gösteriyor.

✨ Lokal Pro testi için Geliştirici Modu​

v4.31.0'dan beri lokalde Pro feature eklemek zahmetliydi: RSA-imzalı feature token'ı lisans sunucusu tarafından veriliyor, geliştiriciler bunu makinelerinde çalıştırmıyor olabilir. Sonuç fail-closed gate'di — lokal Pro feature'lar production'dan token kopyalamadan test edilemezdi (kopyalanmamalı).

İki yeni constant bypass'ı etkinleştiriyor:

// wp-config.php (yalnızca geliştirme)
define( 'WP_DEBUG', true );
define( 'MHM_RENTIVA_DEV_PRO', true );

İkisi de true olduğunda Mode::featureGranted() token doğrulama adımını atlar ve true döner. isPro() kontrolü hâlâ önce çalışır, dolayısıyla bir Lite lisansı Pro'ya bypass edemez — yine aktif bir lisansa ihtiyacın var, sadece geçerli token'a değil.

Production güvenliği: Hostinger production ortamlarında WP_DEBUG=false default'tur, dolayısıyla MHM_RENTIVA_DEV_PRO bir production wp-config.php'sine sızmış olsa bile (sızmamalı), bypass devreye girmez.

Sarı "Geliştirici Modu" banner alt başlığı artık bypass'ın gerçekten aktif mi yoksa sadece pasif mi olduğunu yansıtıyor.

Yeni bir mhm_rentiva_dev_pro_bypass filter'ı bypass kararını test edilebilirlik için açığa çıkarıyor — PHPUnit tek bir process içinde PHP define'larını toggle edemez.

⚠️ KIRICI: Lite kullanıcılar xlsx/pdf export erişimini kaybediyor​

Eski featureEnabled(FEATURE_EXPORT) Lite kullanıcılar için koşulsuz true dönüyordu. Bu bir bug'dı — çağıranlardaki format kontrolü (! in_array($format, ['csv', 'json'])) ikinci gate olması gerekiyordu, ama featureEnabled kısa devre yapıyordu. Yani Lite kullanıcılar xlsx ve pdf export isteyebiliyordu.

canUseExport() Lite için doğru şekilde false dönüyor. CSV ve JSON hâlâ ücretsiz; xlsx ve pdf artık niyetlendiği gibi yalnızca Pro.

Etkilenen Lite kullanıcılar için göç yolu: tam format erişimi için Pro'ya yükselt, ya da CSV/JSON ile devam et.

🌐 Çeviri kalitesi (collateral)​

v4.33.0 i18n turu, tüm TR kataloğu üzerinde bir msgmerge tetikledi. Daha önceki sürümlerde otomatik fuzzy olarak işaretlenen ve hiç gözden geçirilmeyen mevcut çeviriler vardı. Bu turda 22 tanesini düzelttik:

  • "Airport Transfer" yanlışlıkla "Aktarımı İzin Ver" (kelimesi kelimesine "Allow Transfer") olarak çevrilmişti. Şimdi doğru şekilde "Havalimanı Transferi".
  • "Report Issue" "Raporlar" (Reports) idi. Şimdi "Sorun Bildir".
  • Birden çok plural form %d/%d'den positional %1$d/%2$d'ye geçti (kaynak argüman sırası ile eşleşir).
  • Daha önceki turlarda düşürülen birkaç email etiketi iki noktası restore edildi.

msgmerge fuzzy sayısı post-merge: 0 — otomasyon tarafından doğrulandı.

Uyumluluk​

BileşenGerekli sürüm
mhm-license-serverv1.11.2 (verilen feature-token allowlist'ine 'export' ekler)
mhm-polar-bridgev1.9.0+
WordPress6.7+
PHP8.1+

Eğer v4.33.0 mhm-license-server v1.11.2'den önce yayınlanırsa, Pro kullanıcılar 24 saate kadar xlsx/pdf export erişimini kaybeder — yeni canUseExport() gate'i sunucunun henüz vermediği bir 'export' token claim'i arıyor. Sunucunun günlük cron'u token'ları yeniden veriyor; License sayfasında "Re-validate Now"a manuel tıklamak hemen yeniliyor.

İşte bu yüzden release zinciri sırası önce server v1.11.2, sonra plugin v4.33.0.

Testler​

  • 807 → 822 PHPUnit (+15)
    • 5 ModeDevBypassTest'te
    • 4 LicenseAdminActiveFeaturesTest'te
    • 6 ModeGateMigrationTest'te
  • PHPCS: 0 hata, 0 uyarı (release scope)
  • Plugin Check (WordPress.org uyumluluğu): 0 HATA, 27 UYARI (hepsi önceden var olan, hepsi Plugin Check'in phpcs.xml prefix konfigürasyonunu okumamasından gelen bilinen yanlış-pozitifler)

Yükseltme notları​

  1. mhm-license-server v1.11.2'nin canlıya çıkmasını bekle (yoksa Pro export ~24h kırılır).
  2. Plugin'i WP Admin → Eklentiler → Yükle ile veya FTP üzerinden ZIP'i değiştirerek güncelle.
  3. Güncelleme sonrası License sayfasında bir kez "Re-validate Now"a tıkla. Bu, istemcinin sunucudan taze token almasını zorlar — onsuz bir sonraki yenileme penceresi günlük cron.
  4. (Bug-enabled) xlsx export'larına güvenen Lite kullanıcılar: Pro'ya yükselt ya da CSV/JSON'a geç.

Lokal geliştirme​

Eğer bir fork sürdürüyor ya da plugin'i genişletiyorsan:

// wp-config.php
define( 'WP_DEBUG', true );
define( 'MHM_RENTIVA_DEV_PRO', true ); // token kontrolünü atla, Pro gate'leri çalıştır

Bu, gerçek bir RSA-imzalı token olmadan aktif lisansa karşı Vendor Marketplace, Gelişmiş Raporlar, Mesajlar ve Genişletilmiş Export'u açar. Production'a gönderme.