#pragma once // ── Canlı lisans kanalı (WebSocket) ────────────────────────────────────────── // Açılışta satıcının sunucusuna (fikoyt.com) WS bağlantısı kurar; makine kimliği // + seri bildirir ve panodan gelen ENGELLE/İZİN kararlarını ANINDA uygular. // Satıcı tek sayfadan TÜM açık fikocad'leri görür, tıkla-engelle/tıkla-izin-ver. // // Güvenlik: sunucudan gelen her karar ECDSA P-256 imzalidir (canliKararCoz, // gömülü açık anahtarla doğrulanır) → sahte sunucu/MITM karar enjekte edemez. // Bağlantı koparsa son karar bellekte kalır; .pol önbelleği (uzak politika // dosyası) çevrimdışı dayanıklılığı zaten sağlar — bu kanal ANINDALIK katmanıdır. // // Ayar: "lisans_canli_url" (boş = kanal kapalı). Örn: wss://fikoyt.com/lisans-ws #include namespace fiko { // Lisans yükleme akışından BİR KEZ çağrılır (uzakPolitikaBaslat yanı sıra): // URL doluysa arka plan WS iş parçacığını başlatır (otomatik yeniden bağlanma). void uzakCanliBaslat(); // KAPANIŞTA çağrılmalı. İş parçacığı detached olduğu için program kapanırken // statik durum nesnelerine (g_mtx, g_hata, g_durum) erişmeye devam ederse // yarış durumu oluşur ve süreç 0xC0000409 ile düşer. Çağrılmazsa yıkım // sırasında thread hâlâ çalışıyor demektir. void uzakCanliDurdur(); // Bu seri için canlı karar VAR mı (sunucu bu oturumda karar gönderdi mi)? bool uzakCanliKararVarMi(const std::string& seri); // Canlı karar: engelli mi? (karar yoksa false — uzakSeriEngelliMi'ye düşer) bool uzakCanliEngelliMi(const std::string& seri); // Canlı kararın mesaj alanı (yoksa boş). std::string uzakCanliMesaj(const std::string& seri); // Yeni karar geldi mi? (pompa tüketir; bir kez true döner) → lisans yeniden yükle. bool uzakCanliTazeKontrol(); // "Bağlantı ZORUNLU" ayarı (lisans_canli_zorunlu=1) AÇIKSA ve kanal, ayarlanan // gecikme süresinden (lisans_canli_zorunlu_gecikme_sn, varsayılan 120 sn) daha // uzun süredir BAĞLI değilse true döner — lisansYukleVeUygula bunu görünce // uygulamayı görüntüleyici kipine (kilit) düşürür. Ayar kapalıysa daima false. bool uzakCanliZorunluIhlalMi(); // Durum satırı ("Canlı kanal: bağlı — fikoyt.com · 3 karar"). std::string uzakCanliDurumOzet(); // Komut Denetim bölümü: bağlantı durumu + URL ayarı + şimdi bağlan. // ImGui bağlamı içinde çağrılmalı. void uzakCanliAyarBolumu(); } // namespace fiko