Aucune description

Helge Jung d306d068f0 temporarily mute spam lines il y a 9 ans
modules d306d068f0 temporarily mute spam lines il y a 9 ans
willie @ 19c12ab361 5e2e637f01 update willie to 4.5.1 il y a 10 ans
.gitignore cb8b14b5bd introduce node ACLs and playitsafe() check function il y a 10 ans
.gitmodules c6526821c7 add Python Willie IRC bot as submodule il y a 10 ans
Readme.md 44d0751d98 update documentation il y a 10 ans
bot.cfg.example 44d0751d98 update documentation il y a 10 ans
bot.sh 8edb2085c4 Back to Python 2 il y a 10 ans

Readme.md

FFPB Status-Bot

Der Bot benötigt Python 2 und basiert auf "Willie" welcher unverändert als Git-Submodul eingebunden ist. Hinzugefügt wurden mehrere Plugins (Haupt-Modul: "ffpb") und ein Startup-Skript.

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 <peer>
    • MAC und Link zur Statusseite: !link <peer>
  3. Knoten-Aktionen
    • Ping von Peers: !ping <peer>
    • Remote-Execution auf Peers: !exec-on-peer <peer> <command> (hierzu muss der SSH-Key des Bots auf dem Knoten hinterlegt sein)
  4. Monitoring
    • Verwaltung: !monitor add <peer> bzw. !monitor del <peer>
    • 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)

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