.
Posts Tagged “Ircservices”
Arkadaslar, bir IRC sunucusunun ircservices versiyonu’nu görmek için /version servis bknz: ( /version chanserv ) seklinde bakabilirsiniz, peki bunu nasıl edit ( duzenliyebiliriz ) yaparız.
Sunucuda
/version chanserv
yazdiğimizda karsımıza gelicek satirlar söyledir;
Kod:
ircservices-5.0.53 services.xxx.net build #16, compiled Wed Jul 16 20:12:29 EEST 2008
peki düzenlemeye gecelim;
cd ircservices*
pico version.c
ve sonra aşağıdaki satirlari bulup değiştiriniz;
Kod:
const char program_name[] = “ircservices”;const char version_number[] = “5.0.63″;const char version_build[] = “build #” BUILD “, compiled Fri Jul 11 18:46:24 CEST 2008″;
Ctrl+X yapıp kaydedip cıkınız
sonra yine aynı dizin içerisinde;
Kod:
pico version.sh
yapitktan sonra aşağıdaki satirlari bulup gerekli düzenlemeleri yapabilirsiniz;
Kod:
const char program_name[] = “$PROGRAM”;const char version_number[] = “$VERSION”;const char version_build[] = “build #” BUILD “, compiled $DATE”;
make
make install
/os restart
alıntıdır…
Yorum Yok »
Bu islemi yapabilmek icin kanalin kaydedilme islemi kodlarina ekleme yapmamiz gerekiyor. Bunu da main.c icerisinden yapiyoruz.
Kod:
cd ircservices-5.xx/modules/chanserv
yazarak chanserv klasoru icerisine giriyoruz.
Daha sonra,
yazarak main.c dosyasina giris yapiyoruz.
Kod:
module_log("Channel %s registered by %s!%s@%s",
chan, u->nick, u->username, u->host);
notice_lang(s_ChanServ, u, CHAN_REGISTERED, chan, u->nick);
if (CSShowPassword)
notice_lang(s_ChanServ, u, CHAN_PASSWORD_IS, pass);
memset(pass, 0, len);
uc = smalloc(sizeof(*uc));
LIST_INSERT(uc, u->id_chans);
strscpy(uc->chan, ci->name, CHANMAX);
/* Implement new mode lock */
Seklinde olan kodlari,
Kod:
module_log("Channel %s registered by %s!%s@%s",
chan, u->nick, u->username, u->host);
notice_lang(s_ChanServ, u, CHAN_REGISTERED, chan, u->nick);
if (CSShowPassword)
notice_lang(s_ChanServ, u, CHAN_PASSWORD_IS, pass);
send_cmd(s_ChanServ, "JOIN %s", chan);
send_cmd(s_OperServ, "MODE %s +o ChanServ", chan);
memset(pass, 0, len);
uc = smalloc(sizeof(*uc));
LIST_INSERT(uc, u->id_chans);
strscpy(uc->chan, ci->name, CHANMAX);
/* Implement new mode lock */
haline getiriyoruz..
Yani,
Kod:
notice_lang(s_ChanServ, u, CHAN_PASSWORD_IS, pass);
satirinin altina,
Kod:
send_cmd(s_ChanServ, "JOIN %s", chan);
send_cmd(s_OperServ, "MODE %s +o ChanServ", chan);
kodlarini eklemis olduk.
Daha sonra ircservices-5.xx dizini icerisinde
ve
islemlerini sirasiyla yapiyoruz.
Daha sonra servislerimize restart atiyoruz ve islemimiz tamamlanmis oluyor. (/os restart)
(00:51:16) * Now talking in #Forumlar
(00:51:16) * irc.forumlar.gen.tr sets mode: +ntTGfj [4j#i1,20m#m1,7n#N1,8t#b]:10 1:60
(00:51:33) * ChanServ (services@forumlar.gen.tr) has joined #Forumlar
(00:51:34) * OperServ sets mode: +o ChanServ
(00:51:34) * ChanServ sets mode: +r
Satir kaymalarini engelleyebilmek icin siddetle editplus isimli editoru kullanmanizi tavsiye ediyorum.
Umarim faydasi dokunmustur. Benim sahsen hosuma gitti =)
Iyi calismalar..
Not : Alintidir HITMAN’a Teşekkurler..
Yorum Yok »
IRCServices için NICK ve KANAL için PRIVATE seçeneği, buna göre /cs set #kanaladi private on komutu ile özel kılınan kanallara info çekildiğinde #kanal özel bir kanaldır mesajı, özel kılınan nicklere info çekildiğinde nick özel bir nicktir. mesajı alınabilecek.
Kod:
cd ircservices*
pico modules/nickserv/main.c
bul
Kod:
} else {
char buf[BUFSIZE], *end;
const char *commastr = getstring(u->ngi, COMMA_SPACE);
int need_comma = 0;
int nick_online = 0;
int can_show_all = 0, show_all = 0, used_all = 0;
hemen altına
Kod:
int is_servadmin = is_services_admin(u);
yine aynı dosyada
satırının altına;
Kod:
if ( (ngi->flags & NF_PRIVATE) )
{
if (!is_servadmin &&
(!nick_identified(ni) || (u->ngi != ngi)))
{
notice_lang(s_NickServ, u, NICK_INFO_PRIVATE, nick);
return;
}
}
satırlarını ekleyin, kaydedip dosyadan çıkın.
Kod:
pico modules/chanserv/main.c
komutları ile main.c klasörümüze girdikten sonra;
Kod:
if ((param && stricmp(param, "ALL") == 0) && can_show_all)
show_all = 1; "
hemen altına
Kod:
if (ci->flags & CI_PRIVATE)
{
notice_lang(s_ChanServ, u, CHAN_INFO_PRIVATE, chan);
if(!is_services_admin(u) && !is_founder(u,ci) && !check_access(u, ci, CA_AUTOOP))
return;
}
satırlarını ekliyoruz, kaydedip dosyadan çıkın.
Kod:
pico modules/chanserv/set.c
Kod:
static void do_set_mlock(User *u, ChannelInfo *ci, char *param);
satırının altına ise;
Kod:
static void do_set_private(User *u, ChannelInfo *ci, char *param);
satırını ekliyoruz, yine aynı dosyada
Kod:
} else if (stricmp(cmd, "MLOCK") == 0) {
do_set_mlock(u, ci, param); "
satırının altına;
Kod:
} else if (stricmp(cmd, "PRIVATE") == 0) {
do_set_private(u, ci, param);
satırını ekliyoruz, yine aynı dosyada;
Kod:
ci->mlock_joindelay = oldlock_joindelay;
ci->mlock_joinrate1 = oldlock_joinrate1;
ci->mlock_joinrate2 = oldlock_joinrate2;
}
sıra dizini olan satırın hemen altına;
Kod:
static void do_set_private(User *u, ChannelInfo *ci, char *param)
{
if (stricmp(param, "ON") == 0) {
ci->flags |= CI_PRIVATE;
notice_lang(s_ChanServ, u, CHAN_SET_PRIVATE_ON);
} else if (stricmp(param, "OFF") == 0) {
ci->flags &= ~CI_PRIVATE;
notice_lang(s_ChanServ, u, CHAN_SET_PRIVATE_OFF);
} else {
syntax_error(s_ChanServ, u, "SET PRIVATE", CHAN_SET_PRIVATE_SYNTAX);
}
}
satırlarını ekliyoruz, kaydedip çıkıyoruz.
satırının altına;
satırını ekliyoruz, yine aynı dosyada
satırının altına;
satırını ekliyoruz kaydedip çıkıyoruz.
Kod:
NICK_INFO_OPTIONS
Ekler: ^B%s^B
satırının altına;
Kod:
NICK_INFO_PRIVATE
^B%s^B özel bir nicktir.
satırını
Kod:
CHAN_INFO_OPTIONS
Ekler: ^B%s^B
satırının altına ise;
Kod:
CHAN_INFO_PRIVATE
^B%s^B özel bir kanaldir.
satırını ekliyoruz, kaydedip çıkıyoruz.
Ardından servislerimize restart atıyoruz, hepsi bu kadar.
Kodu yazan ve anlatan Soldy ‘dir(alıntıdır)
Yorum Yok »
Ayrintili bir sekilde ircservices nasil kurulur anlatayim sizlere.
Account’unuza Login olduktan sonra
wget http://www.forumlar.gen.tr/dosya/Irc….59.Tar.gz.rar
download edin.
ve simdi bu cektigimiz tar i aciyoruz
tar -zxvf ircservices-5.0.59.tar.gz
tar i aciktan sonra ircservices-5.0.59 klasorune giriyoruz.
cd ircservices-5.0.59
./configure
ve configure ediyoruz, burada dizin belirtiyoruz services klasorunun yeri ve adi ne olsun
ornek /home/deneme/services
digerleri y deyip enterliyoruz
/home/deneme/services/lib
y deyip enterliyorsunuz.
sira geldi make ye
make
make bittikten sonra
make install yapiyoruz..
make install
kurulum bitti. ircservices.conf ve modules.conf duzenleyip
ornek
/home/deneme/services/lib
icine ftp den atiniz.
ornek conflar
http://www.forumlar.gen.tr/dosya/ircservices.conf
http://www.forumlar.gen.tr/dosya/modules.conf
unrealircd.conf a gerekli link satirini yaziniz.
ornek
serverinize rehash cektinten sonra.
asagidaki sekilde calistiriniz.
cd services
./ircservices
ircservices dilini turkce yapmak ve status auth code cok basittir aslinda buyrun beraber yapalim..
bu islem icin 3 tane dosyayi duzenliyoruz. birincisi turkce yapmak icin defs.h dir.
cd ircservices-*.*.**/defs.h
ircservices-* ana dizininde bulur. defs.h hemen aciyoruz.
Kod:
#define DEF_LANGUAGE LANG_EN_US
bu satiri bulup altaki gibi değiştiriyoruz.
Kod:
#define DEF_LANGUAGE LANG_TR
keydedip cikalim bu islem tamam..
evet sirada mail-auth.c var. bu dosyanin yeri asagidaki gibidir.
ircservices-*.*.**/modules/nickserv/mail-auth.c
hemen giriyoruz icine.
Kod:
notice_lang(s_NickServ, u, NICK_AUTH_FOR_REGISTER, s_NickServ);
bu satiri bulup altaki gibi degistirelim.
Kod:
notice_lang(s_NickServ, u, NICK_AUTH_FOR_REGISTER, s_NickServ, ngi->authcode);
kaydedip cikalim. ve son duzenlenecek dosya ve en ONEMLI si tr.l dosyasidir.Dosyanin yeri asagidaki gibidir.
ircservices-*.**.**/lang/tr.l
Kod:
NICK_AUTH_FOR_REGISTER
bu satiri bulup altaki gibi duzenliyoruz.
Kod:
NICK_AUTH_FOR_REGISTER
yapmış olduğunuz işlemin servisler tarafından tanınabilmesi için aşağıda belirtilen auth işlemini gerçekleştirmeniz gerekmektedir.
/msg %s AUTH %09d
Dikkat edilecek husus tr.l dosyasinda kesinlikle bosluk birakmayin hata verir. ve değişiklik yapmadan once bu dosyalarin bi yedegini (kopyasini) mutlaka alin.
son olarak sunlari yapalim birlikte.. ircservices ana dizinine gelin
cd ircservices-*.*.**
make clean
make
make insall
ircservices.conf ta
LoadModule nickserv/mail-auth
LoadModule nickserv/sendpass
LoadModule chanserv/sendpass
LoadModule memoserv/forward
yukardaki gibi olmalidir. # var ise auth code aktif degildir ve calismaz..
butun bu anlatimdan sonra ben yapamadim diyen varsa ben size yapilmis olarak bu uc dosyayi vericem. gerekli yerlere ftp den yukleyip calistirabilirsiniz. make ve ircservices.conf duzenlemesini mutlaka yapin..
http://www.forumlar.gen.tr/dosya/defs.h
http://www.forumlar.gen.tr/dosya/mail-auth.c
http://www.forumlar.gen.tr/dosya/tr.l
servicesleri kapatin acin
/os restart
hayirlki ugurlu olsun..
Yorum Yok »
hesaba login olduktan sonra /home/login/ircservices-5.0.x/modules/chanserv/ klasörüne girin.
pico access.c komutuyla access.c dosyasının içine girip access_add fonksiyonunun
tanımlandığı satırı bulun yani;
Kod:
int access_add(ChannelInfo *ci, const char *nick, int level, int uacc)
üstteki satırı bulun.bu satırı;
Kod:
int access_add(ChannelInfo *ci, const char *nick, int level, int uacc, char *ekleyen)
olarak değiştirin. daha sonra yine aynı dosyada, access_add fonksiyonu içerisinde bulunan;
Kod:
ci->access[i].nickgroup = ni->nickgroup;ci->access[i].level = level;
satırlarını bulup bi alt satırına;
Kod:
ci->access[i].ekleyen = sstrdup(ekleyen);
satırını ekleyip, kaydedip dosyayı kapatın. daha sonra yine aynı klasörde bulunan
access-levels.c dosyasını;
Kod:
pico access-levels.c
komutuyla açtıktan sonra;
Kod:
switch (access_add(ci, nick, level, is_servadmin ? ACCLEV_FOUNDER : get_access(u,ci)))
satırlarını bulup;
Kod:
switch (access_add(ci, nick, level, is_servadmin ? ACCLEV_FOUNDER : get_access(u,ci), u->nick))
olarak değiştirin. yine aynı dosya içerisinde;
satırını bulup bi üst satırında bulunan
Kod:
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT, index+1, access->level, ngi_mainnick(ngi));
satırlarını ;
Kod:
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT, index+1, access->level, ngi_mainnick(ngi), access->ekleyen);
şeklinde değiştirin. kaydedip dosyayı kapatın. aynı klasörde bulunan
access-xop.c dosyasını
komutuyla açıp
Kod:
switch (access_add(ci, nick, level, is_servadmin ? ACCLEV_FOUNDER : get_access(u,ci)))
satırlarını bulup bu satırları
Kod:
switch (access_add(ci, nick, level, is_servadmin ? ACCLEV_FOUNDER : get_access(u,ci), u->nick))
olarak değiştirin. kaydedip dosyayı kapatın.aynı klasörde bulunan chanserv.h dosyasını
komutuyla açın ve
Kod:
typedef struct { uint32 nickgroup; /* Zero if entry is not in use */ int16 level;} ChanAccess;
satırlarını bulup;
Kod:
typedef struct { uint32 nickgroup; /* Zero if entry is not in use */ int16 level; char *ekleyen;} ChanAccess;
olarak değiştirin kaydedin kapatın.
komutu ile cs-local.h dosyasını acıp
Kod:
E int access_add(ChannelInfo *ci, const char *nick, int level, int uacc);
satırını bulun ve bu satırı
Kod:
E int access_add(ChannelInfo *ci, const char *nick, int level, int uacc, char *ekleyen);
olarak değiştirin. kaydedip dosyayı kapatın.daha sonra /home/login/ircservices-5.0.x/lang/
klasörüne girip
komutuyla tr.l dosyasını açın.
Kod:
CHAN_ACCESS_LIST_HEADER %s Kanali Erisim Listesi: Sira Seviye NickCHAN_ACCESS_LIST_FORMAT %4d %4d %s
satırlarını bulup;
Kod:
CHAN_ACCESS_LIST_HEADER %s Kanali Erisim Listesi: Sira Seviye Nick EkleyenCHAN_ACCESS_LIST_FORMAT %4d %4d %s %s
şeklinde değiştirin. kaydedip dosyayı kapatın.
daha sonra /home/login/ircservices-5.0.x/modules/database/ klasörüne girip
komutuyla version4.c dosyasını açın.bu dosyada
Kod:
SAFE(write_int16(ci->access_count, f)); ARRAY_FOREACH (i, ci->access) { if (ci->access[i].nickgroup) ngi = get_ngi_id(ci->access[i].nickgroup); else ngi = NULL; SAFE(write_int16(ngi != NULL, f)); if (ngi) { SAFE(write_int16(convert_new_level(ci->access[i].level), f)); SAFE(write_string(ngi_mainnick(ngi), f)); } }
satırlarını bulup hemen altına
Kod:
SAFE(write_int16(ci->access_count, f)); ARRAY_FOREACH (i, ci->access) { SAFE(write_string(ci->access[i].ekleyen, f)); }
satırlarını ekleyin. kaydedip çıkın. /home/login/ircservices-5.0.x/ klasörüne girip
önce
komutunu uygulayıp servisleri ÇALIŞTIRIN.denemek amacıyla resgele bi kanalda rasgele bi nicke
access ekleyip access listesine bakın.
daha sonra;
/home/login/ircservices-5.0.x/modules/database/ klasörüne girip;
komutuyla yine version4.c dosyasını açın.bu dosyada ;
Kod:
SAFE(read_int16(&ci->access_count, f)); if (ci->access_count) { ci->access = scalloc(ci->access_count, sizeof(ChanAccess)); ARRAY_FOREACH (i, ci->access) { SAFE(read_int16(&tmp16, f)); /* in_use */ if (tmp16) { SAFE(read_int16(&lev, f)); ci->access[i].level = convert_old_level(lev); SAFE(read_string(&s, f)); if (s) { ni = get_nickinfo(s); if (ni) { ci->access[i].nickgroup = ni->nickgroup; } free(s); } } } } else { ci->access = NULL; }
satırlarını bulup en son parantezin bi alt satırına;
Kod:
SAFE(read_int16(&ci->access_count, f)); if (ci->access_count) { ARRAY_FOREACH (i, ci->access) { SAFE(read_string(&ci->access[i].ekleyen, f)); } } else { ci->access = NULL; }
satırlarını ekleyin. ve kaydedip dosyayı kapatın./home/login/ircservices-5.0.x/ klasörüne girip
önce
komutunu uygulayıp servislere restart atın.bu kadar. kolay gelsin.
Yorum Yok »
IrcServices’de Kayıtsız Nicklere Servera Girişlerinde Uyarı Verme ;
Kod:
cd ircservices-xxx
cd modules
cd operserv
pico news.c
News.c Dosyası Içinde Aşağıdaki Satırı Buluyoruz ;
Alıntı:
| /* Callback for users logging on. */
static int new_user_callback(User *u)
{
display_news(u, NEWS_LOGON);
return 0;
} |
Yukarıda Verdiğim Kodu Aşağıdaki Gibi Değiştirin ;
Alıntı:
| /* Callback for users logging on. */
static int new_user_callback(User *u)
{
NickInfo *ni = NULL;
display_news(u, NEWS_LOGON);
ni = get_nickinfo(u->nick);
if (!ni) {
send_cmd(s_GlobalNoticer, “NOTICE %s :Merhaba %s, Nickiniz Kayıtlı Değil, Nick Kaydı Hakkında Daha Fazla Bilgi için /msg nickserv help register Komutunu Kullanınız.”, u->nick, u->nick);
}
return 0;
} |
Aynen Böyle Kayıt Edip Çıkıyoruz [ Ctrl + x +y ] Dosyadan Çıktıktan Sonra Aşağıdaki Komutları Uyguluyoruz..
Kod:
cd ..
cd ..
make
make install
Servislerinizi çıkarıp sokunuz .
Yorum Yok »
|