ama öyle öze hayata mudale etmek dogru olmaz adminler goruyor yazismlari yani *** icerik cümleri sonra özele gidip bunu yazdın diyor ardindan ozel okundugu saniliyor bu ciddi bir sorun zaten
adwords sadece kanal icin olmali..
• Adwords modülünü isteğin üzerine sadece kanalda çalışmasına istinaden düzenledim [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] indirebilirsin. Kullandığın UnrealIRCd versiyonu kaç bilmiyorum ama büyük ihtimal çalışacaktır..
• NOT: ->* Modül test olarak, Unreal3.2.10.1 sürümünde test edilmiştir bilginize herhangi bir sorunla karşılaşırsanız başlık altında veya PM(özel mesaj yolu ile iletişime geçebilirsiniz..)
tsk ederim simdi bunu geneler icin kufur korumasi olarak kulancam birtane daha ozel icin yapa bilirmiyiz
bunu sadece reklamlar icin kulancagim yani reklamlar heryer icin gecerli olcak.. ornek verirsek..
kufur.conf bu kanalar icin ozel muaf olcak..
buda ozel kapsiyacak reklam.conf ozel icin olcak bu tabiki.
mantigini anlata bilidimi acaba yani kufur icin ozelere karismiyoruz onun icin bir modul paylastiniz
verdiginiz bu modulu ozel icin nasil yapabilim sadece ozel icin?
tsk ederim simdi bunu geneler icin kufur korumasi olarak kulancam birtane daha ozel icin yapa bilirmiyiz
bunu sadece reklamlar icin kulancagim yani reklamlar heryer icin gecerli olcak.. ornek verirsek..
kufur.conf bu kanalar icin ozel muaf olcak..
buda ozel kapsiyacak reklam.conf ozel icin olcak bu tabiki.
mantigini anlata bilidimi acaba yani kufur icin ozelere karismiyoruz onun icin bir modul paylastiniz
verdiginiz bu modulu ozel icin nasil yapabilim sadece ozel icin?
merak ettim simdi bu ikisini kurdugumda bir birlerinin conflarini nasil algilicaklar ? yani bu modul icin sonucta bunun icin ornek kufur.conf reklam.conf olunca nasil algilicak karisiklik olmicakmi ?
daha dogrusu modulu kurunca modulerde sorun olmicakmi yani hangisi hangi conf gorcek? kufur.conf digeri reklam.conf mevcut adwords iksini goruyor sizin verdiginiz nasil olcak?
yani hem kufur.conf icindekileri gorcek ve hem reklam.conf icindekileri fark olmicak galiba.
Sanirim olay modulerde degil conf bitiyor yani modulu kursak kufur.conf ve reklam.conf bir ayar olmasi gerekiyor
merak ettim simdi bu ikisini kurdugumda bir birlerinin conflarini nasil algilicaklar ? yani bu modul icin sonucta bunun icin ornek kufur.conf reklam.conf olunca nasil algilicak karisiklik olmicakmi ?
daha dogrusu modulu kurunca modulerde sorun olmicakmi yani hangisi hangi conf gorcek? kufur.conf digeri reklam.conf mevcut adwords iksini goruyor sizin verdiginiz nasil olcak?
yani hem kufur.conf icindekileri gorcek ve hem reklam.conf icindekileri fark olmicak galiba.
Sanirim olay modulerde degil conf bitiyor yani modulu kursak kufur.conf ve reklam.conf bir ayar olmasi gerekiyor
Öncelik olarak, modül/dosya içeriği değiştirilmeli örnek ->Adwords yazan kısımları Adwordss şekline çevrilmeli Daha sonra, CONF dosyasın da değiştirilen uzantı ne ise, onunla düzeltilmeli böylece birbirleri ile çakışma yaşanmamış olacak, ve conf dosyanız haliyle adwordss şeklinde olacaktır.
NOT; Biraz uğraşmayı dene olurda yapamazsan müsait olduğum bir zamanda düzenler yollarım sana..
dediginiz gibi yaptim altaki gibi adwordss yaptim ama hata verdi..
ozel.c:38:23: error: bADWORDSS.h: No such file or directory
ozel.c: In function ‘cb_quit’:
ozel.c:1753: error: ‘EXTMODE_STRIPBADWORDSS’ undeclared (first use in this function)
ozel.c:1753: error: (Each undeclared identifier is reported only once
ozel.c:1753: error: for each function it appears in.)
ozel.c: In function ‘cb_partmsg’:
ozel.c:1854: error: ‘EXTMODE_STRIPBADWORDSS’ undeclared (first use in this function)
make[2]: *** [custommodule] Error 1
make[2]: Leaving directory `/home/ozelt/Unreal3.2/src/modules'
make[1]: *** [custommodule] Error 2
make[1]: Leaving directory `/home/ozelt/Unreal3.2/src'
make: *** [custommodule] Error 2
Alıntı:
/*
* ================================================== ================
* Filename: ADWORDSS.c
* Description: Anti-spam filtering
* Written by: AngryWolf <angrywolf@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]mail.com>
* Documentation: ADWORDSS.txt (comes with the package)
* ================================================== ================
* Note that this is a modified version of UnrealIRCd's built-in
* badword system which was written by the UnrealIRCd Team. This
* means that I copied & modified some codes from src/bADWORDSS.c and
* src/conf.c (they come with the Unreal3.2 package).
* ================================================== ================
*/
#define ircfree(x) if (x) MyFree(x); x = NULL
#define ircstrdup(x,y) if (x) MyFree(x); if (!y) x = NULL; else x = strdup(y)
#define DelHook(x) if (x) HookDel(x); x = NULL
#define DelOverride(cmd, ovr) if (ovr && CommandExists(cmd)) CmdoverrideDel(ovr); ovr = NULL
#define DelCommand(x) if (x) CommandDel(x); x = NULL
/* Default texts */
#define DEF_KILL_REASON "User has been killed (Advertising)"
#define DEF_BAN_REASON "User has been banned (Advertising)"
#define DEF_BLOCK_MSG "Your message has been blocked (Advertising)"
#define DEF_WARNING_MSG "Your message contains an advertisement, may have been censored"
// ================================================== ===============
// Functions related to the Adword struct
// ================================================== ===============
if (myconf.channels)
MyFree(myconf.channels);
if (myconf.kill_reason)
MyFree(myconf.kill_reason);
if (myconf.ban_reason)
MyFree(myconf.ban_reason);
if (myconf.block_message)
MyFree(myconf.block_message);
if (myconf.warning_message)
MyFree(myconf.warning_message);
/* ADWORDSS */
for (a = ADWORDSSChannel; a; a = (Adword *) next)
{
next = (ListStruct *) a->next;
DelAdwordChannel(a);
}
for (a = ADWORDSSMessage; a; a = (Adword *) next)
{
next = (ListStruct *) a->next;
DelAdwordMessage(a);
}
for (a = ADWORDSSQuit; a; a = (Adword *) next)
{
next = (ListStruct *) a->next;
DelAdwordQuit(a);
}
#ifdef HOOKTYPE_PRE_LOCAL_PART
for (a = ADWORDSSPart; a; a = (Adword *) next)
{
next = (ListStruct *) a->next;
DelAdwordPart(a);
}
#endif
/* channel exceptions */
for (e = conf_exceptchan; e; e = (ConfigItem_except *) next)
{
next = (ListStruct *) e->next;
DelListItem(e, conf_exceptchan);
MyFree(e->mask);
MyFree(e);
}
}
static u_int check_type(char *word)
{
/*
* This code originally comes from src/s_conf.c,
* with some modifications.
*/
u_int type = WT_FAST, fasttype = 0;
char *p;
for (p = word; *p; p++)
{
/*
* I use my own check for alphabetic characters.
* The old one accepted character codes between
* 65 and 123. That means ABCDEFGHIJKLMNOPQRSTU
* WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{ were
* accepted. I don't want this.
*/
if (!IsAlpha(*p))
{
if ((word == p) && (*p == '*'))
{
/* Asterisk at the left */
fasttype |= WT_FAST_L;
continue;
}
if ((p[1] == 0) && (*p == '*'))
{
/* Asterisk at the right */
fasttype |= WT_FAST_R;
continue;
}
type = WT_REGEX;
break;
}
}
if (type != WT_REGEX)
type |= fasttype;
return type;
}
static u_int check_regex(ConfigEntry *ce_word)
{
/*
* This code originally comes from src/s_conf.c,
* with some modifications.
*/
/* word */
if (!(ce_word = config_find_entry(cep->ce_entries, "word")))
{
config_error("%s:%i: ADWORDSS::adword without word item",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum);
errors++;
continue;
}
else if (!ce_word->ce_vardata)
{
config_error("%s:%i: ADWORDSS::adword::word without contents",
ce_word->ce_fileptr->cf_filename, ce_word->ce_varlinenum);
errors++;
continue;
}
else
{
u_int wordtype = check_type(ce_word->ce_vardata);
if (!matchtype)
;
else if (matchtype & WT_FAST)
{
if (wordtype & WT_REGEX)
{
config_error("%s:%i: ADWORDSS::adword::word contains invalid data (the fast badword replace system can do: \"blah\", \"*blah\", \"blah*\" and \"*blah*\", in all other cases use regex)",
ce_word->ce_fileptr->cf_filename,
ce_word->ce_varlinenum);
errors++;
}
}
else
errors += check_regex(ce_word);
if (errors)
continue;
}
/* replace */
if ((ce_replace = config_find_entry(ce->ce_entries, "replace")))
{
if (!ce_replace->ce_vardata)
{
config_error("%s:%i: ADWORDSS::adword::replace without contents",
ce_replace->ce_fileptr->cf_filename,
ce_replace->ce_varlinenum);
errors++;
}
}
for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
{
if (!cepp->ce_varname)
{
config_error("%s:%i: blank ADWORDSS::adword item",
cepp->ce_fileptr->cf_filename,
cepp->ce_varlinenum);
errors++;
continue;
}
if (!strcmp(cepp->ce_varname, "notify"))
;
else if (!strcmp(cepp->ce_varname, "warn"))
;
else if (!strcmp(cepp->ce_varname, "block"))
;
else if (!strcmp(cepp->ce_varname, "kill"))
;
else if (!strcmp(cepp->ce_varname, "ban"))
;
else if (!strcmp(cepp->ce_varname, "stoponmatch"))
;
else if (!cepp->ce_vardata)
{
config_error("%s:%i: ADWORDSS::adword::%s item without value",
cepp->ce_fileptr->cf_filename,
cepp->ce_varlinenum, cepp->ce_varname);
errors++;
continue;
}
else if (!strcmp(cepp->ce_varname, "matchtype"))
;
else if (!strcmp(cepp->ce_varname, "word"))
;
else if (!strcmp(cepp->ce_varname, "replace"))
;
else if (!strcmp(cepp->ce_varname, "channel"))
;
else if (!strcmp(cepp->ce_varname, "msgtype"))
{
if (!strcmp(cepp->ce_vardata, "all"))
;
else if (!strcmp(cepp->ce_vardata, "privmsg"))
;
else if (!strcmp(cepp->ce_vardata, "notice"))
;
else if (!strcmp(cepp->ce_vardata, "ctcp"))
;
else if (!strcmp(cepp->ce_vardata, "non-ctcp"))
;
else
{
config_error("%s:%i: unknown ADWORDSS::adword::msgtype %s",
cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum,
cepp->ce_vardata);
errors++;
}
}
else if (!strcmp(cepp->ce_varname, "usertype"))
{
if (!strcmp(cepp->ce_vardata, "all"))
;
else if (!strcmp(cepp->ce_vardata, "registered"))
;
else if (!strcmp(cepp->ce_vardata, "non-registered"))
;
else
{
config_error("%s:%i: unknown ADWORDSS::adword::usertype %s",
cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum,
cepp->ce_vardata);
errors++;
}
}
else
{
config_error("%s:%i: unknown directive ADWORDSS::adword::%s",
cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum,
cepp->ce_varname);
errors++;
}
}
}
else if (!strcmp(cep->ce_varname, "notification-channels"))
;
else if (!strcmp(cep->ce_varname, "notification-method"))
{
if (!strcmp(cep->ce_vardata, "channel"))
;
else if (!strcmp(cep->ce_vardata, "private"))
;
else
{
config_error("%s:%i: unknown notification method %s",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum,
cep->ce_vardata);
errors++;
}
}
else if (!strcmp(cep->ce_varname, "require-mode-g"))
;
else if (!strcmp(cep->ce_varname, "kill-reason"))
;
else if (!strcmp(cep->ce_varname, "ban-reason"))
;
else if (!strcmp(cep->ce_varname, "block-message"))
;
else if (!strcmp(cep->ce_varname, "warning-message"))
;
else if (!strcmp(cep->ce_varname, "ban-type"))
{
if (!strcmp(cep->ce_vardata, "kline"))
;
else if (!strcmp(cep->ce_vardata, "gline"))
;
else if (!strcmp(cep->ce_vardata, "zline"))
;
else if (!strcmp(cep->ce_vardata, "gzline"))
;
else
{
config_error("%s:%i: unknown ban type %s",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum,
cep->ce_vardata);
errors++;
}
}
else if (!strcmp(cep->ce_varname, "ban-period"))
;
else if (!strcmp(cep->ce_varname, "except"))
{
if (!strcmp(cep->ce_vardata, "channel"))
{
if (!config_find_entry(cep->ce_entries, "mask"))
{
config_error("%s:%i: ADWORDSS::except channel without mask item",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum);
errors++;
continue;
}
for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
{
if (!cepp->ce_vardata)
{
config_error("%s:%i: ADWORDSS::except channel item without contents",
cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum);
errors++;
continue;
}
if (!strcmp(cepp->ce_varname, "mask"))
;
else
{
config_error("%s:%i: unknown ADWORDSS::except channel directive %s",
cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum, cepp->ce_varname);
errors++;
continue;
}
}
}
}
else
{
config_error("%s:%i: unknown directive ADWORDSS::%s",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum,
cep->ce_varname);
errors++;
}
}
*errs = errors;
return errors ? -1 : 1;
}
else
return 0;
}
static int cb_config_run(ConfigFile *cf, ConfigEntry *ce, int type)
{
ConfigEntry *cep, *cepp;
if (type != CONFIG_MAIN)
return 0;
if (!strcmp(ce->ce_varname, "ADWORDSS"))
{
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
{
if (!strcmp(cep->ce_varname, "enable"))
{
for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
{
if (!strcmp(cepp->ce_varname, "ADWORDSS"))
myconf.enable_ADWORDSS = config_checkval(cepp->ce_vardata, CFG_YESNO);
else if (!strcmp(cepp->ce_varname, "bans"))
myconf.enable_bans = config_checkval(cepp->ce_vardata, CFG_YESNO);
else if (!strcmp(cepp->ce_varname, "kills"))
myconf.enable_kills = config_checkval(cepp->ce_vardata, CFG_YESNO);
else if (!strcmp(cepp->ce_varname, "blockings"))
myconf.enable_blockings = config_checkval(cepp->ce_vardata, CFG_YESNO);
else if (!strcmp(cepp->ce_varname, "notifications"))
myconf.enable_notifications = config_checkval(cepp->ce_vardata, CFG_YESNO);
else if (!strcmp(cepp->ce_varname, "warnings"))
myconf.enable_warnings = config_checkval(cepp->ce_vardata, CFG_YESNO);
}
}
else if (!strcmp(cep->ce_varname, "notification-channels"))
{
ircstrdup(myconf.channels, cep->ce_vardata);
}
else if (!strcmp(cep->ce_varname, "notification-method"))
{
if (!strcmp(cep->ce_vardata, "channel"))
myconf.n_method = NM_CHANNEL;
else if (!strcmp(cep->ce_vardata, "private"))
myconf.n_method = NM_PRIVATE;
}
else if (!strcmp(cep->ce_varname, "kill-reason"))
{
if (strcmp(cep->ce_vardata, "no"))
{
ircstrdup(myconf.kill_reason, cep->ce_vardata);
}
}
else if (!strcmp(cep->ce_varname, "ban-reason"))
{
if (strcmp(cep->ce_vardata, "no"))
{
ircstrdup(myconf.ban_reason, cep->ce_vardata);
}
}
else if (!strcmp(cep->ce_varname, "block-message"))
{
if (strcmp(cep->ce_vardata, "no"))
{
ircstrdup(myconf.block_message, cep->ce_vardata);
}
}
else if (!strcmp(cep->ce_varname, "warning-message"))
{
if (strcmp(cep->ce_vardata, "no"))
{
ircstrdup(myconf.warning_message, cep->ce_vardata);
}
}
else if (!strcmp(cep->ce_varname, "require-mode-g"))
myconf.require_mode_g = config_checkval(cep->ce_vardata, CFG_YESNO);
else if (!strcmp(cep->ce_varname, "ban-period"))
myconf.ban_period = config_checkval(cep->ce_vardata, CFG_TIME);
else if (!strcmp(cep->ce_varname, "ban-type"))
{
if (!strcmp(cep->ce_vardata, "kline"))
myconf.ban_type = BAN_ACT_KLINE;
else if (!strcmp(cep->ce_vardata, "gline"))
myconf.ban_type = BAN_ACT_GLINE;
else if (!strcmp(cep->ce_vardata, "zline"))
myconf.ban_type = BAN_ACT_ZLINE;
else if (!strcmp(cep->ce_vardata, "gzline"))
myconf.ban_type = BAN_ACT_GZLINE;
}
else if (!strcmp(cep->ce_varname, "except"))
{
if (!strcmp(cep->ce_vardata, "channel"))
{
for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
if (!strcmp(cepp->ce_varname, "mask"))
AddExceptChan(cepp->ce_vardata);
}
}
else if (!strcmp(cep->ce_varname, "adword"))
{
ConfigEntry *ce_matchtype, *ce_word, *ce_block;
Adword *a;
int regflags;
regflags = DEF_REGFLAGS;
a = (Adword *) MyMallocEx(sizeof(Adword));
/*
* These stuffs are from src/bADWORDSS.c,
* I modified them for my own purposes
*/
static char *sky_strcasestr(char *haystack, char *needle)
{
int i;
int nlength = strlen (needle);
int hlength = strlen (haystack);
if (nlength > hlength) return NULL;
if (hlength <= 0) return NULL;
if (nlength <= 0) return haystack;
for (i = 0; i <= (hlength - nlength); i++) {
if (strncasecmp (haystack + i, needle, nlength) == 0)
return haystack + i;
}
return NULL;
}
inline int my_fast_badword_match(Adword *adword, char *line)
{
char *p;
int bwlen = strlen(adword->word);
if ((adword->type & WT_FAST_L) && (adword->type & WT_FAST_R))
return (sky_strcasestr(line, adword->word) ? 1 : 0);
p = line;
while((p = sky_strcasestr(p, adword->word)))
{
if (!(adword->type & WT_FAST_L))
{
if ((p != line) && isalnum(*(p - 1)))
goto next;
}
if (!(adword->type & WT_FAST_R))
{
if (isalnum(*(p + bwlen)))
goto next;
}
return 1;
next:
p += bwlen;
}
return 0;
}
/*
* This code comes from src/bADWORDSS.c (fast_badword_replace
* which was written by Syzop), I modified it a bit.
* (Also made speed optimizations.)
*/
inline int my_fast_badword_replace(Adword *adword, char *line, char *buf, int max)
{
char *searchw = adword->word, *replacew = adword->replace;
char *pold = line, *pnew = buf;
char *poldx = line;
char *startw, *endw;
char *c_eol = buf + max - 1;
int replacen, searchn;
int cleaned = 0;
if ((bantype = find_BanFlag(myconf.ban_type)))
ban_client(from, bantype, myconf.ban_period,
myconf.ban_reason ? myconf.ban_reason
: DEF_BAN_REASON);
#endif
}
else if ((cmdtype != CT_QUIT) && myconf.enable_kills && kill)
{
/*
* Can't find a better solution for killing a user due to an adword;
* using the Event system seems to be working. The problem actually
* is we shouldn't kill a user more than one time (fe. when ppl use
* multiple targets in a PRIVMSG/NOTICE).
*/
strcpy(nickbuf, from->name);
EventAdd("ADWORDSS_kill", 0, 1, &ADWORDSS_event_kill, nickbuf);
}
else if (myconf.enable_warnings && warn)
{
if (myconf.enable_blockings && block)
sendto_one(from, ":%s NOTICE %s :%s",
me.name, from->name, myconf.block_message ?
myconf.block_message : DEF_BLOCK_MSG);
else
sendto_one(from, ":%s NOTICE %s :%s",
me.name, from->name, myconf.warning_message ?
myconf.warning_message : DEF_WARNING_MSG);
}
cleanstr[511] = '\0'; /* cutoff, just to be sure */
/*
* cb_privmsg
* ==========
*
* from: who is sending the message
* to: who will receive it
* str: message text
* notice: tells whether it's a notice or privmsg
*/
#ifdef HOOKTYPE_PRE_LOCAL_PART
/*
* cb_partmsg
* ==========
*
* sptr: who is sending the message
* chptr: the channel where it will be sent to
* comment: message text
*/
Öncelik olarak, modül/dosya içeriği değiştirilmeli örnek ->Adwords yazan kısımları Adwordss şekline çevrilmeli Daha sonra, CONF dosyasın da değiştirilen uzantı ne ise, onunla düzeltilmeli böylece birbirleri ile çakışma yaşanmamış olacak, ve conf dosyanız haliyle adwordss şeklinde olacaktır.
NOT; Biraz uğraşmayı dene olurda yapamazsan müsait olduğum bir zamanda düzenler yollarım sana..
iyi forumlar..
isim degismek sorunu cozmuyor hata verdi baska bir sebep olabilir adwordss yapinca neden hata verdi anlamadim gerci digerinde sorun yok bu ozel icin olani adworss yapinca sorun cikti.
Bunlardan sonra sorun ortadan kalkacaktır lâkin, içeriğin baya değiştirilmesi gerek özelden gönderdiğim PM'ye cevap verme zahmetinde bulunursan daha önce yazmış olduğum bir modülü verebilirim..)
dedigiiz sekilde denedim bence modulu test etim dedigiiz sekilde neyse paylasim icin tsk ederim allah razi olsun sunucu adresimi burdan paylasmiyorum kusra bakmayin lutfen cok kisi dusman oluyor sonra oper vermeyince burdan kimseye pm ile vermiyorum
yinede allah razi olsun tsk ederim yardiminiz icin o dediginiz son seyi denemistim zaten..