FrackBot

From Frack - Hackerspace Friesland
Jump to navigationJump to search
Project: FrackBot
Frackbot at irc.png
Status lopend
Betrokkenen
Afbeelding Anoniem.png Fludizz
Fludizz Rol: deelnemer Deskundig met: GL-Inet, Glasvezel lassen, Iptables, Linux, Netwerken, Nftables, OpenVPN, Python, RaspberryPi, Software Beginnend met: ENC28J60 Werkt aan: Geen projecten :(
,
Gebruiker Elmer.jpg Elmer
Gebruiker Elmer.jpgElmer de Looff (Elmer) Rol: niet-deelnemer Deskundig met: Arduino, ENC28J60, Elektronica, GnuCash, HTML, LPD8806, Linux, MediaWiki, Mercurial, Netwerken, OpenVPN, Programmeren, Python, SSH, Software, Solderen Beginnend met: Dm-crypt, Javascript Werkt aan: Geen projecten :(
Kennisgebied(en) Python
Afgeleide projecten Mac2user
ProjectoverzichtProject toevoegen

Een IRC-bot voor ons Frack-kanaal. Hiermee kunnen zaken als wiki-updates en het openen/sluiten van de space gemeld worden. Gebaseerd op code uit de Python-workshops.

Tijdens de Python-workshops is er ook gewerkt aan een IRC-clientbot-implementatie. Elmer heeft hiervoor de backend en de core plugins geschreven waarmee de basis IRC-functionaliteit werkt.

Algemeen

De bot draait in #frack op irc.eth0.nl vanaf de spaceserver.

Plugins

Naast de basis-plugins voor de IRC-functionaliteit zijn er een aantal extra plugins geladen:

  • frack_space.py
  • frack_wiki.py
  • frack_door.py
  • frack_users.py
  • frack_alarm.py
  • frack_ip.py
  • frack_mumble.py

frack_space.py

Deze plugin heeft twee functies. Als de monitor gestart wordt, controleert deze plugin de spacestate elke minuut of wordt er geluisterd naar de spacestate. Veranderingen van de status worden op IRC vermeld. Deze plugin kan ook gebruikt worden om de huidige spacestate in het kanaal te melden. De trigger voor de ze plugin is "!space [start|stop|status]":

  • start - Hiermee wordt de spacemonitor gestart.
  • stop - Hiermee wordt de spacemonitor gestopt.
  • status - Hiermee wordt de status van de spacemonitor gecontroleerd en getoond.
  • Zonder parameter wordt de huidige spacestate, zoals deze op de website staat, gemeld.

frack_wiki.py

Deze plugin heeft als functie dat deze elke 5 minuten de RSS van de wiki uitleest en alle changes die er in de laatste 5 minuten geweest zijn worden netjes geformateerd op het IRC-kanaal gezet met een TinyURL naar de betreffende wiki page. Deze plugin reageert op de trigger "!wiki [start|stop]":

  • start - Hiermee wordt de wikimonitor gestart.
  • stop - Hiermee wordt de wikimonitor gestopt.
  • Zonder parameter wordt de huidige status van de wikimonitor gecontroleerd en getoond.

frack_door.py

Deze plugin luistert naar het SpaceAnnounce protocol voor announcements van de Deurbel. Zodra de deurbel ingedrukt wordt meldt deze plugin dat op IRC. Deze plugin is ook verantwoordelijk voor het laten overgaan van de space-telefoon. Deze plugin reageert op de trigger "!deurbel [start|stop]":

  • start - Hiermee wordt de deurmonitor gestart.
  • stop - Hiermee wordt de deurmonitor gestopt.
  • Zonder parameter wordt de huidige status van de deurmonitor gecontroleerd en getoond.

frack_users.py

Deze plugin leest de MAC-adressen uit die op het moment van opvragen actief zijn op het netwerk en vergelijkt deze lijst met een lijst van bekende mac-adressen. Zie ook Mac2user voor meer details. Deze plugin heeft geen lopend proces en loopt eenmalig als de trigger gebruikt wordt. Er wordt geen historie van MAC-adressen opgebouwd in deze plugin. De plugin reageert op de trigger "!wie".

frack_alarm.py

Deze plugin luistert net als frack_door.py naar het SpaceAnnounce protocol, echter luistert deze naar de alarm announcements. Zodra er een announcement met als text 'opened' binnen komt wordt er een loop gestart die elke minuut op IRC roept dat de nooddeur niet langer op slot zit. Deze plugin reageert op de trigger "!alarm [start|stop]":

  • start - Hiermee wordt de alarmmonitor gestart.
  • stop - Hiermee wordt de alarmmonitor gestopt.
  • Zonder parameter wordt de huidige status van de alarmmonitor getoond.

frack_ip.py

Deze plugin is bedoeld om het IP-adres van de space op IRC te melden en is ontwikkeld om in het geval van onjuiste of niet beschikbare DNS-gegevens het actuele IP van de space te rapporteren. Deze plugin vraagt http://www.kratjebierhosting.nl/myip.php op, een simpele PHP API welke enkel het IP-adres als return geeft. De bestaande grote cq. commerciële MyIP blokkeren doorgaans gescript gebruik van hun service, vandaar dat deze API bij

Afbeelding Anoniem.png Fludizz
Fludizz Rol: deelnemer Deskundig met: GL-Inet, Glasvezel lassen, Iptables, Linux, Netwerken, Nftables, OpenVPN, Python, RaspberryPi, Software Beginnend met: ENC28J60 Werkt aan: Geen projecten :(

op de webserver is gezet. Deze plugin reageert op "!ip", dan wordt het huidige IP-adres opgevraagd.

frack_mumble.py

Deze plugin vraagt de huidige gebruikers van de Frack Mumble-server (op mumble.frack.nl) op. Om dit te doen vraagt de plugin http://niekie.com/frackmumble/users op, een simpele JSON API welke een array teruggeeft van nicknames verbonden met de Mumble-server. Deze plugin reageert op "!mumble", dan worden de huidige gebruikers verbonden met de server getoond.