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/)
-   Unreal IRCd (https://www.ircforumlari.net/unreal-ircd/)
-   -   Join-Part saldirilari icin module (https://www.ircforumlari.net/unreal-ircd/26336-join-part-saldirilari-icin-module.html)

AlwaysGooD 20 Ekim 2006 00:06

Join-Part saldirilari icin module
 
Join part saldirilari icin jointhrottle üzerinden çalışmış olduğum module'dur. Join part yapan botları tespit edip gzline atıyor. /mode #kanal +J 1:10
olarak ayarlamamız gerekiyor. Bu modu sadece ircop ve adminler kullanabiliyor...

Kod:


/*
* AlwaysGooD ( ALTUĞ KARAALİ) tarafından düzenlenmiştir.
*/
#include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "proto.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"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif
#ifndef EXTCMODE
#error "This module requires extended channel modes to be enabled."
#error "See the EXTCMODE macro in include/config.h for more information."
#error "Compilation aborted." f
#endif
#define FLAG_joinpart 'J'
#define ERR_TOOMUCHJOINS 496
#define HasJoinLimit(x) ((x)->mode.extmode & MODE_joinpart)
#define ClearMem(x) memset(&(x), 0, sizeof (x))
#define DelCmode(x) if (x) CmodeDel(x); x = NULL
#define DelHook(x) if (x) HookDel(x); x = NULL
/* Backward compatibility */
#ifndef EX_DENY
#define EX_DENY 0
#define EX_ALLOW 1
#define EX_ALWAYS_DENY 0
#endif
#ifndef HOOK_CONTINUE
#define HOOK_CONTINUE 0
#define HOOK_ALLOW -1
#define HOOK_DENY 1
#endif
typedef struct
{
EXTCM_PAR_HEADER
int joins;
long seconds;
} aModeJTEntry;
typedef struct _joinflood JoinFlood;
struct _joinflood
{
JoinFlood *prev, *next;
aChannel *chptr;
aClient *sptr;
int joins;
TS last;
};
static Cmode *AddCmode(Module *module, CmodeInfo *req, Cmode_t *mode);
static int ModeJT_is_ok(aClient *, aChannel *, char *, int, int);
static CmodeParam *ModeJT_put_param(CmodeParam *, char *);
static char *ModeJT_get_param(CmodeParam *);
static char *ModeJT_conv_param(char *);
static void ModeJT_free_param(CmodeParam *);
static CmodeParam *ModeJT_dup_struct(CmodeParam *);
static int ModeJT_sjoin_check(aChannel *, CmodeParam *, CmodeParam *);
static int cb_channel_destroy(aChannel *);
static int cb_join(aClient *, aChannel *, char *[]);
static int cb_quit(aClient *, char *);
static void InitConf();
static void FreeConf();
Cmode_t MODE_joinpart = 0L;
JoinFlood *JFlist;
ModuleHeader MOD_HEADER(joinpart)
= {
"Join+Part Flood",
"v1.0",
"Kanal mod +J join flood banned Administrator.",
"3.2-b8-1",
NULL
};
DLLFUNC int MOD_TEST(joinpart)(ModuleInfo *modinfo)
{
CmodeInfo ModeJT;
ClearMem(ModeJT);
ModeJT.flag = FLAG_joinpart;
ModeJT.paracount = 1;
ModeJT.is_ok = ModeJT_is_ok;
ModeJT.put_param = ModeJT_put_param;
ModeJT.get_param = ModeJT_get_param;
ModeJT.conv_param = ModeJT_conv_param;
ModeJT.free_param = ModeJT_free_param;
ModeJT.sjoin_check = ModeJT_sjoin_check;
ModeJT.dup_struct = ModeJT_dup_struct;
AddCmode(modinfo->handle, &ModeJT, &MODE_joinpart);
return MOD_SUCCESS;
}
DLLFUNC int MOD_INIT(joinpart)(ModuleInfo *modinfo)
{
ModuleSetOptions(modinfo->handle, MOD_OPT_PERM);
InitConf();
HookAddEx(modinfo->handle, HOOKTYPE_PRE_LOCAL_JOIN, cb_join);
HookAddEx(modinfo->handle, HOOKTYPE_CHANNEL_DESTROY, cb_channel_destroy);
HookAddEx(modinfo->handle, HOOKTYPE_LOCAL_QUIT, cb_quit);
HookAddEx(modinfo->handle, HOOKTYPE_REMOTE_QUIT, cb_quit);
return MOD_SUCCESS;
}
DLLFUNC int MOD_LOAD(joinpart)(int module_load)
{
return MOD_SUCCESS;
}
DLLFUNC int MOD_UNLOAD(joinpart)(int module_unload)
{
FreeConf();
return MOD_SUCCESS;
}
static void InitConf()
{
JFlist = NULL;
}
static void FreeConf()
{
JoinFlood *J;
ListStruct *next;
for (J = JFlist; J; J = (JoinFlood *) next)
{
next = (ListStruct *) J->next;
DelListItem(J, JFlist);
MyFree(J);
}
}
static Cmode *AddCmode(Module *module, CmodeInfo *req, Cmode_t *mode)
{
Cmode *cmode;
*mode = 0;
cmode = CmodeAdd(module, *req, mode);
if (ModuleGetError(module) != MODERR_NOERROR || !cmode)
{
config_error("Error adding channel mode +%c when loading module %s: %s",
req->flag, MOD_HEADER(joinpart).name, ModuleGetErrorStr(module));
return NULL;
}
return cmode;
}
static int cb_channel_destroy(aChannel *chptr)
{
JoinFlood *J;
ListStruct *next;
for (J = JFlist; J; J = (JoinFlood *) next)
{
next = (ListStruct *) J->next;
if (J->chptr == chptr)
{
DelListItem(J, JFlist);
MyFree(J);
}
}
return 0;
}
static int cb_quit(aClient *sptr, char *comment)
{
JoinFlood *J;
ListStruct *next;
for (J = JFlist; J; J = (JoinFlood *) next)
{
next = (ListStruct *) J->next;
if (J->sptr == sptr)
{
DelListItem(J, JFlist);
MyFree(J);
}
}
return 0;
}
static int cb_join(aClient *sptr, aChannel *chptr, char *parv[])
{
JoinFlood *J;
aModeJTEntry *p;
TS now = TStime();
if (!HasJoinLimit(chptr))
return HOOK_CONTINUE;
for (J = JFlist; J; J = J->next)
if ((J->chptr == chptr && J->sptr == sptr))
break;
if (!J)
{
J = (JoinFlood *) MyMallocEx(sizeof(JoinFlood));
J->sptr = sptr;
J->chptr = chptr;
J->last = now;
J->joins = 1;
AddListItem(J, JFlist);
}
else
{
p = (aModeJTEntry *) extcmode_get_struct(chptr->mode.extmodeparam, FLAG_joinpart);
if (now - J->last >= p->seconds)
{
J->last = now;
J->joins = 1;
}
else
{
J->joins++;
if (J->joins > p->joins && now - J->last < p->seconds)
{
#ifndef NO_OPEROVERRIDE
if (IsOper(sptr) && OPCanOverride(sptr))
{
sendto_snomask(SNO_EYES,
"*** OperOverride -- %s (%s@%s) joined %s (overriding +%c).",
sptr->name, sptr->user->username, sptr->user->realhost,
chptr->chname, FLAG_joinpart);
return HOOK_CONTINUE;
}
#endif
place_host_ban(sptr, BAN_ACT_GZLINE, "Join+Part Saldirisi yaptığınız tespit edilmiştir. [MTS]", 864000);
sendto_one(sptr, ":Join Part yaptiniz"
"[Reksnet Protection Systems].",
me.name, ERR_TOOMUCHJOINS, parv[0], chptr->chname,
J->last + p->seconds - now);
return HOOK_DENY;
}
}
}
return HOOK_CONTINUE;
}
static int ModeJT_is_ok(aClient *sptr, aChannel *chptr, char *param, int type, int what)
{
char *p;
int num;
long sec;
int ok;
if (type == EXCHK_ACCESS || type == EXCHK_ACCESS_ERR)
{
if (!IsPerson(sptr) || IsULine(sptr))
return EX_ALLOW;
if (!IsOper(sptr))
{
if (type == EXCHK_ACCESS_ERR)
sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED),
me.name, sptr->name, chptr->chname);
sendto_one(sptr, "Chanserv notice %s :Bu mod sadece operlar tarafindan kullanilmaktadir.", me.name, sptr->name);
return EX_DENY;
}
return EX_ALLOW;
}
else if (type == EXCHK_PARAM)
{
ok = 1;
p = strchr(param, ':');
if (!p)
{
ok = 0;
sendnotice(sptr, "Kanal modu +%c giris:saniye seklinde olacaktir.",
FLAG_joinpart);
}
else
{
*p = '\0';
num = atoi(param);
sec = config_checkval(p+1, CFG_TIME);
if (num < 1 || sec < 1 || num > 10000 || sec > 86400)
{
ok = 0;
sendnotice(sptr, "Parameter for channel mode +%c is out of range",
FLAG_joinpart);
}
*p = ':';
}
return ok;
}
return 0;
}
static CmodeParam *ModeJT_put_param(CmodeParam *param, char *text)
{
aModeJTEntry *m = (aModeJTEntry *) param;
char *p;
if (!m)
{
m = (aModeJTEntry *) MyMallocEx(sizeof(aModeJTEntry));
m->flag = FLAG_joinpart;
}
p = strchr(text, ':');
*p = '\0';
m->joins = atoi(text);
m->seconds = config_checkval(p+1, CFG_TIME);
*p = ':';
return (CmodeParam *)m;
}
static char *ModeJT_get_param(CmodeParam *param)
{
aModeJTEntry *m = (aModeJTEntry *)param;
static char text[64];
if (!m)
return NULL;
ClearMem(text);
sprintf(text, "%d:%ld", m->joins, m->seconds);
return text;
}
static char *ModeJT_conv_param(char *in)
{
int joins;
long seconds;
static char text[64];
char *p;
p = strchr(in, ':');
*p = '\0';
joins = atoi(in);
seconds = config_checkval(p+1, CFG_TIME);
*p = ':';
ClearMem(text);
sprintf(text, "%d:%ld", joins, seconds);
return text;
}
static void ModeJT_free_param(CmodeParam *param)
{
MyFree(param);
}
static CmodeParam *ModeJT_dup_struct(CmodeParam *in)
{
aModeJTEntry *m = MyMalloc(sizeof(aModeJTEntry));
memcpy(m, in, sizeof(aModeJTEntry));
m->prev = m->next = NULL;
return (CmodeParam *) m;
}
static int ModeJT_sjoin_check(aChannel *chptr, CmodeParam *ours, CmodeParam *theirs)
{
aModeJTEntry *o = (aModeJTEntry *)ours;
aModeJTEntry *t = (aModeJTEntry *)theirs;
if ((o->joins == t->joins) && (o->seconds == t->seconds))
return EXSJ_SAME;
if (o->seconds < t->seconds)
return EXSJ_THEYWON;
else if (o->joins < t->joins)
return EXSJ_THEYWON;
else
return EXSJ_WEWON;
}


Mafya84 21 Ekim 2006 01:46

Yanıt: Join-Part saldirilari icin module
 
Guzel oLmus eline saglikda cok ban atiyor yanliz

AlwaysGooD 22 Ekim 2006 01:26

Yanıt: Join-Part saldirilari icin module
 
Sadece saldırın anında atması gerekiyor test edilmişti...

Mafya84 22 Ekim 2006 02:03

Yanıt: Join-Part saldirilari icin module
 
bilmem beLkide bende problem vardir bende surekli atmalar yapiyordu kaldirdim

AlwaysGooD 22 Ekim 2006 02:04

Yanıt: Join-Part saldirilari icin module
 
Anladım 1:10 limitini y&#252;kseltmeyi deneyebilirsin. &#199;&#252;nk&#252; devamlı /hop yapan userlarda atılmaktadır. Belki ona rast gelmişsin, bilemiyorum.

CaSt 18 Şubat 2007 16:06

Cevap: Join-Part saldirilari icin module
 
Selamun aleykum.
Bu modulün nasıl kuralacağını anlatabilirmisiniz lütfen?
Teşekkürler..
vesselam.

Holyzone 18 Şubat 2007 16:39

Cevap: Join-Part saldirilari icin module
 
Module kurulumu şeklinde aratın forumda mevcut.

CaSt 18 Şubat 2007 17:18

Cevap: Join-Part saldirilari icin module
 
2 sefer denedim olmadı. Acaba yanlış bişiymi yapıyorum?

Yaptıklarım ;

önce joinpart olarak adlandırdım modulu.Sonra modulesin içine joinpart.c olarak attım. telnnetten make custommodule MODULEFILE=joinpart yazıp enter yaptım. sonra unrealircd.conf içinde loadmodule "src/modules/joinpart.so"; yaptım ve sunucuya rehash cektiğimde hata iletisi verdi.

[17:17] -Irc.sunucuismi.com- *** Notice -- unrealircd.conf:258: loadmodule src/modules/joinpart.so: failed to load: tmp/9C74A645.joinpart.so: cannot open shared object file: No such file or directory

TreMex 19 Şubat 2007 23:24

Cevap: Join-Part saldirilari icin module
 
Test Amacli Kurdum Modulu Herhangi ßir Sorun Görmedim + Modul Calisiyor sağLamdir. Saygılar.. zaten sağLam oLmassa buraya konuLmaz mantikli düşünecek olursak test edilmeden konulurmu siz kurulumda hata yapıor olmalisiniz..

CaSt 20 Şubat 2007 00:35

Cevap: Join-Part saldirilari icin module
 
Alıntı:

delisinsen Nickli Üyeden Alıntı
Test Amacli Kurdum Modulu Herhangi &#223;ir Sorun G&#246;rmedim + Modul Calisiyor sağLamdir. Saygılar.. zaten sağLam oLmassa buraya konuLmaz mantikli d&#252;ş&#252;necek olursak test edilmeden konulurmu siz kurulumda hata yapıor olmalisiniz..


nasıl kurdugunuzu anlatırmısınız l&#252;tfen?


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

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