Hoşgeldin Misafir

Standart UnrealIRCD 3x İlk Modululumu Yapiyorum - Ders - 2 Makrolar -

Re-Start

Re-Start

Moderatör
MĂRĂCINENI – Argeșelu
11 Ara 2017
2,277 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
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ı

Ders1: Kaynak

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

61i8kzj.png


7033 Portuyla Baglanirken exit client ve verilen mesaj

2uft03q.png


/module komutunda görünen bilgiler

r01fww1.png