Bende uzun zamandır bulunan, bir modul idi. Ve bir çok kişide hala mevcut.
Sadece bir kaç yerini renklendirirdim. Eskiye nazaran daha göz dolduruyor. Kullanmak isteyen olur diye paylaşıyorum.. (;
Kod:
12%s Nick'i (%s@%s) %s 'Den Ayrildi Part Mesaji4 (%s)
Kod:
0,2Sunucuya Giris Yapildi
Kod:
12Kanalinda By %s Topick Degistirdi. Yeni Topick:4 %s
[I]
Kod:
/* Sunucu ve Kanallara Giriş Çıkışları Mode Topic
Değişikliklerini Size Bir Monitor Kanalda
Veren Operleri Bilgilendiren Güzel Bir Modules
No_FeaR ([email protected]) Tarafından Sadece Renklendirilmiştir.
IRCd Günümüzde Yenilikler İşteyen Şeyler İstiyor Malesef.
Bende bilgi.c Modulunu Biraz Renklendireyim Dedim.
Genelde #Log Kanalıdır, IRC Sunucusunun Takip Kanalı,
Ben #IRCTakip Yapmıştım. Siz Kendiniz Değiştirirsiniz.
Lütfen Asagidaki Vereceğim Codeleri unrealircd.conf
Dosyaniza Ekleyiniz..
chansno
{
// msgtype privmsg;
ModuleHeader MOD_HEADER(chansno)
= {
"Www.RakipShell.Com",
"$Id: bilgi.c,v Edited By No_FeaR Www.1FilmSaati.Com",
"Sunucuya Giriş Cıkışları Kanal Giriş Çıkış Mode ve topic Değişikliklerini Haber Veren Bir Modules",
"3.2-b8-1",
NULL
};
#ifndef _WIN32
if (ModuleGetError(MyMod) != MODERR_NOERROR || !cmd)
#else
if (!cmd)
#endif
{
#ifndef _WIN32
config_error("Error adding command %s: %s", msg,
ModuleGetErrorStr(MyMod));
#else
config_error("Error adding command %s", msg);
#endif
return NULL; /* just to be sure */
}
return cmd;
}
// =================================================================
// Functions related to loading/unloading configuration
// =================================================================
DLLFUNC int rehash_chansno()
{
FreeConf();
InitConf();
return 1;
}
DLLFUNC int test_chansno(ConfigFile *cf, ConfigEntry *ce, int type, int *errs)
{
ConfigEntry *cep, *cepp;
int errors = 0;
if (type != CONFIG_MAIN)
return 0;
if (!strcmp(ce->ce_varname, "chansno"))
{
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
{
if (!cep->ce_varname)
{
config_error("%s:%i: blank chansno item",
cep->ce_fileptr->cf_filename,
cep->ce_varlinenum);
errors++;
continue;
}
if (!cep->ce_vardata)
{
config_error("%s:%i: chansno::%s item without value",
cep->ce_fileptr->cf_filename,
cep->ce_varlinenum, cep->ce_varname);
errors++;
continue;
}
if (!strcmp(cep->ce_varname, "channel"))
{
if (!cep->ce_entries)
{
config_error("%s:%i: chansno::channel without contents",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum);
errors++;
continue;
}
for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
{
if (!cepp->ce_varname)
{
config_error("%s:%i: chansno::channel item without variable name",
cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum);
errors++;
continue;
}
if (!config_binary_flags_search(_ChanSnoFlags, cepp->ce_varname, CHSNO_TABLESIZE))
{
config_error("%s:%i: unknown chansno::channel flag '%s'",
cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum,
cepp->ce_varname);
errors++;
}
}
}
else if (!strcmp(cep->ce_varname, "msgtype"))
{
if (!strcmp(cep->ce_vardata, "privmsg"))
;
else if (!strcmp(cep->ce_vardata, "notice"))
;
else
{
config_error("%s:%i: unknown chansno::msgtype '%s'",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum,
cep->ce_varname);
errors++;
}
}
else
{
config_error("%s:%i: unknown directive chansno::%s",
cep->ce_fileptr->cf_filename, cep->ce_varlinenum, cep->ce_varname);
errors++;
}
}
*errs = errors;
return errors ? -1 : 1;
}
else
return 0;
}
DLLFUNC int conf_chansno(ConfigFile *cf, ConfigEntry *ce, int type)
{
ConfigEntry *cep, *cepp;
OperFlag *ofp;
ChanSnoFlag *ca;
if (type != CONFIG_MAIN)
return 0;
if (!strcmp(ce->ce_varname, "chansno"))
{
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
{
if (!strcmp(cep->ce_varname, "channel"))
{
ca = MyMallocEx(sizeof(ChanSnoFlag));
ircstrdup(ca->channel, cep->ce_vardata);
for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
{
if ((ofp = config_binary_flags_search(_ChanSnoFlags, cepp->ce_varname, CHSNO_TABLESIZE)))
ca->flags |= ofp->flag;
}
AddListItem(ca, ConfChanSno);
}
else if (!strcmp(cep->ce_varname, "msgtype"))
{
if (!strcmp(cep->ce_vardata, "privmsg"))
msgtype = MT_PRIVMSG;
else if (!strcmp(cep->ce_vardata, "notice"))
msgtype = MT_NOTICE;
}
}
return 1;
}
return 0;
}
// ===============================================================
// Functions used by m_chansno
// ===============================================================
static char *get_flag_names(long flags)
{
u_int i, found = 0;
memset(&msgbuf, 0, sizeof msgbuf);
for (i = 0; i < CHSNO_TABLESIZE; i++)
if (flags & _ChanSnoFlags[i].flag)
{
if (found)
strncat(msgbuf, ", ", MaxSize);
else
found = 1;