====== 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.