Iroffer Tutorial
Iroffer ist eine weitverbreitete Software zum Anbieten von Dateien über sog. XDCC-Bots. Hier wird im folgenden auf die Vorbereitung, Installation und Konfiguration eines solchen XDCC-Bots eingegangen.
Was ist Iroffer ?
Iroffer ist eine Software die als sog. Fileserver (Dateiserver) im IRC agiert. Man kann es etwa mit einem Webserver oder einem FTP vergleichen, nur das hier nicht das HTTP- bzw FTP-Protokoll verwendet wird. Für den Transfer wird hier das DCC-Protokoll, welches ein Teil des IRC's ist benutzt. Im Gegensatz zu ähnlichen Programmen ist Iroffer kein Script, sondern ein eigenständiges ausführbares Programm. Es ist auf sehr hohe Leistungfähigkeit bei kleinem Systemresourcenverbraucht (CPU, RAM, HDD) ausgelegt. Iroffer ist für die Betriebsysteme Windows sowie Unix bzw. Linux erhältlich.
Was brauche ich für meinen Bot und wo bekomme ich es ?
Man benötigt einen Computer mit breitbandigem Anschluss (DSL sollte es mindestens sein), der über genügend Uploadbandbreite verfügt (>=16 kb/s) oder einen vServer/Rootserver. Auf diesem PC sollte ein *nix bzw. Windows laufen, sowie je nach Menge der zu sharenden Datei entsprechend Speicherplatz. Für Iroffer selbst kann man etwa 3 MB rechnen, der Rest sind nur die zu sharenden Dateien. Wenn dies alles vorhanden ist, brauchen wir noch die entsprechende Irofferversion für unser Betriebsystem.
Iroffer original:
- für Linux (Source Code): iroffer1.4.b03.tgz
- für Windows (Binary): iroffer_win32bin_1.4.b03.zip
Iroffer Dinoex Mod:
- für Linux (Source Code): iroffermodDinoex.latest.tar.gz
- für Winodws (Binary): iroffer1.4.b02modDinoex1.23-win32.zip
Die Dinoex Mod enthält verschiedene Modifikationen gegenüber dem originalen Iroffer, die wahrscheinlich am herrausrangenste ist die Möglichkeit, Dateigruppen anzulegen und damit die Datein auf dem Bot zu sortieren. Aber des ist nicht alles, wer es genau wissen möchte, kann sich die Readme durchlesen. Diese Mod ist neben der Originalversion die am häufigsten anzutreffende Modifikation in der deutschen Fansubszene.
Installation
Linux
Wenn wir die Sourcen heruntergeladen haben von der gewünschten Version, geht es weiter wie folgt:
- Entpacken der Sourcen & wechseln ins neue Verzeichnis:
tar -xzvf <name der heruntergelandenen datei> cd <name des entstandenen verzeichnisses>
- Starten des Konfigurationsscripts, welches uns eine make-Datei für unser System erstellt:
./Configure
- Starten des Kompilationsprozesses, wenn keine Fehler beim durchlaufen des Konfigurationsscripts auftraten:
make
- Wenn gewünscht, können wir nun die auführbare Datei systemweit verfügbar in /usr/local/bin installieren (optional und es werden hierfür root Previlegien benötigt):
make install
- Wenn Iroffer nicht systemweit installiert wird, bitte die ausführbare Datei "iroffer" aus dem Sourcenverzeichnis zum gewünschten Ausführungsort verschieben.
Damit ist die Installation von Iroffer unter Linux abgeschlossen und wir können uns der Konfiguration unseres Bots zuwenden.
Windows
Wenn wir die Binary von der gewünschten Version heruntergeladen haben, gehen wir bei und entpacken mit einem Packer die .zip-Datei in ein Verzeichnis unserer Wahl auf der Festplatte. Damit ist unter Windows die Installation abgeschlossen, und wir können mit der Konfiguration des Bots fortfahren.
Konfigurieren von Iroffer
Allgemeine Konfiguration
So sieht die mit Iroffer Original 1.3 ausgelieferte Konfigurationsdatei aus, die einzigen Änderungen gegenüber dem Original sind die Übersetzungen der Beschreibungen der einzelnen Optionen:
############################################################################## ## iroffer 1.3.b09 config file ## ## lines starting with "#" or are blank are ignored ## ############################################################################## # Version of this file: # # @(#) sample.config 1.114@(#) # pmg@wellington.i202.centerclick.org|sample.config|20040823145918|21802 # ############################################################################## ## FILES ## ############################################################################## ############################################################################## ### - pid file - ### ### Schreibt die Prozess-ID beim Start in diese Datei ### pidfile mybot.pid ############################################################################## ### - log file - ### ### logfile gibt die Logfile für den Bot vor. logstats sendet statistische ### ### Informationen an einen eventuell aktiven DCC-Chat. Mögliche Werte yes ### ### (ja) und no (nein). logrotate gibt den Zeitraum vor, nach dem die Log- ### ### Datei gewechselt wird, mögliche Werte monthly (monatlich), weekly ### ### (wöchentlich) und daily (täglich). ### logfile mybot.log logstats yes logrotate weekly ############################################################################## ### - state file - ### ### Diese Datei dient als allgemeines Datenlager für die bereitgestellenten ### ### Dateien und die dazugehörigen statistische Daten zwischen den Neustarts ### ### von Iroffer, ### statefile mybot.state ############################################################################## ### - xdcc listing file - ### ### In diese Datei wird ein vollständiges XDCC-Listing exportiert, umzb. ### ### als Packliste auf einer Webseite zu dienen, oder für andere Zwecke ### #xdcclistfile mybot.txt ############################################################################## ## IRC ## ############################################################################## ############################################################################## ### - connection method - ### ### Wie Iroffer sich zum IRC-Server verbinden soll, möglich ist: ### ### direct - verbindet direkt zum Server (normalfall) ### ### bnc <ip> <port> <password> <vhost> ### ### - verbindet zum IRC-Server über eine BNC ### ### verbinden über <ip>:<port> unter ### ### Verwendung von <password> ### ### <vhost> ist optional ### ### wingate <ip> <port> - verbindet den Bot zum Server via einem ### ### Wingate Gateway an <ip>:<port> ### ### custom <ip> <port> - verbindet den Bot zum Server durch ### ### anwendung benutzerdefiniert Kommandos ### ### mehr dazu weiter unten bei proxyinfo ### ### die meisten leute werden im Normalfall "direct" benutzen ### connectionmethod direct ############################################################################## ### - custom connection info - ### ### wenn "connectionmethod custom" verwendet wird, kann mittels proxyinfo ### ### die nötige Befehlszeile für die Verbindung mit dem Proxy/Gateway/etc ### ### angegeben werden, als Platzhalter für Server und Port sehen $s und $p ### ### zur verfügung ### #proxyinfo connect $s:$p #proxyinfo blah blah ############################################################################## ### - onjoin information - ### ### Mittels server_join_raw, server_connected_raw und channel_join_raw ### ### können RAW-IRC-Commands an den Server zu verschiedenen Zeitpunkten ### ### während des Verbindungsaufbaus übergebene werden. ### ### server_join_raw wird ausgeführt wenn NICK, USER gesendet, vor MODE ### ### server_connected wird ausgeführt wenn MODE gesendet, vor JOIN ### ### channel_join_raw wird ausgeführt wenn ein channel gejoint wird ### ### alle 3 Kommandos können mehrfach eingesetzt werden ### #server_join_raw #server_connected_raw #channel_join_raw ############################################################################## ### - nickserv - ### ### Wenn der Nick gegen den NickServ registriert ist, kann hier das Pass- ### ### wort eingetragen werden, damit er sich beim joinen des Server von ### ### selbst identifiziert #nickserv_pass <mein_botnickpassword> ############################################################################## ### - server information - ### ### Liste der Server und Ports im Aufbau: "server irc.domain.com 6667". ### ### Die Angabe des Ports ist optional, Standart ist 6667. ### ### Mehrere Server können (und sollten) angegeben werden ### server irc.efnet.net ############################################################################## ### - channels (upto 50) - ### ### Channelformat: ### ### "channel <channel> [-plist <time>] [-plistoffset <time>] ### ### [-pformat <full|minimal|summary>] [-key <key>] " ### ### plist: Zeit (min) zwischen den einzelnen Announcen ### ### plistoffset: Zeit (min) um die die Announce versetzt wird ### ### pformat: full zeigt alle Packs auf dem Bot und stellt den Standart ### ### minimal stellt eine kleine Announce zusammen (ca. 5 zeilen) ### ### summary zeigt eine 2-Zeilen-Zusammenfassung an ### ### key: für Channels die den Modus +k (Key) haben, definiert das ### ### nötige Passwort für das Joinen des Channel ### #channel #chan01 #channel #chan02 -plist 14 #channel #chan03 -plist 28 -pformat minimal #channel #chan04 -plist 14 -pformat summary -key thekey ############################################################################## ### - user information - ### ### user_nick definert den Nicknamen des Bots ### ### user_realname definiert den text, den man mit /whois abfragen kann ### ### user_modes definiert die Modi, die für den User gesetzt werden solln ### user_nick mybotDCC user_realname My Bot user_modes +i ############################################################################## ### - virtual hosts - ### ### Wenn der Computer/Server mehr als eine lokale IP-Adresse hat kann, ### ### mit local_vhost <ip> angegeben werden, welche genutzt werden soll. ### ### Wenn Iroffer selbst wählen soll, einfach Option deaktivert belassen. ### ### Wichtig, es muss eine IP angegeben werden, kein Domainname!!! ### #local_vhost 123.456.789.123 ############################################################################## ### - incoming TCP connections - ### ### Wenn Iroffer hinter einer Firewall gestartet werden soll, und die mög- ### ### lichkeit besteht, Ports zu öffnen bzw zu forwarden, kann mittels ### ### tcprangestart der erste Port des Bereiches für Iroffer angegeben ### ### werden. Die Menge nötiger Ports entspricht der maximalen Zahl Send- ### ### slots. Wenn nichts defniert ist, wählt das OS selbstständig die Ports ### ### für eintreffende TCP-Verbindungen. ### #tcprangestart 4000 ############################################################################## ### - override unix loginname - ### ### Überschreibt den Unixlogin in der Ident, funktioniert nur ohne OIdent. ### #loginname fakelogin ############################################################################## ### - manual dcc ip translation - ### ### if you are behind a NAT (Network Address Translation) device which ### ### _does_ _not_ intercept and translate dcc commands but _does_ do port ### ### forwarding place the ip address of the NAT below if unsure, leave ### ### commented ### ### NOTE: You must use the IP address in x.x.x.x format not a DNS name. ### #usenatip 123.456.789.123 ############################################################################## ## xdcc ## ############################################################################## ############################################################################## ### - maximum xdcc slots - ### ### Menge gleichzeitiger Dateiübertragungsverbindungen. ### slotsmax 20 ############################################################################## ### - Queue Information - ### ### Grösse der Warteschlange, 0 bedeutet keine Warteschlange. ### queuesize 10 ############################################################################## ### - max transfers per person - ### ### maximale Anzahl gleichzeitiger Übertragungen pro Person ### maxtransfersperperson 1 ############################################################################## ### - max queued items per person - ### ### Maximale Anzahl gleichzeitiger Warteschlangeneinträge ### maxqueueditemsperperson 2 ############################################################################## ### - add/chfile command helper directory - ### ### Hier kann ein optionales Dateiverzeichnis angegeben werden, wo Iroffer ### ### nach Dateien sucht, die mittels add/chfile hinzugefügt werden. ### ### Standartmässig sucht Iroffer im Verzeichnis in dem es ausgeführt wird. ### #filedir /home/me/files #c:\iroffer\files ############################################################################## ### - restrict xdcc list and xdcc send - ### ### Wenn restrictlist gesetzt wird, kann xdcc list und xdcc info nur von ### ### jemanden ausgeführt werden, der sich auch im channel befindet. ### ### Wenn restrictprivlist gesetzt wird, kann der bot nicht mehr via xdcc ### ### list gelistet werden, und gibt, falls es jemand versucht, die mit ### ### restrictprivlistmsg gesetzte Mitteilung aus. ### ### restrictsend bedeutet das nur wer im Channel ist, Dateien vom Bot ### ### empfangen kann, sobald er ihn verlässt, wird der Send abgebrochen. ### #restrictlist #restrictprivlist #restrictprivlistmsg Wait for public list in the channel. #restrictsend ############################################################################## ### - channel xdcc commands - ### ### wenn respondtochannelxdcc gesetzt ist, reagiert der Bot auf Kommandos ### ### die in den Channel gepostet werden. respondtochannelxdcc ############################################################################## ### - channel !list command - ### ### wenn respondtochannellist gesetzt wird, reagiert der bot auf !list ### #respondtochannellist ############################################################################## ### - bypass queue for small files - ### ### Wenn jemand eine Datei anfordert, die kleiner oder gleich dem ### ### definierten Wert (in KB) entspricht, wird diese unabhänig von der ### ### Slotseinstellung gesendet. #smallfilebypass 0 ############################################################################## ### - authorized download hosts - ### ### Hiermit kann eingeschränkt werden, wer vom Bot downloaden darf. Ange- ### ### geben werden Hostmasken. Um allen den Download zu erlauben, einfach ### ### *!*@* als Hostmask einsetzen. ### ### Jokerzeichen sind: ### ### * = 0 oder mehr Zeichen, ? = 1 Zeichen, # = jede positive Zahl ### #downloadhost *!~me@*.domain.com #downloadhost *!me@192.168.10.# downloadhost *!*@* ############################################################################## ## Network Usage ## ############################################################################## ############################################################################## ### - Allow with low bandwidth - ### ### Wenn Packete in der Warteschlange sind, und der Verbrauch der Band- ### ### breite den vorgegebenen Wert unterschreitet, wird ein zusätzlicher ### ### Send gestartet für einen Nutzer aus der Warteschlange. ### ### Achtung, Wert nicht unsinnig niedrig oder hochsetzten! #lowbdwth 15 ############################################################################## ### - transfer min speed - ### ### Mindestgeschwindigkeit beim Downloaden, sonst wird der Download abge- ### ### brochen. ### #transferminspeed 10 ############################################################################## ### - transfer max speed - ### ### Maximalgeschwindigtkeit beim Downloaden, sonst wird künstlich gebremst ### #transfermaxspeed 50 ############################################################################## ### - bandwidth limiting - ### ### Is your sysadmin complaining about you using up too much bandwidth? ### ### You can set a maximum KB/sec that will be sent to the network. ### ### You can define two different limits depending on time of day, ### ### overallmaxspeed is the general limit, overallmaxspeeddayspeed is the ### ### limit during the hours defined by overallmaxspeeddaytime (0 ... 23) ### ### (no looping) and durring days of week ( MTWRFSU ) ### #overallmaxspeed 300 #overallmaxspeeddayspeed 100 #overallmaxspeeddaytime 9 17 #overallmaxspeeddaydays MTWRF ############################################################################## ## Other ## ############################################################################## ############################################################################## ### - autosend feature - ### ### Wenn autosendpack gesetzt wird, schickt bei der Bot sobald ein ### ### Schlüsselwort im Channel aufkommt, das definierte Pack an die Person. ### ### === DIE MEISTEN WERDEN DIES NICHT BENÖTIGEN! === ### ### === HOLT EUCH ERST VOM CHANNEL OP DIE ERLAUBNIS! === ### #autosendpack <packnr> <schlüsselwort> <mitteilung> #autosendpack 1 !rules Sending you the rules. ############################################################################## ### - headline - ### ### Überschrift für alle XDCC-Lists ### #headline New Stuff Just Added!! ############################################################################## ### - credit line - ### ### Fussnote für alle XDCC-Lists ### #creditline Brought to you by me ############################################################################## ### - index bot notify - ### ### Wenn iroffer periodisch jemanden eine Mitteilung schicken soll für ### ### Indizierungszwecke oder anderen bedarf, kann perdidocmsg verwendet ### ### werden: ### ### "periodicmsg <nick> <zeit in min> <mitteilung> #periodicmsg nick 10 index me ############################################################################## ### - remote admin info - ### ### Die Admincommands können nur von jemanden ausgeführt werden, dessen ### ### hostmaske auf die Vorgabe passt, und der das nötige Kennwort kennt. ### ### Diese Kommandos kännen endweder via DCC-Chat oder aber via ### ### /msg <botnick> admin <adminpass> <kommando> ausgeführt werden. ### ### adminhost benötigt eine komplette hostmask im aufbau nick!ident@host ### ### Falls kein identd benutzt wird, nicht vergessen ein "~" hinzuzufügen. ### ### Jokerzeichen sind: ### ### * = 0 oder mehr Zeichen, ? = 1 Zeichen, # = jede positive Zahl ### ### Aus Sicherheitsgründen wird das Adminpasswort verschlüsselt in der ### ### Konfigurationsdatei hinterlegt. Um ein Password zu generieren, bitte ### ### Iroffer mit Option "-c" ausführen und den Instruktionen folgen. ### adminpass add_your_encrypted_password_here adminhost *!~me@*.domain.com adminhost *!me@192.168.10.# ############################################################################## ### - upload directory - ### ### Soll der Bot DCC-Uploads akzeptieren, müssen hier die Uploadhosts, ### ### ein Uploadverzeichnis und die maximale Grösse in MB für einen Upload ### ### definiert werden (0 entspricht keinem Limit bei der Uploadgrösse). ### ### Jokerzeichen sind: ### ### * = 0 oder mehr Zeichen, ? = 1 Zeichen, # = jede positive Zahl ### ### ACHTUNG!! Für das Uploaden sollte ein eigenes Verzeichnis angelegt ### ### ACHTUNG!! werden, um überschreiben bzw. erweitern wichtiger Dateien zu ### ### ACHTUNG!! verhindern, bzw Missbrauch und Explolits nicht zu ermöglichen### #uploadhost *!~me@*.domain.com #uploadhost *!me@192.168.10.# #uploaddir /home/me/upload #uploaddir c:\iroffer\upload #uploadmaxsize 10 ############################################################################## ### - hide OS information- ### ### Wenn Iroffer in den Versionsangaben und in seine Quitmitteilung nicht ### ### das Betriebsystem nennen soll, dann bitte diese Option anstellen. ### #hideos ############################################################################## ### - log notices - ### ### Wenn aktiviert, zeichnet Iroffer alle Notices im Nachichtenspeicher auf### #lognotices ############################################################################## ### - timestamp console - ### ### Wenn definiert, setzt Iroffer eine Zeitmarke in der Konsole ### #timestampconsole ############################################################################## ### - timestamp console - ### ### Wenn definiert, unterdrückt Iroffer die meisten Info meldungen ### #quietmode ############################################################################## ### - periodic notify time - ### ### Legt fest, wie regelmässig Iroffer Nutzer über aktuelle Platzierung in ### ### der Warteschlange informiert bzw über die verbrauchte Bandbreite. ### ### Standart ist 5 min, um es vollständig zu deaktiveren, setzt man es auf ### ### 0. #notifytime 5 ############################################################################## ### - punish slow users - ### ### Wenn ein Nutzer unter den Minimaldownloadspeed fällt, wird er bestraft ### ### indem alle Sends abgebrochen und er aus der Warteschlange entfernt. ### ### durch diese Option kann er noch zusätzliche um die definierte Zeit (in ### ### min) vom Bot ignoriert werden. #punishslowusers 10 ############################################################################## ### - disable md5sum of files - ### ### Standartmässig berechnet Iroffer für alle angebotenen Dateien die MD5- ### ### Prüfsumme. Zum Abstellen von diesem, diese Option setzen. #nomd5sum ############################################################################## ## End ## ##############################################################################
Anhand der Informationen der einzelnen Punkt kann nun die Konfiguration Punkt für Punkt abgearbeitet werden. Wichtig:
- pidfile
- server
- channel
- filesdir
- adminhost
- adminpass
Diese sind die wichtigen Optionen, die für eine Minimalconfig gesetzt werden sollten. Alles weitere kann später noch nachkonfigurert werden (wobei es alles in einem Schritt zu erledigen ist besser ;).
Dinoex Mod spezifische Zusätze
Die hier hinterlegten Angaben beziehen sich auf Dinoex Mod Version 1.23.
############################################################################## ### - xdcc listing group only - ### ### Sorgt dafür, das die XDCC-Liste nur noch mit den Gruppen und dem ### ### Inhalt der Maingruppe exportiert wird. ### #xdcclist_grouponly ############################################################################## ### - admin job file - ### ### Wenn diese Datei definiert ist, sucht Iroffer alle 10 sek nach ihr. ### ### Sollte diese vorhanden sein, werden in ihr enthaltene Kommandos aus- ### ### geführt, und eventuelle Rückgaben in die Datei ### ### <dateiname_der_jobdatei>.done geschrieben. ### #admin_job_file mybot.job ### Zur "channel"-Option kommt ein möglicher Parameter hinzu. ### ### Mit -headline kann für jeden Channel eine alternative XDCC List Über- ### ### schrift gesetzt werden. ### ############################################################################## ### - watch this user - ### ### Es werden keine neuen "xdcc send"-Kommandos akzeptiert, wenn der hier ### ### angegebene Nick nicht online ist. Bereits angefangene Sends werden be- ### ### endet. #enable_nick <nick> ############################################################################## ### - automatic dcc ip translation - ### ### Hole die externe IP vom Server und nutze sie für usenatip. In diesem ### ### Fall kann usenatip auf einen Standartwert gesetzt werden. ### #getipfromserver ############################################################################## ### - excluded from auto-ignore - ### ### Diese Hostmasken (eine pro Zeile) werden nie ignoriert, egal ob sie ### ### Bot flooden oder nicht. Sinnvoll für Chan- bzw. NickServ ### #autoignore_exclude nickserv!nickserv@services.domain.com #autoignore_exclude chanserv!chanserv@services.domain.com ############################################################################## ### - auto-ignore threshold - ### ### Wie agressiv soll autoignore sein ? Mittels autoignore_threshold kann ### ### angegeben werden, wie hoch die durchschnittliche Zeit zwischen zwei ### ### Mitteilungen an den Bot sein muss, ohne das ein Autoignore ausgelöst ### ### wird. Standart sind 10 sekunden. ### #autoignore_threshold 10 ############################################################################## ### - ignore duplicate ip - ### ### Erkennt gefälschte Hostmasken und unterbindet damit das mehr Über- ### ### tragungen als erlaubt zum selben Host stattfinden. Bei feststellen ### ### werden alle Transfers und Warteschlangeneinträge abgebrochen/gelöscht ### ### und ein Ignore für 24 std aktiviert. ### #ignoreduplicateip ############################################################################## ### - holdqueue - ### ### Wenn holdqueue gesetzt ist, werden Warteschlangeneinträge angenommen ### ### aber nicht abgearbeitet. Sie werden gespeichert, so das der Bot zB ge- ### ### fahrlos neu gestartet werden kann, ohne das die Wartschlange verlohren ### ### geht. #holdqueue ############################################################################## ### - no duplicate files - ### ### Wenn noduplicatefiles gesetzt ist, wird verhindert das mittels addnew, ### ### add usw. Dateien dem Bot hinzugefügt werden, die bereits auf ihm vor- ### ### handen sind. ### #noduplicatefiles ############################################################################## ### - remove lost files - ### ### removelostfiles sorgt, wenn es gesetzt ist, dafür das Dateien, die ### ### nicht mehr für den Bot auffindbar sind, von ihm entfernt werden. ### ### !!!Mit Vorsicht zu handhaben!!!! #removelostfiles ############################################################################## ### - groups in caps - ### ### Wenn groupsincaps gesetzt wird, werden alle Gruppenamen in Gross- ### ### schreibung angezeigt. #groupsincaps ############################################################################## ### - auto default group - ### ### Wenn auto_default_group gesetzt ist, wird nach einer Gruppe mit ### ### Dateien gesucht, die einen ähnlichen Namen haben, und die Datei dort ### ### eingefügt, wenn sie mittels addnew, add oder ähnlichen Kommandos dem ### ### Bot hinzugefügt wird. #auto_default_group ############################################################################## ### - adddir exlcude pattern - ### ### Hier können Dateimasken bzw. Endungen angegeben werden, welche beim ### ### hinzufügen ignoriert werden. #adddir_exclude *.txt #adddir_exclude *.md5 ############################################################################## ### - auto add announce - ### ### Wenn dies gesetzt wird, wird jede Datei, die hinzugefügt wird auto- ### ### matisch announced mit der vorgegeben Mitteilung #autoaddann <msg> #autoaddann added ############################################################################## ### - restrictprivlistmain - ### ### Wenn gesetzt, dann wird ein "xdcc list"-Kommando ohne Gruppenangabe ### ### ignoriert. #restrictprivlistmain ############################################################################## ### - restrictprivlistfull - ### ### Wenn gesetzt, wird das Kommando "xdcc list full" ignoriert ### #restrictprivlistfull ############################################################################## ## - need voice - ## ## Wenn gesetzt, wird das listen (xdcc list) und senden (xdcc send) auf ## ## Leute mit mindestens Voice-Status (+ vorm nick) oder höher eingeschränkt ## ## Vorrausetzung ist, das restrictlist und restrictsend gesetzt ist! ## #need_voice ############################################################################## ### - channel !@find command - ### ### Macht Iroffer es möglich, auf "@find <begriff>"-Anfragen im Channel zu ### ### reagieren. Der zu suchende Ausdruck muss mindestens <n> nicht-Joker- ### ### zeichen enthalten. Jokerzeichen sind: ### ### * = 0 oder mehr Zeichen, ? = 1 Zeichen, # = jede positive Zahl ### ### Standarteinstellung: 0 = keine reaktion auf @find #atfind <n> #atfind 3 ############################################################################## ### - daily/weekly/monthly limits - ### ### Wenn ein Limit gesetzt werden soll, was täglich/wöchentlich/monatlich ### ### an Trafficvolumen verbraucht werden soll, so kann dies hiert definiert ### ### werden durch setzen von einem oder mehreren Limits. Wird ein Limit auf ### ### 0 gesetzt, so wird es deaktiviert, ist es grösser null ist es aktiv, ### ### die Angabe des Limits erfolgt in MB. Tage beginnen Mitternacht, Wochen ### ### beginnen Sonntags morgens. Bei überschreiten des Limits werden keine ### ### neune sends mehr angefangen, sie werden erst wenn das Limit abgelaufen ### ### ist (zb neuer Monat), wieder angenommen. ### ### ### ### transferlimits <täglich> <wöchentlich> <monatlich> ### ### ### ### Beispiel: 'transferlimits 200' limit den Bot auf 200 MB Download- ### ### volumen pro Tag. ### ### ### ### Beispiel: 'transferlimits 0 0 5000' limitiert den Bot auf 5000 MB ### ### (5 GB) Downloadvolumen pro Monat (ohne tägliches/ ### ### wöchentliches Limit) ### ### ### ### Beispiel: 'transferlimits 200 1200 5000' limitiert den Bot auf: ### ### 5000 MB (5 GB) pro Monat, 1200 MB (1,2 GB) pro Woche, und ### ### 200 MB (0,2 GB) pro Tag. ### #transferlimits 200 1200 5000 ############################################################################## ### - start of month - ### ### Start des Monats, legt fest wann das monatliche Trafficlimit resetet ### ### werden soll. Standart ist 1. des Monats. #start_of_month 1 ############################################################################## ### - ignore upload bandwidth- ### ### Wird des gesetzt, werden Uploads nicht in das Bandwithlimit mit einbe- ### ### zogen. Ansonsten können schnelle Uploads die Downloads blockieren. ### #ignoreuploadbandwidth ### Es ist nun möglich mehr als ein autosendpack zu definieren ### ############################################################################## ### - hide_list_info - ### ### Zeigt die Zeile "/msg nick xdcc info #x" beim announcen nicht an, wenn ### ### gesetzt. ### #hide_list_info ############################################################################## ### - disablexdccinfo - ### ### Wenn gesetzt, schaltet es den Befehl "xdcc info" aus ### #disablexdccinfo ############################################################################## ### - hidelockedpacks - ### ### Wenn gesetzt, werden gesperrte Packete nicht bei "xdcc list" oder ### ### "xdcc info" anfragen angezeigt. ### #hidelockedpacks
Starten von Iroffer
Linux
Nun, da die Konfiguration geschrieben ist, können wir Iroffer starten für einen ersten Testlauf. Wenn wir Iroffer ohne jegliche Parameter starten bekommen wir in etwa folgende Ausgabe (Original & Mod sind hier gleich!):
deathserv:~ # iroffer iroffer: no configuration file specifed iroffer v1.4.b02 [20050512030219] mod by Dinoex 1.23 by Dinoex, see http://iroffer.dinoex.net/ Usage: iroffer [-vc] [-bdkns] [-u user] [-t dir] configfile [ configfile ... ] -v Print version and exit. -c Generate encrypted password and exit. -d Increase debug level -b Go to background mode -k Attempt to adjust ulimit to allow core files -n No colors in foreground mode -s No screen manipulation in foreground mode -u user Run as user (you have to start as root). -t dir Chroot to dir (you have to start as root).
Für uns wichtig bzw. interessant sind die Parameter "-b", "-u <user>", "-t <dir>". Der Rest (ausser "-c", aber den hatten wir ja schon ;) kann als nebensächlich betrachtet werden, und ist für den normalfall uninteressant, drum gehe ich hier nicht auf sie ein.
Es gibt nun verschiedene Wege Iroffer zu starten. Zum einen im Vordergrundmodus, was bedeutet Iroffer wird gestartet und wir bekommen direkt zugriff auf die Adminconsole. Dafür geben wir ein:
iroffer <name meiner configdatei>
Damit landen wir direkt an der Adminconsole, und können die tätigkeiten unseres Bots direkt beobachten. Dies ist sinnvoll für Fehlerbehebung, ansonsten wäre eher der Start als Hintergrundprozess sinnvoll. Dies erreichen wir durch:
iroffer -b <name meiner configdatei>
Wenn wir unserem Bot nun noch etwas mehr Sicherheit gegen Hacks und eventuelle Explolits verleihn wolln (sinnvoll) gehen wir bei und starten ihn (root anmeldung nötig) chrooted und unter einem eigenen User. Dafür legen wir zuerst einen User fürs Iroffer an (wie die gemacht wird findet ihr im Manual euerer Linux/Unix-Distrobution). Wenn dies geschehen ist, können wir loslegen mit dem Starten wie folgt:
iroffer -u <user für iroffer> -t <pfad zum botverzeichnis> -b <name meiner configdatei>
Hierbei muss man beachten das die Pfadangabe zum Botverzeichnis absolut sein muss. Desweiteren müssen sich die Dateien die geshart werden sollen sich im Verzeichnis des Bots bzw in einem Unterverzeichnis befinden (kann mit "filedir" in der Konfiguration definiert werden). Wenn ein Unterverzeichnis benutzt wird, muss die "filedir"-Angabe relativ zum Botverzeichnis sein. Das heisst wenn mein Botverzeichnis zb "/bots/testbot" ist, und die Dateien in "/bots/testbot/files" liegen, lautet die zeile für "filedir" "filedir /files", nicht "filedir /bots/testbot/files". Dies ist wichtig, da der Bot sonst nicht an die Dateien rankommt. Es besteht ansonsten die Möglichkeit, mittels mount --bind (genaue Angaben in den Man-Pages von Mount) externe Verzeichnisse in den Chroot einzubinden, weil der Bot kann hier über sein Verzeichnis nicht hinaus.
Sollte nun alles korrekt gelaufen sein, erscheint euer Bot nun im IRC und ist bereit zu arbeiten. Nun könnt ihr im Abschnitt über die Adminkommands/Adminconsole weiterlesen. Sollte etwas nicht funktionieren, so startet den Bot im Vordergrundmodus und sucht den Fehler anhand seiner Meldungen, bzw sollte er nichteinmal starten wolln, so überprüft die von ihm beanstandete Zeile in der Konfigurationsdatei.
Windows
Unter Windows haben wir leicht andere Parameter fürs Starten unseres Iroffers, da Windows nicht alles beherrscht, was Linux/Unix kann. Ein Aufruf ohne Parameter von Iroffer gibt in etwa folgende Ausgabe (Original und Mod unterscheiden sich nicht, einziger Unterschied ist, das das Mod nur alle verfügbaren sinnvollen Parameter anzeigt, das Original auch welche ohne Funktion):
C:\iroffer>iroffer iroffer: no configuration file specifed iroffer v1.4.b02 [20050512030219] mod by Dinoex 1.23 [win32-build by TheDeath] by Dinoex, see http://iroffer.dinoex.net/ Usage: iroffer [-vc] [-bdkn] configfile [ configfile ... ] -v Print version and exit. -c Generate encrypted password and exit. -d Increase debug level -b Go to background mode -k Attempt to adjust ulimit to allow core files -n No colors in foreground mode
Interessant sind für uns nur die Parameter "-c" sowie "-b" fürs starten, die anderen haben auch ihren Zweck, sind aber fürs starten nicht unbedingt von Interesse im Normalfall, drum hier nicht weiter dokumentiert. Um den Bot für eventuelle Testzwecke bzw aus anderen Gründen im Vordergrundmodus zu starten, rufen wir ihn an einer Kommandozeile (CMD oder Command) wie folgt auf:
iroffer <meine iroffer configdatei>
Wenn ihr sicher seit, das die Konfiguration sitzt, und nicht immer die CMD offen haben wollt, dann könnt ihr beigehen und den Bot im Hintergrund starten. Dies kann man durch folgenden Aufruf erledigen:
iroffer -b <meine iroffer configdatei>
Der Bot wird nun als Hintergrundprozess gestartet.
Sollte nun alles korrekt gelaufen sein, erscheint euer Bot nun im IRC und ist bereit zu arbeiten. Nun könnt ihr im Abschnitt über die Adminkommands/Adminconsole weiterlesen. Sollte etwas nicht funktionieren, so startet den Bot im Vordergrundmodus und sucht den Fehler anhand seiner Meldungen, bzw sollte er nichteinmal starten wolln, so überprüft die von ihm beanstandete Zeile in der Konfigurationsdatei.
Die Steuerung, oder wie kontrolliere ich den Bot?
Möglichkeiten den Bot zu steuern
Steuern können wir den Bot über verschiedene Wege. Alle Wege benötigen eine IRC-Verbindung (bis auf den Vordergrundmodus) und bedingen es im Channel zu sein, wo sich auch unser Bot befindet (in der Dinoex Mod gibt es einen alternativen Weg auf den später getrennt eigegangen wird). Wir haben die Möglichkeit ihn über
- den Vordergrundmodus (starten ohne Parameter "-b")
- /msg <botname> admin <adminpass> <commandos>
- /dcc chat <botname> (Adminconsole>
zu steuern. Der bequemste Weg sowie in meinen Augen sicherste ist der via DCC-Chat im IRC sich in den Bot einzuloggen. Sind wir im Bot angemeldet, können wir mit dem Kommando "help" folgende Hilfe erhalten (die Dinoex Mod sieht ein wenig anders aus, mehr dazu später):
-- Info Commands -- HELP - Shows Help XDL - Lists Offered Files XDS - Save XDCC File DCL - Lists Current Transfers DCLD - Lists Current Transfers with Details TRINFO n - Lists Information About Transfer n QUL - Lists Current Queue IGNL - Show Ignored List LISTUL - Shows contents of upload directory CHANL - Shows channel list with member list -- Transfer Commands -- CLOSE n - Cancels Transfer with ID = n CLOSEU n - Cancels Upload with ID = n RMQ n - Removes Queue Number n NOMIN n - Disables Minspeed For Transfer ID n NOMAX n - Disables Maxspeed For Transfer ID n SEND nick n - Sends Pack n to nick PSEND <channel> <style> - Sends <style> (full|minimal|summary) XDCC LIST to <channel> QSEND - Sends Out The First Queued Pack -- Pack Commands -- INFO n - Show Info for Pack n REMOVE n - Removes Pack n REMOVEDIR <dir> - Remove Every File in <dir> RENUMBER x y - Moves Pack x to y ADD <filename> - Add New Pack With <filename> ADDDIR <dir> - Add Every File in <dir> CHFILE n <msg> - Change File of pack n to <msg> CHDESC n <msg> - Change Description of pack n to <msg> CHNOTE n <msg> - Change Note of pack n to <msg> CHMINS n x - Change min speed of pack n to x KB CHMAXS n x - Change max speed of pack n to x KB CHGETS n x - Change the get count of a pack -- Misc Commands -- MSG <nick> <message> - Send a message to a user MESG <message> - Sends msg to all users who are transferring MESQ <message> - Sends msg to all users in a queue IGNORE n <hostmask> - Ignore hostmask (nick!user@host) for n minutes, wildcards allowed UNIGNORE <hostmask> - Un-Ignore hostmask NOSAVE n - Disables XDCC AutoSave for next n minutes NOSEND n - Disables XDCC Send for next n minutes NOLIST n - Disables XDCC List and Plist for next n mins MSGREAD - Show MSG log MSGDEL - Delete MSG log RMUL <file> - Delete a file in the Upload Dir RAW <command> - Send <command> to server (RAW IRC) -- Bot Commands -- SERVERS - Shows the server list JUMP <num> - Switches to a random server or server <num> SERVQC - Clears the server send queue STATUS - Show Useful Information REHASH - Re-reads config file(s) and reconfigures BOTINFO - Show Information about the bot status MEMSTAT - Show Information about memory usage CLEARRECORDS - Clears transfer, bandwidth, uptime, and total sent REDRAW - Redraws the Screen DELHIST - Deletes console history QUIT - Close this DCC chat CHATME - Sends you a DCC Chat Request CHATL - Lists DCC Chat Information CLOSEC n - Closes DCC Chat with ID = n DEBUG n - Set Debugging level to n SHUTDOWN <act> - Shutdown iroffer, <act> is "now", "delayed", or "cancel"
Kommandos
Was die Kommandos im einzelnen tun, will ich nun hier erläutern.
XDL
Verfügbar in: console, dcc, msg
Beschreibung: Zeigt die auf dem Bot freigegebenen Dateien an
Ausgabebeispiel:
** 2 packs ** 12 of 12 slots open, Record: 65.8KB/s ** Bandwidth Usage ** Current: 0.5KB/s, Cap: 50.0KB/s, Record: 2.5KB/s ** To request a file type: "/msg offerDCC xdcc send #x" ** ** To request details type: "/msg offerDCC xdcc info #x" ** #1 4618x [ 55K] iroffer 1.0.1 - Stable (v1.0) version #2 361x [ 66K] iroffer 1.1b8 - Experimental (v1.1) version ** The official iroffer distribution source **
XDS
Verfügbar: console, dcc, msg
Beschreibung: Sorgt für sofortiges schreiben der State- und XDCCList-Datei auf die Festplatte
DCL
Verfügbar: console, dcc, msg
Beschreibung: Zeigt eine Zusammenfassung der aktuell laufenden Transfers
Ausgabebeispiel:
Current Transfers ID User File Status 5 PMG1 testfile1.tgz Listening 10 PMG2 testfile2.tgz Sending 47% 11 PMG3 testfile3.tgz Sending 90% 15 PMG4 testfile4.tgz Finishing Current Upload ID User File Status 1 PMG5 testfile5.tgz Getting 33%
Anmerkungen:
- ID: Jeder Up- und Download besitzt eine eigene ID
- User: Der Nick des Benutzers, der den Transfer angefordert hat
- File: Name der Datei die Übertragen wird
- Status:
*Listening: Der Tranfer wurde initiert, aber noch nicht verbunden *Sending: Der Transfer läuft, die Prozentzahl zeigt den Fortschritt *Finishing: Der Transfer wurde beendet, und es wird auf die abschliessende Bestätigung gewartet *Closing: Der Transfer wurde abgeschlossen, aber nocht nicht von der Liste entfernt *Connecting: Ein Upload wurde initiert, aber noch nicht verbunden *Getting: Der Upload läuft, Prozentzahl zeigt den Fortschritt
DCLD
Verfügbar: console, dcc, msg
Beschreibung: Zeigt eine detailierte Liste der Transfers als DCL
Ausgabebeispiel:
Current Transfers ID User File Status ^- Speed Current/ End Start/Remain Min/ Max Resumed -------------------------------------------------------------------- 5 PMG testfile1.tgz Sending 40% ^- 2.9K/s 16399K/ 40686K 1h06m/ 2h21m no/ no 5458K 11 PMG2 testfile3.tgz Sending 24% ^- 3.0K/s 8650K/ 36178K 38m08s/ 2h35m no/ no no -------------------------------------------------------------------- Current Uploads ID User File Status ^- Speed Current/ End Start/Remain -------------------------------------------------------------------- 1 testDCC testfile20 Getting 31% ^- 0.0K/s 6371K/ 20480K 0m00s/99h59m --------------------------------------------------------------------
Anmerkungen:
- ID: Jeder Up- und Download besitzt eine eigene ID
- User: Der Nick des Benutzers, der den Transfer angefordert hat
- File: Name der Datei die Übertragen wird
- Status:
*Listening: Der Tranfer wurde initiert, aber noch nicht verbunden *Sending: Der Transfer läuft, die Prozentzahl zeigt den Fortschritt *Finishing: Der Transfer wurde beendet, und es wird auf die abschliessende Bestätigung gewartet *Closing: Der Transfer wurde abgeschlossen, aber nocht nicht von der Liste entfernt *Connecting: Ein Upload wurde initiert, aber noch nicht verbunden *Getting: Der Upload läuft, Prozentzahl zeigt den Fortschritt
- Speed: Akutelle Übertragungsgeschwindigtkeit
- Current: Aktuelle Position innerhalb der Datei (in KB)
- End: Gesamtlänge der Datei (in KB, entspricht der Gesamtgrösse)
- Start: Zeit seit Anfang des Transfers
- Remain: Verbleibende Zeit bis zum Abschluss des Transfers
- Min: Minimalspeed des Transfers (wenn ein Limit vorhanden ist)
- Max: MaxinalSpeed des Transfers (Wenn ein Limit vorhanden ist)
- Resumed: Ab welchen Punkt die Datei, falls resumed, fortgesetzt wurde
trinfo <id>
Verfügbar: console, dcc, msg
Beschreibung: Zeigt sehr detailierte Informationen über einen einzelnen Transfer
Beispiel: trinfo 0
Ausgabebeispiel:
Transfer Info for ID 1: User PMG, Hostname cant.get.enough.iroffer.org, Status Sending File: testfile1.tgz Start 5458K, Current 18624K, End 40686K (46% File, 37% Xfer) Min no, Current 3.1K/s, Max no, In Transit 116K Transfer started 1h 19m ago, Finish in 1h 58m, Last contact 0m 0s ago. Local: 10.0.0.1:3091, Remote: 10.0.0.2:1114 Sockets: Listen 0, Transfer 7, File 6
Anmerkungen:
- User: Der Nick des Benutzers, der den Transfer angefordert hat
- Hostname: Hostname der Person, die den Transfer anforderte zum Zeitpunkt der Anforderung
- Status:
*Listening: Der Tranfer wurde initiert, aber noch nicht verbunden *Sending: Der Transfer läuft, die Prozentzahl zeigt den Fortschritt *Finishing: Der Transfer wurde beendet, und es wird auf die abschliessende Bestätigung gewartet *Closing: Der Transfer wurde abgeschlossen, aber nocht nicht von der Liste entfernt *Connecting: Ein Upload wurde initiert, aber noch nicht verbunden *Getting: Der Upload läuft, Prozentzahl zeigt den Fortschritt
- File: Name der Datei die Übertragen wird
- Start: Position von wo aus innerhalb der Datei die Übertragung gestartet wurde (in KB)
- Current: Aktuelle Position innerhalb der Datei (in KB)
- End: Gesamtlänge der Datei (in KB, entspricht der Gesamtgrösse)
- % File: Wie weit der Transfer innerhalb der Datei ist (in Prozent)
- % XFer: Wie weit der Transfer ist
- Min: Minimalspeed des Transfers (wenn ein Limit vorhanden ist)
- Max: MaxinalSpeed des Transfers (Wenn ein Limit vorhanden ist)
- In Transit: Die Menge Daten, die im Socketbuffer hinterlegt ist plus die Menge Daten die im Transit zum Nutzer ist
- Finish in: geschätzte Zeit bis zum Abschluss der Übertragung
- Last Contact: Wie lange der letzte Kontakt mit dem Nutzer her ist
- Sockets: Die Socketnr. die mit dem Transfer azozziert ist, 0 bedeutet das das Socket nicht benutzt wird