KAREBLOK
Odunlara Vur Vur Vur!
- Katılım
- 28 Haziran 2019
- Mesajlar
- 33
- Elmaslar
- 44
- Puan
- 13.405
Discord:
KAREBLOK#0996
ReportSystem v2.1.4 — Kritik: Overwatch & Replay Envanter Kayıpları ve Veri Güvenliği Düzeltildi
Bu sürüm, Overwatch inceleme ve Replay sistemini kullanan sunucularda tespit edilen kritik veri kaybı ve eşya silinmesi açıklarını kökünden çözmektedir. Tüm sunucuların derhal v2.1.4 sürümüne güncellenmesi şiddetle tavsiye edilir.
Bu sürüm, Overwatch inceleme ve Replay sistemini kullanan sunucularda tespit edilen kritik veri kaybı ve eşya silinmesi açıklarını kökünden çözmektedir. Tüm sunucuların derhal v2.1.4 sürümüne güncellenmesi şiddetle tavsiye edilir.
Sorun Neydi?
- Bir yetkili Overwatch incelemesine girdiğinde oyuncunun gerçek envanteri kontrol eşyalarıyla değiştiriliyordu; ancak inceleme bitişinde çalışan metodun orijinal envanteri geri yükleme zinciri kopuktu ve eldeki yedek kopyalar iade edilmeden siliniyordu.
- Karar (verdict) ekranı hiçbir zaman true dönmeyen bir şarta bağlı kaldığı için yetkili sadece eski yerine ışınlanıyor, envanteri ise tamamen silinmiş olarak kalıyordu.
- İnceleme veya replay sırasında oyundan çıkan (quit/crash) yetkililerde Bukkit'in isOnline() gecikmesi sebebiyle sunucu oyuncunun verisini boş envanterle diske yazıyor, yetkili sunucuya bir daha girdiğinde eşyaları kalıcı olarak yok oluyordu.
- "Tekrar İzle" butonuna basıldığında oyuncunun elindeki geçici/boş envanter ilk alınan gerçek yedeğin üzerine yazılıyor ve eşyalar eziliyordu.
- Sunucu reload atıldığında veya kapatıldığında inceleme masasındakilerin envanteri iade edilmiyordu.
Neler Düzeltildi?
- Eksiksiz State Kaydı: Oyuncunun envanteri, konumu, oyun modu, canı, açlığı, doygunluğu, uçuş durumu ve yanma süresi replay başlamadan hemen önce güvenle hafızaya alınır.
- İdempotent Kayıt Koruması: "Tekrar İzle" butonuna basıldığında eldeki boş envanterin orijinal envanter kaydını ezmesi engellendi (putIfAbsent). İnceleme bitene kadar sadece ilk baştaki gerçek envanter korunur.
- Geri Yükleme Sıralaması ve Güvenli Fallback: Önceki sürümlerde envanter yüklenmeden önce çalışan temizlik sıralaması düzeltildi. Olası bir durumda kendi anlık görüntüsü bulunamazsa dahi ReplayControlManager'ın aldığı yedek devreye sokulur.
- Karar Ekranı (Verdict) Kilidi Kaldırıldı: Verdict GUI sonrası envanter iadesini engelleyen kısıtlayıcı kapı kaldırıldı, karar sonrası tüm durumlar eksiksiz iade edilecek şekilde bağlandı.
- Senkron Çıkış (Quit/Crash) Koruması: İnceleme veya normal replay sırasında oyundan ayrılan yetkililerin envanteri ve orijinal koordinatları Bukkit oyuncu dosyasını (.dat) kaydetmeden önce anında senkron geri yüklenir. Yetkili tekrar girdiğinde hem eşyaları yerindedir hem de şüpheli oyuncunun yanında değil kendi bıraktığı konumda doğar.
- Sunucu Kapanışı & Reload (onDisable) Entegrasyonu: Sunucu durdurulduğunda (/stop) veya yenilendiğinde (/reload) aktif incelemede olan herkesin envanteri anında geri verilir.
- Eşya Sızdırma Koruması: Karar aşamasındaki eşyaların (Saat, Kitap, Bariyer) yere atılması, sandıklara koyulması veya dünyayla etkileşime sokulması engellendi.
- Veritabanı ve Mükerrer İnceleme Koruması: Yetkili zaten incelemedeyken menüden tekrar inceleme başlatması engellendi. Replay dosyası bozuk veya açılamıyorsa rapor veritabanında IN_REVIEW olarak takılı kalmaz, otomatik olarak havuza iade edilir (unassignReport).
- 10 Dakika AFK/Zaman Aşımı: 10 dakika dolup zaman aşımına uğrayan yetkililerin de eşyaları ve konumu artık güvenle iade edilir.
- Etkilenen Sürümler: v2.0.1 ve öncesi
- Veri Kaybı Riski: Yüksek (Eski sürümlerde) -> v2.1.4 ile tamamen giderildi
- Config/Veritabanı Sıfırlaması Gerekir mi?: Hayır, doğrudan JAR değişimine uygundur.