====== Clubstatus ====== ^ clubstatus || ^ Git | [[https://git.aachen.ccc.de/clubstatus/clubstatusd|clubstatusd]] [[https://git.aachen.ccc.de/clubstatus/clubstatus-web|Web-Frontend]] [[https://git.aachen.ccc.de/clubstatus/maccollect|maccollect]] | ^ Host | [[https://wiki-intern.aachen.ccc.de/infrastruktur:server:tokamak:web-status|web-status.server.aachen.ccc.de]] | ^ Kontakt | [[wiki:user:clonejo |clonejo ]] | ^ Status | aktiv (2022-05-16) | * Passwort: siehe [[https://wiki-intern.aachen.ccc.de/doku.php?id=vereinsfoo:logindaten#status|internes Wiki]] (Benutzername ist egal) * läuft unter https://status.aachen.ccc.de/ * die [[https://github.com/clonejo/clubstatusd/blob/master/api-specification.md|API]] ist unter https://status.aachen.ccc.de/api/ ===== Presence ===== === Die Clubinfrastruktur erkennt deine Hosts und meldet dich als anwesend === {{ :projekte:clubstatus-maccollect-screenshot.png?400|}} * Geräte im Club-Netz werden anhand der MAC-Adresse erkannt. * **Jetzt NEU mit Selfservice™!** Navigiere mit dem zu erkennenden Gerät zu [[http://pile.space.aachen.ccc.de:1234/]], vergebe einen Nicknamen und wähle "Register device". Innerhalb von 1-2 Minuten sollte der Nickname im Clubstatus auftauchen. * Der Code für dieses Feature liegt separat im Gitlab: https://git.aachen.ccc.de/clubstatus/maccollect * Die MAC-Adressen deiner Endgeräte werden ausschließlich gehasht abgelegt. === vom eigenen Rechner === * Die Präsenzliste wird nicht sofort aktualisiert. Solange der Server bei einem Presence-Request mit 200 antwortet, hat es geklappt :) * Nach 10+n Minuten gibt es einen Timeout, und der Benutzername wird wieder aus der Präsenzliste entfernt. Daher muss alle 10min ein neuer Request gesendet werden. #!/bin/python3 import json import requests import subprocess import sys import time USER = "Hans Acker" PASSWORD = "zensiert :)" def in_cccac_wlan(): output = subprocess.check_output(["nmcli", "device", "show"]) for line in output.split(b"\n"): columns = line.split(b": ") if columns[0] == b"IP4.SEARCHES[1]": if columns[1].strip() == b"space.aachen.ccc.de": print("CCCAC network detected", file=sys.stderr) return True print("CCCAC network not detected", file=sys.stderr) return False while True: if in_cccac_wlan(): print(f"Marking {USER} as currently present.", file=sys.stderr) session = requests.Session() session.auth = ("", PASSWORD) j = {"type": "presence", "user": USER} r = session.put("https://status.aachen.ccc.de/api/v0", data=json.dumps(j)) r.raise_for_status() time.sleep(600) Alternativ: #!/bin/sh if arping -c 1 172.20.122.1 | grep -q 00:A0:57:24:80:7D then curl "https://status.aachen.ccc.de/api/v0" -X PUT --data '{"type": "presence", "user": "Hans Acker"}' -s -u :zensiert fi ===== SpaceAPI ===== Der clubstatusd implementiert auch https://spaceapi.io/, unter https://status.aachen.ccc.de/spaceapi. Die statischen Werte werden im Config-File vom clubstatusd eingestellt, unsere [[https://wiki-intern.aachen.ccc.de/doku.php?id=infrastruktur:admins|Admins]] können diese ändern.