KAYNAK KOD Ko Gameserver Ip Bazlı Lisanslama Sistemi | Thor Tabanlı

  • Konuyu Başlatan Konuyu Başlatan Prepective
  • Başlangıç tarihi Başlangıç tarihi
  • Okuma süresi: 1:35

Prepective

Admin
Admin
Moderatör
Puan 0
Çözümler 0
Katılım
18 Ocak 2025
Mesajlar
52
Tepkime puanı
2
Konum
Bursa
Web sitesi
ko-turkey.net
@Prepective
Konu Sahibi
Merhaba değerli KO-TURKEY geliştiricileri,


Bu konuda sizlere Knight Online GameServer (Thor) yapısına özel, IP adresine dayalı basit bir lisanslama sistemi nasıl eklenir, onu paylaşıyorum.


Bu sistem sayesinde yalnızca belirli IP adreslerinden çalışan GameServer'lar aktif olur, diğerleri otomatik olarak kapatılır. Basit ama etkili bir güvenlik önlemidir.




🧩 Kodun Amacı Nedir?​


  • Sunucunun sadece belirli IP adreslerinden açılmasına izin verir.
  • Eğer IP adresi lisanslı değilse GameServer başlatılmaz.
  • Kod C++ ile yazılmıştır ve GameServerDlg.cpp içinde uygulanmalıdır.



🧠 Kullanım Adımları:​


  1. Visual Studio'da GameServer projenizi açın.
  2. GameServerDlg.cpp dosyasını bulun ve açın.
  3. Aşağıdaki kod bloğunu uygun bir yere (örn. CGameServerDlg::OnInitDialog() başına veya kontrol bloğuna) ekleyin.



💻 C++ Kod:​


C++:
// License System Start

bool IsValidLicense = false;
std::string LicensedIPAddresses = "127.0.0.1"; // Lisanslı IP adresleri burada tanımlanır
std::string ServerIPAddress = "0.0.0.0";

foreach_stlmap_nolock(itr, m_ServerArray)
{
    if (LicensedIPAddresses.find(itr->second->strServerIP) == std::string::npos)
        continue;

    ServerIPAddress = itr->second->strServerIP;
    IsValidLicense = true;
    break;
}

if (!IsValidLicense)
{
    printf("ERROR: IP Address is not licensed.\n");
    return false; // GameServer başlatılmaz
}

// License System End


⚠️ Uyarılar:​


  • LicensedIPAddresses içerisine birden fazla IP adresi eklemek istersen, virgül ile ayırarak veya .find() metodunu vector ile genişleterek düzenlemen gerekir.
  • Bu sistem “gelişmiş bir lisanslama altyapısı” değildir. Basit güvenlik kontrolüdür.
  • Daha karmaşık şifreleme, dış sunucu bağlantısı veya HWID kontrolü istiyorsan sistem geliştirilmeye açıktır.



✅ Örnek:​

C++:
std::string LicensedIPAddresses = "127.0.0.1,192.168.1.5";
Yukarıdaki gibi birden fazla IP adresi kontrolü için .find() ile , ayırmalı kontrol yapılabilir veya regex kullanabilirsiniz.
 
Geri
Üst