Tekil Mesaj gösterimi
Alt 10 Aralık 2025, 21:52   #2
Çevrimdışı
Xadd1
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: joindelay modülü giriş engelleme sorunu




Şunu bi denermisin


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/* * JoinDelay – Karantina destekli JOIN geciktirme sistemi * UnrealIRCd 3.2.10 uyumlu by Xadd1 */ #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 "h.h" #include <string.h> #include <stdlib.h> static int delay_time = 5; static char *quarantine_chan = "#karantina"; typedef struct _JD { time_t first; int freed; } JD; static JD *userdata[4096]; #define U(x) userdata[(x)->slot] static Cmdoverride *JOIN_OVR; static Cmdoverride *NICK_OVR; /* ---------------- MODULE HEADER ---------------- */ ModuleHeader MOD_HEADER(joindelay) = { "joindelay", "$Id: joindelay.c,v 1.0 Xadd1 Custom $", "Join delay + quarantine (RAW JOIN Safe)", "3.2-b8-1", NULL }; /* ---------------- CONFIG PARSER ---------------- */ DLLFUNC int joindelay_conf(ConfigFile *cf, ConfigEntry *ce, int type) { if (type != CONFIG_SET) return 0; if (!strcmp(ce->ce_varname, "join-delay")) { delay_time = config_checkval(ce->ce_vardata, CFG_TIME); if (delay_time < 1) delay_time = 5; return 1; } if (!strcmp(ce->ce_varname, "join-delay-quarantine")) { quarantine_chan = strdup(ce->ce_vardata); return 1; } return 0; } /* ---------------- CONNECT HOOK ---------------- */ static int delay_connect(aClient *cptr) { if (MyConnect(cptr)) { U(cptr) = MyMallocEx(sizeof(JD)); U(cptr)->first = TStime(); U(cptr)->freed = 0; sendto_one(cptr, ":%s NOTICE %s :Sunucu güvenlik kontrolü aktif.", me.name, cptr->name); sendto_one(cptr, ":%s NOTICE %s :%s kanalına yönlendirildiniz. %d saniye sonra serbest kalacaksınız.", me.name, cptr->name, quarantine_chan, delay_time); char *args[3] = { cptr->name, quarantine_chan, NULL }; do_cmd(cptr, cptr, "JOIN", 3, args); } return HOOK_CONTINUE; } /* ---------------- JOIN OVERRIDE ---------------- */ static int delay_join(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, char *parv[]) { if (MyConnect(sptr) && !IsAnOper(sptr)) { if (U(sptr) && !U(sptr)->freed) { time_t now = TStime(); if ((now - U(sptr)->first) < delay_time) { if (stricmp(parv[1], quarantine_chan)) { sendto_one(sptr, ":%s NOTICE %s :%d saniye daha sadece %s kanalında kalmalısın.", me.name, sptr->name, delay_time - (now - U(sptr)->first), quarantine_chan ); return 0; } } else { U(sptr)->freed = 1; sendto_one(sptr, ":%s NOTICE %s :Güvenlik kontrolü tamamlandı, global kanallara aktarılıyorsun.", me.name, sptr->name ); if (!BadPtr(AUTO_JOIN_CHANS)) { char *args2[3] = { sptr->name, AUTO_JOIN_CHANS, NULL }; do_cmd(sptr, sptr, "JOIN", 3, args2); } } } } if (ovr->prev) return ovr->prev->func(ovr->prev, cptr, sptr, parc, parv); return ovr->command->func(cptr, sptr, parc, parv); } /* ---------------- NICK OVERRIDE ---------------- */ static int delay_nick(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, char *parv[]) { if (MyConnect(sptr) && !IsAnOper(sptr)) { if (U(sptr) && !U(sptr)->freed) { if ((TStime() - U(sptr)->first) < delay_time) return 0; } } if (ovr->prev) return ovr->prev->func(ovr->prev, cptr, sptr, parc, parv); return ovr->command->func(cptr, sptr, parc, parv); } /* ---------------- QUIT HOOK ---------------- */ static int delay_quit(aClient *cptr, char *msg) { if (MyConnect(cptr)) { if (U(cptr)) { memset(U(cptr), 0, sizeof(JD)); MyFree(U(cptr)); U(cptr) = NULL; } } return HOOK_CONTINUE; } /* ---------------- MODULE TEST ---------------- */ DLLFUNC int MOD_TEST(joindelay)(ModuleInfo *mi) { HookAddEx(mi->handle, HOOKTYPE_CONFIGTEST, joindelay_conf); HookAddEx(mi->handle, HOOKTYPE_CONFIGPOSTTEST, joindelay_conf); HookAddEx(mi->handle, HOOKTYPE_CONFIGRUN, joindelay_conf); return MOD_SUCCESS; } /* ---------------- MODULE INIT ---------------- */ DLLFUNC int MOD_INIT(joindelay)(ModuleInfo *mi) { JOIN_OVR = CmdoverrideAdd(mi->handle, "JOIN", delay_join); NICK_OVR = CmdoverrideAdd(mi->handle, "NICK", delay_nick); HookAddEx(mi->handle, HOOKTYPE_PRE_LOCAL_CONNECT, delay_connect); HookAddEx(mi->handle, HOOKTYPE_LOCAL_QUIT, delay_quit); ModuleSetOptions(mi->handle, MOD_OPT_PERM); return MOD_SUCCESS; } /* ---------------- MODULE LOAD ---------------- */ DLLFUNC int MOD_LOAD(joindelay)(int module_load) { return MOD_SUCCESS; } /* ---------------- MODULE UNLOAD ---------------- */ DLLFUNC int MOD_UNLOAD(joindelay)(int a) { return MOD_SUCCESS; }


__________________

Kullanıcı imzalarındaki bağlantı ve resimleri görebilmek için en az 20 mesaja sahip olmanız gerekir ya da üye girişi yapmanız gerekir.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
İslami Sohbet sohbet bizimmekan reklamver