Puan
0
Çözümler
0
- Katılım
- 18 Ocak 2025
- Mesajlar
- 52
- Tepkime puanı
- 2
- Konum
- Bursa
- Web sitesi
- ko-turkey.net
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.
Yukarıdaki gibi birden fazla IP adresi kontrolü için .find() ile , ayırmalı kontrol yapılabilir veya regex kullanabilirsiniz.
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ı:
- Visual Studio'da GameServer projenizi açın.
- GameServerDlg.cpp dosyasını bulun ve açın.
- 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";