Forumdan Yararlanmak İçin Önce ForumDestek.NET'e Üye olman Gerekiyor.Buraya Tıklayarak Ücretsiz Üye Olunuz.

Go Back   ForumDestek.NET Paylasim Platformu > Genel IRCD > Unreal IRCd

Unreal IRCd Sunucunuzda rastladığınız sorunlar, sorularınız ,modüller, merak ettikleriniz, paylaşımlarınız.

UnreaL'i biraz KisiseLLesTireLimmi?


ForumDestek.NET Paylasim Platformu sitesindeki Unreal IRCd - Sunucunuzda rastladığınız sorunlar, sorularınız ,modüller, merak ettikleriniz, paylaşımlarınız. kategorisi altındaki UnreaL'i biraz KisiseLLesTireLimmi? isimli konuyu görüntülemektesiniz.

Yeni Konu aç Cevapla
 
Seçenekler Stil
Alt 08-28-2009, 03:20 AM   #1
ProfiL
MaJeSTe
 
MaJeSTe - ait Kullanıcı Resmi (Avatar)
 
·ForumDestek.NET® Paylaşımda Sınır Yok!
Üye BiLgiLeri
Üye No: 294
Mesajlar: 407
Konular:
Bulunduğu yer: JiX`Baby'nin Kalbinden
Cinsiyet: Erkek
Rep Rütbeleri
Rep Puanı : 210
Rep Derecesi :
MaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura about
Teşekkür istatistik
Ettigi Tesekkür: 44
32 Mesajina 40 Tesekkür Aldi
AktifLik Seviye: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Aktiflik: 0 / 444
Güç: 135 / 3178
Deneyim: 77%
İletişim
MaJeSTe - MSN üzeri Mesaj gönder
Standart UnreaL'i biraz KisiseLLesTireLimmi?

ModuL KuruLumu Hakkinda Bilgiyi Emegine SagLik eXeLaNCe Arkasimin Anlattigi SekiLde[Üye olmadan linki göremezsiniz.. Üye olmak için tıklayınız...] KurabiLirsiniz..

Vermis oLdugum moduLLeri kopyaLarak Bir Text Dosyasi icine yapistirin daha sonra modul ismi.c olarak kaydedin sonrasini kuruLum Simdiden BasariLar..

Antirandom ModuLu iLe basLamak istiyorum. Bu moduL sayesinde Serverinize Karisik NickLerLe Kullanici ki bunLar geneLde saLdiri amacLi kuLLaniLan CloneLar oLuor bunLarin girmesini engelleyebilirsiniz..

YapiLabiLecek DegisikLikLer..
Kod:
#define ANTIRANDOM_THRESHOLD      5  Nick Karakter UzunLugunu Burdan Secebilirsiniz..
Kod:
#define ANTIRANDOM_BANACT         BAN_ACT_KILL Buda Ceza Turu GecerLis Secim Kill istege bagLi oLarak satirin uzerindeki ceza turLerinden birisi seciLebiLir..
Kod:
#define ANTIRANDOM_REASON         "Your nick/userinfo seems too random, please fill in proper info" Buda UzakLastirma Sebebimiz..
Kod:
#define ANTIRANDOM_BANTIME        14400 bu da Kalici CezaLarda Ne Kadar Sure iLe UzakLastiriLicagi..
PHP- Kodu:
/*
 *   IRC - Internet Relay Chat, antirandom.c
 *   (C) Copyright 2004-2005, Bram Matthys (Syzop) <syzop@vulnscan.org>
 *
 *   Contains ideas from Keith Dunnett <keith@dunnett.org>
 *   Most of the detection mechanisms come from SpamAssassin FVGT_Tripwire.
 *
 *   $Id: antirandom.c,v 1.9 2005/01/06 16:14:24 syzop Exp $
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 1, or (at your option)
 *   any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#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

/*********** Configurable items ************** */

/* ANTIRANDOM_THRESHOLD: Score to exceed before user gets banned,
 * the ideal value is unknown... just don't set it lower than 2 ;).
 */
#define ANTIRANDOM_THRESHOLD      5

/* ANTIRANDOM_BANACT: what action should be performed if the user exceeds the threshold?
 * BAN_ACT_KILL     = kill
 * BAN_ACT_GLINE    = gline
 * BAN_ACT_GZLINE   = gzline
 * BAN_ACT_KLINE    = kline
 * BAN_ACT_ZLINE    = zline
 * BAN_ACT_SHUN     = shun
 * BAN_ACT_TEMPSHUN = temporary shun for this session
 */
#define ANTIRANDOM_BANACT         BAN_ACT_KILL

/* The reason field for kill/..line/shun, probably wise to fill in
 * an email address that innocent/n00b users can use contact you.
 */
#define ANTIRANDOM_REASON         "Your nick/userinfo seems too random, please fill in proper info"

/* Duration of the ban in seconds (does not apply to kills of course)
 * Quick hints:
 * 1 hour    3600
 * 4 hours   14400
 * 6 hours   21600
 * 1 day     86400
 * 4 days    345600
 * (much more is usually not recomended due to dynamic ips)
 */
#define ANTIRANDOM_BANTIME        14400

/* FULLSTATUS_ON_LOAD: if defined, then upon loading it will give a report
 * on all currently connected users that exceed their threshold.. Useful
 * for first-time loading/testing, otherwise it just won't output much
 * (since they would have been killed anyway), but useful to have :).
 * NOTE: any currently connected users won't be killed/banned.. this is
 *       ONLY informative.
 */
#define FULLSTATUS_ON_LOAD

/* Enable the next one to get notifications of any matches on-connect.
 * Obviously this can get really noisy! I chose however to enable it
 * on by default due to my paranoiaism ;).
 * change 'define' to 'undef' to disable it.
 */
#define SHOW_FAILEDCONNECTS

/**************** End of configurable items **************/




/* You can change this 'undef' into 'define' if you want to see quite
 * a flood for every user that connects (and on-load if FULLSTATUS_ON_LOAD).
 * Obviously only recommended for testing, use with care!
 */
#undef DEBUGMODE

ModuleHeader MOD_HEADER(antirandom)
  = {
    
"antirandom",
    
"v0.1.1",
    
"Randomness detector",
    
"3.2-b8-1",
    
NULL 
    
};

typedef struct {
    
char *regex;
    
int score;
ScoreTable;

/* You can define regexes here.. the format is:
 * {"<REGEX>", SCORE},
 */
ScoreTable regex_scores***91;***93; = {
    
/* (note.. these ones come from the original and are
     *  not very efficient, but they work fine and I'm lazy)
     */
    
{"***91;bcdfghjklmnpqrstvwxyz***93;{10}"10},
    {
"***91;aeiou***93;{10}"10},
    {
"***91;0-9***93;{10}"10},
    {
"***91;bcdfghjklmnpqrstvwxyz***93;{9}"9},
    {
"***91;aeiou***93;{9}"9},
    {
"***91;0-9***93;{9}"9},
    {
"***91;bcdfghjklmnpqrstvwxyz***93;{8}"8},
    {
"***91;aeiou***93;{8}"8},
    {
"***91;0-9***93;{8}"8},
    {
"***91;bcdfghjklmnpqrstvwxyz***93;{7}"7},
    {
"***91;aeiou***93;{7}"7},
    {
"***91;bcdfghjklmnpqrstvwxyz***93;{6}"6}, 
    {
"***91;aeiou***93;{6}"6}, 
    {
"***91;bcdfghjklmnpqrstvwxyz***93;{5}"5},
    {
"***91;aeiou***93;{5}"5},
    {
"***91;bcdfghjklmnpqrstvwxyz***93;{4}"4},
    {
"***91;aeiou***93;{4}"4},
    {
NULL0}
};

/* "<char1><char2>" followed by "<rest>" */
static char *triples_txt***91;***93; = {
    
"aj""fqtvxz",
    
"aq""deghjkmnprtxyz",
    
"av""bfhjqwxz",
    
"az""jwx",
    
"bd""bghjkmpqvxz",
    
"bf""bcfgjknpqvwxyz",
    
"bg""bdfghjkmnqstvxz",
    
"bh""bfhjkmnqvwxz",
    
"bj""bcdfghjklmpqtvwxyz",
    
"bk""dfjkmqrvwxyz",
    
"bl""bgpqwxz",
    
"bm""bcdflmnqz",
    
"bn""bghjlmnpqtvwx",
    
"bp""bfgjknqvxz",
    
"bq""bcdefghijklmnopqrstvwxyz",
    
"bt""dgjkpqtxz",
    
"bv""bfghjklnpqsuvwxz",
    
"bw""bdfjknpqsuwxyz",
    
"bx""abcdfghijklmnopqtuvwxyz",
    
"bz""bcdfgjklmnpqrstvwxz",
    
"cb""bfghjkpqyz",
    
"cc""gjqxz",
    
"cd""hjkqvwxz",
    
"cf""gjknqvwyz",
    
"cg""bdfgjkpqvz",
    
"cl""fghjmpqxz",
    
"cm""bjkqv",
    
"cn""bghjkpqwxz",
    
"cp""gjkvxyz",
    
"cq""abcdefghijklmnopqsvwxyz",
    
"cr""gjqx",
    
"cs""gjxz",
    
"cv""bdfghjklmnquvwxyz",
    
"cx""abdefghjklmnpqrstuvwxyz",
    
"cy""jqy",
    
"cz""bcdfghjlpqrtvwxz",
    
"db""bdgjnpqtxz",
    
"dc""gjqxz",
    
"dd""gqz",
    
"df""bghjknpqvxyz",
    
"dg""bfgjqvxz",
    
"dh""bfkmnqwxz",
    
"dj""bdfghjklnpqrwxz",
    
"dk""cdhjkpqrtuvwxz",
    
"dl""bfhjknqwxz",
    
"dm""bfjnqw",
    
"dn""fgjkmnpqvwz",
    
"dp""bgjkqvxz",
    
"dq""abcefghijkmnopqtvwxyz",
    
"dr""bfkqtvx",
    
"dt""qtxz",
    
"dv""bfghjknqruvwyz",
    
"dw""cdfjkmnpqsvwxz",
    
"dx""abcdeghjklmnopqrsuvwxyz",
    
"dy""jyz",
    
"dz""bcdfgjlnpqrstvxz",
    
"eb""jqx",
    
"eg""cjvxz",
    
"eh""hxz",
    
"ej""fghjpqtwxyz",
    
"ek""jqxz",
    
"ep""jvx",
    
"eq""bcghijkmotvxyz",
    
"ev""bfpq",
    
"fc""bdjkmnqvxz",
    
"fd""bgjklqsvyz",
    
"fg""fgjkmpqtvwxyz",
    
"fh""bcfghjkpqvwxz",
    
"fj""bcdfghijklmnpqrstvwxyz",
    
"fk""bcdfghjkmpqrstvwxz",
    
"fl""fjkpqxz",
    
"fm""dfhjlmvwxyz",
    
"fn""bdfghjklnqrstvwxz",
    
"fp""bfjknqtvwxz",
    
"fq""abcefghijklmnopqrstvwxyz",
    
"fr""nqxz",
    
"fs""gjxz",
    
"ft""jqx",
    
"fv""bcdfhjklmnpqtuvwxyz",
    
"fw""bcfgjklmpqstuvwxyz",
    
"fx""bcdfghjklmnpqrstvwxyz",
    
"fy""ghjpquvxy",
    
"fz""abcdfghjklmnpqrtuvwxyz",
    
"gb""bcdknpqvwx",
    
"gc""gjknpqwxz",
    
"gd""cdfghjklmqtvwxz",
    
"gf""bfghjkmnpqsvwxyz",
    
"gg""jkqvxz",
    
"gj""bcdfghjklmnpqrstvwxyz",
    
"gk""bcdfgjkmpqtvwxyz",
    
"gl""fgjklnpqwxz",
    
"gm""dfjkmnqvxz",
    
"gn""jkqvxz",
    
"gp""bjknpqtwxyz",
    
"gq""abcdefghjklmnopqrsvwxyz",
    
"gr""jkqt",
    
"gt""fjknqvx",
    
"gu""qwx",
    
"gv""bcdfghjklmpqstvwxyz",
    
"gw""bcdfgjknpqtvwxz",
    
"gx""abcdefghjklmnopqrstvwxyz",
    
"gy""jkqxy",
    
"gz""bcdfgjklmnopqrstvxyz",
    
"hb""bcdfghjkqstvwxz",
    
"hc""cjknqvwxz",
    
"hd""fgjnpvz",
    
"hf""bfghjkmnpqtvwxyz",
    
"hg""bcdfgjknpqsxyz",
    
"hh""bcgklmpqrtvwxz",
    
"hj""bcdfgjkmpqtvwxyz",
    
"hk""bcdgkmpqrstvwxz",
    
"hl""jxz",
    
"hm""dhjqrvwxz",
    
"hn""jrxz",
    
"hp""bjkmqvwxyz",
    
"hq""abcdefghijklmnopqrstvwyz",
    
"hr""cjqx",
    
"hs""jqxz",
    
"hv""bcdfgjklmnpqstuvwxz",
    
"hw""bcfgjklnpqsvwxz",
    
"hx""abcdefghijklmnopqrstuvwxyz",
    
"hz""bcdfghjklmnpqrstuvwxz",
    
"ib""jqx",
    
"if""jqvwz",
    
"ih""bgjqx",
    
"ii""bjqxy",
    
"ij""cfgqxy",
    
"ik""bcfqx",
    
"iq""cdefgjkmnopqtvxyz",
    
"iu""hiwxy",
    
"iv""cfgmqx",
    
"iw""dgjkmnpqtvxz",
    
"ix""jkqrxz",
    
"iy""bcdfghjklpqtvwx",
    
"jb""bcdghjklmnopqrtuvwxyz",
    
"jc""cfgjkmnopqvwxy",
    
"jd""cdfghjlmnpqrtvwx",
    
"jf""abcdfghjlnopqrtuvwxyz",
    
"jg""bcdfghijklmnopqstuvwxyz",
    
"jh""bcdfghjklmnpqrxyz",
    
"jj""bcdfghjklmnopqrstuvwxyz",
    
"jk""bcdfghjknqrtwxyz",
    
"jl""bcfghjmnpqrstuvwxyz",
    
"jm""bcdfghiklmnqrtuvwyz",
    
"jn""bcfjlmnpqsuvwxz",
    
"jp""bcdfhijkmpqstvwxyz",
    
"jq""abcdefghijklmnopqrstuvwxyz",
    
"jr""bdfhjklpqrstuvwxyz",
    
"js""bfgjmoqvxyz",
    
"jt""bcdfghjlnpqrtvwxz",
    
"jv""abcdfghijklpqrstvwxyz",
    
"jw""bcdefghijklmpqrstuwxyz",
    
"jx""abcdefghijklmnopqrstuvwxyz",
    
"jy""bcdefghjkpqtuvwxyz",
    
"jz""bcdfghijklmnopqrstuvwxyz",
    
"kb""bcdfghjkmqvwxz",
    
"kc""cdfgjknpqtwxz",
    
"kd""bfghjklmnpqsvwxyz",
    
"kf""bdfghjkmnpqsvwxyz",
    
"kg""cghjkmnqtvwxyz",
    
"kh""cfghjkqx",
    
"kj""bcdfghjkmnpqrstwxyz",
    
"kk""bcdfgjmpqswxz",
    
"kl""cfghlmqstwxz",
    
"km""bdfghjknqrstwxyz",
    
"kn""bcdfhjklmnqsvwxz",
    
"kp""bdfgjkmpqvxyz",
    
"kq""abdefghijklmnopqrstvwxyz",
    
"kr""bcdfghjmqrvwx",
    
"ks""jqx",
    
"kt""cdfjklqvx",
    
"ku""qux",
    
"kv""bcfghjklnpqrstvxyz",
    
"kw""bcdfgjklmnpqsvwxz",
    
"kx""abcdefghjklmnopqrstuvwxyz",
    
"ky""vxy",
    
"kz""bcdefghjklmnpqrstuvwxyz",
    
"lb""cdgkqtvxz",
    
"lc""bqx",
    
"lg""cdfgpqvxz",
    
"lh""cfghkmnpqrtvx",
    
"lk""qxz",
    
"ln""cfjqxz",
    
"lp""jkqxz",
    
"lq""bcdefhijklmopqrstvwxyz",
    
"lr""dfgjklmpqrtvwx",
    
"lv""bcfhjklmpwxz",
    
"lw""bcdfgjknqxz",
    
"lx""bcdfghjklmnpqrtuwz",
    
"lz""cdjptvxz",
    
"mb""qxz",
    
"md""hjkpvz",
    
"mf""fkpqvwxz",
    
"mg""cfgjnpqsvwxz",
    
"mh""bchjkmnqvx",
    
"mj""bcdfghjknpqrstvwxyz",
    
"mk""bcfgklmnpqrvwxz",
    
"ml""jkqz",
    
"mm""qvz",
    
"mn""fhjkqxz",
    
"mq""bdefhjklmnopqtwxyz",
    
"mr""jklqvwz",
    
"mt""jkq",
    
"mv""bcfghjklmnqtvwxz",
    
"mw""bcdfgjklnpqsuvwxyz",
    
"mx""abcefghijklmnopqrstvwxyz",
    
"mz""bcdfghjkmnpqrstvwxz",
    
"nb""hkmnqxz",
    
"nf""bghqvxz",
    
"nh""fhjkmqtvxz",
    
"nk""qxz",
    
"nl""bghjknqvwxz",
    
"nm""dfghjkqtvwxz",
    
"np""bdjmqwxz",
    
"nq""abcdfghjklmnopqrtvwxyz",
    
"nr""bfjkqstvx",
    
"nv""bcdfgjkmnqswxz",
    
"nw""dgjpqvxz",
    
"nx""abfghjknopuyz",
    
"nz""cfqrxz",
    
"oc""fjvw",
    
"og""qxz",
    
"oh""fqxz",
    
"oj""bfhjmqrswxyz",
    
"ok""qxz",
    
"oq""bcdefghijklmnopqrstvwxyz",
    
"ov""bfhjqwx",
    
"oy""qxy",
    
"oz""fjpqtvx",
    
"pb""fghjknpqvwz",
    
"pc""gjq",
    
"pd""bgjkvwxz",
    
"pf""hjkmqtvwyz",
    
"pg""bdfghjkmqsvwxyz",
    
"ph""kqvx",
    
"pk""bcdfhjklmpqrvx",
    
"pl""ghkqvwx",
    
"pm""bfhjlmnqvwyz",
    
"pn""fjklmnqrtvwz",
    
"pp""gqwxz",
    
"pq""abcdefghijklmnopqstvwxyz",
    
"pr""hjkqrwx",
    
"pt""jqxz",
    
"pv""bdfghjklquvwxyz",
    
"pw""fjkmnpqsuvwxz",
    
"px""abcdefghijklmnopqrstuvwxyz",
    
"pz""bdefghjklmnpqrstuvwxyz",
    
"qa""ceghkopqxy",
    
"qb""bcdfghjklmnqrstuvwxyz",
    
"qc""abcdfghijklmnopqrstuvwxyz",
    
"qd""defghijklmpqrstuvwxyz",
    
"qe""abceghjkmopquwxyz",
    
"qf""abdfghijklmnopqrstuvwxyz",
    
"qg""abcdefghijklmnopqrtuvwxz",
    
"qh""abcdefghijklmnopqrstuvwxyz",
    
"qi""efgijkmpwx",
    
"qj""abcdefghijklmnopqrstuvwxyz",
    
"qk""abcdfghijklmnopqrsuvwxyz",
    
"ql""abcefghjklmnopqrtuvwxyz",
    
"qm""bdehijklmnoqrtuvxyz",
    
"qn""bcdefghijklmnoqrtuvwxyz",
    
"qo""abcdefgijkloqstuvwxyz",
    
"qp""abcdefghijkmnopqrsuvwxyz",
    
"qq""bcdefghijklmnopstwxyz",
    
"qr""bdefghijklmnoqruvwxyz",
    
"qs""bcdefgijknqruvwxz",
    
"qt""befghjklmnpqtuvwxz",
    
"qu""cfgjkpwz",
    
"qv""abdefghjklmnopqrtuvwxyz",
    
"qw""bcdfghijkmnopqrstuvwxyz",
    
"qx""abcdefghijklmnopqrstuvwxyz",
    
"qy""abcdefghjklmnopqrstuvwxyz",
    
"qz""abcdefghijklmnopqrstuvwxyz",
    
"rb""fxz",
    
"rg""jvxz",
    
"rh""hjkqrxz",
    
"rj""bdfghjklmpqrstvwxz",
    
"rk""qxz",
    
"rl""jnq",
    
"rp""jxz",
    
"rq""bcdefghijklmnopqrtvwxy",
    
"rr""jpqxz",
    
"rv""bcdfghjmpqrvwxz",
    
"rw""bfgjklqsvxz",
    
"rx""bcdfgjkmnopqrtuvwxz",
    
"rz""djpqvxz",
    
"sb""kpqtvxz",
    
"sd""jqxz",
    
"sf""bghjkpqw",
    
"sg""cgjkqvwxz",
    
"sj""bfghjkmnpqrstvwxz",
    
"sk""qxz",
    
"sl""gjkqwxz",
    
"sm""fkqwxz",
    
"sn""dhjknqvwxz",
    
"sq""bfghjkmopstvwxz",
    
"sr""jklqrwxz",
    
"sv""bfhjklmnqtwxyz",
    
"sw""jkpqvwxz",
    
"sx""bcdefghjklmnopqrtuvwxyz",
    
"sy""qxy",
    
"sz""bdfgjpqsvxz",
    
"tb""cghjkmnpqtvwx",
    
"tc""jnqvx",
    
"td""bfgjkpqtvxz",
    
"tf""ghjkqvwyz",
    
"tg""bdfghjkmpqsx",
    
"tj""bdfhjklmnpqstvwxyz",
    
"tk""bcdfghjklmpqvwxz",
    
"tl""jkqwxz",
    
"tm""bknqtwxz",
    
"tn""fhjkmqvwxz",
    
"tp""bjpqvwxz",
    
"tq""abdefhijklmnopqrstvwxyz",
    
"tr""gjqvx",
    
"tv""bcfghjknpquvwxz",
    
"tw""bcdfjknqvz",
    
"tx""bcdefghjklmnopqrsuvwxz",
    
"tz""jqxz",
    
"uc""fjmvx",
    
"uf""jpqvx",
    
"ug""qvx",
    
"uh""bcgjkpvxz",
    
"uj""wbfghklmqvwx",
    
"uk""fgqxz",
    
"uq""bcdfghijklmnopqrtwxyz",
    
"uu""fijkqvwyz",
    
"uv""bcdfghjkmpqtwxz",
    
"uw""dgjnquvxyz",
    
"ux""jqxz",
    
"uy""jqxyz",
    
"uz""fgkpqrx",
    
"vb""bcdfhijklmpqrtuvxyz",
    
"vc""bgjklnpqtvwxyz",
    
"vd""bdghjklnqvwxyz",
    
"vf""bfghijklmnpqtuvxz",
    
"vg""bcdgjkmnpqtuvwxyz",
    
"vh""bcghijklmnpqrtuvwxyz",
    
"vj""abcdfghijklmnpqrstuvwxyz",
    
"vk""bcdefgjklmnpqruvwxyz",
    
"vl""hjkmpqrvwxz",
    
"vm""bfghjknpquvxyz",
    
"vn""bdhjkmnpqrtuvwxz",
    
"vp""bcdeghjkmopqtuvwyz",
    
"vq""abcdefghijklmnopqrstvwxyz",
    
"vr""fghjknqrtvwxz",
    
"vs""dfgjmqz",
    
"vt""bdfgjklmnqtx",
    
"vu""afhjquwxy",
    
"vv""cdfghjkmnpqrtuwxz",
    
"vw""abcdefghijklmnopqrtuvwxyz",
    
"vx""abcefghjklmnopqrstuvxyz",
    
"vy""oqx",
    
"vz""abcdefgjklmpqrstvwxyz",
    
"wb""bdfghjpqtvxz",
    
"wc""bdfgjkmnqvwx",
    
"wd""dfjpqvxz",
    
"wf""cdghjkmqvwxyz",
    
"wg""bcdfgjknpqtvwxyz",
    
"wh""cdghjklpqvwxz",
    
"wj""bfghijklmnpqrstvwxyz",
    
"wk""cdfgjkpqtuvxz",
    
"wl""jqvxz",
    
"wm""dghjlnqtvwxz",
    
"wp""dfgjkpqtvwxz",
    
"wq""abcdefghijklmnopqrstvwxyz",
    
"wr""cfghjlmpqwx",
    
"wt""bdgjlmnpqtvx",
    
"wu""aikoquvwy",
    
"wv""bcdfghjklmnpqrtuvwxyz",
    
"ww""bcdgkpqstuvxyz",
    
"wx""abcdefghijklmnopqrstuvwxz",
    
"wy""jquwxy",
    
"wz""bcdfghjkmnopqrstuvwxz",
    
"xa""ajoqy",
    
"xb""bcdfghjkmnpqsvwxz",
    
"xc""bcdgjkmnqsvwxz",
    
"xd""bcdfghjklnpqstuvwxyz",
    
"xf""bcdfghjkmnpqtvwxyz",
    
"xg""bcdfghjkmnpqstvwxyz",
    
"xh""cdfghjkmnpqrstvwxz",
    
"xi""jkqy",
    
"xj""abcdefghijklmnopqrstvwxyz",
    
"xk""abcdfghjkmnopqrstuvwxyz",
    
"xl""bcdfghjklmnpqrvwxz",
    
"xm""bcdfghjknpqvwxz",
    
"xn""bcdfghjklmnpqrvwxyz",
    
"xp""bcfjknpqvxz",
    
"xq""abcdefghijklmnopqrstvwxyz",
    
"xr""bcdfghjklnpqrsvwyz",
    
"xs""bdfgjmnqrsvxz",
    
"xt""jkpqvwxz",
    
"xu""fhjkquwx",
    
"xv""bcdefghjklmnpqrsuvwxyz",
    
"xw""bcdfghjklmnpqrtuvwxyz",
    
"xx""bcdefghjkmnpqrstuwyz",
    
"xy""jxy",
    
"xz""abcdefghjklmnpqrstuvwxyz",
    
"yb""cfghjmpqtvwxz",
    
"yc""bdfgjmpqsvwx",
    
"yd""chjkpqvwx",
    
"yf""bcdghjmnpqsvwx",
    
"yg""cfjkpqtxz",
    
"yh""bcdfghjkpqx",
    
"yi""hjqwxy",
    
"yj""bcdfghjklmnpqrstvwxyz",
    
"yk""bcdfgpqvwxz",
    
"ym""dfgjqvxz",
    
"yp""bcdfgjkmqxz",
    
"yq""abcdefghijklmnopqrstvwxyz",
    
"yr""jqx",
    
"yt""bcfgjnpqx",
    
"yv""bcdfghjlmnpqstvwxz",
    
"yw""bfgjklmnpqstuvwxz",
    
"yx""bcdfghjknpqrstuvwxz",
    
"yy""bcdfghjklpqrstvwxz",
    
"yz""bcdfjklmnpqtvwx",
    
"zb""dfgjklmnpqstvwxz",
    
"zc""bcdfgjmnpqstvwxy",
    
"zd""bcdfghjklmnpqstvwxy",
    
"zf""bcdfghijkmnopqrstvwxyz",
    
"zg""bcdfgjkmnpqtvwxyz",
    
"zh""bcfghjlpqstvwxz",
    
"zj""abcdfghjklmnpqrstuvwxyz",
    
"zk""bcdfghjklmpqstvwxz",
    
"zl""bcdfghjlnpqrstvwxz",
    
"zm""bdfghjklmpqstvwxyz",
    
"zn""bcdfghjlmnpqrstuvwxz",
    
"zp""bcdfhjklmnpqstvwxz",
    
"zq""abcdefghijklmnopqrstvwxyz",
    
"zr""bcfghjklmnpqrstvwxyz",
    
"zs""bdfgjmnqrsuwxyz",
    
"zt""bcdfgjkmnpqtuvwxz",
    
"zu""ajqx",
    
"zv""bcdfghjklmnpqrstuvwxyz",
    
"zw""bcdfghjklmnpqrstuvwxyz",
    
"zx""abcdefghijklmnopqrstuvwxyz",
    
"zy""fxy",
    
"zz""cdfhjnpqrvx",
    
NULLNULL
};

/* Used for parsed sregexes */
typedef struct _regexlist RegexList;
struct _regexlist {
    
RegexList *next;
    
regex_t regex;
#ifdef DEBUGMODE
    
char *regextxt;
#endif
};

/* Used for parsed triples: */
#define TRIPLES_REST_SIZE    32
typedef struct _triples Triples;
struct _triples {
    
Triples *next;
    
char two***91;3***93;;
    
char rest***91;TRIPLES_REST_SIZE***93;;
};

RegexList *sregexes NULL;
Triples *triples NULL;

/* Forward declarations */
int init_stuff(void);
int init_sregexes(void);
int init_triples(void);
void free_stuff(void);

DLLFUNC int antirandom_preconnect(aClient *sptr);

DLLFUNC int MOD_INIT(antirandom)(ModuleInfo *modinfo)
{
    if (!
init_stuff())
    {
        
config_error("antirandom: loading aborted");
        
free_stuff();
        return 
MOD_FAILED;
    }
    
HookAddEx(modinfo->handleHOOKTYPE_PRE_LOCAL_CONNECTantirandom_preconnect);
    return 
MOD_SUCCESS;
}

#ifdef FULLSTATUS_ON_LOAD
void check_all_users(void);
#endif

DLLFUNC int MOD_LOAD(antirandom)(int module_load)
{
#ifdef FULLSTATUS_ON_LOAD
    
check_all_users();
#endif
    
return MOD_SUCCESS;
}

DLLFUNC int MOD_UNLOAD(antirandom)(int module_unload)
{
    
free_stuff();
    return 
MOD_SUCCESS;
}

int init_stuff(void)
{
    if (!
init_sregexes() || !init_triples())
        return 
0;
    return 
1;
}

/** Initializes the sregexes regex list */
int init_sregexes()
{
ScoreTable *= &regex_scores***91;0***93;;
RegexList *e, *last=NULL;
int cnt=0n;
char *res;

    for (
s=&regex_scores***91;0***93;; s->regexs++)
    {
        
cnt++;
        
MyMallocEx(sizeof(RegexList));
        
/* validate regex */
        
res unreal_checkregex(s->regex01);
        if (
res)
        {
            
config_error("init_sregexes: sregexes_txt contains invalid regex (nr %d): %s",
                
cntres);
            return 
0;
        }
        
/* parse regex here (should go fine, checked above) */
        
regcomp(&e->regexs->regexREG_ICASE|REG_EXTENDED);
        if (
n)
        {
            
/* should never happen (yes I'm too lazy to get the errormsg) */
            
config_error("init_sregexes: weird regcomp() failure: item=%d, errorcode=%d, aborting...",
                
cntn);
            return 
0;
        }
#ifdef DEBUGMODE
        
e->regextxt strdup(s->regex);
#endif

        /* Append at end of list (to keep it in order, not importent yet, but..) */
        
if (last)
            
last->next e;
        else
            
sregexes e/*(head)*/
        
last e;
    }
    return 
1;
}

/** Initializes the triples list. */
int init_triples()
{
char **s;
Triples *e, *last=NULL;
int cnt=0;

    for (
s=triples_txt; *s; *s++)
    {
        
cnt++;
        
MyMallocEx(sizeof(Triples));
        if (
strlen(*s) > 2)
        {
            
config_error("init_triples: error parsing triples_txt, cnt=%d, item='%s' (length>2)",
                
cnt, *s);
            return 
0;
        }
        
strcpy(e->two, *s); /* (SAFE) */
        
*s++;
        if (!*
s)
        {
            
config_error("init_triples: error parsing triples_txt, cnt=%d, got NULL expected param",
                
cnt);
            return 
0;
        }
        if (
strlen(*s) > TRIPLES_REST_SIZE-1)
        {
            
config_error("init_triples: error parsing triples_txt, cnt=%d, item='%s' (length>%d)",
                
cnt, *sTRIPLES_REST_SIZE-1);
            return 
0;
        }
        
strcpy(e->rest, *s); /* (SAFE) */

        /* Append at end of list (to keep it in order, not importent yet, but..) */
        
if (last)
            
last->next e;
        else
            
triples e/*(head)*/
        
last e;
    }
    return 
1;
}

/** Run the actual tests over this string.
 * There are 3 tests:
 * - weird chars (not used)
 * - sregexes (easy stuff)
 * - triples (three-letter combinations)
 */
static int internal_getscore(char *str)
{
RegexList *r;
Triples *t;
register char *s;
int score 0;

    for (
r=sregexesrr=r->next)
    {
        if (!
regexec(&r->regexstr0NULL0))
        {
            
score += 1/* note: in the draft this returns the # of occurances, not 1 */
#ifdef DEBUGMODE
            
sendto_realops("score@'%s': MATCH for '%s'"strr->regextxt);
#endif
        
}
    }

    for (
t=triplestt=t->next)
    {
        for (
s=str; *ss++)
            if ((
t->two***91;0***93; == s***91;0***93;) && (t->two***91;1***93; == s***91;1***93;) && s***91;2***93; && strchr(t->rests***91;2***93;))
            {
                
score++; /* OK */
#ifdef DEBUGMODE
                
sendto_realops("score@'%s': MATCH for '%s***91;%s***93;' %c/%c/%c"strt->twot->rest,
                    
s***91;0***93;, s***91;1***93;, s***91;2***93;);
#endif
            
}
    }

    
    
    return 
score;
}

/** Returns "spam score".
 * @note a user is expected, do not call for anything else (eg: servers)
 */
static int get_spam_score(aClient *sptr)
{
char *nick sptr->name;
char *user sptr->user->username;
char *gecos sptr->info;
int nscoreuscoregscorescore;

    
nscore internal_getscore(nick);
    
uscore internal_getscore(user);
    
gscore internal_getscore(gecos);
    
score nscore uscore gscore;

#ifdef DEBUGMODE
    
sendto_realops("got score: %d/%d/%d = %d",
        
nscoreuscoregscorescore);
#endif

    
return score;
}

#ifdef FULLSTATUS_ON_LOAD
void check_all_users(void)
{
aClient *acptr;
int imatches=0score;

    for (
LastSlot>= 0i--)
    {
        if ((
acptr local***91;i***93;) && IsPerson(acptr))
        {
            
score get_spam_score(acptr);
            if (
score ANTIRANDOM_THRESHOLD)
            {
                if (!
matches)
                    
sendto_realops("***91;antirandom***93; Full status report follows:");
                
sendto_realops("%d points: %s!%s@%s:%s",
                    
scoreacptr->nameacptr->user->usernameacptr->user->realhostacptr->info);
                
matches++;
            }
        }
    }
    if (
matches)
        
sendto_realops("***91;antirandom***93; %d match%s"matchesmatches == "" "es");
}
#endif

DLLFUNC int antirandom_preconnect(aClient *sptr)
{
int score;

    
score get_spam_score(sptr);
    if (
score ANTIRANDOM_THRESHOLD)
    {
#ifdef SHOW_FAILEDCONNECTS
        
sendto_realops("***91;antirandom***93; denied access to user with score %d: %s!%s@%s:%s",
            
scoresptr->namesptr->user->usernamesptr->user->realhostsptr->info);
#endif
        
return place_host_ban(sptrANTIRANDOM_BANACTANTIRANDOM_REASONANTIRANDOM_BANTIME);
    }
    return 
0;
}

void free_stuff(void)
{
RegexList *r, *r_next;
Triples *t, *t_next;

    for (
r=sregexesrr=r_next)
    {
        
r_next r->next;
        
regfree(&r->regex);
#ifdef DEBUGMODE
        
if (r->regextxt)
            
MyFree(r->regextxt);
#endif
        
MyFree(r);
    }
    
sregexes NULL;

    for (
t=triplestt=t_next)
    {
        
t_next t->next;
        
MyFree(t);
    }
    
triples NULL;


Siradaki Modulumuz cmdflood.c

Bu Modulun Amaci komut flood'u engeLLemek. Biraz Hayal gucu iLe Cok super Bir moduL..

Modul Uzerinde oynama yapiLmasina gerek yok sadece moduL kuruLduktan sonra unrealircd.conf' bir kac satir ekLemeniz herseyi daha mukemmel yapacak.
Kod:
cmdflood
{
	module		2:10s;
	list		3:1m;
	whois		3:20;
};
bu ornek bir satir. Bunu Su SekiLde AcabiLiriz.
module = Kullanilan Komut.
10s kismi kac saniyede 2 kismida kac kez kullanilacagi anLamina geLior. Yani Ornekte module komutunu 10 saniyede 2 kez kullandigi zaman 3'uncu seferde bekLemeye aLinacagi anLamina geLmektedir.
Sure ibareLeri
Kod:
s: Second Yani Saniye
m: Minute Yani Dakika
h: Hour Yani Saat.
PHP- Kodu:
/*
 * =================================================================
 * Filename:             cmdflood.c
 * Description:          Flood protection for commands.
 * Written by:           AngryWolf <angrywolf@flashmail.com>
 * Requested by:         aaadicted
 * Documentation:        cmdflood.txt (comes with the package)
 * =================================================================
 */

#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"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif

typedef struct _floodsetting FloodSetting;
typedef struct _floodinfo FloodInfo;

struct _floodsetting
{
    
FloodSetting    *prev, *next;
    
char        *cmd;
    
Cmdoverride    *ovr;
    
int        count;
    
int        period;
};

struct _floodinfo
{
    
FloodInfo    *prev, *next;
    
aClient        *cptr;
    
char        *cmd;
    
int        count;
    
TS        last;
};

extern void            sendto_one(aClient *tochar *pattern, ...);
extern void            sendto_realops(char *pattern, ...);
extern int            config_parse_flood(char *origint *timesint *period);

#define MSG_CMDFLOOD        "CMDFLOOD"
#define TOK_CMDFLOOD        "CF"
#define ERR_TOOMANYUSES        ":%s 495 %s :%s Komutu Cok Fazla Kullanildi. %d Dakika Bekledikten Sonra Tekrar Deneyiniz.."
#define DelOverride(cmd, ovr)    if (ovr && CommandExists(cmd)) CmdoverrideDel(ovr); ovr = NULL
#define DelHook(x)          if (x) HookDel(x); x = NULL
#define DelCommand(x)        if (x) CommandDel(x); x = NULL
#define ircstrdup(x,y)        if (x) MyFree(x); if (!y) x = NULL; else x = strdup(y)
#define ircfree(x)        if (x) MyFree(x); x = NULL

static Command            *AddCommand(Module *modulechar *msgchar *tokeniFP func);
static 
Cmdoverride        *AddOverride(char *msgiFP cb);
static 
int            m_cmdflood(aClient *cptraClient *sptrint parcchar *parv***91;***93;);
static 
int            override_cmd(Cmdoverride *, aClient *, aClient *, intchar ****91;***93;);
static 
int            cb_config_test(ConfigFile *, ConfigEntry *, intint *);
static 
int            cb_config_run(ConfigFile *, ConfigEntry *, int);
static 
int            cb_config_rehash();
static 
int            cb_quit(aClient *, char *);
static 
FloodSetting        *find_FloodSetting(char *cmd);
static 
FloodInfo        *find_FloodInfo(aClient *cptrchar *cmd);
static 
void            FreeFloodSettings();
static 
void            FreeFloodInfoList();
static 
void            InitConf();
static 
void            FreeConf();
#ifdef HOOKTYPE_REHASH_COMPLETE
static int            cb_rehash_complete();
#else
static                EVENT(LoadOverrides);
#endif

static Command            *CmdCmdflood;
static 
Hook            *HookConfTest, *HookConfRun, *HookConfRehash;
static 
Hook            *HookQuit;
#ifdef STATIC_LINKING
 #ifdef HOOKTYPE_REHASH_COMPLETE
static Hook            *HookRehashDone;
 
#else
static u_int            event_added;
 
#endif
#endif
static FloodSetting        *FloodSettings;
static 
FloodInfo        *FloodInfoList;

#ifndef STATIC_LINKING
static ModuleInfo        *MyModInfo;
 
#define MyMod            MyModInfo->handle
 #define SAVE_MODINFO        MyModInfo = modinfo;
#else
 #define MyMod            NULL
 #define SAVE_MODINFO
#endif

ModuleHeader MOD_HEADER(cmdflood)
  = {
    
"cmdflood",
    
"$Id: cmdflood.c,v 1.8 2004/05/17 19:58:06 angrywolf Exp $",
    
"Flood protection for commands",
    
"3.2-b8-1",
    
NULL 
    
};

DLLFUNC int MOD_TEST(cmdflood)(ModuleInfo *modinfo)
{
    
SAVE_MODINFO
    HookConfTest 
HookAddEx(modinfo->handleHOOKTYPE_CONFIGTESTcb_config_test);

    return 
MOD_SUCCESS;
}

DLLFUNC int MOD_INIT(cmdflood)(ModuleInfo *modinfo)
{
    
SAVE_MODINFO
    FloodInfoList 
NULL;

#ifndef STATIC_LINKING
    
ModuleSetOptions(modinfo->handleMOD_OPT_PERM);
#endif
    
InitConf();

    
HookConfRun    HookAddEx(modinfo->handleHOOKTYPE_CONFIGRUNcb_config_run);
    
HookConfRehash    HookAddEx(modinfo->handleHOOKTYPE_REHASHcb_config_rehash);
#if defined(HOOKTYPE_REHASH_COMPLETE) && defined(STATIC_LINKING)
    
HookRehashDone    HookAddEx(modinfo->handleHOOKTYPE_REHASH_COMPLETEcb_rehash_complete);
#endif
        
HookQuit    HookAddEx(modinfo->handleHOOKTYPE_LOCAL_QUITcb_quit);
    
CmdCmdflood    AddCommand(modinfo->handleMSG_CMDFLOODTOK_CMDFLOODm_cmdflood);

    if (!
CmdCmdflood)
        return 
MOD_FAILED;

        return 
MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(cmdflood)(int module_load)
{
#ifdef HOOKTYPE_REHASH_COMPLETE
    
cb_rehash_complete();
#else
    
LoadOverrides(NULL);
#endif

    
return MOD_SUCCESS;
}

DLLFUNC int MOD_UNLOAD(cmdflood)(int module_unload)
{
    
FreeConf();
    
FreeFloodInfoList();

#if defined(HOOKTYPE_REHASH_COMPLETE) && defined(STATIC_LINKING)
    
DelHook(HookRehashDone);
#endif
    
DelHook(HookQuit);
    
DelHook(HookConfRehash);
    
DelHook(HookConfRun);
    
DelHook(HookConfTest);
    
DelCommand(CmdCmdflood);

    return 
MOD_SUCCESS;
}

static 
void InitConf()
{
    
FloodSettings    NULL;
#if defined(STATIC_LINKING) && !defined(HOOKTYPE_REHASH_COMPLETE)
    
event_added    0;
#endif
}

static 
void FreeConf()
{
    
FreeFloodSettings();
}

#ifdef HOOKTYPE_REHASH_COMPLETE
static int cb_rehash_complete()
#else
static EVENT(LoadOverrides)
#endif
{
    
FloodSetting *f;

    for (
FloodSettingsff->next)
        
f->ovr AddOverride(f->cmdoverride_cmd);

#ifdef HOOKTYPE_REHASH_COMPLETE
    
return 0;
#endif
}

static 
FloodSetting *find_FloodSetting(char *cmd)
{
    
FloodSetting *f;

    for (
FloodSettingsff->next)
        if (!
stricmp(f->cmdcmd))
            break;

    return 
f;
}

static 
FloodInfo *find_FloodInfo(aClient *cptrchar *cmd)
{
    
FloodInfo *f;

    for (
FloodInfoListff->next)
        if (
f->cptr == cptr && !stricmp(f->cmdcmd))
            break;

    return 
f;
}

static 
void FreeFloodSettings()
{
    
FloodSetting    *f;
    
ListStruct    *next;

    for (
FloodSettingsf= (FloodSetting *) next)
    {
        
next = (ListStruct *) f->next;
        
DelListItem(fFloodSettings);
        
DelOverride(f->cmdf->ovr);
        
MyFree(f->cmd);
        
MyFree(f);
    }
}

static 
void FreeFloodInfoList()
{
    
FloodInfo    *f;
    
ListStruct    *next;

    for (
FloodInfoListf= (FloodInfo *) next)
    {
        
next = (ListStruct *) f->next;
        
DelListItem(fFloodInfoList);
        
MyFree(f->cmd);
        
MyFree(f);
    }
}

static 
int cb_config_rehash()
{
    
FreeConf();
    
InitConf();

    return 
1;
}

#define CHECK_EMPTY(ce, parent) \
        
if (!(ce)->ce_varname
        { 
            
config_error("%s:%i: blank %s item"
                (
ce)->ce_fileptr->cf_filename
                (
ce)->ce_varlinenum, (parent)->ce_varname); 
            
errors++; 
            continue; 
        } 
        if (!(
ce)->ce_vardata
        { 
            
config_error("%s:%i: %s::%s without contents"
                (
ce)->ce_fileptr->cf_filename
                (
ce)->ce_varlinenum
                (
parent)->ce_varname, (ce)->ce_varname); 
            
errors++; 
            continue; 
        }

static 
int cb_config_test(ConfigFile *cfConfigEntry *ceint typeint *errs)
{
    
ConfigEntry    *cep;
    
int        errors 0;
    
int        countperiod;

    if (
type != CONFIG_MAIN)
        return 
0;

    if (!
strcmp(ce->ce_varname"cmdflood"))
    {
        for (
cep ce->ce_entriescepcep cep->ce_next)
        {
            
CHECK_EMPTY(cepce)

            if (!
config_parse_flood(cep->ce_vardata, &count, &period) ||
                (
count 1) || (count 255) || (period 5))
            {
                
config_error("%s:%i: Bad value for cmdflood::%s. Syntax is '<count>:<period>' (ie. 5:60), "
                    "count should be in range 1-255, period greater than 4"
,
                    
cep->ce_fileptr->cf_filenamecep->ce_varlinenum,
                    
cep->ce_varname);
                
errors++;
            }
        }

        *
errs errors;
        return 
errors ? -1;
    }

    return 
0;
}

static 
int cb_config_run(ConfigFile *cfConfigEntry *ceint type)
{
    
ConfigEntry    *cep;
    
FloodSetting    *f;

    if (
type != CONFIG_MAIN)
        return 
0;

    if (!
strcmp(ce->ce_varname"cmdflood"))
    {
        for (
cep ce->ce_entriescepcep cep->ce_next)
        {
            if (
find_FloodSetting(cep->ce_varname))
                continue;

            
= (FloodSetting *) MyMallocEx(sizeof(FloodSetting));
            
f->cmd strdup(cep->ce_varname);
            
config_parse_flood(cep->ce_vardata, &f->count, &f->period);
            
AddListItem(fFloodSettings);

#if defined(STATIC_LINKING) && !defined(HOOKTYPE_REHASH_COMPLETE)
            
if (!event_added)
            {
                
/* Not the best solution, but it works. */
                
EventAdd("cmdflood_loadoverrides"01,
                    
LoadOverridesNULL);
                
event_added 1;
            }
#endif
        
}

        return 
1;        
    }

    return 
0;
}

static 
Cmdoverride *AddOverride(char *msgiFP cb)
{
    
Cmdoverride *ovr CmdoverrideAdd(MyModmsgcb);

#ifndef STATIC_LINKING
        
if (ModuleGetError(MyMod) != MODERR_NOERROR || !ovr)
#else
        
if (!ovr)
#endif
    
{
#ifndef STATIC_LINKING
        
config_error("Error replacing command %s when loading module %s: %s",
            
msgMOD_HEADER(cmdflood).nameModuleGetErrorStr(MyMod));
#else
        
config_error("Error replacing command %s when loading module %s",
            
msgMOD_HEADER(cmdflood).name);
#endif
        
return NULL;
    }

    return 
ovr;
}

static 
Command *AddCommand(Module *modulechar *msgchar *tokeniFP func)
{
    
Command *cmd;

    if (
CommandExists(msg))
        {
        
config_error("Command %s already exists"msg);
        return 
NULL;
        }
        if (
CommandExists(token))
    {
        
config_error("Token %s already exists"token);
        return 
NULL;
        }

    
cmd CommandAdd(modulemsgtokenfuncMAXPARA0);

#ifndef STATIC_LINKING
    
if (ModuleGetError(module) != MODERR_NOERROR || !cmd)
#else
    
if (!cmd)
#endif
    
{
#ifndef STATIC_LINKING
        
config_error("Error adding command %s: %s"msg,
            
ModuleGetErrorStr(module));
#else
        
config_error("Error adding command %s"msg);
#endif
        
return NULL;
    }

    return 
cmd;
}

static 
int cb_quit(aClient *sptrchar *comment)
{
    
FloodInfo    *f;
    
ListStruct    *next;

    for (
FloodInfoListf= (FloodInfo *) next)
    {
        
next = (ListStruct *) f->next;
        if (
f->cptr == sptr)
        {
            
DelListItem(fFloodInfoList);
            
MyFree(f->cmd);
            
MyFree(f);
        }
    }

    return 
0;
}

static 
int override_cmd(Cmdoverride *ovraClient *cptraClient *sptrint parcchar *parv***91;***93;)
{
    
FloodInfo    *fi;
    
FloodSetting    *fs;
    
TS        now        TStime();
    
char        *cmd        ovr->command->cmd;

    if (
IsPerson(sptr) && !IsAnOper(sptr))
    {
        if (!(
fi find_FloodInfo(sptrcmd)))
        {
            
fi        = (FloodInfo *) MyMallocEx(sizeof(FloodInfo));
            
fi->cptr    sptr;
            
fi->cmd        strdup(cmd);
            
fi->last    now;
            
fi->count    1;

            
AddListItem(fiFloodInfoList);
        }
        else
        {
            
fs find_FloodSetting(cmd);

            if (!
fs)
            {
                
sendto_realops("*** ***91;BUG***93; Couldn't find the flood configuration of command %s."
                    " Please report this bug at http://angrywolf.clanintern-irc.de/."
,
                    
cmd);
                return 
CallCmdoverride(ovrcptrsptrparcparv);
            }

            if (
now fi->last >= fs->period)
            {
                
fi->last now;
                
fi->count 1;
            }
            else
            {
                
fi->count++;

                if (
fi->count fs->count && now fi->last fs->period)
                {
                    
sendto_one(sptrERR_TOOMANYUSES,
                        
me.namesptr->namecmd,
                        
fi->last fs->period now);
                    return 
0;
                }
            }
        }
    }

    return 
CallCmdoverride(ovrcptrsptrparcparv);
}

static 
int m_cmdflood(aClient *cptraClient *sptrint parcchar *parv***91;***93;)
{
    
FloodSetting *f;

    if (!
IsPerson(sptr))
        return -
1;

    if (!
MyConnect(sptr) || !IsAnOper(sptr))
    {
        
sendto_one(sptrerr_str(ERR_NOPRIVILEGES), me.nameparv***91;0***93;);
        return -
1;
    }

    for (
FloodSettingsff->next)
        
sendto_one(sptr":%s %i %s :x %s: %d per %s",
            
me.nameRPL_TEXTsptr->name,
            
f->cmdf->count,
            
pretty_time_val(f->period));

    
sendto_one(sptrrpl_str(RPL_ENDOFSTATS), me.namesptr->name'x');
    return 
0;






MaJeSTe isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 08-28-2009, 03:24 AM   #2
ProfiL
MaJeSTe
 
MaJeSTe - ait Kullanıcı Resmi (Avatar)
 
·ForumDestek.NET® Paylaşımda Sınır Yok!
Üye BiLgiLeri
Üye No: 294
Mesajlar: 407
Konular:
Bulunduğu yer: JiX`Baby'nin Kalbinden
Cinsiyet: Erkek
Rep Rütbeleri
Rep Puanı : 210
Rep Derecesi :
MaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura about
Teşekkür istatistik
Ettigi Tesekkür: 44
32 Mesajina 40 Tesekkür Aldi
AktifLik Seviye: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Aktiflik: 0 / 444
Güç: 135 / 3178
Deneyim: 77%
İletişim
MaJeSTe - MSN üzeri Mesaj gönder
Standart

Siradaki Module Hideserver Modulu.
Bu ModuL iLe ister /map ister /links isterseniz her ikisinide yasaklayabilirsiniz..

Sadece unrealircd.conf'a
Kod:
hideserver
{

	disable-map no;
	disable-links no;
	map-deny-message "*** /Map Komutu GuvenLik Nedeni ile YasakLanmistir.";
	links-deny-message "*** /Links Komutu GuvenLik Nedeni iLe YasakLanmistir.";
	hide
	{
		hub4.test.com;
		leaf3.test.com;
	};
};
Bu SatirLari Kendimize Gore DuzenLeyip Ekliyoruz..
Degiskenler
Kod:
	disable-map no;
	disable-links no;
Map ve Links'i yasakLamak icin no yazan yerLere yes yazmamiz yeterlidir..

PHP- Kodu:
/*
 * =================================================================
 * Filename:             hideserver.c
 * Description:          Hide certain or all servers from /map & /links.
 * Written by:           AngryWolf <angrywolf@flashmail.com>
 * Documentation:        hideserver.txt (comes with the package)
 * =================================================================
 */

#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"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif

extern void            sendto_one(aClient *tochar *pattern, ...);
extern char            *my_itoa(int i);

#define DelOverride(cmd, ovr)    if (ovr && CommandExists(cmd)) CmdoverrideDel(ovr); ovr = NULL
#define DelHook(x)          if (x) HookDel(x); x = NULL
#define ircstrdup(x,y)        if (x) MyFree(x); if (!y) x = NULL; else x = strdup(y)
#define ircfree(x)        if (x) MyFree(x); x = NULL

Cmdoverride            *AddOverride(char *msgiFP cb);
static 
int            override_map(Cmdoverride *, aClient *, aClient *, intchar ****91;***93;);
static 
int            override_links(Cmdoverride *, aClient *, aClient *, intchar ****91;***93;);
static 
int            cb_test(ConfigFile *, ConfigEntry *, intint *);
static 
int            cb_conf(ConfigFile *, ConfigEntry *, int);
static 
int            cb_rehash();
/* static int            cb_stats(aClient *sptr, char *stats); */

Hook                *HookConfTest, *HookConfRun;
Hook                *HookConfRehash;
Cmdoverride            *OvrMap, *OvrLinks;
ConfigItem_ulines        *HiddenServers;

static 
struct
{
    
unsigned    disable_map 1;
    
unsigned    disable_links 1;
    
char        *map_deny_message;
    
char        *links_deny_message;
Settings;

#ifndef STATIC_LINKING
static ModuleInfo    *MyModInfo;
 
#define MyMod        MyModInfo->handle
 #define SAVE_MODINFO    MyModInfo = modinfo;
#else
 #define MyMod        NULL
 #define SAVE_MODINFO
#endif

ModuleHeader MOD_HEADER(hideserver)
  = {
    
"hideserver",
    
"$Id: hideserver.c,v 4.8 2004/04/05 07:25:04 angrywolf Exp $",
    
"Hide servers from /map & /links",
    
"3.2-b8-1",
    
NULL 
    
};

static 
void InitConf()
{
    
memset(&Settings0sizeof Settings);
}

static 
void FreeConf()
{
    
ConfigItem_ulines    *h;
    
ListStruct        *next;

    
ircfree(Settings.map_deny_message);
    
ircfree(Settings.links_deny_message);

    for (
HiddenServersh= (ConfigItem_ulines *) next)
    {
        
next = (ListStruct *) h->next;
        
DelListItem(hHiddenServers);
        
MyFree(h->servername);
        
MyFree(h);
    }
}

DLLFUNC int MOD_TEST(hideserver)(ModuleInfo *modinfo)
{
    
SAVE_MODINFO
    HookConfTest    
HookAddEx(modinfo->handleHOOKTYPE_CONFIGTESTcb_test);

    return 
MOD_SUCCESS;
}

DLLFUNC int MOD_INIT(hideserver)(ModuleInfo *modinfo)
{
    
SAVE_MODINFO
    HiddenServers 
NULL;
    
InitConf();

    
HookConfRun    HookAddEx(modinfo->handleHOOKTYPE_CONFIGRUNcb_conf);
    
HookConfRehash    HookAddEx(modinfo->handleHOOKTYPE_REHASHcb_rehash);

        return 
MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(hideserver)(int module_load)
{
    
int ret MOD_SUCCESS;

    
OvrMap        AddOverride("map"override_map);
    
OvrLinks    AddOverride("links"override_links);

    if (!
OvrMap || !OvrLinks)
        
ret MOD_FAILED;

    return 
ret;
}

DLLFUNC int MOD_UNLOAD(hideserver)(int module_unload)
{
    
FreeConf();

    
DelOverride("map"OvrMap);
    
DelOverride("links"OvrLinks);

    
DelHook(HookConfRehash);
    
DelHook(HookConfRun);
    
DelHook(HookConfTest);

    return 
MOD_SUCCESS;
}

static 
int cb_rehash()
{
    
FreeConf();
    
InitConf();

    return 
1;
}

static 
int cb_test(ConfigFile *cfConfigEntry *ceint typeint *errs)
{
    
ConfigEntry    *cep, *cepp;
    
int        errors 0;

    if (
type == CONFIG_MAIN)
    {
        if (!
strcmp(ce->ce_varname"hideserver"))
        {
            for (
cep ce->ce_entriescepcep cep->ce_next)
            {
                if (!
strcmp(cep->ce_varname"hide"))
                {
                    for (
cepp cep->ce_entriesceppcepp cepp->ce_next)
                    {
                        if (!
cepp->ce_varname)
                        {
                            
config_error("%s:%i: blank hideserver::hide item",
                                
cepp->ce_fileptr->cf_filename,
                                
cepp->ce_varlinenum);
                            
errors++;
                        }
                    }
                }
                else if (!
cep->ce_varname)
                {
                    
config_error("%s:%i: blank %s item",
                        
cep->ce_fileptr->cf_filename,
                        
cep->ce_varlinenumce->ce_varname);
                    
errors++;
                    continue;
                }
                else if (!
cep->ce_vardata)
                {
                    
config_error("%s:%i: %s::%s without value",
                        
cep->ce_fileptr->cf_filename,
                        
cep->ce_varlinenum,
                        
ce->ce_varnamecep->ce_varname);
                    
errors++;
                    continue;
                }
                else if (!
strcmp(cep->ce_varname"disable-map"))
                    ;
                else if (!
strcmp(cep->ce_varname"disable-links"))
                    ;
                else if (!
strcmp(cep->ce_varname"map-deny-message"))
                    ;
                else if (!
strcmp(cep->ce_varname"links-deny-message"))
                    ;
                else
                {
                    
config_error("%s:%i: unknown directive hideserver::%s",
                        
cep->ce_fileptr->cf_filenamecep->ce_varlinenumcep->ce_varname);
                    
errors++;
                }
            }
            *
errs errors;
            return 
errors ? -1;
        }
    }

    return 
0;
}

static 
int cb_conf(ConfigFile *cfConfigEntry *ceint type)
{
    
ConfigEntry        *cep, *cepp;
    
ConfigItem_ulines    *ca;

    if (
type == CONFIG_MAIN)
    {
        if (!
strcmp(ce->ce_varname"hideserver"))
        {
            for (
cep ce->ce_entriescepcep cep->ce_next)
            {
                if (!
strcmp(cep->ce_varname"disable-map"))
                    
Settings.disable_map config_checkval(cep->ce_vardataCFG_YESNO);
                else if (!
strcmp(cep->ce_varname"disable-links"))
                    
Settings.disable_links config_checkval(cep->ce_vardataCFG_YESNO);
                else if (!
strcmp(cep->ce_varname"map-deny-message"))
                {
                    
ircstrdup(Settings.map_deny_messagecep->ce_vardata);
                }
                else if (!
strcmp(cep->ce_varname"links-deny-message"))
                {
                    
ircstrdup(Settings.links_deny_messagecep->ce_vardata);
                }
                else if (!
strcmp(cep->ce_varname"hide"))
                {
                    for (
cepp cep->ce_entriesceppcepp cepp->ce_next)
                    {
                        if (!
strcasecmp(cepp->ce_varnameme.name))
                            continue;

                        
ca MyMallocEx(sizeof(ConfigItem_ulines));
                        
ircstrdup(ca->servernamecepp->ce_varname);
                        
AddListItem(caHiddenServers);
                    }
                }
            }

            return 
1;
        }
    }

    return 
0;
}

/*
 * static int cb_stats(aClient *sptr, char *stats)
 * {
 *     if (*stats == 'S')
 *     {
 *         sendto_one(sptr, ":%s %i %s :disable-map: %d",
 *             me.name, RPL_TEXT, sptr->name, Settings.disable_map);
 *         sendto_one(sptr, ":%s %i %s :disable-links: %d",
 *             me.name, RPL_TEXT, sptr->name, Settings.disable_links);
 *         sendto_one(sptr, ":%s %i %s :map-deny-message: %s",
 *             me.name, RPL_TEXT, sptr->name, Settings.map_deny_message ? Settings.map_deny_message : "<none>");
 *         sendto_one(sptr, ":%s %i %s :links-deny-message: %s",
 *             me.name, RPL_TEXT, sptr->name, Settings.links_deny_message ? Settings.links_deny_message : "<none>");
 *     }
 *         return 0;
 * }
 */

Cmdoverride *AddOverride(char *msgiFP cb)
{
    
Cmdoverride *ovr CmdoverrideAdd(MyModmsgcb);

#ifndef STATIC_LINKING
        
if (ModuleGetError(MyMod) != MODERR_NOERROR || !ovr)
#else
        
if (!ovr)
#endif
    
{
#ifndef STATIC_LINKING
        
config_error("Error replacing command %s when loading module %s: %s",
            
msgMOD_HEADER(hideserver).nameModuleGetErrorStr(MyMod));
#else
        
config_error("Error replacing command %s when loading module %s",
            
msgMOD_HEADER(hideserver).name);
#endif
        
return NULL;
    }

    return 
ovr;
}

ConfigItem_ulines *FindHiddenServer(char *servername)
{
    
ConfigItem_ulines *h;

    for (
HiddenServersh= (ConfigItem_ulines *) h->next)
        if (!
strcasecmp(servernameh->servername))
            break;

    return 
h;
}

/*
 * New /MAP format -Potvin
 * dump_map function.
 * Rewritten by AngryWolf
 */

void my_dump_map(aClient *cptraClient *serverint prompt_lengthint length)
{
    static 
char    prompt***91;64***93;;
    
char        *= &prompt***91;prompt_length***93;;
    
int        cnt 0;
    
aClient        *acptr;
    
Link        *lp;

    *
'\0';

    if (
prompt_length 60)
        
sendto_one(cptrrpl_str(RPL_MAPMORE), me.namecptr->name,
            
promptserver->name);
    else
    {
        
sendto_one(cptrrpl_str(RPL_MAP), me.namecptr->nameprompt,
            
lengthserver->nameserver->serv->users,
            (
server->serv->numeric ? (char *)my_itoa(server->serv->
            
numeric) : ""));
        
cnt 0;
    }

    if (
prompt_length 0)
    {
        
p***91;-1***93; = ' ';
        if (
p***91;-2***93; == '`')
            
p***91;-2***93; = ' ';
    }
    if (
prompt_length 60)
        return;

    
strcpy(p"|-");

    for (
lp Serverslplp lp->next)
    {
        
acptr lp->value.cptr;
        if (
acptr->srvptr != server || !(acptr->flags FLAGS_MAP))
            continue;
        
cnt++;
    }

    for (
lp Serverslplp lp->next)
    {
        
acptr lp->value.cptr;
        if (
acptr->srvptr != server || !(acptr->flags FLAGS_MAP))
            continue;
        if (--
cnt == 0)
            *
'`';
        
my_dump_map(cptracptrprompt_length 2length 2);

    }

    if (
prompt_length 0)
        
p***91;-1***93; = '-';
}

/*
** New /MAP format. -Potvin
** m_map (NEW)
** Rewritten by AngryWolf
**
**      parv***91;0***93; = sender prefix
**      parv***91;1***93; = server mask
**/

static int override_map(Cmdoverride *ovraClient *cptraClient *sptrint parcchar *parv***91;***93;)
{
    
Link        *lp;
    
aClient        *acptr, *uplink;
    
u_int        longest strlen(me.name);
    
int        hide_ulines = (HIDE_ULINES && !IsAnOper(sptr));

    if (!
IsClient(sptr))
        return 
CallCmdoverride(ovrcptrsptrparcparv);

    if (!
IsAnOper(sptr) && Settings.disable_map)
    {
        if (
Settings.map_deny_message)
            
sendto_one(sptr":%s %s %s :%s",
                
me.nameIsWebTV(sptr) ? "PRIVMSG" "NOTICE",
                
sptr->nameSettings.map_deny_message);
        else
            
sendto_one(sptrrpl_str(RPL_MAPEND), me.nameparv***91;0***93;);

        return 
0;
    }

    if (
parc || BadPtr(parv***91;1***93;))
        
parv***91;1***93; = "*";
    for (
lp Serverslplp lp->next)
        
lp->value.cptr->flags &= ~FLAGS_MAP;
    
me.flags |= FLAGS_MAP;
    for (
lp Serverslplp lp->next)
    {
        
acptr lp->value.cptr;
        if (
IsMe(acptr) || _match(parv***91;1***93;, acptr->name))
            continue;
        for (
uplink acptruplink && uplink != &meuplink uplink->srvptr)
        {
            if (
hide_ulines && IsULine(uplink))
                break;
            if (!
IsAnOper(sptr) && FindHiddenServer(uplink->name))
                break;
            if (
uplink->flags FLAGS_MAP)
                break;
            
uplink->flags |= FLAGS_MAP;
            if ((
strlen(uplink->name) + uplink->hopcount 2) > longest)
                
longest strlen(uplink->name) + uplink->hopcount 2;
        }
    }
    if (
longest 60)
        
longest 60;
    
longest += 2;
    
my_dump_map(sptr, &me0longest);
    
sendto_one(sptrrpl_str(RPL_MAPEND), me.nameparv***91;0***93;);

    return 
0;
}

/*
** m_links
**    parv***91;0***93; = sender prefix
** or
**    parv***91;0***93; = sender prefix
**
** Recoded by Stskeeps
** Modified by AngryWolf
*/

static int override_links(Cmdoverride *ovraClient *cptraClient *sptrint parcchar *parv***91;***93;)
{
    
Link        *lp;
    
aClient        *acptr;

    if (!
IsClient(sptr))
        return 
CallCmdoverride(ovrcptrsptrparcparv);

    if (!
IsAnOper(sptr) && Settings.disable_links)
    {
        if (
Settings.links_deny_message)
            
sendto_one(sptr":%s %s %s :%s",
                
me.nameIsWebTV(sptr) ? "PRIVMSG" "NOTICE",
                
sptr->nameSettings.links_deny_message);
        else
            
sendto_one(sptrrpl_str(RPL_ENDOFLINKS), me.nameparv***91;0***93;, "*");

        return 
0;
    }

    for (
lp Serverslplp lp->next)
    {
        
acptr lp->value.cptr;

        
/* Some checks */
        
if (!IsAnOper(sptr))
        {
            if (
HIDE_ULINES && IsULine(acptr))
                continue;
            if (
FindHiddenServer(acptr->name))
                continue;
        }
        
sendto_one(sptrrpl_str(RPL_LINKS),
            
me.nameparv***91;0***93;, acptr->nameacptr->serv->up,
            
acptr->hopcount, (acptr->info***91;0***93; ? acptr->info :
            
"(Unknown Location)"));
    }

    
sendto_one(sptrrpl_str(RPL_ENDOFLINKS), me.nameparv***91;0***93;, "*");
    return 
0;






MaJeSTe isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 08-28-2009, 03:33 AM   #3
ProfiL
MaJeSTe
 
MaJeSTe - ait Kullanıcı Resmi (Avatar)
 
·ForumDestek.NET® Paylaşımda Sınır Yok!
Üye BiLgiLeri
Üye No: 294
Mesajlar: 407
Konular:
Bulunduğu yer: JiX`Baby'nin Kalbinden
Cinsiyet: Erkek
Rep Rütbeleri
Rep Puanı : 210
Rep Derecesi :
MaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura about
Teşekkür istatistik
Ettigi Tesekkür: 44
32 Mesajina 40 Tesekkür Aldi
AktifLik Seviye: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Aktiflik: 0 / 444
Güç: 135 / 3178
Deneyim: 77%
İletişim
MaJeSTe - MSN üzeri Mesaj gönder
Standart

LeveLlimit.c modulu

Bu Modul Kanallarimiza "P" modunu ekLior.
Kullanimi
Kod:
/mode #Kanal +P X
X Yerine Kullanilabilecek Degerler
Kod:
N - A - a - C - o
Peki Bu Ne ise yariyor diyen arkadaslarin sorularini yanitliyoruz hemen.

Bu Mod Sayesinde Kanalinizi rutbeye gore kapatabilirsiniz.. Yani

/Mode #Kanal +P C

Dedigimiz zaman Kanala Sadece Co-Admin ve Uzeri Rutbeler Girebilir.

N = Network AdminLere Ozel
A = Server Adminler ve Ustune Ozel
a = Services Adminlere ve Ustune Ozel
C = Co-AdminLere ve Ustune Ozel
o = OperatorLer ve Ustune Ozel..



PHP- Kodu:
/*
 *   IRC - Internet Relay Chat levelimit.c
 *   (C) 2005 Dominick Meglio
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 1, or (at your option)
 *   any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#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>
#include "h.h"

#define MOD_NAME levellimit

ModuleHeader MOD_HEADER(levellimit)
  = {
    
"levellimit",
    
"1.0",
    
"Limit access to a channel based on oper level",
    
"3.2-b8-1",
    
NULL,
    };

Cmode_t EXTCMODE_LEVELLIMIT 0L;

int modeP_is_ok(aClient *sptraChannel *chptrchar *paraint checktint what);
CmodeParam modeP_put_param(CmodeParam *lstchar *para);
char *modeP_get_param(CmodeParam *lst);
char *modeP_conv_param(char *param);
void modeP_free_param(CmodeParam *lst);
CmodeParam *modeP_dup_struct(CmodeParam *src);
int modeP_sjoin_check(aChannel *chptrCmodeParam *ourxCmodeParam *theirx);
int h_modeP_pre_local_join(aClient *, aChannel *);
int levelToMode(char level);

typedef struct {
    
EXTCM_PAR_HEADER
    char level
;
aModePEntry;

DLLFUNC int MOD_INIT(MOD_NAME)(ModuleInfo *modinfo)
{
    
CmodeInfo req;
    
ModuleSetOptions(modinfo->handleMOD_OPT_PERM);
    
memset(&req0sizeof(req));
    
req.flag 'P';
    
req.paracount 1;
    
req.is_ok modeP_is_ok;
    
req.put_param modeP_put_param;
    
req.get_param modeP_get_param;
    
req.conv_param    modeP_conv_param;
    
req.free_param modeP_free_param;
    
req.sjoin_check modeP_sjoin_check;
    
req.dup_struct modeP_dup_struct;
    
CmodeAdd(modinfo->handlereq, &EXTCMODE_LEVELLIMIT);
    
HookAddEx(modinfo->handleHOOKTYPE_PRE_LOCAL_JOINh_modeP_pre_local_join);
    return 
MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(MOD_NAME)(int module_load)
{
    return 
MOD_SUCCESS;
}


DLLFUNC int MOD_UNLOAD(MOD_NAME)(int module_unload)
{
    return 
MOD_FAILED;
}

int modeP_is_ok(aClient *sptraChannel *chptrchar *paraint checktint what)
{

    if ((
checkt == EXCHK_ACCESS) || (checkt == EXCHK_ACCESS_ERR))
    {
        
int mustHaveMode UMODE_OPER;
        if (
what == MODE_ADD)
            
mustHaveMode levelToMode(*para);
        else
        {
            
aModePEntry *para = (aModePEntry *)extcmode_get_struct(chptr->mode.extmodeparam'P');
            if (
para)
                
mustHaveMode levelToMode(para->level);
        }
        if (!(
sptr->umodes mustHaveMode))
        {
            if (
checkt == EXCHK_ACCESS_ERR)
                
sendto_one(sptrerr_str(ERR_NOPRIVILEGES), me.namesptr->name);
            return 
0;
        } 
        return 
1;
    } 
    else if (
checkt == EXCHK_PARAM)
    {
        switch (*
para)
        {
            case 
'o':
            case 
'O':
            case 
'C':
            case 
'A':
            case 
'a':
            case 
'N':
                return 
1;
            default:
                return 
0;
        }
    }
    return 
0;
}

CmodeParam modeP_put_param(CmodeParam *para_structchar *para)
{
    
aModePEntry *= (aModePEntry *)para_struct;

    if (!
r)
    {
        
/* Need to create one */
        
= (aModePEntry *)malloc(sizeof(aModePEntry));
        
memset(r0sizeof(aModePEntry));
        
r->flag 'P';
    }
    
r->level = *para;
    return (
CmodeParam *)r;
}

char *modeP_get_param(CmodeParam *para_struct)
{
    
aModePEntry *= (aModePEntry *)para_struct;
    static 
char tmpret***91;2***93;;

    if (!
r)
        return 
NULL;
    
tmpret***91;0***93; = r->level;
    
tmpret***91;1***93; = 0;
    return 
tmpret;
}

char *modeP_conv_param(char *param)
{
    static 
char tmpret***91;2***93;;
    
sprintf(tmpret"%c", *param);
    if (
tmpret***91;0***93; == 'O')
        
tmpret***91;0***93; = 'o';
    return 
tmpret;
}

void modeP_free_param(CmodeParam *para_struct)
{
    
aModePEntry *= (aModePEntry *)para_struct;
    
free(r);
}

CmodeParam *modeP_dup_struct(CmodeParam *src)
{
    
aModePEntry *= (aModePEntry *)malloc(sizeof(aModePEntry));
    
memcpy(nsrcsizeof(aModePEntry));
    return (
CmodeParam *)n;
}

int levelToInt(char level)
{
    switch (
level)
    {
        case 
'o':
            return 
1;
        case 
'C':
            return 
2;
        case 
'A':
            return 
3;
        case 
'a':
            return 
4;
        case 
'N':
            return 
5;
    }
    return 
0;
}

int levelToMode(char level)
{
    switch (
level)
    {
        case 
'o':
            
mustHaveMode |= UMODE_OPER;
        case 
'C':
            
mustHaveMode |= UMODE_COADMIN;
        case 
'A':
            
mustHaveMode |= UMODE_ADMIN;
        case 
'a':
            
mustHaveMode |= UMODE_SADMIN;
        case 
'N':
            
mustHaveMode |= UMODE_NETADMIN;
    }
    return 
mustHaveMode;
}

int modeP_sjoin_check(aChannel *chptrCmodeParam *ourxCmodeParam *theirx)
{
    
aModePEntry *our = (aModePEntry *)ourx;
    
aModePEntry *their = (aModePEntry *)theirx;
    if (
our->level == their->level)
        return 
EXSJ_SAME;
    if (
levelToInt(our->level) > levelToInt(their->level))
        return 
EXSJ_WEWON;
    else
        return 
EXSJ_THEYWON;
}

int h_modeP_pre_local_join(aClient *sptraChannel *chptr)
{
    
aModePEntry *para = (aModePEntry *)extcmode_get_struct(chptr->mode.extmodeparam'P');
    if (!
para)
        return 
HOOK_CONTINUE;
    if (!(
sptr->umodes levelToMode(para->level)))
    {
        
sendnotice(sptr"Joining %s requires usermode %c"chptr->chnamepara->level);
        return 
HOOK_DENY;
    }
    return 
HOOK_CONTINUE;






MaJeSTe isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 08-28-2009, 03:38 AM   #4
ProfiL
MaJeSTe
 
MaJeSTe - ait Kullanıcı Resmi (Avatar)
 
·ForumDestek.NET® Paylaşımda Sınır Yok!
Üye BiLgiLeri
Üye No: 294
Mesajlar: 407
Konular:
Bulunduğu yer: JiX`Baby'nin Kalbinden
Cinsiyet: Erkek
Rep Rütbeleri
Rep Puanı : 210
Rep Derecesi :
MaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura about
Teşekkür istatistik
Ettigi Tesekkür: 44
32 Mesajina 40 Tesekkür Aldi
AktifLik Seviye: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Aktiflik: 0 / 444
Güç: 135 / 3178
Deneyim: 77%
İletişim
MaJeSTe - MSN üzeri Mesaj gönder
Standart

chgswhois.c modulu.

Bu Modul Sayesinde serverimizin komut hanesine
/chgswhois nick mesaj
/setswhois mesaj
komutlarini ekLiyoruz.

Swhois'in ne oLdugunu sanirim acikLamama gerek yok.

PHP- Kodu:
/*
 * =================================================================
 * Filename:        m_chgswhois.c
 * Description:         Commands /chgswhois & /setswhois
 * Author:        AngryWolf <angrywolf@flashmail.com>
 * Requested by:        alenor
 * Documentation:       m_chgswhois.txt (comes with the package)
 * =================================================================
 */

#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"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif

extern void        sendto_one(aClient *tochar *pattern, ...);
extern void        sendto_serv_butone_token(aClient *onechar *prefixchar *commandchar *tokenchar *pattern, ...);

#define MSG_CHGSWHOIS     "CHGSWHOIS"
#define TOK_CHGSWHOIS     "CSW"
#define MSG_SETSWHOIS     "SETSWHOIS"
#define TOK_SETSWHOIS     "SSW"
#define DelCommand(x)    if (x) CommandDel(x); x = NULL
#define IsParam(x)      (parc > (x) && !BadPtr(parv***91;(x)***93;))
#define IsNotParam(x)   (parc <= (x) || BadPtr(parv***91;(x)***93;))

static Command        *AddCommand(Module *modulechar *msgchar *tokeniFP funcint params);
static 
int        m_chgswhois(aClient *cptraClient *sptrint parcchar *parv***91;***93;);
static 
int        m_setswhois(aClient *cptraClient *sptrint parcchar *parv***91;***93;);

Command            *CmdChgswhois, *CmdSetswhois;

ModuleHeader MOD_HEADER(m_chgswhois)
  = {
    
"m_chgswhois",
    
"$Id: m_chgswhois.c,v 1.3 2004/04/24 18:37:27 angrywolf Exp $",
    
"commands /chgswhois & /setswhois",
    
"3.2-b8-1",
    
NULL 
    
};

DLLFUNC int MOD_INIT(m_chgswhois)(ModuleInfo *modinfo)
{
    
CmdChgswhois AddCommand(modinfo->handleMSG_CHGSWHOISTOK_CHGSWHOISm_chgswhois2);
    
CmdSetswhois AddCommand(modinfo->handleMSG_SETSWHOISTOK_SETSWHOISm_setswhois1);

    if (!
CmdChgswhois || !CmdSetswhois)
        return 
MOD_FAILED;

    return 
MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(m_chgswhois)(int module_load)
{
    return 
MOD_SUCCESS;
}

DLLFUNC int MOD_UNLOAD(m_chgswhois)(int module_unload)
{
    
DelCommand(CmdChgswhois);
    
DelCommand(CmdSetswhois);

    return 
MOD_SUCCESS;
}

static 
Command *AddCommand(Module *modulechar *msgchar *tokeniFP funcint params)
{
    
Command *cmd;

    if (
CommandExists(msg))
        {
        
config_error("Command %s already exists"msg);
        return 
NULL;
        }
        if (
CommandExists(token))
    {
        
config_error("Token %s already exists"token);
        return 
NULL;
        }

    
cmd CommandAdd(modulemsgtokenfuncparams0);

#ifndef STATIC_LINKING
    
if (ModuleGetError(module) != MODERR_NOERROR || !cmd)
#else
    
if (!cmd)
#endif
    
{
#ifndef STATIC_LINKING
        
config_error("Error adding command %s: %s"msg,
            
ModuleGetErrorStr(module));
#else
        
config_error("Error adding command %s"msg);
#endif
        
return NULL;
    }

    return 
cmd;
}

/*
** m_chgswhois
**      parv***91;0***93; = sender prefix
**      parv***91;1***93; = nickname
**      parv***91;2***93; = swhois text
*/

static int m_chgswhois(aClient *cptraClient *sptrint parcchar *parv***91;***93;)
{
    
aClient *acptr;

    if (
MyClient(sptr) && !IsAnOper(sptr))
    {
        
sendto_one(sptrerr_str(ERR_NOPRIVILEGES), me.nameparv***91;0***93;);
        return 
0;
    }
    if (
IsNotParam(1))
    {
        
sendnotice(sptr"Usage: /chgswhois <nick> ***91;<text>***93;");
        return 
0;
    }
    if (!(
acptr find_person(parv***91;1***93;, NULL)))
    {
        
sendto_one(sptrerr_str(ERR_NOSUCHNICK),
            
me.namesptr->nameparv***91;1***93;);
        return 
0;
    }

    if (
acptr->user->swhois)
        
MyFree(acptr->user->swhois);

    if (
IsParam(2))
    {
        
acptr->user->swhois strdup(parv***91;2***93;);

        
sendto_snomask(SNO_EYES,
            
"%s changed the SWHOIS of %s (%s@%s) to be %s",
            
sptr->nameacptr->nameacptr->user->username,
            
acptr->user->realhostparv***91;2***93;);
        
ircd_log(LOG_CHGCMDS,
            
"CHGSWHOIS: %s changed the SWHOIS of %s (%s@%s) to be %s"
            
sptr->nameacptr->nameacptr->user->username,
            
acptr->user->realhostparv***91;2***93;);
    }
    else
    {
        
acptr->user->swhois NULL;

        
sendto_snomask(SNO_EYES,
            
"%s cleared the SWHOIS of %s (%s@%s)",
            
sptr->nameacptr->nameacptr->user->username,
            
acptr->user->realhost);
        
ircd_log(LOG_CHGCMDS,
            
"CHGSWHOIS: %s cleared the SWHOIS of %s (%s@%s)"
            
sptr->nameacptr->nameacptr->user->username,
            
acptr->user->realhost);
    }

        
sendto_serv_butone_token(NULLsptr->name,
        
MSG_CHGSWHOISTOK_CHGSWHOIS"%s :%s",
        
parv***91;1***93;, IsParam(2) ? parv***91;2***93; : "");

    return 
0;
}

static 
int m_setswhois(aClient *cptraClient *sptrint parcchar *parv***91;***93;)
{
    if (
MyClient(sptr) && !IsAnOper(sptr))
    {
        
sendto_one(sptrerr_str(ERR_NOPRIVILEGES), me.nameparv***91;0***93;);
        return 
0;
    }

    if (
sptr->user->swhois)
        
MyFree(sptr->user->swhois);

    if (
IsParam(1))
    {
        
sptr->user->swhois strdup(parv***91;1***93;);

        if (
MyClient(sptr))
            
sendnotice(sptr"*** Your SWHOIS is now set to be %s",
                
parv***91;1***93;);
    }
    else
    {
        
sptr->user->swhois NULL;

        if (
MyClient(sptr))
            
sendnotice(sptr"*** Your SWHOIS is now cleared");
    }

        
sendto_serv_butone_token(NULLsptr->name,
        
MSG_SETSWHOISTOK_SETSWHOIS"%s",
        
IsParam(1) ? parv***91;1***93; : "");

    return 
0;






MaJeSTe isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 08-28-2009, 03:51 AM   #5
ProfiL
MaJeSTe
 
MaJeSTe - ait Kullanıcı Resmi (Avatar)
 
·ForumDestek.NET® Paylaşımda Sınır Yok!
Üye BiLgiLeri
Üye No: 294
Mesajlar: 407
Konular:
Bulunduğu yer: JiX`Baby'nin Kalbinden
Cinsiyet: Erkek
Rep Rütbeleri
Rep Puanı : 210
Rep Derecesi :
MaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura aboutMaJeSTe has a spectacular aura about
Teşekkür istatistik
Ettigi Tesekkür: 44
32 Mesajina 40 Tesekkür Aldi
AktifLik Seviye: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Aktiflik: 0 / 444
Güç: 135 / 3178
Deneyim: 77%
İletişim
MaJeSTe - MSN üzeri Mesaj gönder
Standart

ve bugunun son moduLu en sevdigim modullerden birisi oLan /rmtkl

bu moduL sayesinde serverine /rmtkl komutunu ekLiorsunuz ve

/rmtkl * * diyere butun banLari X-Line banlari Tek celsede temizLiorsunuz...

PHP- Kodu:
/*
 * =================================================================
 * Filename:            m_rmtkl.c
 * Description:         Command /rmtkl
 * Author:        AngryWolf <angrywolf@flashmail.com>
 * Documentation:       m_rmtkl.txt (comes with the package)
 * =================================================================
 */

#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"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif

#ifndef MODVAR /* Unreal3.2.1 */
 #define MODVAR
#endif

#define IsParam(x)      (parc > (x) && !BadPtr(parv***91;(x)***93;))
#define IsNotParam(x)   (parc <= (x) || BadPtr(parv***91;(x)***93;))
#define DelCommand(x)    if (x) CommandDel(x); x = NULL

extern void        sendto_one(aClient *tochar *pattern, ...);
extern void        sendto_serv_butone_token(aClient *onechar *prefixchar *commandchar *tokenchar *pattern, ...);
extern aTKline        *tkl_del_line(aTKline *tkl);
#ifdef TKLISTLEN /* Unreal3.2-RC1 */
extern MODVAR int    tkl_hash(char c);
extern MODVAR aTKline    *tklines***91;TKLISTLEN***93;;
#else
extern aTKline        *tklines;
#endif

static int        m_rmtkl(aClient *cptraClient *sptrint parcchar *parv***91;***93;);

Command            *CmdRmtkl NULL;

ModuleHeader MOD_HEADER(m_rmtkl)
  = {
    
"rmtkl",
    
"$Id: m_rmtkl.c,v 3.3 2004/08/30 13:55:54 angrywolf Exp $",
    
"command /rmtkl",
    
"3.2-b8-1",
    
NULL 
    
};


DLLFUNC int MOD_INIT(m_rmtkl)(ModuleInfo *modinfo)
{
    if (
CommandExists("RMTKL"))
        {
        
config_error("Command RMTKL already exists");
        return 
MOD_FAILED;
        }

    
CmdRmtkl CommandAdd(modinfo->handle"RMTKL"NULLm_rmtkl30);
//    CmdRmtkl = CommandAdd(modinfo->handle, "RMTKL", NULL, m_rmtkl, MAXPARA, 0);

#ifndef STATIC_LINKING
    
if (ModuleGetError(modinfo->handle) != MODERR_NOERROR || !CmdRmtkl)
#else
    
if (!CmdRmtkl)
#endif
    
{
#ifndef STATIC_LINKING
        
config_error("Error adding command RMTKL: %s",
            
ModuleGetErrorStr(modinfo->handle));
#else
        
config_error("Error adding command RMTKL");
#endif
        
return MOD_FAILED;
    }

    return 
MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(m_rmtkl)(int module_load)
{
    return 
MOD_SUCCESS;
}


DLLFUNC int MOD_UNLOAD(m_rmtkl)(int module_unload)
{
    
DelCommand(CmdRmtkl);
    return 
MOD_SUCCESS;
}

/*
 * =================================================================
 * tkl_check_local_remove_shun:
 *     Copied from src/s_kline.c (because it's declared statically,
 *     but I want to use it).
 * =================================================================
 */

static void tkl_check_local_remove_shun(aTKline *tmp)
{
    
long i1i;
    
char *chost, *cname, *cip;
    
int  is_ip;
    
aClient *acptr;

    for (
i1 0i1 <= 5i1++)
    {
        for (
0<= LastSlot; ++i)
        {
            if ((
acptr local***91;i***93;))
                if (
MyClient(acptr) && IsShunned(acptr))
                {
                    
chost acptr->sockhost;
                    
cname acptr->user->username;

    
                    
cip = (char *)Inet_ia2p(&acptr->ip);

                    if (!(*
tmp->hostmask '0') && (*tmp->hostmask '9'))
                        
is_ip 1;
                    else
                        
is_ip 0;

                    if (
is_ip ==
                        
? (!match(tmp->hostmask,
                        
chost)
                        && !
match(tmp->usermask,
                        
cname)) : (!match(tmp->
                        
hostmaskchost)
                        || !
match(tmp->hostmask,
                        
cip))
                        && !
match(tmp->usermask,
                        
cname))
                    {
                        
ClearShunned(acptr);
#ifdef SHUN_NOTICES
                        
sendto_one(acptr,
                            
":%s NOTICE %s :*** You are no longer shunned",
                            
me.name,
                            
acptr->name);
#endif
                    
}
                }
        }
    }
}

/*
 * =================================================================
 * my_tkl_del_line:
 *     Modified version of tkl_del_line (from src/s_kline.c),
 *     because using loops is unnecessary here). Also, I don't
 *     delete any spamfilter entries with this module either.
 * =================================================================
 */

#ifdef TKLISTLEN /* Unreal3.2-RC1 */
void my_tkl_del_line(aTKline *pint tklindex)
{
    
MyFree(p->hostmask);
    
MyFree(p->reason);
    
MyFree(p->setby);
 
#ifdef OFLAG_ADDLINE /* Unreal3.2.1 */
    
if ((p->type TKL_KILL || p->type TKL_ZAP || p->type TKL_SHUN)
        && 
p->ptr.netmask)
        
MyFree(p->ptr.netmask);
 
#endif
    
DelListItem(ptklines***91;tklindex***93;);
    
MyFree(p);
}
#endif

/*
 * =================================================================
 * dumpit:
 *     Dump a NULL-terminated array of strings to user sptr using
 *     the numeric rplnum, and then return 0.
 *     (Taken from DarkFire IRCd)
 * =================================================================
 */

static int dumpit(aClient *sptrchar **p)
{
        for (; *
!= NULLp++)
                
sendto_one(sptr":%s %03d %s :%s",
                        
me.nameRPL_TEXTsptr->name, *p);
        
/* let user take 8 seconds to read it! */
        
sptr->since += 8;
        return 
0;
}

/* help for /rmtkl command */

static char *rmtkl_help***91;***93; =
{
    
"*** Help on /rmtkl *** ",
    
"COMMAND - Removes all TKLs matching the given conditions from the",
    
"local server or the IRC Network depending on it's a global ban or not.",
    
"With this command you can remove any type of TKLs (including K:Line",
    
"G:Line, Z:Line, Global Z:Line and Shun).",
    
"Syntax:",
    
"    /rmtkl type user@host ***91;comment***93;",
    
"The type field may contain any number of the following characters:",
    
"    K, z, G, Z, q, Q and *",
    
"    (asterix includes every types but q & Q).",
    
"The user@host field is a wildcard mask to match an user@host which",
        
"    a ban was set on.",
    
"The comment field is also wildcard mask that you can match the",
    
"    text of the reason for a ban.",
    
"Examples:",
    
"    - /rmtkl * *",
    
"        ***91;remove all TKLs but q and Q lines***93;",
    
"    - /rmtkl GZ *@*.mx",
    
"        ***91;remove all Mexican G/Z:Lines***93;",
    
"    - /rmtkl * * *Zombie*",
    
"        ***91;remove all non-nick bans having Zombie in their reasons***93;",
    
"*** End of help ***",
    
NULL
};

// =================================================================
// Array of TKL types
// =================================================================

typedef struct _tkl_type TKLType;

struct _tkl_type
{
    
int    type;
    
char    flag;
    
char    *txt;
    
u_long    oflag;
};

TKLType tkl_types***91;***93; =
{
    { 
TKL_KILL,            'K',    "K:Line",        OFLAG_KLINE    },
    { 
TKL_ZAP,            'z',    "Z:Line",        OFLAG_ZLINE    },
    { 
TKL_KILL TKL_GLOBAL,    'G',    "G:Line",        OFLAG_TKL    },
    { 
TKL_ZAP TKL_GLOBAL,        'Z',    "Global Z:Line",    OFLAG_GZL    },
    { 
TKL_SHUN TKL_GLOBAL,    's',    "Shun",            OFLAG_TKL    },
#ifdef TKL_NICK
    
TKL_NICK,            'q',    "Q:Line",        OFLAG_TKL    },
    { 
TKL_NICK TKL_GLOBAL,    'Q',    "Global Q:Line",    OFLAG_TKL    },
#endif
    
0,                0,    "Unknown *:Line",    0        },
};

#ifndef TKLISTLEN /* Unreal3.2-RC1 */
static TKLType *find_TKLType_by_type(int type)
{
    
TKLType *t;

    for (
tkl_typest->typet++)
        if (
t->type == type)
            break;

    return 
t;
}
#endif

static TKLType *find_TKLType_by_flag(char flag)
{
    
TKLType *t;

    for (
tkl_typest->typet++)
        if (
t->flag == flag)
            break;

    return 
t;
}

/*
 * =================================================================
 * m_rmtkl -- Remove all matching TKLs from the network
 *     parv***91;0***93; = sender prefix
 *     parv***91;1***93; = ban types
 *     parv***91;2***93; = userhost mask
 *     parv***91;3***93; = comment mask (optional)
 * =================================================================
 */

static int m_rmtkl(aClient *cptraClient *sptrint parcchar *parv***91;***93;)
{
    
aTKline        *tk, *next NULL;
    
TKLType        *tkltype;
    
char        *types, *uhmask, *cmask, *p;
    
char        gmt***91;256***93;, flag;
#ifdef TKLISTLEN /* Unreal3.2-RC1 */
    
int        tklindex;
#endif

    
if (!IsULine(sptr) && !(IsPerson(sptr) && IsAnOper(sptr)))
    {
        
sendto_one(sptrerr_str(ERR_NOPRIVILEGES), me.nameparv***91;0***93;);
        return -
1;
    }

    if (
IsNotParam(1))
        return 
dumpit(sptrrmtkl_help);

    if (
IsNotParam(2))
    {
        
/*
         * In this case we don't send the entire help text to
         * the client.
         */
        
sendto_one(sptr":%s NOTICE %s :Not enough parameters. "
            "Type /%s for help."
,
            
me.nameparv***91;0***93;, "RMTKL");
        return 
0;
    }

    
types    parv***91;1***93;;
    
uhmask    parv***91;2***93;;
    
cmask    IsParam(3) ? parv***91;3***93; : NULL;

    
/* I don't add 'q' and 'Q' here. They are different. */
    
if (strchr(types'*'))
        
types "KzGZs";

    
/* check access */
    
if (!IsULine(sptr))
        for (
types; *pp++)
        {
            
tkltype find_TKLType_by_flag(*p);
            if (!
tkltype->type)
                continue;
            if (((
tkltype->type TKL_GLOBAL) && !IsOper(sptr))
                || !(
sptr->oflag tkltype->oflag))
            {
                
sendto_one(sptrerr_str(ERR_NOPRIVILEGES),
                    
me.nameparv***91;0***93;);
                return -
1;
            }
        }

#ifdef TKLISTLEN /* Unreal3.2-RC1 */
    
for (tkltype tkl_typestkltype->typetkltype++)
    {
        
flag        tkltype->flag;
        
tklindex    tkl_hash(flag);

        if (!
strchr(typesflag))
            continue;

        for (
tk tklines***91;tklindex***93;; tktk next)
        {
            
next tk->next;

            if (
tk->type != tkltype->type)
                continue;
 
#ifdef TKL_NICK
            
if (tk->type TKL_NICK)
            {
                
/*
                 * If it's a services hold (ie. NickServ is holding
                 * a nick), it's better not to touch it
                 */
                
if (*tk->usermask == 'H')
                    continue;
                if (
match(uhmasktk->hostmask))
                    continue;
            }
            else
 
#endif
                
if (match(uhmaskmake_user_host(tk->usermasktk->hostmask)))
                    continue;

            if (
cmask && _match(cmasktk->reason))
                continue;

            
strncpyzt(gmtasctime(gmtime((TS *)&tk->set_at)),
                
sizeof gmt);
            
iCstrip(gmt);

 
#ifdef TKL_NICK
            
if (tk->type TKL_NICK)
            {
                
sendto_snomask(SNO_TKL"%s removed %s %s (set at %s "
                    "- reason: %s)"
,
                    
sptr->nametkltype->txttk->hostmaskgmt,
                    
tk->reason);
                
ircd_log(LOG_TKL"%s removed %s %s (set at %s "
                    "- reason: %s)"
,
                    
sptr->nametkltype->txttk->hostmask,
                    
gmttk->reason);
            }
            else
            {
 
#endif
                
sendto_snomask(SNO_TKL"%s removed %s %s@%s (set at "
                    "%s - reason: %s)"
,
                    
sptr->nametkltype->txttk->usermask,
                    
tk->hostmaskgmttk->reason);
                
ircd_log(LOG_TKL"%s removed %s %s@%s (set at "
                    "%s - reason: %s)"
,
                    
sptr->nametkltype->txttk->usermask,
                    
tk->hostmaskgmttk->reason);
 
#ifdef TKL_NICK
            
}
 
#endif

            
if ((tk->type TKL_GLOBAL) && flag)
                
sendto_serv_butone_token(&meme.nameMSG_TKLTOK_TKL,
                    
"- %c %s %s %s",
                    
flagtk->usermasktk->hostmaskparv***91;0***93;);
            if (
tk->type TKL_SHUN)
                
tkl_check_local_remove_shun(tk);
            
my_tkl_del_line(tktklindex);
        }
    }
#else
    
for (tk tklinestktk = (aTKline *) next)
    {
        
next = (ListStruct *) tk->next;

        
tkltype find_TKLType_by_type(tk->type);
        
flag tkltype->flag;

        if (!
strchr(typesflag))
            continue;
        if (
match(uhmaskmake_user_host(tk->usermasktk->hostmask)))
            continue;
        if (
cmask && _match(cmasktk->reason))
            continue;

        
strncpyzt(gmtasctime(gmtime((TS *)&tk->set_at)), sizeof(gmt));
        
iCstrip(gmt);

        
sendto_snomask(SNO_TKL"%s removed %s %s@%s (set at %s - reason: %s)",
            
sptr->nametkltype->txttk->usermasktk->hostmaskgmt,
            
tk->reason);
        
ircd_log(LOG_TKL"%s removed %s %s@%s (set at %s - reason: %s)",
            
sptr->nametkltype->txttk->usermasktk->hostmaskgmt,
            
tk->reason);
        if ((
tk->type TKL_GLOBAL) && flag)
            
sendto_serv_butone_token(&meme.name,
                
MSG_TKLTOK_TKL,
                
"- %c %s %s %s",
                
flagtk->usermasktk->hostmaskparv***91;0***93;);

        if (
tk->type TKL_SHUN)
            
tkl_check_local_remove_shun(tk);
        
tkl_del_line(tk);
    }
#endif

    
return 0;






MaJeSTe isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 06-02-2011, 12:33 PM   #6
ProfiL
eXeLaNCe
***8226;IRCd Coder
 
eXeLaNCe - ait Kullanıcı Resmi (Avatar)
 
·ForumDestek.NET® Paylaşımda Sınır Yok!
Üye BiLgiLeri
Üye No: 35
Mesajlar: 92
Konular:
Bulunduğu yer: Eskisehir ..
Cinsiyet: Erkek
Rep Rütbeleri
Rep Puanı : 120
Rep Derecesi :
eXeLaNCe will become famous soon enougheXeLaNCe will become famous soon enough
Teşekkür istatistik
Ettigi Tesekkür: 25
14 Mesajina 20 Tesekkür Aldi
AktifLik Seviye: 8 [♥ Bé-Yêu ♥]
Aktiflik: 0 / 189
Güç: 30 / 1510
Deneyim: 57%
İletişim
eXeLaNCe - MSN üzeri Mesaj gönder
Standart Cevap: UnreaL'i biraz KisiseLLesTireLimmi?

Eline Emeğine Sağlık Süper Olmuş ..





eXeLaNCe Adlı Kişinin İmzası
Bir Senin Dilinin ' Seni Seviyorum' una,
En Zinde Haliyle, Hoş geldin Diyebilir Gônlûm ..
.

ßy eXeLaNCe
eXeLaNCe isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla

Seçenekler
Stil


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Biraz değiştim.. GamSe Aşk Şiirleri 1 11-10-2009 02:19 PM
Biras Sevgi Biraz Hüzün.. MaJeSTe Aşk Şiirleri 3 10-25-2009 12:50 AM
Kutan: Hükümet Biraz Daha Etkili Olmalı HaberBot Güncel Haberler 0 07-17-2009 07:57 PM
Biraz badana boya yapaLım :) EbuLLi Resimler , E-kartlar , İmzalar , Avatarlar 0 06-08-2009 07:03 PM


Powered by vBulletin® Version 3.8.x
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Forum SEO by Shekill
Protected by BeYaZeNCy
Design by Shekill
Site Optimizasyon Alani
Sitemizde Yenimisiniz ? Yardım Konuları