ircservices’de bot oluşturmak için mircinizde;
?/os raw : NICK nick 1 1 ident IP.ADRESİ services.kardelenfm.com fullname? örnek verecek olursak
/os raw : NICK Ali 1 1 Nursohbet 88.226.218.8D28C4D services.mirchane.com KardelenFM mIRC
Kanala sokmak için;
/os raw :Kerem join #kardelen
/os raw :Kerem part #kardelen
şeklinde kullanabilirsiniz.

ırcservices bot,ırcservices bot yapma,nursohbet,sohbet,kardelenfm,mirc,mircindir,muhabbet,mırc indir,mirc indir.
Türkiye’nin En iyi Mirc indirme sitesi Www.Mircnet.Org

Scriptimiz iki dosya üzerinden calisacaktir..
root dizinindeyken
pico banla.pl -w
yazip icine asağidaki perl scriptimizi kayit ediyoruz.
chmod 755 banla.pl yazarak chmod yetkisi veriyoruz.
Kod:
#!/usr/bin/perl
# RainmaN (Selahattin ERDEM) tarafindan 18.07.2006 tarihinde yazilmiþtir
#
$uptime = `uptime`;
$uptime =~ /: (.*?.)…,/;
$: = $1;
# Kac saniyede bir denetlemesini istiyorsaniz
$delay = 5
# Uptime maximun seviyeye geldiginde servislerin tekrar caliþtirilmasi
$restartsaniye = 50
# Banlanmasini istemediginiz ipi yazmalisiniz
$noban = 127.0.0.1
sub kapat {
system(”service mysql stop”);
system(”service httpd stop”);
sleep($restartsaniye);
system(”service httpd start”);
system(”service mysql start”);
system(”/root/banla”);
return;
}
if (fork) { exit(0); }
$SIG{ALRM} = ‘IGNORE’;
while (1) {
sleep $delay;
if($: > 15) {
system(”netstat -n –tcp –udp –numeric-hosts | grep -v 10.0.0.1 | grep -v 127.0.0.1 | awk ‘{if (/(tcp|udp)/) { print $5 }}’ | sed ’s/:.*//’ | sort | uniq -c | awk ‘{ if ($1 > 50) { if ($2 != “$noban”) { system(”iptables -I INPUT -s “$2″ -j DROP “) } } }’”);
open(FILE, ‘+\n”;
print FILE “Makinnin durumu kiritik gereken önlemler aliniyor\n”;
print FILE “Ipler banlandi.\n”;
close(FILE);
print “Uptime altiyi gecmiþ banla komutu devreye girdi.”;
}
elsif ($: > 50) {
&kapat();
system(”netstat -n –tcp –udp –numeric-hosts | grep -v 10.0.0.1 | grep -v 127.0.0.1 | awk ‘{if (/(tcp|udp)/) { print $5 }}’ | sed ’s/:.*//’ | sort | uniq -c | awk ‘{ if ($1 > 50) { if ($2 != “$noban”) { system(”iptables -I INPUT -s “$2″ -j DROP “) } } }’”);
open(FILE, ‘+\n”;
print FILE “Durum $:
\n”;
print FILE “Mysql Acik
\n”;
print FILE “Httpd Acik
\n”;
print FILE “Makina durumu gayet güzel\n”;
close(FILE);
print “Uptime onu gecmiþ kapat ve banla modulleri caliþtirildi.”;
} else {
echo “gec”;
open(FILE, ‘+\n”;
print FILE “Durum $:
\n”;
print FILE “Mysql Acik
\n”;
print FILE “Httpd Acik
\n”;
print FILE “Makina durumu gayet güzel\n”;
close(FILE);
}
}
root dizinindeyken
pico banla.sh -w
yazip icine asağidaki bash scripti kaydediyoruz.
chmod 755 banla.sh yetki veriyoruz.
Kod:
#!/bin/sh
# by RainmaN
netstat -n –tcp –udp –numeric-hosts | grep -v 10.0.0.1 | grep -v 127.0.0.1 | awk ‘{if (/(tcp|udp)/) { print $5 }}’ | sed ’s/:.*//’ | sort | uniq -c | awk ‘{ if ($1 > 50) { system(”iptables -I INPUT -s “$2″ -j DROP “) } }’simdi ./banla.pl yaziyoruz scriptimiz arka planda calisacaktir. “Saldiri yok” diye ekranda devamli görüntüler alabilirsiniz. Bu yüzden ssh’i kapatip tekrar acin.

-Serverde sürekli Kalacak bot lazım:/Operserv Raw : NICK BOtun ismi 1 1 ataysınlar 25.45.ataysınlar-2548 services.ataysınlar.net : Services BoT
-sonra Botu kanallara sokmak için /operserv raw :Botun ismi join #kanal
-Servisler giderse Ssh yada Putty den (İrc servicesse tabi): Login ol,şifreni gir cd services sonra da ./ircservices yada ./services
-Services Root şifresini değiştir /os set supass şifre
-Services root ol /os su şifre
-Op kanalın war ve sadece istediğin yetkilileri alacaksın o halde önce /cs set #op restricted on sonra /cs access #op add nick 500(1-999)
-Özelde global atmak /describe $serverinismi.net noticen
-Kişiyi kanalda Konuşturma /sendraw #sohbet ::Konuşacak nick privmsg #sohbet : Ne desin
-Özelde konuşturma /sendraw #kanal ::userinnicki PRIVMSG yazıyazılacakkişininnicki mesaj
-Görünmezlik için /sendraw #kanal ::Seda quit PingTimeout
-KElime yasaklama /spamfilter add pc gline – – küfür
-Tüm banları acma rmtkl * * (Modul yüklü ise tabi)
-Operden cıkma /mode Nickin -oO
-Zorla Nick değiştirme /os raw svsnick nick nick :0
-Zorla Kanala sokma /os raw svsjoin nick #kanal
-Nick şifresi değiştirme /ns set nick password yenişifre
-whois yazma /os raw swhois nick: mesaj
-Herkesi atma /os akillchan +30 sohbet yasak
-Herkesi kickleme /os clearchan #sohbet
-Clone atma /os killclones nick
-Operin opa cıkabilmesi için 1 /cs set #kanal secureops off olmalı Komutun ise /os mode #kanal +o nick
-Kanal yönlendirme /cs set #kanal mlock +lL 1 #kanal
-Kanal yönlendirme iptal /msg chanserv set #kanal mlock -lL
-Zline kline atma /zline nick(adminsen) /zline @ip (Opersen)
-Zline acma /zline -*@ip Aynısı kline gline içinde gecerli
-İgnoreden nick cıkarma /ignore -r nick
-Kişi susturma /shun nick sebeb
-Nick şifresini öğrenmek mi istiyorsun /ns getpass nick
-Server üzerinde değişiklik yapılmasın /os set readonly on
-Founder değiştir /cs set ftransfer #kanal Nick
-Susturmayı acma /shun -nick
-Useri kanaldan cıkarma /sapart nick #kanal
-Kanalı Tüm Modlardan kurtarır Komut : /msg operserv mode #kanal -A
-kişinin mailleri /ns listemail kişininemailadresi
-Şifreli nickleri görme /ns list
-Aynı ipten bağlı kişileri bulma /who ip +h
-Kanal yönlendirme iptal /msg chanserv set #kanal mlock -lL
-Eggdrop botun durdu mesela Bot durunca 1) cd eggdrop 2) ./eggdrop -m Botun ismi.conf
-Eggdrop tcl yada conf da değişiklik mi yapacaksın? 1) cd eggdrop 2) ps x 3) kill -9 pid no 4)./eggdrop -m Botunismi.conf

Merhaba Arkadaşlar…

Ptlink tarzı Access Kabul sistemi.. (eklenen accesslerin /cs kabul #kanalismi e/h yapması şarttır.)

DizZy [sentient[et]live[dat]com] ——————————————————————————–
Ptlink tarzı Access Kabul sistemi.. (eklenen accesslerin /cs kabul #kanalismi e/h yapması şarttır.)
Ekleme Zorluğu : Orta/Zor
Yapılması Gereken Değişiklikler :
cd ircservices-5.0.xx
——————————
pico lang/tr.l
Kod:
CHAN_ACCESS_ADDED
%s nick’i %s kanalinin erisim listesine %d seviyeden eklendi.Bu Satırları bulup, Şu şekilde değiştirin:
Kod:
CHAN_ACCESS_ADDED
%s nick’ine %s kanalinin erisim listesine %d seviyeden eklenmesi için Kabul Mesajı Gönderildi.-
Kod:
CHAN_ACCESS_LIST_HEADER
%s Kanali Erisim Listesi:
Sira Seviye Nick
CHAN_ACCESS_LIST_FORMAT
%4d %4d %sBu Satırları bulup, Şu şekilde değiştirin:
Kod:
CHAN_ACCESS_LIST_HEADER
%s Kanali Erisim Listesi:
Sira Seviye Nick Durum
CHAN_ACCESS_LIST_FORMAT
%4d %4d %s %s-
Kod:
CHAN_XOP_ADDED
%s %s %s listesine eklendi.Bu Satırları bulup, Şu şekilde değiştirin:
Kod:
CHAN_XOP_ADDED
%s nickine %s %s listesine eklenmesi için Kabul Mesajı Gönderildi.-
Kod:
CHAN_XOP_LIST_HEADER
%s %s listesi:
Sira Nick
CHAN_XOP_LIST_FORMAT
%4d %sBu Satırları bulup, Şu şekilde değiştirin:
Kod:
CHAN_XOP_LIST_HEADER
%s %s listesi:
Sira Nick Durum
CHAN_XOP_LIST_FORMAT
%4d %s %s——————————
pico modules\chanserv\access-levels.c
Kod:
int is_list; /* Is true when command is either LIST or COUNT */Bu Satırları bulup, bir üstüne şu satırı ekleyin:
Kod:
User *sky;-
Kod:
notice_lang(s_ChanServ, u, CHAN_ACCESS_ADDED, nick, chan, level);Bu satırı bulup, bir altına şu satırları ekleyin:
Kod:
sky = get_user(nick);
if (sky) {
if (user_identified(sky)) {
send_cmd(s_ChanServ, “NOTICE %s :%s Nicki %s Kanalında Size Access Ekledi.”, sky->nick, u->nick, chan);
send_cmd(s_ChanServ, “NOTICE %s :Kabul Etmek için /chanserv kabul %s e Yaziniz.”, sky->nick, chan);
send_cmd(s_ChanServ, “NOTICE %s :Reddetmek için /chanserv kabul %s h Yaziniz.”, sky->nick, chan);
}
}-
Kod:
static int access_list(User *u, int index, ChannelInfo *ci, int *sent_header)
{
ChanAccess *access = &ci->access[index];
NickGroupInfo *ngi;
if (!access->nickgroup)
return RET_NOENTRY;
if (!(ngi = get_ngi_id(access->nickgroup)))
return RET_INTERR;
if (!*sent_header) {
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name);
*sent_header = 1;
}
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT,
index+1, access->level, ngi_mainnick(ngi));
return RET_LISTED;
}Bu kodu bulup, şu kod ile değiştirin:
Kod:
static int access_list(User *u, int index, ChannelInfo *ci, int *sent_header)
{
ChanAccess *access = &ci->access[index];
NickGroupInfo *ngi;
if (!access->nickgroup)
return RET_NOENTRY;
if (!(ngi = get_ngi_id(access->nickgroup)))
return RET_INTERR;
if (!*sent_header) {
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name);
*sent_header = 1;
}
if (access->kabul==0)
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT,
index+1, access->level, ngi_mainnick(ngi), “”);
else if (access->kabul==1)
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT,
index+1, access->level, ngi_mainnick(ngi), “”);
return RET_LISTED;
}——————————
pico modules\chanserv\access-xop.c
Kod:
const char *listname = XOP_LISTNAME(level);Bu Satıri bulup, bir üstüne şu satırı ekleyin:
Kod:
User *sky;-
Kod:
notice_lang(s_ChanServ, u, CHAN_XOP_ADDED, nick, chan, listname);Bu satırı bulup bir altına şu satırları ekleyin:
Kod:
sky = get_user(nick);
if (sky) {
if (user_identified(sky)) {
send_cmd(s_ChanServ, “NOTICE %s :%s Nicki %s Kanalında Size Access Ekledi.”, sky->nick, u->nick, chan);
send_cmd(s_ChanServ, “NOTICE %s :Kabul Etmek için /chanserv kabul %s e Yaziniz.”, sky->nick, chan);
send_cmd(s_ChanServ, “NOTICE %s :Reddetmek için /chanserv kabul %s h Yaziniz.”, sky->nick, chan);
}
}-
Kod:
static int xop_list(User *u, int index, ChannelInfo *ci, int *sent_header,
int relindex)
{
ChanAccess *access = &ci->access[index];
NickGroupInfo *ngi;
if (!(ngi = get_ngi_id(access->nickgroup)))
return 0;
if (!*sent_header) {
notice_lang(s_ChanServ, u, CHAN_XOP_LIST_HEADER,
XOP_LISTNAME(access->level), ci->name);
*sent_header = 1;
}
notice_lang(s_ChanServ, u, CHAN_XOP_LIST_FORMAT, relindex,
ngi_mainnick(ngi));
return 1;
}Bu kodu bulup şu kod ile değiştirin:
Kod:
static int xop_list(User *u, int index, ChannelInfo *ci, int *sent_header,
int relindex)
{
ChanAccess *access = &ci->access[index];
NickGroupInfo *ngi;
if (!(ngi = get_ngi_id(access->nickgroup)))
return 0;
if (!*sent_header) {
notice_lang(s_ChanServ, u, CHAN_XOP_LIST_HEADER,
XOP_LISTNAME(access->level), ci->name);
*sent_header = 1;
}
if (access->kabul==0)
notice_lang(s_ChanServ, u, CHAN_XOP_LIST_FORMAT, relindex,
ngi_mainnick(ngi), “”);
else if (access->kabul==1)
notice_lang(s_ChanServ, u, CHAN_XOP_LIST_FORMAT, relindex,
ngi_mainnick(ngi), “”);
return 1;
}——————————
pico modules\chanserv\access.c
Kod:
if (ci->access[i].nickgroup == id)Bu kodu bulup Hemen bir alt satıra şu kodu ekleyiniz : (bu satır 2 kez çıkacak, ikisinde de aynı şekilde bir alt satırına aşağıdaki satırı ekleyiniz.)
Kod:
if (ci->access[i].kabul==1)Kod:
ci->access[i].nickgroup = ni->nickgroup;
ci->access[i].level = level;bu satırları bulup hemen altına şu kodu ekleyiniz:
Kod:
ci->access[i].kabul = 0;——————————
pico modules\chanserv\chanserv.h
Kod:
int16 level;bu kodu bulup hemen altına şu kodu ekleyin:
Kod:
int32 kabul;-
Kod:
int16 access_count;bu kodu bulup hemen altına şu kodu ekleyin:
Kod:
ChanAccess *accesstemp;——————————
pico modules\chanserv\main.c
Kod:
static void do_status(User *u);bu satırı bulup hemen altına şu satırı ekleyin:
Kod:
static void do_kabul(User *u);-
Kod:
{ “UNSUSPEND”,do_unsuspend,is_services_admin, -1,
-1, CHAN_OPER_HELP_UNSUSPEND },bu satırları bulup hemen altına şu satırı ekleyin:
Kod:
{ “KABUL”, do_kabul, NULL, -1,-1, -1 },-
Kod:
static void do_help(User *u)
{bu satırları bulup hemen bir üstüne şu kodu ekleyin:
Kod:
static void do_kabul(User *u) {
//char *cmd = strtok_remaining();
char *kanal = strtok(NULL, ” “);
char *secim = strtok(NULL, ” “);
int sec;
ChannelInfo *ci;
NickInfo *ni=u->ni;
int bulunan=0;
int i=0;
if (!kanal) {
send_cmd(s_ChanServ, “NOTICE %s :Kullanımı : KABUL #Kanal e/h”, u->nick);
return;
}
ci = get_channelinfo(kanal);
if (strcmp(kanal, “#”) == 0) {
notice_lang(s_ChanServ, u, CHAN_REGISTER_SHORT_CHANNEL);
} else if (*kanal == ‘&’) {
notice_lang(s_ChanServ, u, CHAN_REGISTER_NOT_LOCAL);
} else if ((*kanal != ‘#’) && stricmp(kanal, “list”)) {
notice_lang(s_ChanServ, u, CHAN_REGISTER_INVALID_NAME);
} else if (!ni) {
notice_lang(s_ChanServ, u, CHAN_MUST_REGISTER_NICK, s_NickServ);
} else if (!user_identified(u)) {
notice_lang(s_ChanServ, u, CHAN_MUST_IDENTIFY_NICK,
s_NickServ, s_NickServ);
} else if (stricmp(kanal, “list”) == 0) {
for (ci = first_channelinfo(); ci; ci = next_channelinfo()) {
if (ci->flags & (CI_VERBOTEN))
continue;
if (ci->suspendinfo)
continue;
ARRAY_SEARCH_SCALAR(ci->access, nickgroup, u->ngi->id, i);
if (i != ci->access_count) {
if (ci->access[i].kabul==0) {
send_cmd(s_ChanServ, “NOTICE %s :%s Kanalında Bekleyen Bir Access isteği Bulundu..”, u->nick, ci->name);
send_cmd(s_ChanServ, “NOTICE %s :Kabul Etmek için /chanserv kabul %s e Yazınız.”, u->nick, ci->name);
send_cmd(s_ChanServ, “NOTICE %s :Reddetmek için /chanserv kabul %s h Yazınız.”, u->nick, ci->name);
send_cmd(s_ChanServ, “NOTICE %s :-”, u->nick);
}
}
}
return;
}
else if (ci == NULL) {
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, kanal);
}
else {
if (!secim) {
send_cmd(s_ChanServ, “NOTICE %s :Kullanımı : KABUL #Kanal e/h”, u->nick);
return;
}
if (stricmp(secim, “h”) == 0)
sec=0;
else if (stricmp(secim, “e”) == 0)
sec=1;
else {
send_cmd(s_ChanServ, “NOTICE %s :Kullanımı : KABUL #Kanal e/h”, u->nick);
return;
}
if (ci->flags & CI_VERBOTEN) {
send_cmd(s_ChanServ, “NOTICE %s :Bu Kanal Yasaklı Bir Kanaldır, Komutunuzu Gözden Geçiriniz.”, u->nick);
return;
} else if (ci->suspendinfo) {
send_cmd(s_ChanServ, “NOTICE %s :Bu Kanal Suspendli Bir Kanaldır, Komutunuzu Gözden Geçiriniz.”, u->nick);
return;
}
ARRAY_FOREACH (i, ci->access) {
if (ci->access[i].nickgroup == ni->nickgroup) {
if (sec==1) {
if (ci->access[i].kabul==0) {
ci->access[i].kabul=1;
send_cmd(s_ChanServ, “NOTICE %s :%s Kanalı için Access Eklemesi Kabul Edildi.”, u->nick, kanal);
}
else if (ci->access[i].kabul==1) {
send_cmd(s_ChanServ, “NOTICE %s :%s Kanalı için Access Eklemesini Zaten Kabul Etmişsiniz.”, u->nick, kanal);
}
else {
send_cmd(s_ChanServ, “NOTICE %s :%s Kanalı için Nickinize Ait Bekleyen Access isteği Yok.”, u->nick, kanal);
}
put_channelinfo(ci);
bulunan=1;
break;
}
else {
if (ci->access[i].kabul==0) {
send_cmd(s_ChanServ, “NOTICE %s :%s Kanalındaki Bekleyen Access isteğiniz Silindi.”, u->nick, kanal);
ARRAY_REMOVE(ci->access, i);
put_channelinfo(ci);
bulunan=1;
}
break;
}
}
}
if (bulunan==0)
send_cmd(s_ChanServ, “NOTICE %s :Nickiniz için %s Kanalında Bekleyen Bir Access isteği Yok.”, u->nick, kanal);
}
}——————————
pico modules\nickserv\main.c
Kod:
#include “modules/operserv/operserv.h”bu kodu bulup hemen altına şu kodu ekleyin
Kod:
#include “modules/chanserv/chanserv.h”-
Kod:
char *s_NickServ;bu kodu bulup hemen altına şu kodu ekleyin:
Kod:
char *s_ChanServ;-
Kod:
static void do_identify(User *u)
{
char *pass = strtok_remaining();
NickInfo *ni = NULL;
NickGroupInfo *ngi = NULL;bu satırları bulup hemen altına şu 3 satırı ekleyiniz:
Kod:
ChannelInfo *ci;
int i;
int toplam=0;-
Kod:
notice_lang(s_NickServ, u, NICK_IDENTIFY_SUCCEEDED);bu satırı bulup hemen bir altına şu satırları ekleyiniz:
Kod:
for (ci = first_channelinfo(); ci; ci = next_channelinfo()) {
if (ci->flags & (CI_VERBOTEN))
continue;
if (ci->suspendinfo)
continue;
ARRAY_SEARCH_SCALAR(ci->access, nickgroup, u->ngi->id, i);
if (i != ci->access_count) {
if (ci->access[i].kabul==0)
toplam++;
}
}
if (toplam!=0) {
send_cmd(s_ChanServ, “NOTICE %s :%d Adet Bekleyen Access Kabul isteğiniz Var.”, u->nick, toplam);
send_cmd(s_ChanServ, “NOTICE %s :istekleri Listelemek için /chanserv kabul list Komutunu Uygulayınız.”, u->nick);
}——————————
pico modules\database\version4.c
Kod:
SAFE(write_int16(convert_new_level(ci->access[i].level), f));bu satırı bulup hemen altına şu satırı ekleyiniz:
Kod:
SAFE(write_int32(ci->access[i].kabul, f));——————————
Not : tr.l de yapacağınız değişikliklerde “tab”lara dikkat ediniz.
Not : dosyalarınızıftp den çekip not defterinde veya başka bir editörde yapmanız daha iyi olacaktır.
Buraya kadar herşeyi Satır kaydırmadan yaptıysanız;
make
make install
komutlarınızı kullanınız.
sonra ./ircservices komutu ile servislerinizi getirip, mirc üzerinden admin nickinizile girip /os update komutunu kullanınız..
bu işlemden HEMEN sonra servislerinizi ps x listenizden kapatınız..
sonrasında şu editi yapınız:

pico modules\database\version4.c
Kod:
ci->access[i].level = convert_old_level(lev);bu satırı bulup hemen altına şu satırı ekleyiniz:
Kod:
SAFE(read_int32(&ci->access[i].kabul, f));
bu işlemden sonra da tekrar
make
make install
komutlarını uygulayıp servislerinizi getirirseniz işlem tamamlanacaktır.