Debug Bilgilerini Kapatmak

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 61

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba arkadaşlar, bugün cncn_m2 projesini paylaştığımdan beri sürekli olarak "Bu yazıları nasıl kapatıyoruz" şeklinde mesajlar alıyordum. Hızlı şekilde cevap veriyordum, konu olarak açmak daha iyi olacağını düşündüm. Yazılardan kastımızı aşağıdaki resimden anlayabilirsiniz.

0906_122015.jpg

Birçok kişinin yaptığı hata bu kısmı kapatmak için python scripti üzerinde düzenleme yapmak. Önce bana göre hatalı olan yöntemden bahsedeyim.


Kod:
if self.isShowDebugInfo:             self.UpdateDebugInfo()

Kod:
# if self.isShowDebugInfo:             # self.UpdateDebugInfo()


Peki düzgün şekilde nasıl yapacağız. Userinterface.cpp dosyasında debug parametresini düzenleyeceğiz. Kendi projemden örnek vereceğim.

Kod:
#ifdef _DISTRIBUTE         stRegisterDebugFlag ="__DEBUG__ = 0"; #else         stRegisterDebugFlag ="__DEBUG__ = 1"; #endif


Orjinal mainline kodlarında bu şekilde, Anlamı _DISTRIBUTE olarak derleniyorsa 0 aksi taktirde 1. Bende cncn_m2 projesini release olarak derlediğimden burası 1 oluyor ve bu sebeple client içinde debug bilgileri gözüküyor. Aşağıdaki gibi yaparak üstünkörü bir çözüm elde edebiliriz.

Kod:
#ifdef _DISTRIBUTE         stRegisterDebugFlag ="__DEBUG__ = 0"; #else         stRegisterDebugFlag ="__DEBUG__ = 0"; #endif

Elbette bu geçici bir çözüm. Şu şekilde düzenlersek daha iyi olur.

Kod:
#ifdef _DEBUG         stRegisterDebugFlag ="__DEBUG__ = 1"; #else         stRegisterDebugFlag ="__DEBUG__ = 0"; #endif

Burada şu şekilde ayarlamış oluyoruz. Debug olarak derleniyorsa 1 aksi taktirde 0.

Turkmmo SF'ye baktığımızda aşağıdaki gibi bir yapı görüyoruz.
Kod:
#ifdef NDEBUG // @warme601 _DISTRIBUTE -> NDEBUG     PyModule_AddIntConstant(builtins, "__DEBUG__", 0); #else     PyModule_AddIntConstant(builtins, "__DEBUG__", 1); #endif

Burada zaten bu kısımdaki mantık hatası düzeltilmiş, debug modu dışında derlendiğinde 0, debug olarak derlendiğinde 1 oluyor. Yani değişiklik yapmaya gerek yok. NDEBUG not debug anlamına yani debug değil, anlamına gelmekte biraz daha ileri ve doğru bir kullanım. Sadece örnek olması açısından ekledim.


0906_132524.jpg



Ve pufff, yazılar gitti.
Bir sonraki öğretici konuda görüşmek üzere... Saygılar, sevgiler...
Metin2 Lobby olarak, Metin2 özel sunucu geliştirme sürecinde karşılaşılan yaygın sorunlardan birisi olan Debug Bilgilerini Kapatmak konusunu detaylıca ele alacağız. Bu işlem, hem güvenliği artırmak hem de kullanıcı deneyimini iyileştirmek açısından kritik öneme sahiptir.

Metin2 özel sunucularında debug bilgileri genellikle geliştirme aşamasında faydalıdır; ancak canlı sunucularda bu bilgilerin görünmesi güvenlik açıklarına neden olabilir. Özellikle hata mesajları, sistem yapılandırmaları veya kod içi hassas bilgiler doğrudan oyunculara yansıdığında, kötü niyetli kullanıcılar tarafından istismar edilebilir.

Debug bilgileri genellikle auth server ya da game server üzerinde log olarak tutulur. Bu loglar hem geliştiriciye hem de sistem yöneticisine sunucuda ne olduğu hakkında bilgi verir. Ancak, hatalar kullanıcıya yansıdığında, bu bilgilerden yararlanılarak sunucuya zarar verici girişimler yapılabilir. Örneğin, bir hata mesajı sayesinde sunucu yapılandırması hakkında ipuçları elde edilebilir.

C++ tabanlı Metin2 sunucu kaynak kodlarında debug bilgileri genellikle printf(), syslog() veya benzeri fonksiyonlarla yazdırılır. Bu çıktıların engellenmesi için birkaç yöntem kullanılabilir. Bunlardan birisi, derleme sırasında DEBUG flag’inin kaldırılmasıdır. Böylece debug çıktısı üretilmez. Alternatif olarak, debug fonksiyonları runtime sırasında devre dışı bırakılabilir.

Python tabanlı sistemlerde ise genellikle logging modülü kullanılır. Burada debug seviyesindeki mesajlar için level ayarı değiştirilerek sadece önemli loglar yazdırılabilir. Örneğin, logging.setLevel(logging.INFO) gibi bir yapı ile debug mesajları bastırılabilir.

Metin2 özel sunucularında client-side debug mesajlarını da kontrol etmek önemlidir. Client tarafında hata oluştuğunda ekrana yansıyan mesajlar, genellikle uiscript, root veya client src dosyalarında tanımlanmıştır. Bu mesajların kullanıcıya gösterilmemesi için özel mesajlar yazılabilir veya tamamen gizlenebilir.

Ayrıca, pack dosyalarında bulunan hata ayıklama amaçlı yazılmış mesajlar da çıkarılmalıdır. Sunucu paketlerinde bu tür içerikler yer alıyorsa, güvenliği tehdit edebilir. Pack düzenlemeleri sırasında dikkat edilmesi gereken önemli bir detaydır.

Sunucu güvenliği açısından, debug bilgilerinin kapatılması sadece teknik bir adımdan ibaret değildir. Aynı zamanda kullanıcı güvenini artırır ve sunucunun profesyonelliğini yansıtır. Oyuncuların hata mesajları yerine daha sade ve kullanıcı dostu arayüzler görmesi, deneyimi olumlu yönde etkiler.

Sonuç olarak, debug bilgilerini kapatmak Metin2 özel sunucu geliştirme sürecinin kritik bir parçasıdır. Hem güvenlik hem de estetik açıdan bu işlem dikkatle yapılmalı ve düzenli olarak gözden geçirilmelidir.


Metin2 Lobby discusses in detail one of the common issues encountered during the Metin2 private server development process: Closing Debug Information. This action is critical for both enhancing security and improving user experience.

In Metin2 private servers, debug information is often useful during the development phase; however, displaying this information on live servers can lead to security vulnerabilities. When error messages, system configurations, or sensitive code information are directly reflected to players, they can be exploited by malicious users.

Debug logs are typically stored on the auth server or game server. These logs provide developers and administrators with information about what is happening on the server. However, if errors are reflected to users, such information could be used for harmful purposes. For example, error messages may reveal clues about server configuration.

In C++ based Metin2 server source codes, debug information is usually printed via functions like printf() or syslog(). Several methods can be used to block these outputs. One method is removing the DEBUG flag during compilation, preventing debug output. Alternatively, debug functions can be disabled at runtime.

In Python-based systems, the logging module is commonly used. Here, adjusting the level setting for debug messages (e.g., logging.setLevel(logging.INFO)) can suppress debug logs and only print important ones.

It's also important to control client-side debug messages in Metin2 private servers. When errors occur on the client side, displayed messages are usually defined in files such as uiscript, root, or client src. To prevent these from showing to users, custom messages can be written or they can be hidden completely.

Additionally, debugging messages embedded in pack files should be removed. If such content exists in server packages, it can pose a security threat. This is an important point to consider while editing pack files.

From a server security perspective, closing debug information is more than just a technical step. It also increases user trust and reflects the professionalism of the server. Allowing players to see simplified, user-friendly interfaces instead of error messages positively impacts their experience.

In conclusion, closing debug information is a critical part of developing Metin2 private servers. This process must be carefully implemented and regularly reviewed for both security and aesthetic reasons.​
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt