Merhaba Arkadaşlar,
UnrealIRCD Modül Api Dersimiz Kaldigi Yerden Devam Ediyor... Konu: UnrealIRCD Makrolar Ders: 2. Seviye "HOOKTYPE_PRE_LOCAL_CONNECT" Makrosu Nedir Ne'ye Yarar
Yerel bir kullanıcı bağlandığında çağrılır, kullanıcının duraklatılmasına veya reddedilmesine izin verir
HOOKTYPE_PRE_LOCAL_CONNECT için işlev prototipi
Parametreler
aClient (Giren Kişi veya İstemci)
aClient *sptr
aClient *cptr
aClient *acptr
Dönüş değerleri
HOOK_DENY Bağlantıyı durdurun (basılı tutun/duraklatın).
HOOK_ALLOW Bağlantıya izin ver (diğer modülleri işlemeyi durdur)
HOOK_CONTINUE Başka bir modül engellemediği sürece bağlantıya izin verin.
- Ne'ye Yarar - HOOKTYPE_PRE_LOCAL_CONNECT Makrosunu kullanarak sunucuya giriş yapanların henüz sunucuya ulaşmadan:
Ident Korumasi Yapabilirsiniz
Yasaklı IP Adresi Yapabilirsiniz
RealName Korumasi Yapabilirsiniz
Istenilen Portu Şifre Koymadan WEBIRC(CGIIRC) Kontrolu Yapabilirsiniz
Kullanıcısı Sayısı Belirleyip Kullanıcı Sayısı Aşımı Oldumu Başka Sunucuya Yönlendirebilirsiniz..
Version Çekip Gelen Cevabi Ban Version Bloguyla Eşleştire Bilir Baglantıyı Kesebilirsiniz..
Kod Sorgulaması Yapıp Istenilen Cevap Gelmese Baglantıyı Kesebilirsiniz..
Edit Yapmadan Girişte Karşılama Mesajı vs Gibi Olaylar Gönderebilirsiniz..
Ve Hayal Gücünüzü Kullanıp Daha Fazlasını Yapabilirsiniz..
Örnek Kodlama Yapalım Ve Hatırlanacagı Uzere İlk Dersimizde Kullandıgımız "Modul Oluşturma" Kullanacaz me.name = Kullanim Sebebi Sunucu Ismini Almamiz
acptr->name = Kullanim Sebebi Girenin Nick'i Almamiz
acptr->listener->port = Istemcinin veya Kisinin Portunu Tespit Etmemiz
IsCGIIRC = CGIIRC Web/Mobil/ZChat/ZSohbet/QWeb/Kiwiirc ve Apletmi veya Clientmi Kontrolu Yapip İşlem Yapmak İçin Kullanıldı
[Üye Olmadan Linkleri Göremezsiniz. Lütfen Üye Olmak için TIKLAYIN...]
Girişte Bağımsız Bir Şekilde Mesaj Attirip ve Ek Olarak Altınızı Çiziyorum Ek Olarak 7033 Portunu Koruyacaz Şifresiz Bir Şekilde !
Kod
#include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "channel.h"
#include <time.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#include <io.h>
#endif
#include <fcntl.h>
#include "h.h"
#include "proto.h"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif
#define MOBILPORT 7033 // Buraya Korunacak Portu Yaziyoruz Ben 7033 Olarak Belirledim
DLLFUNC int m_baglan(aClient *acptr); // m_baglan adinda fonksiyon kullaniyoruz ve parametremizi aClient'imizi acptr olarak belirliyoruz
ModuleHeader MOD_HEADER(m_ilkmodulum)
= {
"m_ilkmodulum",
"v1",
"Bu Benim Ilk Modul Denemem",
"3.2-b8-1",
NULL
};
DLLFUNC int MOD_INIT(m_ilkmodulum)(ModuleInfo *modinfo)
{
HookAddEx(modinfo->handle, HOOKTYPE_PRE_LOCAL_CONNECT, m_baglan); // Çagrılacak Kancamızı HookAddEx olarak belirledik ve m_baglan fonksiyonumuzu çagirdik
MARK_AS_OFFICIAL_MODULE(modinfo);
return MOD_SUCCESS;
}
DLLFUNC int MOD_LOAD(m_ilkmodulum)(int module_load)
{
return MOD_SUCCESS;
}
DLLFUNC int MOD_UNLOAD(m_ilkmodulum)(int module_unload)
{
return MOD_SUCCESS;
}
// Fonksiyonumuzu ve paremetremizi açtık kodlarimizi ve yapılacak işlemleri yazabiliriz..
DLLFUNC int m_baglan(aClient *acptr)
{
// Bagimsiz Olarak Giris Yapana Hos Geldin Mesaji Gönderiyoruz
sendto_one(acptr, ":%s NOTICE %s :*** Sunucusuna Hos Geldiniz Keyifli Sohbetler", me.name, acptr->name);
// Eger port numarasi 7003 ise ve gelen istek CGIIRC Blogu Degilse kullaniciya Sunucuya Alma Ve Exit Client ver Dedik
if (MOBILPORT == acptr->listener->port && !IsCGIIRC(acptr))
return exit_client(acptr, acptr, acptr, "Lutfen mobil sohbet sayfamizdan giris yapiniz.");
return 0;
} Modülümüzü Oluşturduk
Ekran Görüntüsü
Sunucuya Baglanirken Verdigimiz Mesaj
7033 Portuyla Baglanirken exit client ve verilen mesaj
/module komutunda görünen bilgiler
IRCRehberi.Net
Anlatım: OmerAti