# FFPB Status-Bot Der Bot benötigt Python 2 und basiert auf ["Willie"](http://willie.dftba.net) welcher unverändert als Git-Submodul eingebunden ist. Hinzugefügt wurden mehrere Plugins (Haupt-Modul: "[ffpb](modules/ffpb.py)") und ein [Startup-Skript](bot.sh). Der Bot geht davon aus, dass er in einem "Maschinenraum"-IRC-Channel arbeitet - kann jedoch zusätzlich Informationen in einem öffentlichen Kanal bereitstellen. Die im Bot konfigurierten Admins haben erweiterte Berechtigungen auch in den ffpb-Plugins, wie z.B. Remote-Execution auf allen Knoten (sofern der SSH-Key des Bots dort hinterlegt ist). ## Funktionen 1. Status-Abruf * periodischer Abruf von nodes.json und ALFRED-Daten * Anzahl Knoten und Clients: `!status` * Highscore #Knoten und #Clients: `!highscore` 2. Knoten-Information * allg. Infos (insb. aus ALFRED): `!info ` * MAC und Link zur Statusseite: `!link ` 3. Knoten-Aktionen * Ping von Peers: `!ping ` * Remote-Execution auf Peers: `!exec-on-peer ` (hierzu muss der SSH-Key des Bots auf dem Knoten hinterlegt sein) 4. Monitoring * Verwaltung: `!monitor add ` bzw. `!monitor del ` * periodischer Ping aller Peers, Meldung falls sich eine Änderung ergibt 5. Messaging * bei entsprechender Konfiguration öffnet der Bot einen TCP-Port, die erste Zeile einer eingehenden Verbindung wird in den Channel geschickt * Meldungen die mit "PUBLIC: " beginnen werden, sofern vorhanden, in den öffentlichen Kanal gepostet (ohne den Marker) 6. Willie-Standardfunktionen für owner/admin: * Neuladen des FFPB-Moduls: `!reload ffpb` * Nachricht in Channel schreiben: `!msg #channel Nachricht` ## Module ### ffpb Stellt Kern-Funktionalitäten bereit wie z.B. die periodische Abfrage der aktuellen ALFRED-Daten, Mapping von Name/MAC zu Knoten-Info, etc. ### ffpb-monitoring Monitoring-Funktionen - periodischer Ping von Knoten sowie das Management-Kommando `!monitor`. ### ffpb-netstatus Funktionen, die den Status des Netzwerks betreffen - z.B. `!status` und `!highscore`. ### ffpb-nodeinfo Funktionen, die Auskunft über einzelne Knoten geben - z.B. `!info` und `!mesh`. ## Installation Dieses Git-Repository wird an beliebiger Stelle geklont (diese Dokumentation geht von /opt/ffpb-statusbot aus): ``` git clone --recursive https://git.c3pb.de/freifunk-pb/status-bot.git /opt/ffpb-statusbot ``` Der Bot hat Abhängigkeiten: ``` apt-get install python-pip python-netaddr python-urllib2 pip install "GitPython>=0.3.2.RC1" ``` Das Start-Up-Skript erfordert einen der Parameter "start" oder "stop" und eignet sich als Init-Skript: ``` ln -s /opt/ffpb-statusbot/bot.sh /etc/init.d/ffpb-statusbot update-rc.d ffpb-statusbot enable ``` ## Konfiguration Die Datei `bot.cfg.example` enthält eine Beispiel-Konfiguration und muss für die Benutzung nach `bot.cfg` kopiert und angepasst werden. Die wichtigsten Parameter sind nachfolgend erklärt: ### core Willie-Standardkonfiguration ([siehe auch](https://github.com/embolalia/willie/wiki/Core-configuration-settings)) | Parameter | Typ | Beschreibung | |------------|----------|---------------------------------| | nick | String | Nickname des Bots | | user | String | Benutzername gegenüber dem IRC-Server | | name | String | "Real Name" des Bots im IRC | | host | String | Host des IRC-Servers | | port | Integer | Port des IRC-Servers | | owner | String | Nickname des Besitzer des Bots | | admins | Liste | weiterer Bot-Admins (kommasepariert, keine Leerzeichen um das Komma setzen!) | | channels | Liste | IRC-Channel die der Bot betritt | ### ffpb Parameter für das ffpb-Zusatzmodul | Parameter | Typ | Beschreibung | |------------|----------|---------------------------------| | msg_enable | Boolean | Soll der Messaging-Server aktiviert werden? | | msg_port | Integer | TCP-Port auf dem der Messaging-Server lauscht (Default = 2342) | | msg_target | String | Nutzer/Raum zu dem die Messaging-Zeilen geschickt werden |