No Description

Helge Jung d076af8f13 send 'first seen' msgs to public channel if possible 10 years ago
modules d076af8f13 send 'first seen' msgs to public channel if possible 10 years ago
willie @ 015f8ae78e c6526821c7 add Python Willie IRC bot as submodule 10 years ago
.gitignore cb8b14b5bd introduce node ACLs and playitsafe() check function 10 years ago
.gitmodules c6526821c7 add Python Willie IRC bot as submodule 10 years ago
Readme.md 44d0751d98 update documentation 10 years ago
bot.cfg.example 44d0751d98 update documentation 10 years ago
bot.sh 8edb2085c4 Back to Python 2 10 years ago

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