Eggdrop NickServ Identify: Botun Nickini Otomatik Doğrulamak
İçindekiler
Kayıtlı bir nick kullanan bot, bağlandığında NickServ'e kim olduğunu kanıtlamalıdır. Aksi hâlde birkaç dakika içinde nicki zorla değiştirilebilir, kanal erişim listelerinden yararlanamaz ve ChanServ'den op alamaz. Modern ağlarda bu iş için SASL en iyi yoldur, ancak SASL desteklemeyen veya services'i farklı çalışan ağlar hâlâ vardır. Bu rehberde Eggdrop NickServ identify işlemini otomatikleştirmeyi ve bunu güvenli şekilde yapmayı anlatıyoruz.
Yöntem 1: Bağlantı Olayında Identify
Eggdrop, sunucuya bağlantı tamamlandığında bir olay tetikler. Bu olaya bağlanan bir prosedür, NickServ'e identify mesajı gönderebilir:
set ns_parola "guclu-bir-parola"
bind evnt - init-server ns_identify
proc ns_identify {type} {
global ns_parola
putquick "PRIVMSG NickServ :IDENTIFY $ns_parola"
}
evnt bind'i, bot içindeki olaylara bağlanır; init-server olayı sunucu bağlantısı tamamlandığında tetiklenir. putquick kullanmamızın nedeni, identify mesajının kuyruktaki diğer mesajlardan önce gönderilmesini sağlamaktır. Bind türleri hakkında daha fazla bilgi için Tcl bind komutları yazımıza bakın.
Bazı ağlarda NickServ'e PRIVMSG yerine sunucunun sunduğu NS veya NICKSERV komutlarıyla mesaj göndermek daha güvenlidir. Bu komutlar mesajın gerçekten services'e gitmesini garanti eder; araya girmiş sahte bir "NickServ" kullanıcısı parolanızı alamaz. Ağınızın bu komutları destekleyip desteklemediğini öğrenmek için yardım kanalına danışın.
Yöntem 2: NickServ'in İsteğine Cevap Vermek
Bazı services yazılımları, kayıtlı bir nickle bağlanan kullanıcıya "Bu nick kayıtlı, lütfen identify olun" gibi bir notice gönderir. Bu mesajı yakalayıp cevap vermek de bir yöntemdir:
bind notc - "*identify*" ns_cevap
proc ns_cevap {nick uhost hand text dest} {
global ns_parola
if {![string equal -nocase $nick "NickServ"]} { return }
if {![string match -nocase "*@services.*" $uhost]} { return }
putquick "PRIVMSG NickServ :IDENTIFY $ns_parola"
}
Buradaki iki kontrol çok önemlidir. Birincisi mesajın NickServ nickinden geldiğini, ikincisi ise host bilgisinin services sunucusuna ait olduğunu doğrular. Host kalıbını kendi ağınızdaki services hostuna göre düzenlemelisiniz. Bu kontroller olmadan herhangi biri bota "identify" kelimesi içeren bir notice göndererek botun parolasını bir kanala veya başka bir kullanıcıya göndermesini sağlamaya çalışabilir. Gerçi mesaj NickServ'e gittiği için doğrudan sızmaz, ama sahte bir NickServ'in bulunduğu durumlarda risk oluşur.
Kanallara Erken Girme Sorunu
Eggdrop bağlantı kurulur kurulmaz kanallara girmeye başlar. NickServ cevabı birkaç saniye gecikirse bot, identify olmadan kanallara girer. Bunun birkaç sonucu olabilir: Yalnızca kayıtlı kullanıcılara açık kanallara giremez, ChanServ'in otomatik op'unu kaçırır veya cloak uygulanmadan gerçek host görünür.
Çözümler:
- SASL kullanmak: Sorunu kökten çözer.
- Kanalları geçici olarak pasif tutmak: Kanalları
+inactiveolarak işaretleyip identify onayı geldikten sonra açmak. - ChanServ'den op istemek: Identify sonrasında ChanServ'e op isteği göndermek.
İkinci yöntem için NickServ'in "Şifre kabul edildi" benzeri onay mesajını yakalayıp kanalları aktif hâle getiren bir prosedür yazılabilir. Mesajın tam metni services yazılımına ve dil ayarına göre değişir; kendi ağınızdaki metni loglardan öğrenin.
Nick Geri Alma: GHOST ve RECOVER
Bot yeniden bağlandığında eski bağlantısı hâlâ ağda "hayalet" olarak duruyorsa veya biri botun nickini almışsa bot farklı bir nickle bağlanır. Bu durumda nick geri alma komutları kullanılır:
putquick "PRIVMSG NickServ :RECOVER BotNick $ns_parola"
Anope ve Atheme'de komut adları ve davranışları küçük farklılıklar gösterir. Bazı sürümlerde GHOST, bazılarında RECOVER veya REGAIN kullanılır. Kendi ağınızda /msg NickServ HELP ile mevcut komutları kontrol edin. Komutların ayrıntıları NickServ komutları yazımızda.
Eggdrop'un altnick ayarı, ana nick alınamadığında kullanılacak yedek nicki belirler. Bot, yedek nickle bağlandığında ana nicki geri almayı denemek için keep-nick ayarı kullanılabilir. Bu ayarların ayrıntıları eggdrop.conf ayarları yazımızda.
Parolayı Güvende Tutmak
- Parolayı script içine yazmak yerine ayrı bir dosyada tutup izinlerini 600 yapın.
- Script veya yapılandırma dosyasını paylaşırken parolayı mutlaka silin.
- Bot için kişisel hesabınızdan farklı bir parola kullanın.
- Partyline log'larında parolanın görünmediğinden emin olun; bazı hata ayıklama ayarları gönderilen mesajları kaydedebilir.
- TLS kullanarak parolanın ağ üzerinde düz metin olarak gitmesini önleyin. Bkz. SSL bağlantı.
Sık Karşılaşılan Sorunlar
| Belirti | Olası neden |
|---|---|
| Bot identify olmuyor | Bind olayı tetiklenmiyor veya NickServ adı farklı |
| "Invalid password" | Parola yanlış veya hesap adı farklı |
| Bot kanallara identify olmadan giriyor | NickServ cevabı gecikiyor |
| Nick sürekli değiştiriliyor | Identify başarısız, nick koruması devrede |
| Parola kanala yazılmış | Hatalı script; derhal parolayı değiştirin |
Services Yazılımına Göre Farklar
Farklı ağlar farklı services yazılımları kullanır ve identify komutunun biçimi de buna göre değişebilir. Anope tabanlı ağların çoğunda IDENTIFY parola yeterlidir. Atheme tabanlı ağlarda ise hesap adı ile nick farklıysa IDENTIFY hesap parola biçimini kullanmanız gerekebilir. Bu ayrım, botun nicki ile kayıtlı hesabın adı farklı olduğunda önem kazanır. Örneğin bot, birden fazla nicki tek bir hesap altında gruplamışsa ve şu anda yedek nickiyle bağlıysa, yalnızca parola göndermek yetersiz kalabilir. İki services yazılımının farklarını Anope ve Atheme karşılaştırması yazımızda ayrıntılı ele aldık.
Ayrıca bazı ağlar NickServ'e farklı bir isim verir veya services nicklerini ağ adına göre özelleştirir. Scriptinizdeki NickServ adını ve beklenen host kalıbını ağınıza göre ayarlamayı unutmayın. Bunun için kendi istemcinizden /whois NickServ komutunu çalıştırmanız yeterlidir; çıktıdaki host bilgisini scriptteki kontrol kalıbına yazabilirsiniz.
Identify Durumunu Takip Etmek
Botun o anda identify olup olmadığını bilmek, diğer scriptlerin doğru davranması için faydalıdır. Örneğin ChanServ'den op isteyen bir prosedür, bot henüz identify olmamışsa isteği boşuna gönderir. Basit bir çözüm, NickServ'in onay mesajı geldiğinde global bir değişkeni bire çekmek ve bağlantı koptuğunda sıfırlamaktır. Diğer prosedürler bu değişkene bakarak hareket eder. Bağlantı kopması olayını yakalamak için de evnt bind'inin ilgili olay türü kullanılabilir.
Kısacası identify işlemi, botun ağdaki kimliğinin temelidir ve küçük bir ayrıntı gibi görünse de botun bütün kanal yetkilerini doğrudan etkiler.
Sonuç
NickServ identify, SASL olmayan ağlarda botun kimliğini kanıtlamanın klasik yoludur. Bağlantı olayını kullanın, NickServ mesajlarının kaynağını doğrulayın, nick geri alma komutlarını ağınıza göre ayarlayın ve parolayı güvende tutun. Mümkün olan her ağda ise SASL'a geçin. Botunuzun çöktüğünde kendiliğinden yeniden başlaması için sıradaki rehberimiz autobotchk ve crontab.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
SASL varken NickServ identify kullanmalı mıyım?
Hayır. Ağ SASL destekliyorsa SASL tercih edilmelidir. NickServ identify yalnızca SASL olmayan ağlar için bir yedek yöntemdir.
Bot neden kanallara identify olmadan giriyor?
Eggdrop bağlantı kurulur kurulmaz kanallara girer. NickServ'in cevabını beklemek için kanalları geçici olarak inactive tutabilir veya SASL kullanabilirsiniz.
NickServ'den gelen her mesaja güvenebilir miyim?
Hayır. Mesajın gerçekten services'ten geldiğini nick ve host bilgisini kontrol ederek doğrulamalısınız.


