UnrealIRCd Modül Yönetimi: loadmodule, blacklist-module ve modules.default.conf
İçindekiler
- Modül Nedir?
- modules.default.conf
- Modül Yüklemek: loadmodule
- Modül Kapatmak: blacklist-module
- Yüklü Modülleri Görmek
- Modül Değişikliklerini Uygulamak
- Hangi Modülleri Kapatmayı Düşünmelisiniz?
- Modüller ve Güvenlik
- Sürüm Yükseltmelerinde Modüller
- Modül Yapılandırması
- Bir Modülün Ne Yaptığını Öğrenmek
- Değişiklikleri Kayıt Altına Almak
- Sonuç
UnrealIRCd'nin en güçlü yanlarından biri modüler yapısıdır. Kanal modlarından komutlara, cloaking'den flood korumasına kadar neredeyse her özellik ayrı bir modül olarak yazılmıştır. Bu yapı size iki önemli esneklik sağlar: İstemediğiniz özellikleri kapatabilir ve ihtiyaç duyduğunuz yeni özellikleri ekleyebilirsiniz. Bu rehberde UnrealIRCd modül yönetiminin temellerini ele alıyoruz.
Modül Nedir?
Modül, UnrealIRCd'nin çalışırken yüklediği bir kod parçasıdır. Linux'ta .so, Windows'ta .dll uzantılı dosyalar olarak bulunurlar. Sunucunun çekirdeği bağlantıları ve temel protokolü yönetirken, kullanıcıların gördüğü özelliklerin büyük kısmı modüller tarafından sağlanır. Örneğin:
- Her kanal modu (+c, +S, +f, +D gibi) ayrı bir modüldür.
/KNOCK,/INVITE,/SAJOINgibi komutlar modüllerle gelir.- Cloaking, spamfilter, connthrottle, websocket desteği ve JSON-RPC birer modüldür.
modules.default.conf
UnrealIRCd, önerilen bütün modülleri yükleyen hazır bir dosyayla gelir: modules.default.conf. Ana yapılandırmanızın başındaki şu satır bu dosyayı dahil eder:
include "modules.default.conf";
Bu dosya, UnrealIRCd geliştiricilerinin "çoğu ağ için uygun" gördüğü modül setini yükler. Yeni sürümlerde yeni modüller eklendiğinde bu dosya da güncellenir. Bu yüzden bu dosyayı doğrudan düzenlememeniz önerilir; yaptığınız değişiklikler güncellemede kaybolabilir veya güncellemeyi zorlaştırabilir.
Modül Yüklemek: loadmodule
Varsayılan dosyada olmayan bir modülü yüklemek için ana yapılandırmanıza loadmodule satırı eklersiniz:
loadmodule "cloak_sha256";
loadmodule "third/ornekmodul";
İlk örnek cloaking modülünü yükler; bu modül varsayılan dosyada otomatik yüklenmediği için sizin seçmeniz gerekir. Ayrıntılar: cloaking ile IP gizleme. İkinci örnek, third/ önekiyle gösterilen bir üçüncü parti modüldür. Üçüncü parti modüllerin nasıl kurulduğunu üçüncü parti modüller yazımızda anlattık.
Modül Kapatmak: blacklist-module
Varsayılan dosyanın yüklediği bir modülü istemiyorsanız onu dosyadan silmek yerine blacklist-module kullanın:
blacklist-module "chanmodes/nocolor";
blacklist-module "knock";
Bu satırlar, ilgili modüllerin hiçbir yerden yüklenmemesini sağlar. Birinci örnek +c kanal modunu, ikincisi /KNOCK komutunu devre dışı bırakır. Bu yöntemin avantajı açıktır: modules.default.conf güncellendiğinde sizin tercihiniz korunur ve yapılandırmanızda neyin neden kapatıldığı tek bir yerde görülür.
Ağdaki bütün sunucuların aynı modül setini kullanması önemlidir. Örneğin bir kanal modunu yalnızca bir sunucuda kapatırsanız, o modu kullanan kanallar sunucular arasında tutarsız davranır ve sunucu bağlantısında uyarılar görebilirsiniz.
Yüklü Modülleri Görmek
Oper olarak IRC içinden:
/module
Bu komut sunucuda yüklü olan modülleri ve sürümlerini listeler. Belirli bir sunucunun modüllerini görmek için sunucu adını parametre olarak verebilirsiniz. Bir özelliğin neden çalışmadığını araştırırken ilk bakılacak yerlerden biri budur.
Normal kullanıcılar ise sunucunun desteklediği kanal ve kullanıcı modlarını, bağlantı sırasında gelen 004 ve 005 satırlarından görebilir.
Modül Değişikliklerini Uygulamak
Modül ekledikten veya kapattıktan sonra:
./unrealircd configtest
./unrealircd rehash
Çoğu modül rehash ile yüklenip kaldırılabilir. Kaldırılan bir kanal modu, o modu kullanan kanallardan otomatik olarak temizlenir. Bazı modüller ise sunucunun temel işleyişine dahil oldukları için yeniden başlatma gerektirebilir; böyle bir durumda UnrealIRCd sizi uyarır.
Hangi Modülleri Kapatmayı Düşünmelisiniz?
Çoğu ağ için varsayılan set uygundur. Yine de bazı durumlarda kapatma gerekebilir:
| Durum | Kapatılabilecek modül örneği |
|---|---|
| /KNOCK spam'i yaşıyorsanız | knock |
| Kullanıcıların +d (deaf) kullanmasını istemiyorsanız | ilgili kullanıcı modu modülü |
| Belirli bir komut kötüye kullanılıyorsa | o komutun modülü |
| Kullanmadığınız bir protokol özelliği | ilgili modül |
Bir modülü kapatmadan önce neyi etkileyeceğini öğrenmek için resmî belgelere bakın. Bazı modüller başka modüllerin çalışması için gereklidir.
Modüller ve Güvenlik
Modüller sunucu sürecinin içinde çalıştığı için sunucunun bütün yetkilerine sahiptir. Bu nedenle:
- Yalnızca güvendiğiniz kaynaklardan modül yükleyin.
- Kaynak kodunu inceleyemediğiniz hazır derlenmiş modül dosyalarını kullanmayın.
- Üçüncü parti modülleri UnrealIRCd'nin kendi modül yöneticisiyle kurmak, imzalı ve denetlenmiş kaynaklardan gelmelerini sağlar.
Gereksiz modülleri kapatmak saldırı yüzeyini de küçültür. Kullanmadığınız bir özellik, keşfedilmemiş bir açık içeriyorsa sizi etkilemez.
Sürüm Yükseltmelerinde Modüller
UnrealIRCd'yi yeni bir sürüme yükselttiğinizde varsayılan modül dosyası da güncellenir ve yeni modüller otomatik olarak yüklenmeye başlayabilir. Sürüm notlarını okuyarak hangi yeni özelliklerin geldiğini öğrenin. Üçüncü parti modüllerin de yeni sürümle uyumlu hâle getirilmesi gerekebilir; modül yöneticisi bu işlemi büyük ölçüde otomatik yapar. Ayrıntılar için sürüm yükseltme yazımıza bakabilirsiniz.
Modül Yapılandırması
Bazı modüllerin kendi ayarları vardır. Bu ayarlar genellikle set bloğunun içinde modülün adıyla başlayan bir alt bölümde yapılır. Örneğin connthrottle ayarları set { connthrottle { } } içinde, JSON-RPC ayarları ise kendi bloklarında tanımlanır. Bir modülü yükleyip ayarlarını yapmazsanız modül varsayılan değerlerle çalışır.
Bir Modülün Ne Yaptığını Öğrenmek
Modül adları çoğu zaman kendini açıklar ama her zaman değil. Bir modülün tam olarak ne yaptığını, hangi ayarları kabul ettiğini ve başka modüllere bağımlı olup olmadığını öğrenmenin en güvenilir yolu UnrealIRCd'nin resmî belgeleridir. Belgelerde modüller işlevlerine göre gruplandırılmıştır: komutlar, kanal modları, kullanıcı modları, extended banlar, istemci yetenekleri ve diğerleri. Kaynak kodunu okumaktan çekinmeyen yöneticiler için ise modül dosyasının başındaki açıklama bölümü genellikle kısa ve öz bir özet sunar.
Değişiklikleri Kayıt Altına Almak
Modül listesinde yaptığınız her değişikliği yapılandırma dosyasında kısa bir yorumla açıklayın. "knock kapatıldı, spam nedeniyle" gibi tek satırlık bir not, aylar sonra bir kullanıcının "Neden knock yapamıyorum?" sorusuna hızla cevap vermenizi ve gerekirse kararı yeniden değerlendirmenizi sağlar. Ekip içinde birden fazla yönetici varsa bu notlar, birinin diğerinin bilinçli kararını farkında olmadan geri almasını da önler.
Kısacası: varsayılanlara güvenin, değişiklikleri kendi dosyanızda yapın ve her değişikliği belgeleyin. Bu üç kural, modül yönetimini sorunsuz kılar.
Sonuç
UnrealIRCd'nin modüler yapısı, sunucunuzu ihtiyaçlarınıza göre biçimlendirmenizi sağlar. Varsayılan modül dosyasını olduğu gibi bırakın, istemediğiniz özellikleri blacklist-module ile kapatın, yeni özellikleri loadmodule ile ekleyin ve bütün sunucularda aynı seti kullanın. Topluluk tarafından geliştirilen ek modülleri keşfetmek için üçüncü parti modüller rehberimizle devam edebilirsiniz.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Bir özelliği kapatmak için modül dosyasını düzenlemeli miyim?
Hayır. modules.default.conf dosyasını düzenlemek yerine kendi yapılandırmanızda blacklist-module kullanmanız önerilir; böylece güncellemelerde değişikliğiniz kaybolmaz.
Modül değişikliği için sunucuyu yeniden başlatmam gerekir mi?
Çoğu modül rehash ile yüklenip kaldırılabilir. Bazı temel modüller ise yeniden başlatma gerektirebilir.
Hangi modüllerin yüklü olduğunu nasıl görürüm?
Oper olarak /MODULE komutunu kullanabilirsiniz; komut yüklü modülleri ve sürümlerini listeler.


