.

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…

Comments 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,

Kod:
pico -w main.c

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

Kod:
make

ve

Kod:
make install

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..

Comments 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

Kod:
ngi = get_ngi(ni);

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.

Kod:
pico lang/index
Kod:
NICK_INFO_OPTIONS

satırının altına;

Kod:
NICK_INFO_PRIVATE

satırını ekliyoruz, yine aynı dosyada

Kod:
CHAN_INFO_OPTIONS

satırının altına;

Kod:
CHAN_INFO_PRIVATE

satırını ekliyoruz kaydedip çıkıyoruz.

Kod:
pico lang/tr.l
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.

Kod:
make
make install

Ardından servislerimize restart atıyoruz, hepsi bu kadar.

Kodu yazan ve anlatan Soldy ‘dir(alıntıdır)

Comments 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..

Comments 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;

Kod:
RET_LISTED

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ı

Kod:
pico access-xop.c

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ı

Kod:
pico chanserv.h

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.

Kod:
pico cs-local.h

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

Kod:
pico tr.l

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

Kod:
pico version4.c

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

Kod:
make
Kod:
make install

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;

Kod:
pico version4.c

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

Kod:
make
Kod:
make install

komutunu uygulayıp servislere restart atın.bu kadar. kolay gelsin.

Comments 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 .

Comments Yorum Yok »