IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   IRCd Makaleler (https://www.ircforumlari.net/ircd-makaleler/)
-   -   UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host (https://www.ircforumlari.net/ircd-makaleler/355954-unrealircd-oper-acanlara-bilgi-mesajlari-ve-oper-host.html)

toXic 21 Eylül 2010 21:38

UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
UnrealIRCd üzerinde çeşitli kodlar yazılır ve C bilen herkes için çok kolaydir.

UnrealIRCd dosyalarini biraz inceleyip, işlemleri kafaya yatirip birazda c bildikten sonra birçok şeyi gerçekleştirebilirsiniz. Örneğin, Bir kullanici Oper açinda özeline kurallar metni gelsin ve #Kontrol Kanalina alinsin.
Bu Makalemizde bunu örnek alalim.

Kod:


cd Unreal*

* işareti, Unreal ile baslayan herhangi bir dosyaya girer. Varsayalim ki Unreal3.2 dosyamiz var, cd Unreal* yaptiğimizda Unreal3.2 dizinine girer.


Oper işlemler, m_oper.c üzerinden yapilmaktadir. UnrealIRCd üzerindeki tüm moduller, src/modules/ dizini içerisindedir.

Bizim işlem yapicağimiz dosyaya ulaşmak, girmek için, pico -w src/modules/m_oper.c yazip girebiliriz.

Kod:

pico -w src/modules/m_oper.c
ile dosyamiza girdik..


Şimdi, kod yazicağiz ama nereye yazicağiz? Kod yazmak öylesine bir complier açip içerisine kod yazmaktan ibaret değildir sadece. Bunu herkes kolay gibi görebilir. Bu Marketten su almaya benzer. Örneğin, Bir insan marketten su almak için evden cıkar suyunu alir gelir. Yani düşüncesi budur. Fakat Codere göre, Kişi evden cıktı. Sonra Hangi yoldan gidecek? Kestirme yol varmi? Nerelerde başina bir iş gelebilir? Neresi daha güvenli? Yolda yürürken birşey olurmu? Tüm bunlari düşünür.

Örneğin suanda; oper açanlarin açiş kodlarini bulmamiz gerekir.
Bu Modulu incelediğiniz zaman, kişinin operi yok diyebilir.

Kod:


if (FAILOPER_WARN)
sendto_one(sptr,
":%s %s %s :*** Your attempt has been logged.", me.name,
IsWebTV(sptr) ? "PRIVMSG" : "NOTICE", sptr->name);

UID Hatasi verebilir.

Kod:

(SNO_OPER, "Failed OPER attempt by %s (%s@%s) using UID %s [host doesnt match]",
                    parv[0], sptr->user->username, sptr->sockhost, name);

maxlogins verebilir.

Kod:

    sendto_snomask_global
                                (SNO_OPER, "Failed OPER attempt by %s (%s@%s) using UID %s [maxlogins reached]",
                                parv[0], sptr->user->username, sptr->sockhost, name);

vs. vs. yani derin düşünülmüş..

Şimdi bize doğru olan kişinin oper açilişini doğrulayan kodlari bulalim, eğer bulamiyorsakta zekamızı calisitirp, kişi oper açinca oper hostu veriliyor bu yoldan bulmak daha kolay olabilir.


Kod:

if (IsOper(sptr) && !IsHideOper(sptr))
                        IRCstats.operators++;

Buradan işlem yapabiliriz.

Veya, buradanda yapabiliriz.

Kod:

      if (announce != NULL)
                        sendto_snomask_global(SNO_OPER,
                            "%s (%s@%s) [%s] %s",
                            parv[0], sptr->user->username, GetHost(sptr),
                            parv[1], announce);

Önemli olan, doğru yeri bulmak..

biz, 2. sini alalim.

Kod:

/* Coded By toXic */
aChannel *chptr;
#define tox "#Opers"
if ((chptr = find_channel(tox, NullChn)) != NullChn) {
sendto_channel_butone(&me, &me, chptr, ":Koruma PRIVMSG %s \2%s\2 Rumuzu \2 %s\2 ID ile \2 Oper\2 acti, gerekli bilgiler ozeline yollandi..",
 tox,  parv[0], name);
}

burada, aChannel = Kanali; #define tox ise kanali alir.
#define tox "#opers" yaptiğinizda, kodda tox geçenm heryeri #opers olarak kabul eder ve döngü ile kullanabilirsiniz.

Kod:

if ((chptr = find_channel(tox, NullChn)) != NullChn) {
Burasida yansitilacak kanali bulmaya yarayan kodlarimiz.


Kod:

sendto_channel_butone(&me, &me, chptr, ":Koruma PRIVMSG %s \2%s\2 Rumuzu \2 %s\2 ID ile \2 Oper\2 acti, gerekli bilgiler ozeline yollandi..",
 tox,  parv[0], name);

burasi ise, #kanal'a bildirim. yani opers'e bildiriyor.

Kodumuz;

Kod:

aChannel *chptr;
#define tox "#Opers"
if ((chptr = find_channel(tox, NullChn)) != NullChn) {
sendto_channel_butone(&me, &me, chptr, ":Koruma PRIVMSG %s \2%s\2 Rumuzu \2 %s\2 ID ile \2 Oper\2 acti, gerekli bilgiler ozeline yollandi..",
 tox,  parv[0], name);
}

Şimdi, Oper açan kullaniciya bilgi vericez.

Altindan devam ediyoruz;

Kod:

sendto_one(sptr, ":mIRCTR PRIVMSG %s #####################################################################", sptr->name);
sendto_one(sptr, ":mIRCTR PRIVMSG %s Merhabalar, %s", parv[0], parv[0]);
sendto_one(sptr, ":mIRCTR PRIVMSG %s Suanda Aktif yonetici Konumuna Gectiniz..", sptr->name);
 
sendto_one(sptr, ":mIRCTR PRIVMSG %s #####################################################################", sptr->name);
sendto_one(sptr, ":mIRCTR PRIVMSG %s \2", sptr->name);


ekliyoruz..

/****************************************/

parv[0] = oper açan kullanici. Nick'i herne ise..

Kod:

sendto_one(sptr, ":mIRCTR PRIVMSG %s Suanda Aktif yonetici Konumuna Gectiniz..", sptr->name);
Burada, Kullaniciya veri gönderimini mIRCTR nicki yapar. Ahmet olsa idi ahmet yapardi. Mesela sunucumuz göndericek deseydik;

Kod:

sendto_one(sptr, ":%s PRIVMSG %s Suanda Aktif yonetici Konumuna Gectiniz..", me.name, sptr->name);
Şeklinde olmasi lazimdi. me.name unrealircd.conf taki name'yi temsil eder. Orda sunucu adi ne ise, onu alir yazar.

Şimdi gelelim host yazmaya..

Kod:

char ibohost[]="root.administrator.ircforumlari.net";
Bu şekil host olusturuyoruz..

Düzenli olmasi içinde;

Kod:

DLLFUNC int m_oper(aClient *cptr, aClient *sptr, int parc, char *parv[]);
satiri altina koyuyoruz yani kodlama baslamadan önce baslangicta..
Kod:


 
if (!stricmp("toXic", name))
{
sptr->user->virthost = strdup(ibohost);
}


Bu sekilde host verme işlemini yapiyoruz. Burada name, kullanicinin nickini değil oper açtiği zaman, mesela nicki abc ama oper nicki toXic, /oper toXic sifre yaptiği zaman eğer doğru ise toXic'i muhattap alir.

mesela;

Kod:

sendto_one(sptr, "%s PRIVMSG %s selam %s", me.name, sptr->name, sptr->name);
yaptiğinizda kullanicinin nicki ne ise onu muhattap alir, kullanici abcd nicki ile oper açtiysa, selam abcd der, ama name kullanirsak, oper açtiğimiz nick abcd olsa bile, operi açilan nick toXic oldugu için selam toXic diyecekti.
name burada oper açilan nicki temsil etmesi için kullanilmis, diğer dosyalarda farkli şeyler için kullaniliyor.

Kod:

/*
** m_oper
**      parv[0] = sender prefix
**      parv[1] = oper name
**      parv[2] = oper password
*/

Yani kişi toXicin operini açtiği zaman, belirlediğimiz hostu verecektir.

Umarım Gayet açiklayici olmuştur ilk makalemiz, ve çoğu kişinin kafasina bir mentalite oturmustur...

Agathadaimon 21 Eylül 2010 21:40

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
İbrahim,tek kelime ile harika kardeşim.

Ellerine sağlık.

Juggle 21 Eylül 2010 21:42

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
Ellerine, emeklerine sağlık.

D€moN 21 Eylül 2010 21:43

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
Eline Sağlik ibrahim cok güzel Çalişma

C3z4 21 Eylül 2010 21:46

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
Eline sağlık yararli bir çalişma olmuş.

NYYILMAZ 21 Eylül 2010 21:46

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
Emeklerine , ellerine sağlık . Çalışmalarında başarılar...

serdar_snk 21 Eylül 2010 21:49

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
emeğine saglık güzel

Daemnia 21 Eylül 2010 22:06

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
herzamanki gibi formundasin kanka eline saglik

Sevda 24 Eylül 2010 03:58

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
Coder oLmak Zor Ve SorumLuLuk İsteyen,
Yetenek Ve Zeka İşidir Şüphesiz..
Emeğinize SağLık,
Sayın toXic

Nocturnal 24 Eylül 2010 04:00

Cevap: UnrealIRCd - Oper Açanlara Bilgi mesajlari ve Oper Host
 
Ellerine Sağlık güzel çalışma olmus..


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 14:29.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net