#pragma once // ── Lisans yükleme + uygulama durumu ──────────────────────────────────────── // Açılışta .fkl dosyasını arar, imzasını doğrular, makine parmak iziyle karşılaştırır // ve politikayı app-global LisansSistemi'ne aktarır. // // Geçerli lisans dosyası yoksa/bozuksa oturum Kısıtlı kipe düşer: yalnız destek/idare // komutları (Komut Denetim, Ayarlar, Güncelleme, Geri Bildirim) açık kalır — dosya // açma/görüntüleme/ölçüm dahil HİÇBİR şey çalışmaz. Bu koruma ayarlardan devre dışı // bırakılamaz. #include #include #include "fiko/cekirdek/lisans_dosya.hpp" namespace fiko { class LisansSistemi; class Cekirdek; struct LisansOturum { LisansDurum durum = LisansDurum::Bos; LisansBilgi bilgi; std::string yol; // yüklenen dosyanın yolu (boş = bulunamadı) std::string hata; // çözümleme hatası (kullanıcıya gösterilir) int eslesenAlan = 0; // node-lock: kaç makine alanı tuttu bool zorunlu = true; // Geçersiz/eksik lisans her zaman görüntüleyici kipine düşer. bool ureticiTamErisim = false; // Özel imza anahtarı bulunan üretici makinesi. bool saatGeriAlinmis = false; // sistem saati geriye alınmış (süreli lisans iptal) // Yüklenen TÜM geçerli lisans dosyaları (çoklu lisans: haklar birleşir). `bilgi` // bunlardan ilkidir — özet/panel onu gösterir, gate hepsinin birleşimini uygular. struct Kayit { std::string yol, seri, musteri; i64 bitis = 0; int paketSayi = 0; }; std::vector lisanslar; bool gecerliMi() const { return durum == LisansDurum::Gecerli; } // Bitişe kalan gün (süresiz lisansta -1). Uyarı eşiği için. int kalanGun() const; }; // Aranan sırayla: FIKO_LISANS ortam değişkeni → exe yanı lisans.fkl → // %ProgramData%\FikoCAD\lisans.fkl. İlk OKUNABİLEN dosya kullanılır. std::vector lisansAranacakYollar(); // Yükle + doğrula + LisansSistemi'ne aktar. Her çağrı oturumu tazeler (kullanıcı // yeni lisans dosyası koyup "Yeniden Yükle" diyebilir). Cekirdek yalnız gate'i // bağlayan LisansSistemi için gerekir — komut kaydı değişmez. const LisansOturum& lisansYukleVeUygula(LisansSistemi& sis); // Son yükleme sonucu (pencere/durum çubuğu okur). const LisansOturum& lisansOturum(); // Açılışta lisans BİR KEZ yüklendi mi (ayar köprüsü canlı yeniden yükleme için sorar; // açılış sırasında kalıcı ayarlar uygulanırken lisans henüz yüklenmemiştir). bool lisansYuklendiMi(); // Yalnız üreticide bulunan özel imza anahtarının varlığını denetler. Bu makinede // lisans politikası uygulanmaz; müşteri dağıtımlarında anahtar bulunmamalıdır. bool lisansUreticiMakinesiMi(); // Gömülü lisans açık anahtarı (hex). Uzak politika doğrulaması AYNI anahtarı // kullanır: politika imzalama yetkisi = lisans kesme yetkisi (tek çift, tek güven). const char* lisansAcikAnahtarHex(); // Kullanıcıya gösterilecek tek satır özet ("Lisanslı — Akçalı Döküm (12 komut)"). std::string lisansOzet(); // Uygulama-global lisans sistemi (tüm pencereler paylaşır; gate + kullanım takibi). LisansSistemi& lisansSistemi(); // ---- Dağınık kurcalama kontrol noktası ---- // Politika mührünü denetler; bozuksa politikayı en kısıtlı hâle indirir ve günlüğe // yazar. KASITLI olarak birden çok derleme biriminden (kaydet / dışa aktar / G-kod / // komut kapısı) çağrılır: tek bir `if`i NOP'lamak koruma zincirini kırmaya yetmesin. // Dönüş: politika sağlam mı. Sonucu yok saymak güvenlidir — kısıtlama zaten uygulandı. bool lisansSaglikKontrol(); // Uzantıya göre dosya açma izni — TEK merkezi kapı. `yolAc()` (dosya_islemleri.cpp) // içinde her çağrı yolundan (menü, sürükle-bırak, universal palet hızlı-yeniden-aç, // oto-kurtarma, iş takip paneli...) ÖNCE burası sorulur. Önceden yalnız sürükle-bırak // bu kapıdan geçiyordu; diğer `yolAc()` çağıranları unutulmuştu — kilitliyken STEP/apt // dosyaları o yollardan sessizce açılabiliyordu (yaşandı, 2026-08). Artık `yolAc()` // kendisi soruyor, çağıran unutamaz. bool surukleBirakIzinli(const std::string& yol); // Ayarlar → Lisans sayfasının canlı durum bölümü: müşteri/seri, kalan süre, paketler // (her biri kendi bitişiyle), kota sayaçları (dönem + kalan hak), makine eşleşmesi. // Salt-okuma — lisans yükleme/katalog gibi yönetim işleri Komut Denetim penceresinde. void lisansAyarBolumu(); // Komut Denetim panelinin lisans bölümü (durum + makine kimliği + satın alınan // komutlar + katalog dışa aktarma). ImGui bağlamı içinde çağrılır. // "Makine kimliği" bölümü lisans geçersizken kendiliğinden açılır ve parmak izini // tek tıkla paylaştırır (pano / masaüstüne .txt / mailto taslağı) — bu pencere // görüntüleyici kipinde de erişilebilir olduğu için lisanssız müşterinin TEK yolu. void lisansDurumBolumu(LisansSistemi& sis, Cekirdek& cek); // Lisans geçersiz/yokken viewport üstünde KALICI uyarı şeridi çizer. toastGoster // tabanlı uyarının aksine bir komutun reddedilmesini BEKLEMEZ — yalnız görüntüleme/ // ölçüm yapan (hiçbir komut reddedilmeyen) bir kullanıcı da lisansız olduğunu görsün // diye kare başına bir kez, koşulsuz çağrılır. Lisans geçerliyse hiçbir şey çizmez. // toastlariCiz() ile aynı konumdan (ana pencere döngüsü, kare sonu) çağrılmalı. void lisansBanneriCiz(); } // namespace fiko