Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
projekte:clubstatus [2017-10-25 17:51]
moho1 removed double mailto
projekte:clubstatus [2021-11-21 03:21]
clonejo
Line 3: Line 3:
 <WRAP right> <WRAP right>
 ^ clubstatus  || ^ clubstatus  ||
-^ Git | [[https://github.com/clonejo/clubstatusd|clubstatusd]] [[https://github.com/clonejo/clubstatus-web|Web-Frontend]] |+^ Git | [[https://github.com/clonejo/clubstatusd|clubstatusd]] [[https://github.com/clonejo/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]] | ^ Host | [[https://wiki-intern.aachen.ccc.de/infrastruktur:server:tokamak:web-status|web-status.server.aachen.ccc.de]] |
 ^ Kontakt | [[wiki:user:clonejo |clonejo ]] | ^ Kontakt | [[wiki:user:clonejo |clonejo ]] |
-^ Status | <fc green>aktiv</fc> (2016-03-16 19:10) |+^ Status | <fc green>aktiv</fc> (2021-11-11) |
 </WRAP> </WRAP>
  
-  * Passwort: siehe [[https://wiki-intern.aachen.ccc.de/doku.php?id=vereinsfoo:logindaten#status|internes Wiki]] (das altbekannte Passwort, Benutzername ist egal)+  * 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/   * 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/   * die [[https://github.com/clonejo/clubstatusd/blob/master/api-specification.md|API]] ist unter https://status.aachen.ccc.de/api/
  
 ===== Presence ===== ===== Presence =====
 +
 === Die Clubinfrastruktur erkennt deine Hosts und meldet dich als anwesend === === Die Clubinfrastruktur erkennt deine Hosts und meldet dich als anwesend ===
-  auf Stellarator läuft in der maccollect-VM das Programm maccollect ([[https://git.aachen.ccc.de/~luks/maccollect|repo]], Branch "status-api"+<WRAP right> 
-  * Mac-Adressen der eigenen Geräte eintragen; dafür einen [[admins@aachen.ccc.de?body=Hallo,%0a%0akoenntet Ihr unter dem Namen%0a%0a%24name%0a%0adie Mac-Adressen%0a%0a%24mac1%0a%24mac2%0a%0aeintragen?%0a%0aVielen Dank!|Admin fragen]] +{{ :projekte:clubstatus-maccollect-screenshot.png?400|}} 
-    in Ansible in der Datei [[https://gitlab.aachen.ccc.de/admins/ansible/blob/master/roles/host-maccollect/files/config.yml|roles/host-maccollect/files/config.yml]] den Benutzernamen und zugehörige Mac-Adressen eintragen +</WRAP> 
-    * site.yml für maccollect.doel.aachen.ccc.de ausführen+ 
 +  Geräte im Club-Netz werden anhand der MAC-Adresse erkannt. 
 +  * **Jetzt NEU mit Selfservice™!** Navigiere mit dem zu erkennenden Gerät zu [[http://fensterpi:1234/]], vergebe einen Nicknamen und wähle "Register device". Innerhalb von 1-2 Minuten sollte der Nickname 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 === === vom eigenen Rechner ===
   * Die Präsenzliste wird nicht sofort aktualisiert. Solange der Server bei einem Presence-Request mit 200 antwortet, hat es geklappt :)   * 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.
 <code python> <code python>
 #!/bin/python3 #!/bin/python3
  
-import subprocess 
-import requests 
 import json import json
 +import requests
 +import subprocess
 +import sys
 +import time
 +
  
 USER = "Hans Acker" USER = "Hans Acker"
-PASSWORD = "zensiert" +PASSWORD = "zensiert :)
-DEVICE = "wlp3s0"+
  
 def in_cccac_wlan(): def in_cccac_wlan():
-    output = subprocess.check_output(["nmcli", "device", "show", DEVICE]) +    output = subprocess.check_output(["nmcli", "device", "show"]) 
-    for in output.split(b"\n"): +    for line in output.split(b"\n"): 
-        columns = l.split(b": ") +        columns = line.split(b": ") 
-        if columns[0] == b"IP4.DOMAIN[1]":+        if columns[0] == b"IP4.SEARCHES[1]":
             if columns[1].strip() == b"space.aachen.ccc.de":             if columns[1].strip() == b"space.aachen.ccc.de":
 +                print("CCCAC network detected", file=sys.stderr)
                 return True                 return True
 +    print("CCCAC network not detected", file=sys.stderr)
     return False     return False
  
-if in_cccac_wlan(): + 
-    session = requests.Session() +while True: 
-    session.auth = ("", PASSWORD) +    if in_cccac_wlan(): 
-    j = {'type''presence''user': USER} +        print(f"Marking {USER} as currently present.", file=sys.stderr) 
-    r = session.put("https://status.aachen.ccc.de/api/v0", data=json.dumps(j))+        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) 
 </code> </code>
  
Line 59: Line 76:
 </code> </code>
  
 +
 +===== 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.
Navigation



You are not allowed to add pages