Eggdrop - Kompilieren und einrichten

Von Robert

Was ist ein Eggdrop ?

Ein IRC Bot ist ein Programm, welches rund um die Uhr in einem IRC Channel sitzt und ihn 24 Stunden am Tag offen hält. Es sieht wie ein normaler Benutzer aus, tut aber normal nichts bis eine spezielle Funktion aufgerufen wird. Ein Bot kann sehr zur Sicherheit des Channels beitragen, indem er ihn vor Takovern und Missbrauch schützt und eine zentrale Stelle für die Channel Op Liste darstellt und diesen Benutzern opt wenn sie es wollen. Er kann auch viele andere nützliche Dinge tun. Bots sind besonders für IRC Netze wichtig, in denen es keine Möglichkeit gibt Channels für sich zu registrieren, z.B. IRCNET, EFNET usw. Es gibt einige verschiedene IRC Bots aber nur einer hat über viele Jahre überlebt und wird in sehr vielen Channels benutze, der Eggdrop.

Der Eggdrop wurde im Dezember 1993 programmiert, um die Kriege auf #gayteen zu stoppen. Seit dem ist er der meist benutzte IRC Bot auf der Welt. Eggdrops laufen meist auf Unix / Linux Systemen da Windows viel zu unstabil ist.

Eggdrop ist im Moment der fortschrittlichste, bekannteste und am besten unterstützte IRC Bot. Wenn man nie einen Bot benutzt hat ist man von der Menge an Optionen, Befehlen und Möglichkeiten die Eggdrop hat schnell überwältigt, nach einer gewissen Zeit hat man sich aber mit den wichtigsten Dingen vertraut gemacht und lernt die Vorteile von diesen Dingen kennen. Eggdrop wird in Quell Code Form weitergegeben, so kann jeder mit den entsprechenden Kenntnissen in C eigene Funktionen hinzu fügen.

Einige Haupt Funktionen von Eggdrop beinhalten:

  • Unterstützung mehrerer Channels
  • Userfile Sharing (mehrere Bots teilen sich ein Userfile mit Usern, Channel Bans, Exempts und Invites)
  • Botnets, man kann mehrere Bots verbinden, sich mit den Usern der anderen Bots underhalten und Befehle über das Botnet an andere Bots senden
  • Partylines, in denen man sich unterhalten und Befehle eingeben kann
  • TCL Scripts, mit denen man relativ einfach neue Funktionen hinzufügen kann.

Wenn ihr mal einen funktionieren Eggdrop sehen wollt, dann besucht unseren IRC-Channel in IRC-Quakenet #planetrcs und [RCS]Nina wird euch freundlich begrüßen.


Wie bekommt man einen Eggdropbot?

Der Bot ist kostenlos. Er läuft unter der GNU General Public License (GPL).

Die Neuste Linux-Version ist hier erhältlich: http://www.planet-rcs.de , http://www.eggheads.org

Die Neuste Windows-Version ist hier erhältlich: http://www.eggdrops.de

Natürlich heißt die Version, welche unter Windows läuft auch nicht mehr Eggdrop, wäre ja auch zu schön, sondern Windrop. Ist halt ein Lame-Drop. Ich persönlich finde es hat keinen Zweck ihn unter Windows zu installieren. Ist aber meine Meinung.


Wo kann ich einen Eggdrop laufen lassen ?

1.) Man installiert es bei sich zu Hause am PC, am Besten ihr habt Linux, auf einem z.b. Router-PC. Sprich um den Bot im Channel zu behalten und dessen Funktion zu benutzten muss der PC immer im Internet sein. Aber in Zeiten von DSL und Flatrate sollte das, zumindest in Deutschland, nicht das Problem sein.

2.) Man hat einen eigenen Server bzw. eine eigene Shell. Am Idealsten hat man seinen eigenen Root-Server im Internet. Oder eine Shell, also eine Platz und prozessbeschränkten Account auf eine Root-Server. Ein eigener vHost tut es auch, er ist billiger als ein Root-Server und für IRC-Anwendungen wie Eggdrop und BNC reicht er allemale aus.

Ein Root-Server würde ca. 50€ im Monat kosten (mit angemessen Traffic). Da kann man aber dann auch mehr machen als nur den Eggdropbot laufen lassen, z.b. noch einen Game-Server.

Shell Accounts gibt’s aber ca. 1 Euro pro Monat pro Prozess. (Eggdrop "verbraucht" dann eben diesen "Prozess")


Wie installiere ich einen Eggdrop ?

Die Windows-Version ist da recht einfach, die ist schon "vorkompiliert", da muss man soweit ich weiß nur noch die eggdrop.conf anpassen.

Die Linux-Version macht es eine schon schwieriger. Hier läd man sich die unkompilierten Source-Codes herunter und muss sie selber kompilieren. Aber das dürfte auch kein Problem darstellen.

Auf keinen Fall als Root einloggen und kompilieren, das ausführen des Eggdrops als Root ist nicht empfehlenswert und beim Start bricht der Eggdrop auch sofort ab.

Eine Konsole öffnen, z.B. X-Term.

1.) Download:

wget http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2

oder

lynx http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2


2.) MD5 Summe prüfen:

md5sum eggdrop1.6.17.tar.bz2
68e181201483dee398f9904e8652e6ca eggdrop1.6.17.tar.bz2

sollte als Ausgabe erscheinen

3.) Entpacken:

tar -jxvf eggdrop1.6.17.tar.bz2
- das Eggdrop Archiv entpacken

4.) Nicklänge anpassen:

cd eggdrop1.6.17

Wir nehmen einen Editor zum Beispiel Vi und bearbeiten die Datei: src/eggdrop.h

vi src/eggdrop.h

Herunterscrollen, bis wir folgende Zeile finden:
#define HANDLEN           9     /* valid values 9->NICKMAX              */

Zum bearbeiten dieser Zeile müssen wir erst den Buchstaben "i" drücken, jetzt können wir mit vi schreiben. Aus der Zeile wird folgendes:

#define HANDLEN           30     /* valid values 9->NICKMAX              */

Jetzt drücken sie <ESC> um in den Kommandomodus zurückzukehren, dann :wq (Doppelpunkt dann "wq" (schreiben und beenden), das ganze dann mit [Enter] bestätigen)
Wir sind wieder auf der Shell und machen weiter mit dem Compilieren der Quellcodes.

5.) kompilieren:

./configure
make config
make 
make install (Pfadangabe) 


Die eggdrop.conf einstellen und einrichten ?

In der eggdrop.conf stehen alle Einstellungen, die nötig sind. Auf alle werde ich nicht eingehen, sondern nur mal die erklären, welche wichtig für die Funktion des Bots sind. Die hier beschriebene Einrichtung der eggdrop.conf gilt für beide Versionen, die unter Linux und die unter Windows.

Wer Lust hat, kann sich mal die 1300 Zeile lange Datei anschauen

Ich schreib nun die Befehle hin (könnte ihr dann in der Datei suchen) und schreibe was man einstellen soll:

Wir nehmen einen Editor zum Beispiel Vi und bearbeiten die Datei: eggdrop.conf

vi eggdrop.conf

Zum bearbeiten dieser Zeile müssen wir erst den Buchstaben "i" drücken, jetzt können wir mit vi schreiben. Aus der Zeile wird folgendes:

##### BASIC SETTINGS #####

set username "Name des Bots"

set admin "Name des Inhabers seine@emailadresse.de"

set timezone "CET"
(für die deutsche Zeitzone)

set offset "-1"
(für die deutsche Zeitzone)


##### LOG FILES #####

logfile jpk #Channel "logs/checkmag/checkmag.log"
hier könntet hier den Pfad und den channelnamen angeben (zeilenweise) wenn ihr die logs gespeichert haben wollt.

set quiet-save 1
(Bitte immer austellen)


##### CONSOLE #####

set console "mkcobxs"
Konsolen-Modus - Ihr findet sicher späte eure eigene Einstellung aber die ist schon mal brauchbar.


##### FILES AND DIRECTORIES #####

set userfile "botname.user"
Der Dateiname wo die Userliste vom Bot gespeichert wird.


##### BOTNET/DCC/TELNET #####

listen 3333 all
das ist der PORT wo der Bot dann DCC anfragen annimmt (zum Steuern), beliebig wählbar. DCC ist immer eine Sicherheitslücke, also überlegt es euch, bevor ihr es freigebt. Es gibt ja noch die Möglichkeit über SSH.


##### MORE ADVANCED SETTINGS #####

set owner "Dein Name"
Trägt da einfach euren Namen ein..

die "Please make sure you edit your config file completely."
macht ein # davor. (es gibt mehrer stellen wo "die" verwendet wird. Einfach überall # davor setzten.


##### MODULES #####

set mod-path "modules/"
(Den Modul-Pfad setzen)

loadmodule dns
loadmodule channels

(darf beides kein # davor haben)

set chanfile "botname.chan"
Dateiname für die Channelliste des bots

Globalen Channel-Modes:

set global-chanset {
-autoop -autovoice
-bitch -cycle
+dontkickops -dynamicbans
-dynamicexempts -dynamicinvites
-enforcebans +greet
-inactive +nodesynch
-protectfriends -protectops
-revenge -revengebot
-secret -seen
-shared -statuslog
+userbans +userexempts
+userinvites -protecthalfops
-autohalfop
}

Bestimmter Channel in den der Eggdrop joinen soll:

channel add #meinchannel {
idle-kick 0
stopnethack-mode 0
revenge-mode 0
ban-time 120
exempt-time 60
invite-time 60
aop-delay 5:30
flood-chan 10:60
flood-deop 3:10
flood-kick 3:10
flood-join 5:60
flood-ctcp 3:60
flood-nick 5:60
}

Pro Channel in dem der Bot drin sein soll einfach
channel add #meinchannel { etc }

da sind flood protection schon dabei wie man sieht.
Die beiden Zahlen sind
XX : XX
Aktionen : Sekunden
Wie viel Aktionen man pro XX Sekunde man machen darf.

In der eggdrop.conf steht das noch ausführlicher.



#### SERVER MODULE ####

loadmodule server
darf kein # davor sein

set net-type 5
5 oder falls ihr in einem der darüber stehe seit, die entsprechende Zahl

set nick "Botnick"
Der Name des Bots (ja nochmal)

Frage: Mein Bot soll einen Nick mit "{", "[", "$" oder "(" haben, aber ich bekomme eine Fahlermeldung, was kann ich dagegen tun?

Antwort: Diese Zeichen haben in Strings eine bestimmte Bedeutung in TCl, um sie als normale Zeichen interpretieren zu lassen, musst du davor ein "\" setzen, zum Beispiel so: "set nick \[Botbot\]".


set altnick "Botnick1"
Der Nick, falls der standard nick schon vergeben ist.

set realname "/msg DEINNickname hello"
schreibt da euern Nickname rein.

set servers {
irc.uk.quakenet.org:6667
}


Da kommen alle Server rein.
Wenn er keine Verbindung bekommt versucht er den nächsten in der Liste.


#### CTCP MODULE ####

loadmodule ctcp
hier darf kein # davor sein.


#### IRC MODULE ####

loadmodule irc
hier darf kein # davor sein.

die "Please make sure you edit your config file completely."
macht ein # davor. (es gibt mehrer stellen wo "die" verwendet wird. Einfach überall # davor setzten.


#### CONSOLE MODULE ####

loadmodule console
loadmodule blowfish

hier darf kein # davor sein.

So und schon sind wir am Ende.

Am Ende kann man seine TCL Script mit

source scripts/name.tcl

angeben.

So das war es auch schon mit dem editieren der Config-Datei. Jetzt drücken sie <ESC> um in den Kommandomodus zurückzukehren, dann :wq (Doppelpunkt dann "wq" (schreiben und beenden), das ganze dann mit [Enter] bestätigen), und sie kehren wieder auf die Shell zurück.

Download eines einfachen Config Files

Download eines erweiterten Config Files

Download eines Kompletten Config Files

Ich empfehle alles Anfängern sich an einem ganz einfachen zu orientieren. Versucht erst einmal, ob euer Eggdrop ins Quakenet connecten kann. Wenn das funktioniert, dann könnt ihr die Config um einige Funktionen erweitern, bis ihr alle Module verstanden habt und alles richtig einrichten könnt.


Starten des Eggdrops ?

1.) Beim ersten mal starten:

unter Linux: ./eggdrop -m eggdrop.conf

unter Windows: eggdrop -m

2.) Erste Schritte in IRC:

/msg BOT hello - Man wird als Bot-Master erkant
/msg BOT pass <passwort> - Botpasswort festlegen
nun kann man eine DCC- oder Telnet-Verbindung aufbauen

3.) Ab sofort starten:

unter Linux: ./eggdrop

unter Windows: eggdrop


Eggdrop Komanndos ?

Hier eine Liste der wichtigen Eggdrop-Commands. Eine vollständige Liste findet man hier

### core commands

Kommandos für +p User

who

Gibt an wer alles in der Partyline des Bots ist (User und gelinkte Bots).

away

Mit away kann man sich in der Patyline als away (nicht anwesend) markieren lassen.

quit

Mit quit verlässt man die Partyline.

whom

Gibt an, wer alles in der Partyline des Botnets ist (Nur User).

me

Me ist ungefähr dasselbe wie /me bei mirc, man macht etwas. (* Michael haut seinen Hamster)

whois

Mit whois kann man schauen welche flags ein user hat und mit welchen Hosts er geaddet ist.

match

Match ist mit whois vergleichbar aber man kann mit Jokern (*) und flags/hosts suchen.

motd

motd zeigt die Message of the Day, die normal beim einloggen in die partyline angezeigt wird, nochmal an.

bots

Listet alle gelinkten Bots auf.

addlog

Mit addlog kann ein User Kommentare in die Log-Datei des Bots schreiben.

newpass

Mit newpass kann man sein Passwort ändern.

bottree

Zeigt das Botnet in einer geordneten Form an.

console

Mit console kann man den Channel umstellen, auf den Konsole eingestellt ist und ändern was angezeigt wird.

chat

In der Partyline gibt es 100.000 Channel (0 ist die normale Partyline). Mit .chat kann man den Channel wechseln.

nick

Mit nick kann man seinen Nickname auf dem Bot ändern.

echo

Wenn Echo on ist schickt der Bot alles was man auf der Partyline sagt an einen zurück.

botinfo

Bei botinfo gibt der Bot aus, wie er heißt, seine Version, sein netz und die Channels in denen er ist.

strip

Macht es möglich eingebettete Codes aus einem Text zu entfernen.

su

Mit su kann man den Benutzer wechseln, als der man sich in den Bot eingeloggt hat. Als Owner des Bots muss man kein Passwort angeben.

trace

Mit trace kann man schauen wie die Verbindung zu einem anderen Bot ist.

fixcodes

Fall der bot nicht feststellen kann ob der user per telnet oder dcc chat eingeloggt ist, werden manchmal Kontrollzeichen angzeigt. Dann kann .fixcodes on/off helfen.

page

Page ist ein Flood-Schutz, der Bot sendet nur eine bestimmte Anzahl von Zeilen und wartet auf eine Bestätigung des Users. Wenn der Bot zu viele Zeilen für den Benutzer hat kann es passieren das der Bot die Verbindung trennt.

Kommandos für +t User

+bot

Mit +bot kann man einen Bot in das Botnet hinzufügen.

chnick

Mit chnick kann man den Namen eines Users oder Bots im Bot verändern.

chpass

Mit chpass kann man das Passwort eines Users oder Bots verändern

-bot

Mit -bot löscht man einen Bot.

Kommandos für +m User

chattr

Mit chattr kann man die Flags eines Users/Bots verändern.

save

Mit save speichert man die User und Channel-Files.

backup

Der Bot speichert ein Backup der Userlist auf die Festplatte schreiben.

reload

Läd das user-file neu, ohne davor zu speichern. Die Änderungen die in der letzten Stunde gemacht wurden gehen also verloren.

status

Status zeigt einige Informationen über den Bot an.

+user

Mit +user kann man einen User in den Bot adden.

+ignore

Lässt den Bot einen bestimmten Host ignorieren (z.B. wenn er den Bot floodet).

dccstat

Zeigt Informationen über die Dcc Verbindungen des Bots an.

rehash

Lässt den Bot die Konfigurations Datei und alle Tcl-Scripts neu einlesen (dabei werden alle .set Variablen zurücksetzt). Danach speichert er das Userfile und ließt es danach neu ein.

restart

Startet den Tcl-Interpreter neu, stoppt alle Timer und läd das Config-File neu (dabei werden alle .set Variablen zurücksetzt), es läd alle Tcl-Scripts neu und speichert das Userfile, danach wird es neu eingelesen. restart ist laut Eggdrop help ein risikoreicher Befehl, da er nie richtig funktionierte.

uptime

Zeigt an wie lange der Bot läuft.

clearqueque

Löscht alle Nachrichten aus einer bestimmt Queque (mode/server/help/all).

Kommandos für +n User

die

Der bot "stirbt", beendet sich.

simul

Wenn der Befehl im Config File nicht deaktiviert ist kann man damit vortäuschen ein anderer User in der Partyline hätte einen Befehl ausgeführt.

module

Zeigt die geladenen Module und einige Informationen über sie an.

loadmod

Mit loadmod kann man zusätzliche Module laden.

unloadmod

Mit unloadmod kann man Module entfernen.

set

Mit set kann man viele verschiedenen Dinge einstellen z.B. Name des Bots

tcl

Mit .tcl kann man tcl befehle durch die partyline ausführen.

rehelp

Mit rehelp lässt man den Bot seine Help-Files checken.

modules

Modules zeigt die geladenen Module eines gelinkten Bots an.


### commands for the seen module

seen

Wenn das seen Modul geladen ist kann man schauen wann ein in der Userlist vorhandener User das letzte mal vom Bot gesehen wurden.


### commands for the console module

store

Speichtert die Console Einstellungen ab.


### commands for the notes module

snotes

.notes index zeigt eine Liste aller Notes an, .notes read <Nummer/ALL> zeigt die Note an, .notes erase <Nummer/ALL> löscht eine Note.

+noteign

Fügt einen neuen Note Ignore auf einen User oder eine Maske in die Note Ignore Liste hinzu.

-noteign

Löscht einen Note ignore aus der Liste.

noteigns

Zeigt die Note Ignore Liste an.

note

Mit note kann man einem anderen User des Bot(nets) eine Nachricht hinterlassen.

Note Commands für Master:

fwd

Damit kann man Notes von einem User an einen anderen User@Bot weitersenden lassen.


### commands for the share module

flush

Löscht den Resynch Speicher für einen Share Bot.


### commands for the irc module

IRC Module Befehle für Chan Ops:

resetbans

Entfernt alle Bans aus dem Channel, die nicht in der Bot internen Liste sind und fügt alle Bans hinzu die in der Globalen und in der Bot internen Channel Ban List sind aber nicht in der Ban List des Channels.

act

Lässt den Bot eine /me Aktion ausführen.

channel

Zeigt alles User und Channel Modes des Channels an.

deop

Deopt einen User des Channels.

say

Lässt den Bot etwas im Channel sagen.

invite

Lässt den Bot einen User in den Channel inviten.

kick

Lässt den Bot einen User des Channels kicken.

kickban

Kickt einen User des Channels und bannt ihn.

op

Lässt den Bot einen User des Channels oppen.

topic

Lässt den Bot das Channel Topic anzeigen, oder bei einem Argument ein neues Topic setzen.

resetexempts

Entfernt alle Exempts aus dem Channel, die nicht in der Bot internen Liste sind und fügt alle Exempts hinzu, die in der Globalen und in der Bot internen Channel Exempt List sind aber nicht in der Exempt List des Channels.

resetinvites

Entfernt alle Invites aus dem Channel, die nicht in der Bot internen Liste sind und fügt alle Invites hinzu, die in der Globalen und in der Bot internen Channel Invite List sind aber nicht in der Invite List des Channels.


IRC Module Befehle für Ops:

msg

Lässt den bot eine private MSG senden.


IRC Module Befehle für Chan Master:

adduser

Fügt einen User, der in einem Channel ist, in dem der Bot auch ist, in die Userlist des Bots hinzu und addet gleich die entsprechende Hostmask.

deluser

Löscht einen User, der in einem Channel ist, in dem der Bot auch ist.


IRC Module Befehle für Master:

reset

Lässt den Bot die Informationen über alle Channel neu holen, sinnvoll wenn die Informationen durch einen Bug verfälscht wurden.


### commands for the server module

servers

Zeigt alle Server an, die im Config-file stehen und auf welchem der Bot gerade ist.


### commands for the channels module

Channels Module Befehle für Channel Ops:

+ban

Addet einen global oder Channel Ban in die Ban List des Bots.

-ban

Löscht einen globalen oder Channel Ban aus der Ban List des Bots.

bans

Zeigt die globalen oder Channel Bans der internen Ban List des Bots an.


Channels Module Befehle für Channel Master:

+chrec

Fügt einen Channel Record für den User hinzu, so dass eine Info Line gespeichert werden kann und wann der User zuletzt in dem Channel war.

-chrec

Löscht einen Channel Record eines Users.

chaninfo

Zeigt die Eggdrop internen Channel Modes für den Channel an.

chinfo

Ändert die Info Line eines Users.


Channels Module Befehle für Channel Owner:

chanload

Läd die Channel Einstellungen aus dem dynamischen Channel File.

chansave

Speichert die Channel Einstellungen im dynamischen Channel File.

chanset

Mit chanset kann man die Channel Einstellungen verändern.


Channels Module Befehle für Owner:

+chan

Läßt den Bot einen Channel joinen.

-chan

Der Bot verlässt den angegebenen Channel wieder.

 


 

Vielleicht auch interessant:


Über den Autor

Robert programmiert Webanwendungen in ASP, kennt sich bestens im IRC und mit Eggdrops aus und schreibt auch darüber Artikel auf planet-rcs.de

Feedback