Eggdrop помощ
Публикувано на: 10 Окт 2012 17:15
Вероятно повечето от вас знаят какво е IRC и Eggdrop и какво можете да правите с тях, но в помощ на тези които незнаят все още ще направим кратко резуме преди да започнем същинската част.
IRC означава [Internet Relay Chat]. IRC мрежата е направена от многобройни сървъри свързани един към друг. В IRC имате канали, колко зависи от мрежата на която сте. Ако сте съвсем бос в IRC, предлагаме ви да прочетете преди всичко http://irchelp.unibg.org/irchelp/IRC/Do ... ew2irc.htm
Вероятно използвате клиент като mIRC (http://www.mirc.com/) за Windows, X-Chat (http://xchat.org/) за X11 или BitchX (http://www.bitchx.com/) за Linux за да се свържете към IRC сървърът, но какво точно прави този клиент?
Тези клиенти изпращат специални команди до сървърът за да се уверят че това което пишете отива в правилната посока. Ако трябва да правите скрипт който да изпраща информация към някой през msg, notice, ctcp или нещо друго не само можете да направите нещо просто като [notice <nickname> <message>]. Трябва да изпратите специфични команди към сървърът точно както mIRC, X-Chat и BitchX го правят, така че трябва да знаете малко повече как IRC сървърът работи с IRC клиентите ако искате да осъществите намисленото.
Бот е съкращение от робот. Ботовете са доста често срещани на много IRC мрежи. Също както роботите от истинския живот те отговарят на команди и неща, на които са програмирани да отговарят. Някои могат да кажат, че те приличат на добре обучени кучета. В IRC ботовете често се използват, за да държат канал или да "забавляват" канал. Може би е по-точно да се каже, че бота позволява на потребителите да се забавляват, тъй като бота отговаря на команди, които потребителя е изпълнил. Ботовете доста често се използват само, за да държат операторските права в някой канал.
Eggdrop е най-популярния в света Open Source IRC бот написан на C, създаден за гъвкавост и лесно използване, а и неговата дистрибуция е безплатна под GNU General Public License (GPL). Ако НЕ знаете какво е IRC, тогава вероятно Eggdrop не е за вас!
Eggdrop е начално написан от Robey Pointer; както и да е, той отдавна не работи върху Eggdrop, така че моля ви не се свързвайте с него за решение на някакъв проблем или бъг. Тъй като той работи като background процес на shell акаунт, той може да стои в IRC 24 часа 7 дни в седмицата.
Първоначално е създаден за война в IRC, но сега той може би е най-добрия IRC бот. Изглежда като нормален потребител, само че има много други функции. Като например всички потребители, които имат права в бота (да правят това) могат да влязат на DCC Chat с него и да пращат съобщения на други потребители, които не са в момента в IRC. Съобщенията автоматично ще бъдат запазени в бота. Когато потребителят влезе в канала, в който е бота, той му праща съобщение.
Ако други потребители са в DCC с eggdrop бота те ще имат възможността да говорят един с друг в dcc chat прозореца, така както си говорят в канал. Това е една от най-забележителните функции на eggdrop бота. Мислете за него като мулти DCC chat, или като малко IRC (заедно с каналите). Вие можете да свържете други ботове и да увеличите partyline-а, докато накрая се получи наистина нещо приличащо досущ на IRC.
Eggdrop стои в канала и го пази: защитава го от TakeOvers (това в наши времена е почти невъзможно с наличието на Services), да разпознава наказани потребители и да ги наказва, да разпознава привилигированите потребители и да им позволява да имат операторски права и т.н.
За да си направите бота по-добър, може би ще искате да му сложите определени скриптове. Това може да означава всичко, включвайки игри, гласувания, скриптове за даване на помощ и т.н. Един интересен скрипт може да ви направи бота по такъв начин, че той да говори като нормален потребител (почти като него...). На подобни неща може да се подлъже някой новак в IRC. После ще засегнем въпроса за TCL скриптовете.
Имаше доста малко версии на Eggdrop ботове направени през последните години. Някои хора все още си използваха 1.3.x версиите, но не и ние. Доста бъгове бяха оправени оттогава, и доста функции бяха добавени.
Препоръчваме ви ВИНАГИ да използвате най-новата egghead eggdrop 1.6.x версия, която винаги е считана за най-стабилната и най-поддържана версия.
Ако гледате Uptime страницата можете да забележете няколко eggdrop 1.7 ботове, които са пуснати. 1.7 е версия само за разработчици и няма да бъде пусната за публично използване. Щом веднъж стане, версията ще се смени на 1.8. Ще бъде голяма крачка за eggdrop, но все още не е направена. Има повече бъгове отколкото новости
Друго разклонение на оргиналния eggdrop бот от Robey Pointer е Eggdrop Racbot. Различен е от стандартния (още наричан "Ванила Eggdrop") egghead eggdrop, който е рядко използван и неподдържан от повечето помощни канали за eggdrop.
Каквото и да правите не използвайте eggdrop 2.x, който е стар забравен проект, в който са се опитали напълно да пренапишат eggdrop кода, но не са успели.
Ако си говорим за Windows, използвайте Windrop, или си компилирайте собствен бот използвайте Cygwin.
Разбира се има и други IRC ботове, даже и mIRC скриптове, които се опитват да приличат на ботове, ето и малко имена на ботове: Blootbot, Darkbot, Eggdrop Racbot, Energymech, Infobot... Разбира се има и още много много... И само вие можете да си отговорите на въпроса защо да използвам точно eggdrop. А и надявам се ще си отговорите на този въпрос след като прочетете това.
Първото нещо преди да си вземето eggdrop е да се питате имате ли нужда от него? Ако отговора е да, можете да вземете най-новия eggdrop бот от http://www.geteggdrop.com или от ftp://ftp.eggheads.org/pub/eggdrop/source/1.6, http://irchelp.unibg.org разбира се можете да го вземете и от нашата страница ;) стараем се винаги да бъдем в крак с новоизлезлите версии.
Можете да намерите помощ за eggdrop на следните страници: http://egghelp.org, http://www.eggfaq.com, http://www.eggheads.org, http://irchelp.unibg.org/irchelp/IRC/Eggdrop.htm (на български). Можете и да потърсите различни страници с google или любимата си търсачка. В IRC винаги можете да потърсите помощ в #irchelp @UniBG, @eggdrop @Undernet, #eggfaq @IRCNet.
Трябва да планирате използването на поне два бота от различни шелове. Причината е, че шеловете падат от време на време. След като си изберете добро място където да пуснете вашият eggdrop можете да продължите към инсталацията и конфигурацията му.
Обикновенно инсталацията е лесна. Ако шела ви има TCL инсталиран, всичко ще мине добре (ако имате достатъчно място). Моля не забравяйте, че конфигурационния файл трябва да бъде добре прегледан.
За да подкарате eggdrop ви трябват няколко неща:
Някакъв Unix акаунт (няма значение дали ще е локален или отдалечен, стига да ви дава възможността да пускате Eggdrop и да остава процеса ви пуснат след като излезете).
Доста добри познания за IRC и Unix, както и да знаете какво е DCC chat.
Около 500k свободно място, или повече, зависи от системата (на Linux, изпълнимите файлове заемат около 400k -- ще е доста по-голям на RISC системи)
TCL библиотеки (lib файлове), които могат да бъдат намерени на http://www.linuxberg.com/
Ако искате ботът ви да бъде пуснат 24/7 (24 часа на ден, 7 дни в седмицата), ви трябва шел акаунт на компютър, който е 24/7 в Интернет. Можете да получите такъв шел или като си го купите или като целунете администратора и го накарате да ви даде един безплатно (нито един от онези "безплатни шел акаунт провайдери" няма да ви даде да си пуснете Eggdrop бот, защото веднага след като излезете от системата вашият процес ще бъде спрян). Има много добри шел провайдъри в последно време. Aко искате български шел опитайте регистрация на http://aquila.online.bg, http://shells.go-link.net (супер скапан шел), пък ако ви се занимава да търсите на http://www.bylur.net/free/ има няколко безплатни шел провидера.
Сега частта с TCL:
Преди да компилирате eggdrop, вие трябва да имате инсталиран TCL на системата. Повечето системи би трябвало да си имат TCL.
Пуснете ./configure скрипта, за да ви намери TCL-а вместо вас. Ако това се провали може би бихте искали да си го потърсите сами. Можете да проверите като напишете "tclsh". Ако работи, ще получите "%" промпт, и просто напишете "exit", за да излезете. Това означава, че системата ви има TCL инсталиран. Ако tclsh не работи, това би трябвало да означава, че нямате TCL, и ще трябва да го изтеглите и да го инсталирате. Има и още един доста болезнен начин за откриването на инсталиран TCL... Библиотеките се казват libtclX.X.so или libtclX.X.a. Тези "X.X" са версията на вашата библиотека. Разшиерението '.so' означава, че е "динамично зареждаща се библиотека", а '.а'' означава, че ще е "статично свързана". Можете да опитате да го намерите така: find /usr -name "libtcl*" -print
Чрез тази команда ще имате да си чакате доста време... Направете и същото за header файла: find /usr -name "tcl.h" -print
Веднъж щом сте ги намерили, кажете на ./configure скрипта, къде са. Това трябва да се направи като се дефинират стойностите на TCLLIB и TCLINC. Направете следното:
За sh/bash/ksh шелове:
TCLLIB=/directory/of/the/library
TCLINC=/directory/of/the/header
export TCLLIB TCLINC
За csh/tcsh шелове:
setenv TCLLIB /directory/of/the/library
setenv TCLINC /directory/of/the/header
Можете да провете какъв шел ползвате като напишете echo $SHELL
Ако това не проработи, напишете 'ps' и вижте какви процеси сте пуснали. Намерете този който започва с тире '-', това вероятно е вашият логин шел. Това може да е някой от следните: sh, bash, ksh, csh или tcsh (или други...).
След това пуснете ./configure отново, за да ви намери файловете.
Най-доброто FTP, от което можете да си вземете TCL е: ftp://ftp.scriptics.com/pub/tcl.
Най-добрата версия е 8.4.
Можете да си компилирате TCL 8.4 във вашата HOME директория, ако имате достатъчно място. Или да го компилирате в /tmp, там ще имате достатъчно свободно място. Направете следното:
$ mkdir /tmp/tcl
$ cd /tmp/tcl
$ ftp ftp.scriptics.com
Login: ftp
Password: your@email
ftp> cd /pub/tcl/tcl8_4
ftp> bin
ftp> get tcl8.4a3.tar.gz
..чакайте да се изтегли файла. След това:
ftp> quit
$ gzip -dc tcl8.4a3.tar.gz | tar xvf -
$ cd tcl8.4/unix
$ ./configure --prefix=/tmp/tcl --exec-prefix=/tmp/tcl --disable-shared
..чакайте configure да си свърши работата... След това:
% make (и чакате...)
% make install (чакате още...)
Е вече имате TCL библиотеките в /tmp/tcl. Сега кажете на eggdrop къде да ги намери, като направите следните настройки:
На bash/sh/ksh шелове:
% TCLINC=/tmp/tcl/include
% TCLLIB=/tmp/tcl/lib
% export TCLINC TCLLIB
На csh/tcsh шелове:
% setenv TCLINC /tmp/tcl/include
% setenv TCLLIB /tmp/tcl/lib
След това просто пуснете eggdrop 'configure' скрипта и стискайте палци да засече TCL версията 8.4. Ако го направи (а и би трябвало, ако спазвате стъпките правилно), можете да си компилирате бота както обикновенно, и той ще има TCL 7.6 библиотеките. След компилирането можете просто да изтриете всичко в /tmp/tcl, тей като всичко това вече е включено в бота ви. Или да си го оставите там, ако провайдера не ви го изтрие ще можете да си компилирате още някой друг бот в близкото бъдеще. Ако имате място можехте да направите цялата операция не в /tmp, а в $HOME директорията ви.
Ако си купите шел и знаете, че те ви дават да си пускате IRC ботове (такава важна информация би трябвало да е написана на тяхната уеб страница), можете да сте 100% сигурни, че те ще имат TCL библиотеките.
Преди да започнете се питайте, трябва ли ми наистина бот. Много хора пускат бото само като "играчки" или за цел унищожение.
Ако искате да го използвате за унищожение, хайде давайте, но преди това изтрийте цялата си eggdrop директория. Почти невъзможно е eggdrop да бъде използван за подобни цели. Има и ограничения за изпращането на командите към потребител/канал.
Трябва да намерите поне един сървър, който да ви позволи да пускате ботове (повечето сървъри в UniBG го разрешават). Можете да направите това като прочетете MOTD-то. Ако правилата ви харесат просто пуснете вашият eggdrop на този сървър. Или на сървърът който ви е най-бърз от шелът. Това можете да го разберете ако имате права за ping или traceroute. На колкото по малко hop-а е един сървър от вашият шек толкова по бързо ще върви ботът ви.
Говорейки глобално, ботове ви трябват, ако канала ви има хора постоянно (24 часа на ден) и няма ботове. Ако канала ви има няколко бота, предполага се, че не ви трябват повече. Много ботове не вършат по-добра работа. Повече ботове просто губят скоростта на сървъра и мястото от където са пуснати. Трябват ви много ботове, само ако канала ви е твърде голям.
Ботовете НЕ могат да осигурят пълна защита. Нищо не може. Eggdrop ще се опита да направи това колкото се може по-добре, но няма гаранции.
Много хора ... (мързели като нас) ги мързи постояно да обновяват версията на ботът си като смъкват новия сорс и да прекомпилират блах блах... затова хората са измислили пачовете с които можете да направите ъпдейтът малко по безболезнен само с прекомпилиране ;) За да си patch-нете eggdrop source-а ви трябва програмата 'patch', и то поне версия 2.1. Напишете:
patch -v
За да разберете, коя версия имате. Ако нямате отговор за версията, то може би вие пускате друг файл. Вижте
http://tick.informatik.uni-stuttgart.de ... drop/patch
и си намерете точния 'patch' за вашата система. Най-новите пачове се намират на
ftp://ftp.eggdrop.net/pub/eggdrop/unofficial/patches1.6
ftp://ftp.sodre.net/pub/eggdrop/patches1.6
Можете да си patch-нете eggdrop бота така:
Ако той завършва на .gz:
$ gzip -d patch-file
Влезте в source директорията на eggdrop бота ви. Сложете пача с:
$ patch -p1 < eggdrop1.6.12.patch
Дали нещо не е станало можете да разберете с:
$ find . -name "*.rej" -print
Ако нещо се е пообъркало по следният начин можете да изтриете rejected файловете и да опитате отново с друг пач.
$ find . \( -iname "*.rej" -or -iname "*.orig" -or -iname "*~" \) -exec rm -f {} \;
Ако програмата 'patch' ви попита "What file to patch", то сигурно нямате текущата версията на програмата. Ако я имате, то може би сте объркали версията на eggdrop бота (пачвате с patch за 1.3 eggdrop 1.6 примерно). Убедете се, че версията на eggdrop бота и версията на patch съвпадат. След това просто прекомпилирайте с 'make'.
За да си пуснете бота с SSL трябва да го patch-нете по следния начин:
$ cd eggdrop1.6.12
$ wget -c http://irchelp.unibg.org/Downloads/eggd ... .6.diff.gz
$ patch -p1 < eggdrop1.6.12-ssl-v1.6.diff.gz
или да изтеглите направо пачнат бот от c http://irchelp.unibg.org/Downloads/prec ... 12-ssl.tgz
Вече спокойно можете да започнете със инсталацията.
Влезте във вашата директория
# cd
Като за начало трябва да се здобиете с сорсе кода просто пишете следното във вашият шел.
# wget -cb http://irchelp.unibg.org/irchelp/Downlo ... .12.tar.gz
Ако нямате wget можете да се здобиете с архива използваики lynx или друг подобен инструмент.
# lynx -source http://irchelp.unibg.org/irchelp/Downlo ... .12.tar.gz > eggdrop1.6.12.tar.gz
След това просто разкомпресираите файла и влезте в новосъздадената директория. (можете да изтриете компресирания файл)
# tar xzvf eggdrop1.6.12.tar.gz
# rm -f eggdrop1.6.12.tar.gz
# cd eggdrop1.6.12/
ВНИМАНИЕ:Ако се опитвате да инсталирате eggdrop на платформа различна от Linux използваите следния начин:
# gzip -d eggdrop1.6.12.tar.gz
# tar xf eggdrop1.6.12.tar
# rm -f eggdrop1.6.12.tar
# cd eggdrop1.6.12/
Сега.. нека да стартираме конфигурационият скрипт. (тои не би трябвало да изписва грешки). Между доругото тои изписва доста съобщения, просто ги игнорираите ако не изписват грешки. Напредналите потребители могат да напишат:
# ./configure --help
за да видят някои допалнителни опции които може да са им полезни, но ако сте новак в eggdrop започнете 'бърза' инсталация:
# ./configure
След като скрипта намери всичко което му е нужно за да продължи( главно Tcl,които се изисква за да се компилира бота) нека да пристапим към компилирането на eggdrop-а.Ето някой неща които трябва да направите( ако искате вашият eggdrop да достигне максимума от способностите си).Така че нека да започнем от src/ директория.
# mcedit src/eggdrop.h
Тук можете да редактирате максималната далжина на псевдоними които можете да добавите във вашият бот.( по начало тя е 9, добре е да я направите 15 или колкото е максимумат разрешен от мрежата на която стартирате вашият бот, така че ще сте способни да добавяте всичките видове превдоними във вашата база данни).
#define HANDLEN 9 /* valid values 9->NICKMAX */
ВНИМАНИЕ:Бъдете внимателен това е колкото хубаво толкова и лошо, защото може да попречи на линкването на бота ви към бот които е компилиран с началната далжина на псевдонима(9).Първо проверете дали далжината на псевдонима савпада на всичките ботове от ботнет-а ви и тогава направете правилната промяна. Можете сега да обърнете внимание на някои по специфични настройки на файловете в тази директория или да го оставите за после в случай че се зблъскате проблем от това естество. Във файлът mem.c се намира описанието на това колко голяма че е memory таблицата на ботът ви. Какво ви касае това ли? Ако имате прекалено много потребители ботът ви ще почне да пада със съобщение "Memory table full" . Трябва просто да отворите със някакъв текстови редактор src/mem.c и заменете следното
#define MEMTBLSIZE 25000 /* yikes! */
с някаква по голяма стойност например 50000, след което прекомпилирайте ботът отново.Ако сложите лимитът на 75000 всичко ще е ОК. Можете да проверите моментното използване на памет като напишете .status в ботът. Ако тя се напълни можете да срешнете затруднения с добавянето на нови потребители или с рестартирането на ботът. Друг файл на който можете да обърнете внимание е src/mod/server.mod/server.c който в последствие може да ви донесе главоболия. Ако ботът ви почне да излиза от IRC със съобшение Excess flood то е не от друго а защото стойностите на msgrate са твърде малки. Отворете файлът и потърсете за следните редове:
/* Number of seconds to wait between transmitting queued lines to the server
* lower this value at your own risk. ircd is known to start flood control
* at 512 bytes/2 seconds.
*/
#define msgrate 2
и го променете на по висока стойност
#define msgrate 5
След което прекомпилирайте ботът.
Тази опция контролира колко бързо ботът изпраща съобщенията към сървърът. Ако сложите висока стойност, шансът ботът ви да излезе по подобен начин е минимален, но от друга страна ботът става по бавен. Мислим че това е всичко за сега в тази директория поне за повече не се сещаме.
Докато сте в src/ директорията можете да направите малко трикове с uptime-а на бота си Доста често виждаме параноици които умират за голям uptime на бота си. Ето как можете сами да го вдигнете:
$ mcedit src/chanprog.c
Отидете на ред 231 и се огледайте за
void tell_verbose_uptime(int idx)
{
char s[256], s1[121];
time_t now2, hr, min;
now2 = now - online_since;
s[0] = 0;
след него добавете
now2 += (1 * 60 * 60 * 24);
под него трябва да има
if (now2 > 86400) {
/* days */
слезте по надолу кадето започва
/* Dump status info out to dcc
*/
void tell_verbose_status(int idx)
{
това е приблизително на ред 296
if (admin[0])
dprintf(idx, "Admin: %s\n", admin);
now2 = now - online_since;
s[0] = 0;
добавете
now2 += (1 * 60 * 60 * 24);
под него трябва да остане
if (now2 > 86400) {
/* days */
Този пример е за +1 ден, ако искате да увеличите стойност-а променяте 1, например за 2 дена пример-а ще е
now2 += (2 * 60 * 60 * 24); и т.н.
Сега ако искате да промените някои от съобщенията във вашият бот ,kick съобщения и друг текст трябва да редактирате language файла.
# mcedit language/core.english.lang
Тук просто трябва да замените текста с собствен!
ВНИМАНИЕ:Ако вашият компютър няма mcedit можете да използвате други текстови редактори.( vi,pico,vim ОЩЕ!!!)
Сега е момента (преди да компилирате бота) да компилирате допалнителни модули. На http://irchelp.unibg.org/irchelp/IRC/Eggdrop.htm можете да видите завиден архив от модули.
Сега просто се наслаждаваите...
Първо трябва да компилирате допалнителните модули на вашият бот(ако сте добавили такива)... Модулите са част от кода които се зареждат отделно от бота и добавят допълнителни функции. Например, с filesys модула добавяте цялата file система.
# make config
След всички редове които се изписват трябва да получите следното...
building ./src/mod/Makefile... done.
You can now compile the bot, using "make".
Сега вече можете да започнете с главната компилация...
# make
Стартираме 'make' скрипта!
Можете да свържете модулите си статично, ако използвате 'make static'. Също така можете да се опитате да компилирате динамични модули в/у статична система с 'make eggdrop'.
Ako при компилирането получите 'Makefile:3 :invalid operator' и подобни неща когато напишите 'make' използвайте 'gmake'. Друга често срещана грешка е при компилирането е липсата на патечките в /etc/ld.conf и се получава следната грешка:
Linking eggdrop...
gcc -pipe -o ../eggdrop bg.o botcmd.o botmsg.o botnet.o chanprog.o cmds.o dcc.o dccutil.o dns.o flags.o language.o main.o mem.o misc.o misc_file.o modules.o net.o rfc1459.o tcl.o tcldcc.o tclhash.o tclmisc.o tcluser.o userent.o userrec.o users.o -L/usr/local/lib -ltcl8.4 -lm -ldl -ldns -lnsl md5/md5c.o compat/*.o `cat mod/mod.xlibs`
strip ../eggdrop
Successful compile: eggdrop
make[1]: Leaving directory `/usr/local/eggdrop1.6.12/src'
./eggdrop: error while loading shared libraries: libtcl8.4.so: cannot open shared object file: No such file or directory
make: *** [modegg] Error 127
Дава грешка че не намира даденият файл но при търсенето му той е на мястото си:
locate libtcl8.4.so
/usr/local/lib/libtcl8.4.so
Проблемът идва от там че пътят /usr/local/lib/ го няма в /etc/ld.so.conf файлът. Ако сте root добавете го в файлът след което стартирайте 'ldconfig'. Ако сте само потребител преди да стартирате конфигурационият скрипт напишете export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib или кадето е пътят.
Хмм, отново доста съобщения ;)Не се притесняваите от това.След всичко накрая трябва да получите следното...
modules made:
-rwxrwxr-x 1 Randal Randal 8292 Feb 27 19:17 assoc.so
-rwxrwxr-x 1 Randal Randal 13620 Feb 27 19:17 blowfish.so
-rwxrwxr-x 1 Randal Randal 99876 Feb 27 19:18 channels.so
-rwxrwxr-x 1 Randal Randal 9364 Feb 27 19:18 compress.so
-rwxrwxr-x 1 Randal Randal 8908 Feb 27 19:18 console.so
-rwxrwxr-x 1 Randal Randal 7348 Feb 27 19:18 ctcp.so
-rwxrwxr-x 1 Randal Randal 11876 Feb 27 19:18 dns.so
-rwxrwxr-x 1 Randal Randal 95548 Feb 27 19:18 filesys.so
-rwxrwxr-x 1 Randal Randal 118100 Feb 27 19:19 irc.so
-rwxrwxr-x 1 Randal Randal 27444 Feb 27 19:19 notes.so
-rwxrwxr-x 1 Randal Randal 12468 Feb 27 19:19 seen.so
-rwxrwxr-x 1 Randal Randal 58356 Feb 27 19:19 server.so
-rwxrwxr-x 1 Randal Randal 44484 Feb 27 19:19 share.so
-rwxrwxr-x 1 Randal Randal 36928 Feb 27 19:19 transfer.so
-rwxrwxr-x 1 Randal Randal 13044 Feb 27 19:19 wire.so
Now run "make install" to install your bot.
Сега продалжете с изпалнението на командата 'make install' която ще инсталира бота в вашата директория(/home/user/eggdrop) Ако желаете да го инсталирате на различно място от тази директория използваите :
make install DEST=<directory>
Пример:
# make install DEST=/home/Randal/eggdrop1
ВНИМАНИЕ: Трябва да използвате цялата патечка до директорията в която искате да се инсталира. За бърза инсталация използвайте просто:
# make install
В края трябва да полъчите следното съобщение:
Installation completed.
You MUST ensure that you edit/verify your configuration file.
Use one of the three configuration files distributed with your bot.
Remember to change directory to /home/Randal/eggdrop before you proceed.
Но ако получите съобщение от рода
You're trying to do a MODULE build of eggdrop when you've
already run make for a static build.
You must first type make clean before you can build
a module version.
make: *** [modtest] Error 1
това е защото make install е само за динамично компилиране, напишете make static за статично.
Оооо Да! Сега имате свои собствен бот;)) STOP! Това не е всичко От сега трябва да изваршите доста работа по вашият бот за да го направите работещ. Първо ако сте инсталирали вашият бот под 'root' трябва да изпълните някои прости команди за да дадете способност на юзера да го стартира таи като бот-а не може да се стартира под 'root'.(Можете да го стартирате под 'root', но това е възможно при някои по стари версии).
# cd /home/user
# chown -R user.users *
# cd eggdrop1.6.12/
В случай, че е належащо да се пусне от root трябва да промените source кода(в частност main.c).
if (((int) getuid() == 0) || ((int) geteuid() == 0))
Се сменя на:
if (((int) getuid() == 10) || ((int) geteuid() == 10))
Прекомпилирайте бота наново. (make;make install)
Ако не искате да се занимавата с цялата тази anal история, можете просто да използвате прекомпилиран бот. Такива можете да намерите на нашият сайт (http://irchelp.unibg.org/) почти за всички OS.
Сега сте способен да редактирате и запазите конфигурационните файлове. Копирайте файла 'eggdrop.complete.conf' в някои нов файл, по принцип със същото име като това което бот-а ви ще използва в IRC. Това е полезно и ще влезе в употреба при правенето на crontab за вашият eggdrop. Сега нека започнем с редактирането на вашият конфигурационен файл.
# mcedit LameBot.conf
Решихме да не даваме примерен конфигурационен файл, а да споменем опциите които можете да променяте:
Първата линия от конфигурационния файл за Eggdrop трябва да съдържа пълния път до изпълнимият файл eggdrop. Трябва да е написан по начина, по който е даден примера, или както се прави да работи шел скрипт.
Пример:
#! /home/user/eggdrop1.6.3/eggdrop
Следните неща могат да бъдат сменени (препоръчително е да се) !
set username "ext2s"
Тази настройка дефинира потребителското име, което бота използва в IRC. Настройката няма ефект, когато има пуснат ident daemon на машината.
set admin "PurvoIme VtoroIme <email: [email protected]>"
Тази настройка дефинира, кой ще бъде показан при изпълнение на командите .status,
/msg help, и на други места. Тази информация трябва да бъде включена!
set network "UniBG"
Тази информация се използва само при share с другите ботове от ботнета. Сложете го на мрежата, на която седи ботът ви
(обикновенно това е UniBG).
set timezone "EET"
Тази настройка дефинира зоната, в която е ботът ви. Използва се за вътрешни процедури, както и за "въртенето" на логфайлове и за писането на скриптове. Времевата зона е стринг, който определя името на зоната, в която сте и трябва да бъде най-малко три или повече символа. Например, Central European Time (Централна Европа) (UTC+1),трябва да е "CET".
set offset "2"
Offset настройката дефинира времето, което ще бъде добавено до Coordinated Universal Time (UTC aka GMT), за да се получи местното ви време. Оffset-a e положителен, ако местното време е на запад от главния меридиан и отрицателно, ако е на изток. Стойността (в часове) трябва да е между -23 и 23. Ако например, сте в часовата зона UTC+1, offset-а ви трябва да е -1.
set env(TZ) "$timezone $offset" (изключено по подразбиране)
Ако не искате да се използва настройката часова зона само от скриптовете, а искате да се използва навсякъде откъдето е възможно, използвайте тази настройка.
set my-hostname "127.0.0.1"
set my-ip "127.0.0.1"
Ако използвате виртуален хост (машината ви има повече от едно IP), може би ще искате да изберете кое IP ще ползвате.
Можете да го дефинирате или по хост или по IP. Може би ще искате да го зададете и ако eggdrop бота ви има проблеми с намирането му при стартиране.
addlang "english"
Ако искате eggdrop съобщенията да бъдат показани на някой друг език, променете тази променлива. Алтернатива на това ще бъде да промените стойността на EGG_LANG на езика, който желаете.
Eggdrop има възможността да логва някои неща, от това какво се говори в каналите до partyline командите и файл трансферите.
Лог файловете обикновенно се пазят за 24 часа. След това те ще се преименуват на "(logfilename).yesterday".
След 48 часа, те ще се препокрият с логовете на следващия ден.
set max-logs 5
Това е колко най-много лог файлове е разрешено да се правят. Числото може да се увеличи; както и да е, не го намалявайте.
set max-logsize 0
Колко най-много може да бъде голям вашият лог файл. Сложете го на 0, за да го изключите. Стойността е в килобайти, така че '550' ще означава лог файл до 550 килобайта. Забележете, че това работи само ако имате keep-all-logs set 0 (ИЗКЛЮЧЕНО).
set quick-logs 0
Тази опция може да се окаже доста полезна, ако имате проблеми с лог файловете, които ви запълват quota на харддиска, или самият хард диск или ако логвате +p и го публикувате на уеб, и ви трябва по-нова информация. Забележете, че тази опция може да увеличи използването на процесора ви (но от друга страна ще намали използването на рамта).
logfile <флагове> <канал> "logs/logfajl"
Тази нстраойка казва на бота ви какво да се логва, от къде, и в какъв файл.
Най-използваните флагове за логване са:
m лични съобщения/ctcp-та към бота
k kick-ове, банове, смяна на модове в канал
j влизания, излизания, разцепвания на мрежата за канал
p публичните съобщения в канал
s сървърските връзвания/отцепвания/съобщения
b информация за шерването на ликновете и потребителския файл на бота
c командите, които се използват (през msg или dcc)
x файл трансферите или командите свързани с file-area
r (ако имате use-console-r включена) ВСИЧКО пратено към бота от сървъра
o други: разни информация, грешки - ВАЖНИ НЕЩА
w wallops: съобщенията между Операторите (уверете се, че бота ви има +w в init-server)
Има и други, но предполагам, че те няма да ви трябва, по-добре да бъдем неетични . Има и още осем потребителски дефинирани флага (1-8), които се използват от Tcl скриптовете.
Всеки лог файл пренадлежи на определен канал. Събития от тип 'k', 'j', и 'p' се логват от такъв канал от какъвто те са се случили. Повечето от другите се логват за всички канали. Можете да направите един лог файл да пренадлежи за всички канали, като на мястото за името на канал сложите "*".
Примери:
logfile mco * "logs/eggdrop.log"
logfile jpk #lamest "logs/#lamest.log"
В 'eggdrop.log', сложи лични съобщения/ctcp-та, команди, разни информации, и грешки от всички канали.
В '#lamest.log', логни всички влизания, излизания, kick-ве, банове, публични съобщения и промяната на модовете от канал #lamest.
set log-time 1
Включете тази опция и вашите лог файлове ще се timestamp-ват.
set keep-all-logs 0
Ако искате да пазите лог файловете си завинаги, включете тази опция. Всички лог файлове ще има окончание ".[ден, 2 цифри][месец, 3 цифри][година, 4 цифри]". Забелетежете, че quota на хард диска или самият хард диск могат да се препълнят, така че проверявайте лог файловете често и си ги вземайте.
set switch-logfiles-at 300
Можете да определите, кога eggdrop трябва да сменя лог файловете и да започне да ги "освежава". Използвайте военното време за тази настройка, 300 е по подразбиране, което е същото като 03:00 (AM).
set quiet-save 0
Тези отвратителни съобщения "Writing user file..." и "Writing channel file..." няма да бъдат показвани повече щом тази опция е включена.
set logfile-suffix ".%d%b%Y"
Ако keep-all-logs е 1, тази настройка ще дефинира окончанието на лог файловете. По подразбиране те ще завършват ето така "04May2000". "%Y%m%d" ще даде често ползвания формат yyyymmdd. Прочетете strftime man страницата за повече опции. ЗАБЕЛЕЖКА: За системи, които не поддържат strftime, ще се използва _винаги_ формата yyyymmdd.
##### КОНЗОЛА #####
set console "mkcobxs"
Това са конзолните модове по подразбиране. Използва съшите флагове, които използва и при лог файловете. Конзолния канал е автоматично сложен на вавият "първи" канал, който е зададен в секцията модули в конфигурационния файл.
+m могат да сменят своите конзолни канали и модвете си с командата '.console'.
##### ФАЙЛОВЕ И ДИРЕКТОРИИ #####
set userfile "JinJi.user"
Задава името на файла, под което ще се запазаи вашият потребителски файл.
set pidfile "pid.JinJi"
Задава името на файла, под което ще се запази pid-а, на който е пуснат бота. Ако не се зададе pidfile, тогава ще се използва pid.(botnet-nick).
set sort-users 0
Ако искате потребителския файл да бъде сортиран, когато се запазва включете тази опция. Това ще накара бота да използва малко повече CPU, когато запазва потребителския файл.
set help-path "help/"
Задава къде Eggdrop трябва да търси за своите help файлове. Не променяйте тази настройка освен ако не сте сигурни, че знаете какво правите!
set text-path "text/"
Задава къде Eggdrop ще търси текстовите си файлове. Това се използва от някои Tcl скриптова и DCC команди.
set temp-path "/tmp"
Задава мястото където ще се слагат temporary файлове.
set motd "text/motd"
MOTD (Съобщението за деня) се показва когато хората влезят на dcc chat или telnet с бота. Вижте doc/text-substitutions.doc за опции.
set telnet-banner "text/banner"
Този банер ще се покаже при telnet връзки. Вижте doc/text-substitutions.doc за опции.
set userfile-perm 0600
Задава какви права ще бъдат сложени за потребителския файл, файла за каналите и за файла където се намират notes. Осмичните числа са същите както при командата chmod.
Да ви припомним:
u g o u g o u g o
0600 rw------- 0400 r-------- 0200 -w------- u - user
0660 rw-rw---- 0440 r--r----- 0220 -w--w---- g - group
0666 rw-rw-rw- 0444 r--r--r-- 0222 -w--w--w- o - others
Забележете, че по подразбиране 0600 е най-сигурния начин и това трябва да се смени само ако някой шел скрипт или друг външен скрипт се нуждае от това.
set mod-path "modules/"
Тази настройка казва на Eggdrop къде да търси за модули. Ако пускате бота от директорията от където сте го компилирали ще искате да сложите това на "". Ако използвате 'make install' (както всички добри kiddies правят ;), това е по подразбиране. В противен случай, използвайте главата си .
##### БОТНЕТ, DCC И МРЕЖА #####
Настройките тук ще бъдат без никакво значение за вас освен ако не се занимавате с ботнет. (няколко Eggdrop бота свързани заедно за по-голям ефект). Когато ви обясним как се свързват два бота, може би тези настройки ще ви се изяснят по-добре.
set botnet-nick "BabaMeca" (по подразбиране е изключено)
Ако искате да използвате друг псевдоним в ботнета от този който използвате в IRC (например ако сте на ботнет, на който не може да се има доверие), махнете "#" от тази линия и сложете някаква стойност, която ви удовлетворява.
listen <порт> <опция>
listen командата отваея telnet порт, който вие или другите ботове могат да използва, за да се свържат с Eggdrop като използват telnet.
Валидните портове са обикновенно между 1025 и 65535, като се има предвид, че този порт вече не се използва.
Валидните опции са 'all', 'bots', и 'users'. Можете да имате порт за потребители и ботове, или един и за двата случая.
Пример:
listen 3333 bots
listen 4444 users
Или:
listen 3333 all
Има други опции за listen командата в doc/tcl-commands.doc.
set remote-boots 2
Тази опция ще зададе дали искате или не хората от другите ботове на ботнета да
boot-ват потребители от вашия бот. Настройките са:
0 - *не* позволява на никои външни ботове
1 - позволи на ботовете от share-а
2 - позволи на всички
set share-unlinks 1
Тази настройка забранява на Eggdrop да разкача свързани ботове, ако отдалечен бот му каже да направи това.
set protect-telnet 0
Тази настройка ще отхвърли връзки,които не съвпадат с познати хостове.
Но тази настройка дава възможност limbo ботовете (NOIRC) да си адват хостове или възможноста за NEW като валиден логин.
set dcc-sanitycheck 0
Тази настройка ще накара бота да игнорира DCC chat заявките които имат бонус информация в тях чрез които се опитват да накарат бота да се свърже на някаде другаде което може да доведе до проблеми или може би потребителя има счупен клиент (както mIRC прави), в който случай връзката така и така няма да проработи, предлагаме ви да включете тази настройка.
set ident-timeout 5
Настройката дефинира времето в секунди в което бота трябва да чака преди да спре DCC Chat/Telnet или relay връзка.
set require-p 0
Дефинирайте дали потребителя който има +o трябва да има +p флаг за да направи DCC към бота.
set open-telnets 0
Ако искате да позволите на хората да се добавят към бота когато напишат NEW при телнет връзка направете тази опция 1. Това е нещо като 'hello' съпбщението. protect-telnet трябва да е 0 за да използвате това.
set stealth-telnets 0
Ако не искате eggdrop да се идентифицира като eggdrop при телнет връзки сложете това на 1, вместо това Eggdrop ще покаже 'Nickname'.
set use-telnet-banner 0
Ако искате Eggdrop да покаже banner при telnet връзка, сложете това на 1.
telnet banner-а се слага чрез 'set telnet-banner'.
set connect-timeout 15
Тази настройка дефинира времето в секунди, преди да спре DCC Chat/Telnet или relay връзка.
set dcc-flood-thr 3
Задайте колко линии могат да бъдат приети от един потребител на partyline за 10 секудни, преди да се приеме че той флуди и да бъде изхвърлен от бота.
set telnet-flood 5:60
Дефинира колко опита за telnet връзки могат да бъдат направени за колко секунди от един хост преди той да се приеме че флуди. Формата е опити:секунди.
set paranoid-telnet-flood 1
Ако искате telnet-flood да важи и за +f потребители, сложете това на 1.
set resolve-timeout 15
Сложете периода в секунди преди бота да се откаже от ресолването на хостнаме/адреса (можете да искате да увеличите това на бавни мрежи).
set firewall "!sun-barr.ebay:3666"
Сложете това на вашият сокс хост ако eggdrop-а ви е зад firewall. Ако използвате Sun "telnet passthru" firewall, представката на хост-а е с '!'.
set nat-ip "127.0.0.1"
Ако имате NAT firewall (машината ви има IP от следните класове:
192.168.0.0-192.168.255.255, 172.16.0.0-172.31.255.255, 10.0.0.0-10.255.255.255 и вашият firewall транспарентно сменя адреса на вашата машина на уникален) или имате IP masquearading между вас и останалата част от света, и /dcc chat, /ctcp chаt или share-а на потербителския файл не работи, задайте вашият външен IP адрес тук.
Не пишете нищо за my-ip или my-hostname, ако използвате тази настройка.
set reserved-portrange 2010:2020
Ако искате всички DCC файл трансфери да изолзват определен диапазон от портове или защото сте зад fw или поради security причини настройте това.
set ignore-time 15
Сложете това за времето в минути за което ще трае темп игнора.
set hourly-updates 00
Дефинирайте това което Eggdrop смята за 'hourly'. Всички заявки към него, включвайки неща като note notifying или запазването на потребителският файл, се влияят от това.
Пример:
set hourly-updates 15
Бота ще запазва потребителският си файл всеки 15 минути.
set owner "MrLame, MrsLame"
Махнете # на тази линия и настройте owner-ите на бота.
ТРЯБВА да промените това!
set notify-newusers "$owner"
Кого трябва да известява бота при добавянето на нов потребител.
set default-flags "hp"
Сложете флаговете които нов потребител получава когато бъде добавен. Вижте '.help whois' на partyline за да видите списъка с флаговете и тяхното описание (това ще бъде обяснено по късно).
set whois-fields "url birthday"
Задайте всички полета дефинирани от потребителя които тряба да се покзват при '.whois'.
Те ще бъдат показани само ако потребителя има допълнителни полета, може би ще искате да коментирате това (с #) и да включите userinfo.tcl скрипта който добавя команди за промяна на тези неща.
set die-on-sighup 0
Включете тази настройка ако искате eggdrop да die при получаването на SIGHUP kill сигнал. В противен случай eggdrop просто ще запазва своя потребителски файл и ще rehash.
set die-on-sigterm 0
Включете тази настройка ако искате eggdrop да die при получаването на SIGTERM kill сигнал. В противен случай eggdrop просто ще запазва своя потребителски файл и ще rehash.
unbind dcc n tcl *dcc:tcl
unbind dcc n set *dcc:set
Коментирайте тези линии ако искате да включите командите .tcl и .set.
Ако подбирате owner-ите си внимателно, няма да имате проблем с тези команди.
set must-be-owner 1
Ако включите тази настройка, само перманентните owner-и ще могат да използват .set и .tcl командите, а ако искате и .dump да бъде използвана само от тях направете го 2.
unbind dcc n simul *dcc:simul
Коментирайте тази линия ако искате да използвате partyline командата 'simul'.
(owners могат да манипулират всички на partyline).
set max-dcc 50
Сложете максималният брой на DCC връзки. Можете да я увеличите по-късно но не я намалявайте.
set enable-simul 1
Включете тази настройка ако искате да включите TCL командата 'dccsimul'.
set allow-dk-cmds 1
Включете тази настройка ако искате +d & +k потребители да използват командите за -|-.
set dupwait-timeout 5
Ako Eggdrop-а ви отхвърля ботове които вече са били разкачени от някой друг HUB но информацията за разкачането не се е разпространила още по BotNET-а поради LAG, използвайте тази настройка. Ботът ще чака dupwait-timeout в секунди преди да провери отново и накрая да отхвърли бота.
След главните настройки, може би ще искате да заредите модули. Модулите се зареждат с командата "loadmodule <module>". Eggdrop търси модулите в директорията която сте му задали чрез настройката the module-path
Забележете че при различните конфигурациони файлове различни модули са нужни.
Например:
Ботове за защита на канали:
Този бот се нуждае от channels, blowfish, console, dns, irc, и (ако ви харесва) ctcp модулите заредени. От повече не се нуждаете това просто ще забави бота.
Public IRC Bot:
Public бота трябва да има всички модули заредени понеже те осигуряват всички функции за всекидневна употреба.
Secure Filesys Bot:
Този бот се нуждае от всички нормални IRC модули, но не и notes, seen, ctcp и share модулите.
Limbo Bot:
limbo бот (работещ като BotNET hub извън IRC) просто се нуждае от channels, console, dns, и може би notes или share модулите. Разбирасе blowfish трябва да бъде зареден.
Скриптовете трябва да бъдат добавени в края на конфигурационият файл. Всички модули трябва да бъдат заредени и техните променливи трябва да бъдат сложени тук.
source scripts/script.tcl
Тази линия зарежда script.tcl от scripts/ директорията на бота. Всички скриптове трябва да бъдат сложени там, макар че могат да бъдат сложени навсякаде но трябва да зададете целият път до там.
Някой основни скриптове които винаги се зареждат са alltools.tcl и action.fix.tcl.
source scripts/alltools.tcl
source scripts/action.fix.tcl
Chennel модула осигурява поддръжка на каналите за бота. Без него, няма да можете да накарате ботът да влезе в канал или да запазите специфични настройки за канала. Не изисква други модулли да са заредени, зарежда се както всеки модул с loadmodule channels.
Допълнителни настройки:
set chanfile "LamestBot.chan"
Файлът в който ще се запазват настройките за каналите.
set ban-time 120
Колко време бановете ще стоят (в минути). Ако сложите това 0 ботът няма да ги премахва.
set exempt-time 60
Колко време exempts ще стоят (в минути). Както при set ban-time ако го сложите на 0 няма да се премахват. Ботът ще проверява за exempts всеки Х монути, но няма да ги маха ако те съвпадат с сложен бан, но когато банът се премахне ботът ще ги маха.
set force-expire 0
Сложете това на 1 ако искате ботът ви да премахва bans/exempts/invites сложени от друг бот в канала.
set share-greet 0
Ако е 1 ботът ще поделя инфотата на потребители си с другите ботове в канала ако поделя датата си.
set use-info 1
Сложете това на 1 ако искате потребителите ви да имат инфо линия.
channel add #channel { SETTINGS }
Добавя статичен канал. Има много различни опции които можете да добавите, някой от тях ще ги обясним.
chanmode +/-<modes>
Тази настройка позволява на бота да променя модове в канала. Винаги ще добавя +<modes> и ще маха -<modes>. Ако каналът ви има +к можете да го сложите тук за да може ботът да влезе. Пример за това е
channel add #IRCHelp { chanmode "+k edi" }
idle-kick 0
Тази настройка ще накара ботът да проверява всяка минута за idle потребители, ако е 0 няма да проверява.
stopnethack-mode 0
Тази опция ше накара ботът да премахва @ от всеки който влезе в канала с serverops. Има 7 вида опции които можете да изберете.
0 спира го
1 isoptest (разрешава serverop ако потребителя е +o)
2 wasoptest (разрешава serverop ако потребителя е имал +o преди сплита)
3 позволява serverop ако isop или wasop
4 позволява serverop ако isop и wasop.
5 Ако канала е -bitch, вижте stopnethack-mode 3
Ако канала е +bitch, вижте stopnethack-mode 1
6 Ако канала е -bitch, вижте stopnethack-mode 2
Ако канала е +bitch, вижте stopnethack-mode 4
revenge-mode 1
Тази настройка дефинира как ботът ще наказва лоши потребители. Има 4 начина:
0 Deop потребителя.
1 Deop потребителя и им слага +d за канала.
2 Deop потребителя и им слага +d за канала, след което ги изритва.
3 Deop потребителя,слага +d за канала, след което ги изритва и им слага бан.
aop-delay (minimum:maximum)
Това се използва за autoop, autohalfop, autovoice. Ако op или voice влезе в канала докато друг такъв изчаква, ботът ще се опита да сложи двата мода с един ред.
aop-delay 0 Не използва закаснение.
aop-delay X Закаснение с X секунди.
aop-delay X:Y Рандом закаснение м/у X и Y.
need-op { putserv "PRIVMSG CS :op all" }
Това ще накара ботът да стартира скрипта в скобите ако няма @. Скриптът трябва да е по малък от 120 символа. Ако исползвате TCL скрипт като getops.tcl или botnetop.tcl, не би трябвало да използвате тези настройки.
need-invite { putserv "PRIVMSG CS :clear #канал modes" }
Съшото както при need-op само че за invite.
need-key { putserv "PRIVMSG CS :clear #канал modes}
Същото както предишните.
need-unban { putserv "PRIVMSG CS :unban #канал" }
Същото както предишните.
need-limit { putserv "PRIVMSG CS :clear #канал modes"}
Същото както предишните.
Ако искате по голяма ефективност можете да замените putserv s putquick!
channel set <chan> +/-<setting>
Има много различни опции за канал които можете да дефинирате. Могат да бъдат пуснати или изключени с + или - пред тях.
Ето и пълен списък с тях:
enforcebans - изритва хора които имат бан в канала
dynamicbans - оставя само активните банове за канала когато са нужни
userbans - позволява на други потребители в канала да слагат банове
dynamicexempts - оставя само активните +e в канала когато има нужда
userexempts - позволява да се слагат +е директно
dynamicinvites - ? Тъпо а;б
userinvites - ? Тъпо я !
autoop - автоматично дава операторски права на потребители когато влязат в канала
bitch - само потребители с +о флаг могат да имат операторски права в канала
greet - казва инфото на потребителят когато влезе в канала
protectops - дава отново +о на потребител които е бил деопнат
protectfriends - дава отново операторски права на +f потребител на които са били отнети
dontkickops - никога не рита +о потребители
wasoptest - прави wasop тест за +stopnethack
inactive - никога не влиза в този канал, или го напуска ако вече е в него.Полезно е когато искате да накарте ботът да излезе от каналът без да губите настроиките му
statuslog - записва статусът на канала всеки 5 минути
stopnethack - премахва операторските права на всеки които влезе в каналът с serverops (след сплит)
cycle - циркулира канала когато няма операторски права
revenge - предприема деиствия срещу всеки които ритне, деопне +f потребител също така и към себе си
sectet - не дава информация за каналът в ботнетът
shared - поделя настроиките на потребителите за каналът
autovoice - кара ботът да следи за +v потребители
Mодулa dns осигурява асинхронизиранна dns поддръжка.Това ще избегне дългите периоди в които бота овисва, чакайки ресолва на хостнаме, което често може да доведе до timeout на всички други връзки. Този модул не изисква други модули заредени и се зарежда като добавите loadmodule dns в конф. файла.
Друг модуле е server.mod който добавя основната поддръжка за IRC. Трябва да заредите този модул ако искате ботът ви да влезе в IRC като добавите loadmodule server в конфа си.
Довълнителни настройки:
set net-type 0
Каква е вашата мрежа?
0 = EFnet (non +e/+I hybrid)
1 = IRCnet
2 = Undernet
3 = DALnet
4 = EFnet +e/+I hybrid
5 = Others
set nick "LamestBot"
Псевдонимът който ботът ви ще използва в IRC.
set altnick "L?m?stB?t"
Алтернативният псевдоним който ботът ви ще използва. Ако използвате '?' ботът ще генерира случаен символ.
set keep-nick 1
Тази настройка ще накара бота ви да се опитва да си върне псевдонима към оригиналният ако е зает.
set realname "/msg LamestBot hello"
Полето за realname което ще се появи при /whois на бота.
set init-server { putserv "MODE $botnick +i-ws" }
Командата която първа ще се стартира когато бота се върже към IRC. ВНИМАНИЕ: !!!! МНОГО потребители добавят тук ред в който ботът им да се идентифицира към NS !!!! НЕ ГО правете !!! това е security hazard защото при .status all се виждат тези полета и така потребител може да види паролата на бота ви.
set servers { irc.change.this:6667 irc.example.com}
Сървърите към които ботът ще се върже. Формата е server[:port[:password]]
set default-port 6667
Портът който бота ще използва по подразбиране.
set server-cycle-wait 60
Тези настройки дефинират колко време бота ще изчака докато премине на друг сървър след като бъде разкачен от моментният.
Ако е 0 ще го направи веднага.
set never-give-up 1
Това ще кара ботът ви да циркулира непрестано докато не успее да се свърже успешно.
set server-timeout 60
Колко време трябва бота да изчака преди да премине на друг сървър.
set use-console-r 0
Тази настройка ви позволява да логвате цялата информация получена от сървърът през конзолен мод 'r'. Внимавайте защото това е голям пробив в сигурноста, позволявайки на хора да виждат паролите на потребители. За сега този мод е ограничен
само за +n потребители.
set strict-host 0
Променете го на 1 ако не искате ботът ви да пропуска '~' пред user@host.
set lowercase-ctcp 0
Ако искате ботът ви да отговаря на ctcp заявки с малки букви сложете това на 1
set double-mode 0
Позволява двa едни и същи мода да се сложат.
set double-server 0
Позволява две едни и същи съобщения.
CTCP модулът осигурява нормалните ctcp отговори които се очакват. Без него CTCP CHAT няма да работи. Този модил изисква server модула да бъде зареден, за зареждането му сложете loadmodule ctcp в конф файла. Настройките които вървят с този модул са:
set ctcp-mode 0
Настройте как ctcp модула трябва да отговаря на ctcp-тата. Има 3 възможности:
0: Нормално
1: Ботът игнорира всички ctcp-та, освен CHAT и PING от +o потребители.
2: Нормално, но бота няма да отговаря на повече от Х ctcp-та за Y секунди (дефинирано от 'set flood-ctcp').
Има оше няколко променливи които ще ви се сторят интересни:
ctcp-version, ctcp-finger, и ctcp-userinfo. Настройте ги по ваше желание.
irc модулa контролира взаимодействието на ботовете в IRC. Позволява на бота да влиза в канали, занимава се с потребителската листа на каналите и др. Трябва да заредите този модул ако искате бота ви да влезе в IRC. Също така и server, channels модулите.
Допълнителни настройки:
set bounce-bans 1
Сложете 1 ако искате бота да отхвърля всички банове от сървърът.
set bounce-modes 0
Сложете 1 ако искате бота да отхвърля всички модове сложени от сървърът.
set max-modes 30
Определяте лимита от глобални +b/+e/+I модове на вашият IRC server.
set max-bans 20
Максималният брой банове които бота да слага в канала. Бота няма да слага повече банове ако се достигне лимита.
set kick-fun 0
Сложете това 1 ако искате бота да рита за главни букви/ctcp заявки в канала. Запомнете това че ако го прави, няма да им сложи бан и това може да започне kick флуд.
set ban-fun 0
Сложете това 1 ако искате бота да слага бан за главни букви/ctcp заявки в канала. Това може да предпази от kick флуд но може да препълни бан листата.
set learn-users 0
Ако искате хората да могат сами да се добавят в потребителската листа на бота с начални флагове като изпратят 'hello' съобщение на бота сложете това на 1.
set wait-split 600
Сложете периода от време (в секунди) за да изчаква някой да се върне от net сплит.
set wait-info 180
Сложете периода от време (в секунди) когато някой трябва да е извън канала и като влезе бота да го поздрави.
set mode-buf-length 200
Малсималният брой от байтове който изпраща към сървърът като аргумент на модовете. За повечето сървъри е 200.
unbind msg - hello *msg:hello
bind msg - myword *msg:hello
Коментирайте това!!!
unbind msg - ident *msg:ident
unbind msg - addhost *msg:addhost
Много опити за Take Over стават порати опити да се отгатне паролата за идентифициране чрез /msg %b ident ...
Можете както е примера тук можете да я махнете и да сложите нова, или да я разрешите коментирайки редовете.
set no-chanrec-info 0
Ако искате инфото ви да се изписва в всички канали в които влезете сложете това на 1.
set modes-per-line 3
Някой мрежи позволяват повече от 1 мод на линия. Тук можете да дефинирате колко мода позволява вашата мрежа (UniBG позволява по 4 на линия)
Transfer модула осигурява поддръжка на DCC изпрашане/получаване и тарнсфериране на потребителския файл между share ботовете.
Не изисква други модули, и се зарежда с loadmodule transfer в конф файла.
Допълнителни настройки:
set max-dloads 3
Сложете максималния номер на позволените downloads за един потребител.
set dcc-block 1024
Определяте големината на block dcc трансфера. ircII използва 512 байта,
но се предполага, че може и да е по-малка. 1024 е стандарта в тези дни. Сложете го на 0, ако искате да ипозлвате turbo-dcc (препорачително).
set copy-to-tmp 1
Включете тази настройка ако искате да копирате файловете в /tmp директорията преди да ги пращате. Това е полезно за повечето системи за файлова стабилност, но ако директориите са NFS мounted, това е по-трудно и ще искате да го сложите на 0. Ако имате малко дисково пространство, също така може би ще искате да го сложите на 0.
set xfer-timeout 30
Сложете тук времето в секунди да се изчакат преди неактивния трансфер да спре.
Share модула осигурява поделянена потребителския файл между два директно свързани бота. Този модул изисква transfer и channels модулите заредени, зарежда се с loadmodule share в конфа.
Допълнителни настройки:
set allow-resync 0
Когато два бота са разкачени, тази настройка тази настройка им позволява да създадът resync буфер, който запазва всички промени през периода, когато са били разкачени. Когато се опитат да се свържат отново те няма да изпращат целия файл, а само промените (resync буфера).
set resync-time 900
Тази настройка задава колко дълго да задържа бота resync датата преди да я изхвърля. Тази настройка е само за allow-resync.
set private-global 0
Когато поделята потребителския файл, НЕ ПРИЕМАТЕ глобални промени на флаговете от другия бот?
ВНИМАНИЕ: Ботът все още ще изпраща направените промени от него, той просто няма да приема никакви глобални промени от другия бот.
set private-globals "mnot"
Когато поделяте листата, ако private-global не е зададено, какви промени на глобалните флагове от другия бот трябва да се игнорират.
set private-user 0
Когато поделята файла, да не се приемат НИКАКВИ промени от другия бот?
Параноичните хора трябва да използват тази настройка при техните hub ботове. Това ще накара всички промени на поребителския файл да се правят от hub-а (paranoid като rhodie).
set override-bots 0
Тази настройка прави бота да отхвърля всички локални промени, освен ако те не се направени от hub-а.
ВНИМАНИЕ: Никакви пароли или бот флагове се поделят, само портовете и адресите се добавят за share процедурата.
Това работи само с hubs , които са версия 1.5.1 или по-голяма.
Notes модула осигурява подръжка за запазване на съобщения м/у потребителите.
Забележете че изпращането на съобщенията м/у потребителите се поддържа и в чистият конф. това е само за запазване на съобщенията за по късно получаване. Този модул не изисква други заредени модули, зарежда се с loadmodule notes в конфа.
Допълнителни настройки:
set notefile "LamestBot.notes"
Сложете тук името на файла в който ще се запазват съобщенията.
set max-notes 50
Определяте максималния брой съобщения които могат да се запишат за дадения потребител (за да се предпазите от flood).
set note-life 60
След колко време (в дни) съобщението ще бъде изтрито.
set allow-fwd 0
Сложете това на 1, ако искате да позволите на потребителите да използват пренасочване на съобщенията от един бот към друг.
set notify-users 1
Сложете това на 1, ако искате ботът през час да съобщава на потребителите ако имат съобщение.
set notify-onjoin 1
Сложете това на 1, ако искате ботът да съобщава на потребителите за съобщение когато влязат в канала.
Console модула осигурява запазването на конзолните настройки при излизането на бота ви или при изпълнението на .store командата. Модълът не изисква други модули да са заредени, за да го заредите използвайте линията loadmodule console в конфигфайла си. Също така можете да сложите и някой други променливи свързани с него:
set console-autosave 1
Да се запазват ли конзолните настройки автоматично? В противен случай те ще се запазят с командата .store.
set force-channel 0
Ако потребителят няма конзолни настройки запазени, кой канал искате да бъде сложем автоматично.
set info-party 0
Включете това ако искате глобална инфо линия на потребителя да се анонсира в botnet-а когато той влезе.
Compress модула осигурвява поддръжка на файл компресия. Използва се за да се компресират файлове чрез TCL или да се предава потребителският файл компресиран при share за да се спести скорост. Този модул се нуждае от зареден share модул, за да го заредите трябва да сложете в конфигурационият си файл линията 'loadmodule compress'. Има и други променливи които можеби ще искате да настроите в конфигурационият си файл
set share-compressed 1 (изключен по-принцип)
Позволява пращането на компресирани потребителски файлове. Потребителските файлове се компресират с левел дефиниран в `compress-level'.
set compress-level 9
По-принцип това е левелът на компресия който се използва.
IRC означава [Internet Relay Chat]. IRC мрежата е направена от многобройни сървъри свързани един към друг. В IRC имате канали, колко зависи от мрежата на която сте. Ако сте съвсем бос в IRC, предлагаме ви да прочетете преди всичко http://irchelp.unibg.org/irchelp/IRC/Do ... ew2irc.htm
Вероятно използвате клиент като mIRC (http://www.mirc.com/) за Windows, X-Chat (http://xchat.org/) за X11 или BitchX (http://www.bitchx.com/) за Linux за да се свържете към IRC сървърът, но какво точно прави този клиент?
Тези клиенти изпращат специални команди до сървърът за да се уверят че това което пишете отива в правилната посока. Ако трябва да правите скрипт който да изпраща информация към някой през msg, notice, ctcp или нещо друго не само можете да направите нещо просто като [notice <nickname> <message>]. Трябва да изпратите специфични команди към сървърът точно както mIRC, X-Chat и BitchX го правят, така че трябва да знаете малко повече как IRC сървърът работи с IRC клиентите ако искате да осъществите намисленото.
Бот е съкращение от робот. Ботовете са доста често срещани на много IRC мрежи. Също както роботите от истинския живот те отговарят на команди и неща, на които са програмирани да отговарят. Някои могат да кажат, че те приличат на добре обучени кучета. В IRC ботовете често се използват, за да държат канал или да "забавляват" канал. Може би е по-точно да се каже, че бота позволява на потребителите да се забавляват, тъй като бота отговаря на команди, които потребителя е изпълнил. Ботовете доста често се използват само, за да държат операторските права в някой канал.
Eggdrop е най-популярния в света Open Source IRC бот написан на C, създаден за гъвкавост и лесно използване, а и неговата дистрибуция е безплатна под GNU General Public License (GPL). Ако НЕ знаете какво е IRC, тогава вероятно Eggdrop не е за вас!
Eggdrop е начално написан от Robey Pointer; както и да е, той отдавна не работи върху Eggdrop, така че моля ви не се свързвайте с него за решение на някакъв проблем или бъг. Тъй като той работи като background процес на shell акаунт, той може да стои в IRC 24 часа 7 дни в седмицата.
Първоначално е създаден за война в IRC, но сега той може би е най-добрия IRC бот. Изглежда като нормален потребител, само че има много други функции. Като например всички потребители, които имат права в бота (да правят това) могат да влязат на DCC Chat с него и да пращат съобщения на други потребители, които не са в момента в IRC. Съобщенията автоматично ще бъдат запазени в бота. Когато потребителят влезе в канала, в който е бота, той му праща съобщение.
Ако други потребители са в DCC с eggdrop бота те ще имат възможността да говорят един с друг в dcc chat прозореца, така както си говорят в канал. Това е една от най-забележителните функции на eggdrop бота. Мислете за него като мулти DCC chat, или като малко IRC (заедно с каналите). Вие можете да свържете други ботове и да увеличите partyline-а, докато накрая се получи наистина нещо приличащо досущ на IRC.
Eggdrop стои в канала и го пази: защитава го от TakeOvers (това в наши времена е почти невъзможно с наличието на Services), да разпознава наказани потребители и да ги наказва, да разпознава привилигированите потребители и да им позволява да имат операторски права и т.н.
За да си направите бота по-добър, може би ще искате да му сложите определени скриптове. Това може да означава всичко, включвайки игри, гласувания, скриптове за даване на помощ и т.н. Един интересен скрипт може да ви направи бота по такъв начин, че той да говори като нормален потребител (почти като него...). На подобни неща може да се подлъже някой новак в IRC. После ще засегнем въпроса за TCL скриптовете.
Имаше доста малко версии на Eggdrop ботове направени през последните години. Някои хора все още си използваха 1.3.x версиите, но не и ние. Доста бъгове бяха оправени оттогава, и доста функции бяха добавени.
Препоръчваме ви ВИНАГИ да използвате най-новата egghead eggdrop 1.6.x версия, която винаги е считана за най-стабилната и най-поддържана версия.
Ако гледате Uptime страницата можете да забележете няколко eggdrop 1.7 ботове, които са пуснати. 1.7 е версия само за разработчици и няма да бъде пусната за публично използване. Щом веднъж стане, версията ще се смени на 1.8. Ще бъде голяма крачка за eggdrop, но все още не е направена. Има повече бъгове отколкото новости
Друго разклонение на оргиналния eggdrop бот от Robey Pointer е Eggdrop Racbot. Различен е от стандартния (още наричан "Ванила Eggdrop") egghead eggdrop, който е рядко използван и неподдържан от повечето помощни канали за eggdrop.
Каквото и да правите не използвайте eggdrop 2.x, който е стар забравен проект, в който са се опитали напълно да пренапишат eggdrop кода, но не са успели.
Ако си говорим за Windows, използвайте Windrop, или си компилирайте собствен бот използвайте Cygwin.
Разбира се има и други IRC ботове, даже и mIRC скриптове, които се опитват да приличат на ботове, ето и малко имена на ботове: Blootbot, Darkbot, Eggdrop Racbot, Energymech, Infobot... Разбира се има и още много много... И само вие можете да си отговорите на въпроса защо да използвам точно eggdrop. А и надявам се ще си отговорите на този въпрос след като прочетете това.
Първото нещо преди да си вземето eggdrop е да се питате имате ли нужда от него? Ако отговора е да, можете да вземете най-новия eggdrop бот от http://www.geteggdrop.com или от ftp://ftp.eggheads.org/pub/eggdrop/source/1.6, http://irchelp.unibg.org разбира се можете да го вземете и от нашата страница ;) стараем се винаги да бъдем в крак с новоизлезлите версии.
Можете да намерите помощ за eggdrop на следните страници: http://egghelp.org, http://www.eggfaq.com, http://www.eggheads.org, http://irchelp.unibg.org/irchelp/IRC/Eggdrop.htm (на български). Можете и да потърсите различни страници с google или любимата си търсачка. В IRC винаги можете да потърсите помощ в #irchelp @UniBG, @eggdrop @Undernet, #eggfaq @IRCNet.
Трябва да планирате използването на поне два бота от различни шелове. Причината е, че шеловете падат от време на време. След като си изберете добро място където да пуснете вашият eggdrop можете да продължите към инсталацията и конфигурацията му.
Обикновенно инсталацията е лесна. Ако шела ви има TCL инсталиран, всичко ще мине добре (ако имате достатъчно място). Моля не забравяйте, че конфигурационния файл трябва да бъде добре прегледан.
За да подкарате eggdrop ви трябват няколко неща:
Някакъв Unix акаунт (няма значение дали ще е локален или отдалечен, стига да ви дава възможността да пускате Eggdrop и да остава процеса ви пуснат след като излезете).
Доста добри познания за IRC и Unix, както и да знаете какво е DCC chat.
Около 500k свободно място, или повече, зависи от системата (на Linux, изпълнимите файлове заемат около 400k -- ще е доста по-голям на RISC системи)
TCL библиотеки (lib файлове), които могат да бъдат намерени на http://www.linuxberg.com/
Ако искате ботът ви да бъде пуснат 24/7 (24 часа на ден, 7 дни в седмицата), ви трябва шел акаунт на компютър, който е 24/7 в Интернет. Можете да получите такъв шел или като си го купите или като целунете администратора и го накарате да ви даде един безплатно (нито един от онези "безплатни шел акаунт провайдери" няма да ви даде да си пуснете Eggdrop бот, защото веднага след като излезете от системата вашият процес ще бъде спрян). Има много добри шел провайдъри в последно време. Aко искате български шел опитайте регистрация на http://aquila.online.bg, http://shells.go-link.net (супер скапан шел), пък ако ви се занимава да търсите на http://www.bylur.net/free/ има няколко безплатни шел провидера.
Сега частта с TCL:
Преди да компилирате eggdrop, вие трябва да имате инсталиран TCL на системата. Повечето системи би трябвало да си имат TCL.
Пуснете ./configure скрипта, за да ви намери TCL-а вместо вас. Ако това се провали може би бихте искали да си го потърсите сами. Можете да проверите като напишете "tclsh". Ако работи, ще получите "%" промпт, и просто напишете "exit", за да излезете. Това означава, че системата ви има TCL инсталиран. Ако tclsh не работи, това би трябвало да означава, че нямате TCL, и ще трябва да го изтеглите и да го инсталирате. Има и още един доста болезнен начин за откриването на инсталиран TCL... Библиотеките се казват libtclX.X.so или libtclX.X.a. Тези "X.X" са версията на вашата библиотека. Разшиерението '.so' означава, че е "динамично зареждаща се библиотека", а '.а'' означава, че ще е "статично свързана". Можете да опитате да го намерите така: find /usr -name "libtcl*" -print
Чрез тази команда ще имате да си чакате доста време... Направете и същото за header файла: find /usr -name "tcl.h" -print
Веднъж щом сте ги намерили, кажете на ./configure скрипта, къде са. Това трябва да се направи като се дефинират стойностите на TCLLIB и TCLINC. Направете следното:
За sh/bash/ksh шелове:
TCLLIB=/directory/of/the/library
TCLINC=/directory/of/the/header
export TCLLIB TCLINC
За csh/tcsh шелове:
setenv TCLLIB /directory/of/the/library
setenv TCLINC /directory/of/the/header
Можете да провете какъв шел ползвате като напишете echo $SHELL
Ако това не проработи, напишете 'ps' и вижте какви процеси сте пуснали. Намерете този който започва с тире '-', това вероятно е вашият логин шел. Това може да е някой от следните: sh, bash, ksh, csh или tcsh (или други...).
След това пуснете ./configure отново, за да ви намери файловете.
Най-доброто FTP, от което можете да си вземете TCL е: ftp://ftp.scriptics.com/pub/tcl.
Най-добрата версия е 8.4.
Можете да си компилирате TCL 8.4 във вашата HOME директория, ако имате достатъчно място. Или да го компилирате в /tmp, там ще имате достатъчно свободно място. Направете следното:
$ mkdir /tmp/tcl
$ cd /tmp/tcl
$ ftp ftp.scriptics.com
Login: ftp
Password: your@email
ftp> cd /pub/tcl/tcl8_4
ftp> bin
ftp> get tcl8.4a3.tar.gz
..чакайте да се изтегли файла. След това:
ftp> quit
$ gzip -dc tcl8.4a3.tar.gz | tar xvf -
$ cd tcl8.4/unix
$ ./configure --prefix=/tmp/tcl --exec-prefix=/tmp/tcl --disable-shared
..чакайте configure да си свърши работата... След това:
% make (и чакате...)
% make install (чакате още...)
Е вече имате TCL библиотеките в /tmp/tcl. Сега кажете на eggdrop къде да ги намери, като направите следните настройки:
На bash/sh/ksh шелове:
% TCLINC=/tmp/tcl/include
% TCLLIB=/tmp/tcl/lib
% export TCLINC TCLLIB
На csh/tcsh шелове:
% setenv TCLINC /tmp/tcl/include
% setenv TCLLIB /tmp/tcl/lib
След това просто пуснете eggdrop 'configure' скрипта и стискайте палци да засече TCL версията 8.4. Ако го направи (а и би трябвало, ако спазвате стъпките правилно), можете да си компилирате бота както обикновенно, и той ще има TCL 7.6 библиотеките. След компилирането можете просто да изтриете всичко в /tmp/tcl, тей като всичко това вече е включено в бота ви. Или да си го оставите там, ако провайдера не ви го изтрие ще можете да си компилирате още някой друг бот в близкото бъдеще. Ако имате място можехте да направите цялата операция не в /tmp, а в $HOME директорията ви.
Ако си купите шел и знаете, че те ви дават да си пускате IRC ботове (такава важна информация би трябвало да е написана на тяхната уеб страница), можете да сте 100% сигурни, че те ще имат TCL библиотеките.
Преди да започнете се питайте, трябва ли ми наистина бот. Много хора пускат бото само като "играчки" или за цел унищожение.
Ако искате да го използвате за унищожение, хайде давайте, но преди това изтрийте цялата си eggdrop директория. Почти невъзможно е eggdrop да бъде използван за подобни цели. Има и ограничения за изпращането на командите към потребител/канал.
Трябва да намерите поне един сървър, който да ви позволи да пускате ботове (повечето сървъри в UniBG го разрешават). Можете да направите това като прочетете MOTD-то. Ако правилата ви харесат просто пуснете вашият eggdrop на този сървър. Или на сървърът който ви е най-бърз от шелът. Това можете да го разберете ако имате права за ping или traceroute. На колкото по малко hop-а е един сървър от вашият шек толкова по бързо ще върви ботът ви.
Говорейки глобално, ботове ви трябват, ако канала ви има хора постоянно (24 часа на ден) и няма ботове. Ако канала ви има няколко бота, предполага се, че не ви трябват повече. Много ботове не вършат по-добра работа. Повече ботове просто губят скоростта на сървъра и мястото от където са пуснати. Трябват ви много ботове, само ако канала ви е твърде голям.
Ботовете НЕ могат да осигурят пълна защита. Нищо не може. Eggdrop ще се опита да направи това колкото се може по-добре, но няма гаранции.
Много хора ... (мързели като нас) ги мързи постояно да обновяват версията на ботът си като смъкват новия сорс и да прекомпилират блах блах... затова хората са измислили пачовете с които можете да направите ъпдейтът малко по безболезнен само с прекомпилиране ;) За да си patch-нете eggdrop source-а ви трябва програмата 'patch', и то поне версия 2.1. Напишете:
patch -v
За да разберете, коя версия имате. Ако нямате отговор за версията, то може би вие пускате друг файл. Вижте
http://tick.informatik.uni-stuttgart.de ... drop/patch
и си намерете точния 'patch' за вашата система. Най-новите пачове се намират на
ftp://ftp.eggdrop.net/pub/eggdrop/unofficial/patches1.6
ftp://ftp.sodre.net/pub/eggdrop/patches1.6
Можете да си patch-нете eggdrop бота така:
Ако той завършва на .gz:
$ gzip -d patch-file
Влезте в source директорията на eggdrop бота ви. Сложете пача с:
$ patch -p1 < eggdrop1.6.12.patch
Дали нещо не е станало можете да разберете с:
$ find . -name "*.rej" -print
Ако нещо се е пообъркало по следният начин можете да изтриете rejected файловете и да опитате отново с друг пач.
$ find . \( -iname "*.rej" -or -iname "*.orig" -or -iname "*~" \) -exec rm -f {} \;
Ако програмата 'patch' ви попита "What file to patch", то сигурно нямате текущата версията на програмата. Ако я имате, то може би сте объркали версията на eggdrop бота (пачвате с patch за 1.3 eggdrop 1.6 примерно). Убедете се, че версията на eggdrop бота и версията на patch съвпадат. След това просто прекомпилирайте с 'make'.
За да си пуснете бота с SSL трябва да го patch-нете по следния начин:
$ cd eggdrop1.6.12
$ wget -c http://irchelp.unibg.org/Downloads/eggd ... .6.diff.gz
$ patch -p1 < eggdrop1.6.12-ssl-v1.6.diff.gz
или да изтеглите направо пачнат бот от c http://irchelp.unibg.org/Downloads/prec ... 12-ssl.tgz
Вече спокойно можете да започнете със инсталацията.
Влезте във вашата директория
# cd
Като за начало трябва да се здобиете с сорсе кода просто пишете следното във вашият шел.
# wget -cb http://irchelp.unibg.org/irchelp/Downlo ... .12.tar.gz
Ако нямате wget можете да се здобиете с архива използваики lynx или друг подобен инструмент.
# lynx -source http://irchelp.unibg.org/irchelp/Downlo ... .12.tar.gz > eggdrop1.6.12.tar.gz
След това просто разкомпресираите файла и влезте в новосъздадената директория. (можете да изтриете компресирания файл)
# tar xzvf eggdrop1.6.12.tar.gz
# rm -f eggdrop1.6.12.tar.gz
# cd eggdrop1.6.12/
ВНИМАНИЕ:Ако се опитвате да инсталирате eggdrop на платформа различна от Linux използваите следния начин:
# gzip -d eggdrop1.6.12.tar.gz
# tar xf eggdrop1.6.12.tar
# rm -f eggdrop1.6.12.tar
# cd eggdrop1.6.12/
Сега.. нека да стартираме конфигурационият скрипт. (тои не би трябвало да изписва грешки). Между доругото тои изписва доста съобщения, просто ги игнорираите ако не изписват грешки. Напредналите потребители могат да напишат:
# ./configure --help
за да видят някои допалнителни опции които може да са им полезни, но ако сте новак в eggdrop започнете 'бърза' инсталация:
# ./configure
След като скрипта намери всичко което му е нужно за да продължи( главно Tcl,които се изисква за да се компилира бота) нека да пристапим към компилирането на eggdrop-а.Ето някой неща които трябва да направите( ако искате вашият eggdrop да достигне максимума от способностите си).Така че нека да започнем от src/ директория.
# mcedit src/eggdrop.h
Тук можете да редактирате максималната далжина на псевдоними които можете да добавите във вашият бот.( по начало тя е 9, добре е да я направите 15 или колкото е максимумат разрешен от мрежата на която стартирате вашият бот, така че ще сте способни да добавяте всичките видове превдоними във вашата база данни).
#define HANDLEN 9 /* valid values 9->NICKMAX */
ВНИМАНИЕ:Бъдете внимателен това е колкото хубаво толкова и лошо, защото може да попречи на линкването на бота ви към бот които е компилиран с началната далжина на псевдонима(9).Първо проверете дали далжината на псевдонима савпада на всичките ботове от ботнет-а ви и тогава направете правилната промяна. Можете сега да обърнете внимание на някои по специфични настройки на файловете в тази директория или да го оставите за после в случай че се зблъскате проблем от това естество. Във файлът mem.c се намира описанието на това колко голяма че е memory таблицата на ботът ви. Какво ви касае това ли? Ако имате прекалено много потребители ботът ви ще почне да пада със съобщение "Memory table full" . Трябва просто да отворите със някакъв текстови редактор src/mem.c и заменете следното
#define MEMTBLSIZE 25000 /* yikes! */
с някаква по голяма стойност например 50000, след което прекомпилирайте ботът отново.Ако сложите лимитът на 75000 всичко ще е ОК. Можете да проверите моментното използване на памет като напишете .status в ботът. Ако тя се напълни можете да срешнете затруднения с добавянето на нови потребители или с рестартирането на ботът. Друг файл на който можете да обърнете внимание е src/mod/server.mod/server.c който в последствие може да ви донесе главоболия. Ако ботът ви почне да излиза от IRC със съобшение Excess flood то е не от друго а защото стойностите на msgrate са твърде малки. Отворете файлът и потърсете за следните редове:
/* Number of seconds to wait between transmitting queued lines to the server
* lower this value at your own risk. ircd is known to start flood control
* at 512 bytes/2 seconds.
*/
#define msgrate 2
и го променете на по висока стойност
#define msgrate 5
След което прекомпилирайте ботът.
Тази опция контролира колко бързо ботът изпраща съобщенията към сървърът. Ако сложите висока стойност, шансът ботът ви да излезе по подобен начин е минимален, но от друга страна ботът става по бавен. Мислим че това е всичко за сега в тази директория поне за повече не се сещаме.
Докато сте в src/ директорията можете да направите малко трикове с uptime-а на бота си Доста често виждаме параноици които умират за голям uptime на бота си. Ето как можете сами да го вдигнете:
$ mcedit src/chanprog.c
Отидете на ред 231 и се огледайте за
void tell_verbose_uptime(int idx)
{
char s[256], s1[121];
time_t now2, hr, min;
now2 = now - online_since;
s[0] = 0;
след него добавете
now2 += (1 * 60 * 60 * 24);
под него трябва да има
if (now2 > 86400) {
/* days */
слезте по надолу кадето започва
/* Dump status info out to dcc
*/
void tell_verbose_status(int idx)
{
това е приблизително на ред 296
if (admin[0])
dprintf(idx, "Admin: %s\n", admin);
now2 = now - online_since;
s[0] = 0;
добавете
now2 += (1 * 60 * 60 * 24);
под него трябва да остане
if (now2 > 86400) {
/* days */
Този пример е за +1 ден, ако искате да увеличите стойност-а променяте 1, например за 2 дена пример-а ще е
now2 += (2 * 60 * 60 * 24); и т.н.
Сега ако искате да промените някои от съобщенията във вашият бот ,kick съобщения и друг текст трябва да редактирате language файла.
# mcedit language/core.english.lang
Тук просто трябва да замените текста с собствен!
ВНИМАНИЕ:Ако вашият компютър няма mcedit можете да използвате други текстови редактори.( vi,pico,vim ОЩЕ!!!)
Сега е момента (преди да компилирате бота) да компилирате допалнителни модули. На http://irchelp.unibg.org/irchelp/IRC/Eggdrop.htm можете да видите завиден архив от модули.
Сега просто се наслаждаваите...
Първо трябва да компилирате допалнителните модули на вашият бот(ако сте добавили такива)... Модулите са част от кода които се зареждат отделно от бота и добавят допълнителни функции. Например, с filesys модула добавяте цялата file система.
# make config
След всички редове които се изписват трябва да получите следното...
building ./src/mod/Makefile... done.
You can now compile the bot, using "make".
Сега вече можете да започнете с главната компилация...
# make
Стартираме 'make' скрипта!
Можете да свържете модулите си статично, ако използвате 'make static'. Също така можете да се опитате да компилирате динамични модули в/у статична система с 'make eggdrop'.
Ako при компилирането получите 'Makefile:3 :invalid operator' и подобни неща когато напишите 'make' използвайте 'gmake'. Друга често срещана грешка е при компилирането е липсата на патечките в /etc/ld.conf и се получава следната грешка:
Linking eggdrop...
gcc -pipe -o ../eggdrop bg.o botcmd.o botmsg.o botnet.o chanprog.o cmds.o dcc.o dccutil.o dns.o flags.o language.o main.o mem.o misc.o misc_file.o modules.o net.o rfc1459.o tcl.o tcldcc.o tclhash.o tclmisc.o tcluser.o userent.o userrec.o users.o -L/usr/local/lib -ltcl8.4 -lm -ldl -ldns -lnsl md5/md5c.o compat/*.o `cat mod/mod.xlibs`
strip ../eggdrop
Successful compile: eggdrop
make[1]: Leaving directory `/usr/local/eggdrop1.6.12/src'
./eggdrop: error while loading shared libraries: libtcl8.4.so: cannot open shared object file: No such file or directory
make: *** [modegg] Error 127
Дава грешка че не намира даденият файл но при търсенето му той е на мястото си:
locate libtcl8.4.so
/usr/local/lib/libtcl8.4.so
Проблемът идва от там че пътят /usr/local/lib/ го няма в /etc/ld.so.conf файлът. Ако сте root добавете го в файлът след което стартирайте 'ldconfig'. Ако сте само потребител преди да стартирате конфигурационият скрипт напишете export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib или кадето е пътят.
Хмм, отново доста съобщения ;)Не се притесняваите от това.След всичко накрая трябва да получите следното...
modules made:
-rwxrwxr-x 1 Randal Randal 8292 Feb 27 19:17 assoc.so
-rwxrwxr-x 1 Randal Randal 13620 Feb 27 19:17 blowfish.so
-rwxrwxr-x 1 Randal Randal 99876 Feb 27 19:18 channels.so
-rwxrwxr-x 1 Randal Randal 9364 Feb 27 19:18 compress.so
-rwxrwxr-x 1 Randal Randal 8908 Feb 27 19:18 console.so
-rwxrwxr-x 1 Randal Randal 7348 Feb 27 19:18 ctcp.so
-rwxrwxr-x 1 Randal Randal 11876 Feb 27 19:18 dns.so
-rwxrwxr-x 1 Randal Randal 95548 Feb 27 19:18 filesys.so
-rwxrwxr-x 1 Randal Randal 118100 Feb 27 19:19 irc.so
-rwxrwxr-x 1 Randal Randal 27444 Feb 27 19:19 notes.so
-rwxrwxr-x 1 Randal Randal 12468 Feb 27 19:19 seen.so
-rwxrwxr-x 1 Randal Randal 58356 Feb 27 19:19 server.so
-rwxrwxr-x 1 Randal Randal 44484 Feb 27 19:19 share.so
-rwxrwxr-x 1 Randal Randal 36928 Feb 27 19:19 transfer.so
-rwxrwxr-x 1 Randal Randal 13044 Feb 27 19:19 wire.so
Now run "make install" to install your bot.
Сега продалжете с изпалнението на командата 'make install' която ще инсталира бота в вашата директория(/home/user/eggdrop) Ако желаете да го инсталирате на различно място от тази директория използваите :
make install DEST=<directory>
Пример:
# make install DEST=/home/Randal/eggdrop1
ВНИМАНИЕ: Трябва да използвате цялата патечка до директорията в която искате да се инсталира. За бърза инсталация използвайте просто:
# make install
В края трябва да полъчите следното съобщение:
Installation completed.
You MUST ensure that you edit/verify your configuration file.
Use one of the three configuration files distributed with your bot.
Remember to change directory to /home/Randal/eggdrop before you proceed.
Но ако получите съобщение от рода
You're trying to do a MODULE build of eggdrop when you've
already run make for a static build.
You must first type make clean before you can build
a module version.
make: *** [modtest] Error 1
това е защото make install е само за динамично компилиране, напишете make static за статично.
Оооо Да! Сега имате свои собствен бот;)) STOP! Това не е всичко От сега трябва да изваршите доста работа по вашият бот за да го направите работещ. Първо ако сте инсталирали вашият бот под 'root' трябва да изпълните някои прости команди за да дадете способност на юзера да го стартира таи като бот-а не може да се стартира под 'root'.(Можете да го стартирате под 'root', но това е възможно при някои по стари версии).
# cd /home/user
# chown -R user.users *
# cd eggdrop1.6.12/
В случай, че е належащо да се пусне от root трябва да промените source кода(в частност main.c).
if (((int) getuid() == 0) || ((int) geteuid() == 0))
Се сменя на:
if (((int) getuid() == 10) || ((int) geteuid() == 10))
Прекомпилирайте бота наново. (make;make install)
Ако не искате да се занимавата с цялата тази anal история, можете просто да използвате прекомпилиран бот. Такива можете да намерите на нашият сайт (http://irchelp.unibg.org/) почти за всички OS.
Сега сте способен да редактирате и запазите конфигурационните файлове. Копирайте файла 'eggdrop.complete.conf' в някои нов файл, по принцип със същото име като това което бот-а ви ще използва в IRC. Това е полезно и ще влезе в употреба при правенето на crontab за вашият eggdrop. Сега нека започнем с редактирането на вашият конфигурационен файл.
# mcedit LameBot.conf
Решихме да не даваме примерен конфигурационен файл, а да споменем опциите които можете да променяте:
Първата линия от конфигурационния файл за Eggdrop трябва да съдържа пълния път до изпълнимият файл eggdrop. Трябва да е написан по начина, по който е даден примера, или както се прави да работи шел скрипт.
Пример:
#! /home/user/eggdrop1.6.3/eggdrop
Следните неща могат да бъдат сменени (препоръчително е да се) !
set username "ext2s"
Тази настройка дефинира потребителското име, което бота използва в IRC. Настройката няма ефект, когато има пуснат ident daemon на машината.
set admin "PurvoIme VtoroIme <email: [email protected]>"
Тази настройка дефинира, кой ще бъде показан при изпълнение на командите .status,
/msg help, и на други места. Тази информация трябва да бъде включена!
set network "UniBG"
Тази информация се използва само при share с другите ботове от ботнета. Сложете го на мрежата, на която седи ботът ви
(обикновенно това е UniBG).
set timezone "EET"
Тази настройка дефинира зоната, в която е ботът ви. Използва се за вътрешни процедури, както и за "въртенето" на логфайлове и за писането на скриптове. Времевата зона е стринг, който определя името на зоната, в която сте и трябва да бъде най-малко три или повече символа. Например, Central European Time (Централна Европа) (UTC+1),трябва да е "CET".
set offset "2"
Offset настройката дефинира времето, което ще бъде добавено до Coordinated Universal Time (UTC aka GMT), за да се получи местното ви време. Оffset-a e положителен, ако местното време е на запад от главния меридиан и отрицателно, ако е на изток. Стойността (в часове) трябва да е между -23 и 23. Ако например, сте в часовата зона UTC+1, offset-а ви трябва да е -1.
set env(TZ) "$timezone $offset" (изключено по подразбиране)
Ако не искате да се използва настройката часова зона само от скриптовете, а искате да се използва навсякъде откъдето е възможно, използвайте тази настройка.
set my-hostname "127.0.0.1"
set my-ip "127.0.0.1"
Ако използвате виртуален хост (машината ви има повече от едно IP), може би ще искате да изберете кое IP ще ползвате.
Можете да го дефинирате или по хост или по IP. Може би ще искате да го зададете и ако eggdrop бота ви има проблеми с намирането му при стартиране.
addlang "english"
Ако искате eggdrop съобщенията да бъдат показани на някой друг език, променете тази променлива. Алтернатива на това ще бъде да промените стойността на EGG_LANG на езика, който желаете.
Eggdrop има възможността да логва някои неща, от това какво се говори в каналите до partyline командите и файл трансферите.
Лог файловете обикновенно се пазят за 24 часа. След това те ще се преименуват на "(logfilename).yesterday".
След 48 часа, те ще се препокрият с логовете на следващия ден.
set max-logs 5
Това е колко най-много лог файлове е разрешено да се правят. Числото може да се увеличи; както и да е, не го намалявайте.
set max-logsize 0
Колко най-много може да бъде голям вашият лог файл. Сложете го на 0, за да го изключите. Стойността е в килобайти, така че '550' ще означава лог файл до 550 килобайта. Забележете, че това работи само ако имате keep-all-logs set 0 (ИЗКЛЮЧЕНО).
set quick-logs 0
Тази опция може да се окаже доста полезна, ако имате проблеми с лог файловете, които ви запълват quota на харддиска, или самият хард диск или ако логвате +p и го публикувате на уеб, и ви трябва по-нова информация. Забележете, че тази опция може да увеличи използването на процесора ви (но от друга страна ще намали използването на рамта).
logfile <флагове> <канал> "logs/logfajl"
Тази нстраойка казва на бота ви какво да се логва, от къде, и в какъв файл.
Най-използваните флагове за логване са:
m лични съобщения/ctcp-та към бота
k kick-ове, банове, смяна на модове в канал
j влизания, излизания, разцепвания на мрежата за канал
p публичните съобщения в канал
s сървърските връзвания/отцепвания/съобщения
b информация за шерването на ликновете и потребителския файл на бота
c командите, които се използват (през msg или dcc)
x файл трансферите или командите свързани с file-area
r (ако имате use-console-r включена) ВСИЧКО пратено към бота от сървъра
o други: разни информация, грешки - ВАЖНИ НЕЩА
w wallops: съобщенията между Операторите (уверете се, че бота ви има +w в init-server)
Има и други, но предполагам, че те няма да ви трябва, по-добре да бъдем неетични . Има и още осем потребителски дефинирани флага (1-8), които се използват от Tcl скриптовете.
Всеки лог файл пренадлежи на определен канал. Събития от тип 'k', 'j', и 'p' се логват от такъв канал от какъвто те са се случили. Повечето от другите се логват за всички канали. Можете да направите един лог файл да пренадлежи за всички канали, като на мястото за името на канал сложите "*".
Примери:
logfile mco * "logs/eggdrop.log"
logfile jpk #lamest "logs/#lamest.log"
В 'eggdrop.log', сложи лични съобщения/ctcp-та, команди, разни информации, и грешки от всички канали.
В '#lamest.log', логни всички влизания, излизания, kick-ве, банове, публични съобщения и промяната на модовете от канал #lamest.
set log-time 1
Включете тази опция и вашите лог файлове ще се timestamp-ват.
set keep-all-logs 0
Ако искате да пазите лог файловете си завинаги, включете тази опция. Всички лог файлове ще има окончание ".[ден, 2 цифри][месец, 3 цифри][година, 4 цифри]". Забелетежете, че quota на хард диска или самият хард диск могат да се препълнят, така че проверявайте лог файловете често и си ги вземайте.
set switch-logfiles-at 300
Можете да определите, кога eggdrop трябва да сменя лог файловете и да започне да ги "освежава". Използвайте военното време за тази настройка, 300 е по подразбиране, което е същото като 03:00 (AM).
set quiet-save 0
Тези отвратителни съобщения "Writing user file..." и "Writing channel file..." няма да бъдат показвани повече щом тази опция е включена.
set logfile-suffix ".%d%b%Y"
Ако keep-all-logs е 1, тази настройка ще дефинира окончанието на лог файловете. По подразбиране те ще завършват ето така "04May2000". "%Y%m%d" ще даде често ползвания формат yyyymmdd. Прочетете strftime man страницата за повече опции. ЗАБЕЛЕЖКА: За системи, които не поддържат strftime, ще се използва _винаги_ формата yyyymmdd.
##### КОНЗОЛА #####
set console "mkcobxs"
Това са конзолните модове по подразбиране. Използва съшите флагове, които използва и при лог файловете. Конзолния канал е автоматично сложен на вавият "първи" канал, който е зададен в секцията модули в конфигурационния файл.
+m могат да сменят своите конзолни канали и модвете си с командата '.console'.
##### ФАЙЛОВЕ И ДИРЕКТОРИИ #####
set userfile "JinJi.user"
Задава името на файла, под което ще се запазаи вашият потребителски файл.
set pidfile "pid.JinJi"
Задава името на файла, под което ще се запази pid-а, на който е пуснат бота. Ако не се зададе pidfile, тогава ще се използва pid.(botnet-nick).
set sort-users 0
Ако искате потребителския файл да бъде сортиран, когато се запазва включете тази опция. Това ще накара бота да използва малко повече CPU, когато запазва потребителския файл.
set help-path "help/"
Задава къде Eggdrop трябва да търси за своите help файлове. Не променяйте тази настройка освен ако не сте сигурни, че знаете какво правите!
set text-path "text/"
Задава къде Eggdrop ще търси текстовите си файлове. Това се използва от някои Tcl скриптова и DCC команди.
set temp-path "/tmp"
Задава мястото където ще се слагат temporary файлове.
set motd "text/motd"
MOTD (Съобщението за деня) се показва когато хората влезят на dcc chat или telnet с бота. Вижте doc/text-substitutions.doc за опции.
set telnet-banner "text/banner"
Този банер ще се покаже при telnet връзки. Вижте doc/text-substitutions.doc за опции.
set userfile-perm 0600
Задава какви права ще бъдат сложени за потребителския файл, файла за каналите и за файла където се намират notes. Осмичните числа са същите както при командата chmod.
Да ви припомним:
u g o u g o u g o
0600 rw------- 0400 r-------- 0200 -w------- u - user
0660 rw-rw---- 0440 r--r----- 0220 -w--w---- g - group
0666 rw-rw-rw- 0444 r--r--r-- 0222 -w--w--w- o - others
Забележете, че по подразбиране 0600 е най-сигурния начин и това трябва да се смени само ако някой шел скрипт или друг външен скрипт се нуждае от това.
set mod-path "modules/"
Тази настройка казва на Eggdrop къде да търси за модули. Ако пускате бота от директорията от където сте го компилирали ще искате да сложите това на "". Ако използвате 'make install' (както всички добри kiddies правят ;), това е по подразбиране. В противен случай, използвайте главата си .
##### БОТНЕТ, DCC И МРЕЖА #####
Настройките тук ще бъдат без никакво значение за вас освен ако не се занимавате с ботнет. (няколко Eggdrop бота свързани заедно за по-голям ефект). Когато ви обясним как се свързват два бота, може би тези настройки ще ви се изяснят по-добре.
set botnet-nick "BabaMeca" (по подразбиране е изключено)
Ако искате да използвате друг псевдоним в ботнета от този който използвате в IRC (например ако сте на ботнет, на който не може да се има доверие), махнете "#" от тази линия и сложете някаква стойност, която ви удовлетворява.
listen <порт> <опция>
listen командата отваея telnet порт, който вие или другите ботове могат да използва, за да се свържат с Eggdrop като използват telnet.
Валидните портове са обикновенно между 1025 и 65535, като се има предвид, че този порт вече не се използва.
Валидните опции са 'all', 'bots', и 'users'. Можете да имате порт за потребители и ботове, или един и за двата случая.
Пример:
listen 3333 bots
listen 4444 users
Или:
listen 3333 all
Има други опции за listen командата в doc/tcl-commands.doc.
set remote-boots 2
Тази опция ще зададе дали искате или не хората от другите ботове на ботнета да
boot-ват потребители от вашия бот. Настройките са:
0 - *не* позволява на никои външни ботове
1 - позволи на ботовете от share-а
2 - позволи на всички
set share-unlinks 1
Тази настройка забранява на Eggdrop да разкача свързани ботове, ако отдалечен бот му каже да направи това.
set protect-telnet 0
Тази настройка ще отхвърли връзки,които не съвпадат с познати хостове.
Но тази настройка дава възможност limbo ботовете (NOIRC) да си адват хостове или възможноста за NEW като валиден логин.
set dcc-sanitycheck 0
Тази настройка ще накара бота да игнорира DCC chat заявките които имат бонус информация в тях чрез които се опитват да накарат бота да се свърже на някаде другаде което може да доведе до проблеми или може би потребителя има счупен клиент (както mIRC прави), в който случай връзката така и така няма да проработи, предлагаме ви да включете тази настройка.
set ident-timeout 5
Настройката дефинира времето в секунди в което бота трябва да чака преди да спре DCC Chat/Telnet или relay връзка.
set require-p 0
Дефинирайте дали потребителя който има +o трябва да има +p флаг за да направи DCC към бота.
set open-telnets 0
Ако искате да позволите на хората да се добавят към бота когато напишат NEW при телнет връзка направете тази опция 1. Това е нещо като 'hello' съпбщението. protect-telnet трябва да е 0 за да използвате това.
set stealth-telnets 0
Ако не искате eggdrop да се идентифицира като eggdrop при телнет връзки сложете това на 1, вместо това Eggdrop ще покаже 'Nickname'.
set use-telnet-banner 0
Ако искате Eggdrop да покаже banner при telnet връзка, сложете това на 1.
telnet banner-а се слага чрез 'set telnet-banner'.
set connect-timeout 15
Тази настройка дефинира времето в секунди, преди да спре DCC Chat/Telnet или relay връзка.
set dcc-flood-thr 3
Задайте колко линии могат да бъдат приети от един потребител на partyline за 10 секудни, преди да се приеме че той флуди и да бъде изхвърлен от бота.
set telnet-flood 5:60
Дефинира колко опита за telnet връзки могат да бъдат направени за колко секунди от един хост преди той да се приеме че флуди. Формата е опити:секунди.
set paranoid-telnet-flood 1
Ако искате telnet-flood да важи и за +f потребители, сложете това на 1.
set resolve-timeout 15
Сложете периода в секунди преди бота да се откаже от ресолването на хостнаме/адреса (можете да искате да увеличите това на бавни мрежи).
set firewall "!sun-barr.ebay:3666"
Сложете това на вашият сокс хост ако eggdrop-а ви е зад firewall. Ако използвате Sun "telnet passthru" firewall, представката на хост-а е с '!'.
set nat-ip "127.0.0.1"
Ако имате NAT firewall (машината ви има IP от следните класове:
192.168.0.0-192.168.255.255, 172.16.0.0-172.31.255.255, 10.0.0.0-10.255.255.255 и вашият firewall транспарентно сменя адреса на вашата машина на уникален) или имате IP masquearading между вас и останалата част от света, и /dcc chat, /ctcp chаt или share-а на потербителския файл не работи, задайте вашият външен IP адрес тук.
Не пишете нищо за my-ip или my-hostname, ако използвате тази настройка.
set reserved-portrange 2010:2020
Ако искате всички DCC файл трансфери да изолзват определен диапазон от портове или защото сте зад fw или поради security причини настройте това.
set ignore-time 15
Сложете това за времето в минути за което ще трае темп игнора.
set hourly-updates 00
Дефинирайте това което Eggdrop смята за 'hourly'. Всички заявки към него, включвайки неща като note notifying или запазването на потребителският файл, се влияят от това.
Пример:
set hourly-updates 15
Бота ще запазва потребителският си файл всеки 15 минути.
set owner "MrLame, MrsLame"
Махнете # на тази линия и настройте owner-ите на бота.
ТРЯБВА да промените това!
set notify-newusers "$owner"
Кого трябва да известява бота при добавянето на нов потребител.
set default-flags "hp"
Сложете флаговете които нов потребител получава когато бъде добавен. Вижте '.help whois' на partyline за да видите списъка с флаговете и тяхното описание (това ще бъде обяснено по късно).
set whois-fields "url birthday"
Задайте всички полета дефинирани от потребителя които тряба да се покзват при '.whois'.
Те ще бъдат показани само ако потребителя има допълнителни полета, може би ще искате да коментирате това (с #) и да включите userinfo.tcl скрипта който добавя команди за промяна на тези неща.
set die-on-sighup 0
Включете тази настройка ако искате eggdrop да die при получаването на SIGHUP kill сигнал. В противен случай eggdrop просто ще запазва своя потребителски файл и ще rehash.
set die-on-sigterm 0
Включете тази настройка ако искате eggdrop да die при получаването на SIGTERM kill сигнал. В противен случай eggdrop просто ще запазва своя потребителски файл и ще rehash.
unbind dcc n tcl *dcc:tcl
unbind dcc n set *dcc:set
Коментирайте тези линии ако искате да включите командите .tcl и .set.
Ако подбирате owner-ите си внимателно, няма да имате проблем с тези команди.
set must-be-owner 1
Ако включите тази настройка, само перманентните owner-и ще могат да използват .set и .tcl командите, а ако искате и .dump да бъде използвана само от тях направете го 2.
unbind dcc n simul *dcc:simul
Коментирайте тази линия ако искате да използвате partyline командата 'simul'.
(owners могат да манипулират всички на partyline).
set max-dcc 50
Сложете максималният брой на DCC връзки. Можете да я увеличите по-късно но не я намалявайте.
set enable-simul 1
Включете тази настройка ако искате да включите TCL командата 'dccsimul'.
set allow-dk-cmds 1
Включете тази настройка ако искате +d & +k потребители да използват командите за -|-.
set dupwait-timeout 5
Ako Eggdrop-а ви отхвърля ботове които вече са били разкачени от някой друг HUB но информацията за разкачането не се е разпространила още по BotNET-а поради LAG, използвайте тази настройка. Ботът ще чака dupwait-timeout в секунди преди да провери отново и накрая да отхвърли бота.
След главните настройки, може би ще искате да заредите модули. Модулите се зареждат с командата "loadmodule <module>". Eggdrop търси модулите в директорията която сте му задали чрез настройката the module-path
Забележете че при различните конфигурациони файлове различни модули са нужни.
Например:
Ботове за защита на канали:
Този бот се нуждае от channels, blowfish, console, dns, irc, и (ако ви харесва) ctcp модулите заредени. От повече не се нуждаете това просто ще забави бота.
Public IRC Bot:
Public бота трябва да има всички модули заредени понеже те осигуряват всички функции за всекидневна употреба.
Secure Filesys Bot:
Този бот се нуждае от всички нормални IRC модули, но не и notes, seen, ctcp и share модулите.
Limbo Bot:
limbo бот (работещ като BotNET hub извън IRC) просто се нуждае от channels, console, dns, и може би notes или share модулите. Разбирасе blowfish трябва да бъде зареден.
Скриптовете трябва да бъдат добавени в края на конфигурационият файл. Всички модули трябва да бъдат заредени и техните променливи трябва да бъдат сложени тук.
source scripts/script.tcl
Тази линия зарежда script.tcl от scripts/ директорията на бота. Всички скриптове трябва да бъдат сложени там, макар че могат да бъдат сложени навсякаде но трябва да зададете целият път до там.
Някой основни скриптове които винаги се зареждат са alltools.tcl и action.fix.tcl.
source scripts/alltools.tcl
source scripts/action.fix.tcl
Chennel модула осигурява поддръжка на каналите за бота. Без него, няма да можете да накарате ботът да влезе в канал или да запазите специфични настройки за канала. Не изисква други модулли да са заредени, зарежда се както всеки модул с loadmodule channels.
Допълнителни настройки:
set chanfile "LamestBot.chan"
Файлът в който ще се запазват настройките за каналите.
set ban-time 120
Колко време бановете ще стоят (в минути). Ако сложите това 0 ботът няма да ги премахва.
set exempt-time 60
Колко време exempts ще стоят (в минути). Както при set ban-time ако го сложите на 0 няма да се премахват. Ботът ще проверява за exempts всеки Х монути, но няма да ги маха ако те съвпадат с сложен бан, но когато банът се премахне ботът ще ги маха.
set force-expire 0
Сложете това на 1 ако искате ботът ви да премахва bans/exempts/invites сложени от друг бот в канала.
set share-greet 0
Ако е 1 ботът ще поделя инфотата на потребители си с другите ботове в канала ако поделя датата си.
set use-info 1
Сложете това на 1 ако искате потребителите ви да имат инфо линия.
channel add #channel { SETTINGS }
Добавя статичен канал. Има много различни опции които можете да добавите, някой от тях ще ги обясним.
chanmode +/-<modes>
Тази настройка позволява на бота да променя модове в канала. Винаги ще добавя +<modes> и ще маха -<modes>. Ако каналът ви има +к можете да го сложите тук за да може ботът да влезе. Пример за това е
channel add #IRCHelp { chanmode "+k edi" }
idle-kick 0
Тази настройка ще накара ботът да проверява всяка минута за idle потребители, ако е 0 няма да проверява.
stopnethack-mode 0
Тази опция ше накара ботът да премахва @ от всеки който влезе в канала с serverops. Има 7 вида опции които можете да изберете.
0 спира го
1 isoptest (разрешава serverop ако потребителя е +o)
2 wasoptest (разрешава serverop ако потребителя е имал +o преди сплита)
3 позволява serverop ако isop или wasop
4 позволява serverop ако isop и wasop.
5 Ако канала е -bitch, вижте stopnethack-mode 3
Ако канала е +bitch, вижте stopnethack-mode 1
6 Ако канала е -bitch, вижте stopnethack-mode 2
Ако канала е +bitch, вижте stopnethack-mode 4
revenge-mode 1
Тази настройка дефинира как ботът ще наказва лоши потребители. Има 4 начина:
0 Deop потребителя.
1 Deop потребителя и им слага +d за канала.
2 Deop потребителя и им слага +d за канала, след което ги изритва.
3 Deop потребителя,слага +d за канала, след което ги изритва и им слага бан.
aop-delay (minimum:maximum)
Това се използва за autoop, autohalfop, autovoice. Ако op или voice влезе в канала докато друг такъв изчаква, ботът ще се опита да сложи двата мода с един ред.
aop-delay 0 Не използва закаснение.
aop-delay X Закаснение с X секунди.
aop-delay X:Y Рандом закаснение м/у X и Y.
need-op { putserv "PRIVMSG CS :op all" }
Това ще накара ботът да стартира скрипта в скобите ако няма @. Скриптът трябва да е по малък от 120 символа. Ако исползвате TCL скрипт като getops.tcl или botnetop.tcl, не би трябвало да използвате тези настройки.
need-invite { putserv "PRIVMSG CS :clear #канал modes" }
Съшото както при need-op само че за invite.
need-key { putserv "PRIVMSG CS :clear #канал modes}
Същото както предишните.
need-unban { putserv "PRIVMSG CS :unban #канал" }
Същото както предишните.
need-limit { putserv "PRIVMSG CS :clear #канал modes"}
Същото както предишните.
Ако искате по голяма ефективност можете да замените putserv s putquick!
channel set <chan> +/-<setting>
Има много различни опции за канал които можете да дефинирате. Могат да бъдат пуснати или изключени с + или - пред тях.
Ето и пълен списък с тях:
enforcebans - изритва хора които имат бан в канала
dynamicbans - оставя само активните банове за канала когато са нужни
userbans - позволява на други потребители в канала да слагат банове
dynamicexempts - оставя само активните +e в канала когато има нужда
userexempts - позволява да се слагат +е директно
dynamicinvites - ? Тъпо а;б
userinvites - ? Тъпо я !
autoop - автоматично дава операторски права на потребители когато влязат в канала
bitch - само потребители с +о флаг могат да имат операторски права в канала
greet - казва инфото на потребителят когато влезе в канала
protectops - дава отново +о на потребител които е бил деопнат
protectfriends - дава отново операторски права на +f потребител на които са били отнети
dontkickops - никога не рита +о потребители
wasoptest - прави wasop тест за +stopnethack
inactive - никога не влиза в този канал, или го напуска ако вече е в него.Полезно е когато искате да накарте ботът да излезе от каналът без да губите настроиките му
statuslog - записва статусът на канала всеки 5 минути
stopnethack - премахва операторските права на всеки които влезе в каналът с serverops (след сплит)
cycle - циркулира канала когато няма операторски права
revenge - предприема деиствия срещу всеки които ритне, деопне +f потребител също така и към себе си
sectet - не дава информация за каналът в ботнетът
shared - поделя настроиките на потребителите за каналът
autovoice - кара ботът да следи за +v потребители
Mодулa dns осигурява асинхронизиранна dns поддръжка.Това ще избегне дългите периоди в които бота овисва, чакайки ресолва на хостнаме, което често може да доведе до timeout на всички други връзки. Този модул не изисква други модули заредени и се зарежда като добавите loadmodule dns в конф. файла.
Друг модуле е server.mod който добавя основната поддръжка за IRC. Трябва да заредите този модул ако искате ботът ви да влезе в IRC като добавите loadmodule server в конфа си.
Довълнителни настройки:
set net-type 0
Каква е вашата мрежа?
0 = EFnet (non +e/+I hybrid)
1 = IRCnet
2 = Undernet
3 = DALnet
4 = EFnet +e/+I hybrid
5 = Others
set nick "LamestBot"
Псевдонимът който ботът ви ще използва в IRC.
set altnick "L?m?stB?t"
Алтернативният псевдоним който ботът ви ще използва. Ако използвате '?' ботът ще генерира случаен символ.
set keep-nick 1
Тази настройка ще накара бота ви да се опитва да си върне псевдонима към оригиналният ако е зает.
set realname "/msg LamestBot hello"
Полето за realname което ще се появи при /whois на бота.
set init-server { putserv "MODE $botnick +i-ws" }
Командата която първа ще се стартира когато бота се върже към IRC. ВНИМАНИЕ: !!!! МНОГО потребители добавят тук ред в който ботът им да се идентифицира към NS !!!! НЕ ГО правете !!! това е security hazard защото при .status all се виждат тези полета и така потребител може да види паролата на бота ви.
set servers { irc.change.this:6667 irc.example.com}
Сървърите към които ботът ще се върже. Формата е server[:port[:password]]
set default-port 6667
Портът който бота ще използва по подразбиране.
set server-cycle-wait 60
Тези настройки дефинират колко време бота ще изчака докато премине на друг сървър след като бъде разкачен от моментният.
Ако е 0 ще го направи веднага.
set never-give-up 1
Това ще кара ботът ви да циркулира непрестано докато не успее да се свърже успешно.
set server-timeout 60
Колко време трябва бота да изчака преди да премине на друг сървър.
set use-console-r 0
Тази настройка ви позволява да логвате цялата информация получена от сървърът през конзолен мод 'r'. Внимавайте защото това е голям пробив в сигурноста, позволявайки на хора да виждат паролите на потребители. За сега този мод е ограничен
само за +n потребители.
set strict-host 0
Променете го на 1 ако не искате ботът ви да пропуска '~' пред user@host.
set lowercase-ctcp 0
Ако искате ботът ви да отговаря на ctcp заявки с малки букви сложете това на 1
set double-mode 0
Позволява двa едни и същи мода да се сложат.
set double-server 0
Позволява две едни и същи съобщения.
CTCP модулът осигурява нормалните ctcp отговори които се очакват. Без него CTCP CHAT няма да работи. Този модил изисква server модула да бъде зареден, за зареждането му сложете loadmodule ctcp в конф файла. Настройките които вървят с този модул са:
set ctcp-mode 0
Настройте как ctcp модула трябва да отговаря на ctcp-тата. Има 3 възможности:
0: Нормално
1: Ботът игнорира всички ctcp-та, освен CHAT и PING от +o потребители.
2: Нормално, но бота няма да отговаря на повече от Х ctcp-та за Y секунди (дефинирано от 'set flood-ctcp').
Има оше няколко променливи които ще ви се сторят интересни:
ctcp-version, ctcp-finger, и ctcp-userinfo. Настройте ги по ваше желание.
irc модулa контролира взаимодействието на ботовете в IRC. Позволява на бота да влиза в канали, занимава се с потребителската листа на каналите и др. Трябва да заредите този модул ако искате бота ви да влезе в IRC. Също така и server, channels модулите.
Допълнителни настройки:
set bounce-bans 1
Сложете 1 ако искате бота да отхвърля всички банове от сървърът.
set bounce-modes 0
Сложете 1 ако искате бота да отхвърля всички модове сложени от сървърът.
set max-modes 30
Определяте лимита от глобални +b/+e/+I модове на вашият IRC server.
set max-bans 20
Максималният брой банове които бота да слага в канала. Бота няма да слага повече банове ако се достигне лимита.
set kick-fun 0
Сложете това 1 ако искате бота да рита за главни букви/ctcp заявки в канала. Запомнете това че ако го прави, няма да им сложи бан и това може да започне kick флуд.
set ban-fun 0
Сложете това 1 ако искате бота да слага бан за главни букви/ctcp заявки в канала. Това може да предпази от kick флуд но може да препълни бан листата.
set learn-users 0
Ако искате хората да могат сами да се добавят в потребителската листа на бота с начални флагове като изпратят 'hello' съобщение на бота сложете това на 1.
set wait-split 600
Сложете периода от време (в секунди) за да изчаква някой да се върне от net сплит.
set wait-info 180
Сложете периода от време (в секунди) когато някой трябва да е извън канала и като влезе бота да го поздрави.
set mode-buf-length 200
Малсималният брой от байтове който изпраща към сървърът като аргумент на модовете. За повечето сървъри е 200.
unbind msg - hello *msg:hello
bind msg - myword *msg:hello
Коментирайте това!!!
unbind msg - ident *msg:ident
unbind msg - addhost *msg:addhost
Много опити за Take Over стават порати опити да се отгатне паролата за идентифициране чрез /msg %b ident ...
Можете както е примера тук можете да я махнете и да сложите нова, или да я разрешите коментирайки редовете.
set no-chanrec-info 0
Ако искате инфото ви да се изписва в всички канали в които влезете сложете това на 1.
set modes-per-line 3
Някой мрежи позволяват повече от 1 мод на линия. Тук можете да дефинирате колко мода позволява вашата мрежа (UniBG позволява по 4 на линия)
Transfer модула осигурява поддръжка на DCC изпрашане/получаване и тарнсфериране на потребителския файл между share ботовете.
Не изисква други модули, и се зарежда с loadmodule transfer в конф файла.
Допълнителни настройки:
set max-dloads 3
Сложете максималния номер на позволените downloads за един потребител.
set dcc-block 1024
Определяте големината на block dcc трансфера. ircII използва 512 байта,
но се предполага, че може и да е по-малка. 1024 е стандарта в тези дни. Сложете го на 0, ако искате да ипозлвате turbo-dcc (препорачително).
set copy-to-tmp 1
Включете тази настройка ако искате да копирате файловете в /tmp директорията преди да ги пращате. Това е полезно за повечето системи за файлова стабилност, но ако директориите са NFS мounted, това е по-трудно и ще искате да го сложите на 0. Ако имате малко дисково пространство, също така може би ще искате да го сложите на 0.
set xfer-timeout 30
Сложете тук времето в секунди да се изчакат преди неактивния трансфер да спре.
Share модула осигурява поделянена потребителския файл между два директно свързани бота. Този модул изисква transfer и channels модулите заредени, зарежда се с loadmodule share в конфа.
Допълнителни настройки:
set allow-resync 0
Когато два бота са разкачени, тази настройка тази настройка им позволява да създадът resync буфер, който запазва всички промени през периода, когато са били разкачени. Когато се опитат да се свържат отново те няма да изпращат целия файл, а само промените (resync буфера).
set resync-time 900
Тази настройка задава колко дълго да задържа бота resync датата преди да я изхвърля. Тази настройка е само за allow-resync.
set private-global 0
Когато поделята потребителския файл, НЕ ПРИЕМАТЕ глобални промени на флаговете от другия бот?
ВНИМАНИЕ: Ботът все още ще изпраща направените промени от него, той просто няма да приема никакви глобални промени от другия бот.
set private-globals "mnot"
Когато поделяте листата, ако private-global не е зададено, какви промени на глобалните флагове от другия бот трябва да се игнорират.
set private-user 0
Когато поделята файла, да не се приемат НИКАКВИ промени от другия бот?
Параноичните хора трябва да използват тази настройка при техните hub ботове. Това ще накара всички промени на поребителския файл да се правят от hub-а (paranoid като rhodie).
set override-bots 0
Тази настройка прави бота да отхвърля всички локални промени, освен ако те не се направени от hub-а.
ВНИМАНИЕ: Никакви пароли или бот флагове се поделят, само портовете и адресите се добавят за share процедурата.
Това работи само с hubs , които са версия 1.5.1 или по-голяма.
Notes модула осигурява подръжка за запазване на съобщения м/у потребителите.
Забележете че изпращането на съобщенията м/у потребителите се поддържа и в чистият конф. това е само за запазване на съобщенията за по късно получаване. Този модул не изисква други заредени модули, зарежда се с loadmodule notes в конфа.
Допълнителни настройки:
set notefile "LamestBot.notes"
Сложете тук името на файла в който ще се запазват съобщенията.
set max-notes 50
Определяте максималния брой съобщения които могат да се запишат за дадения потребител (за да се предпазите от flood).
set note-life 60
След колко време (в дни) съобщението ще бъде изтрито.
set allow-fwd 0
Сложете това на 1, ако искате да позволите на потребителите да използват пренасочване на съобщенията от един бот към друг.
set notify-users 1
Сложете това на 1, ако искате ботът през час да съобщава на потребителите ако имат съобщение.
set notify-onjoin 1
Сложете това на 1, ако искате ботът да съобщава на потребителите за съобщение когато влязат в канала.
Console модула осигурява запазването на конзолните настройки при излизането на бота ви или при изпълнението на .store командата. Модълът не изисква други модули да са заредени, за да го заредите използвайте линията loadmodule console в конфигфайла си. Също така можете да сложите и някой други променливи свързани с него:
set console-autosave 1
Да се запазват ли конзолните настройки автоматично? В противен случай те ще се запазят с командата .store.
set force-channel 0
Ако потребителят няма конзолни настройки запазени, кой канал искате да бъде сложем автоматично.
set info-party 0
Включете това ако искате глобална инфо линия на потребителя да се анонсира в botnet-а когато той влезе.
Compress модула осигурвява поддръжка на файл компресия. Използва се за да се компресират файлове чрез TCL или да се предава потребителският файл компресиран при share за да се спести скорост. Този модул се нуждае от зареден share модул, за да го заредите трябва да сложете в конфигурационият си файл линията 'loadmodule compress'. Има и други променливи които можеби ще искате да настроите в конфигурационият си файл
set share-compressed 1 (изключен по-принцип)
Позволява пращането на компресирани потребителски файлове. Потребителските файлове се компресират с левел дефиниран в `compress-level'.
set compress-level 9
По-принцип това е левелът на компресия който се използва.