3 Commits

Author SHA1 Message Date
T cca78896a9 use correct timezone 2026-06-17 13:20:48 +02:00
지지 ᚠד (Jiji Freya Daniel) Maslowski 23e126a08b do not open upstairs on bell ring on a Wednesday
Signed-off-by: 지지 ᚠד (Jiji Freya Daniel) Maslowski <info@orangecms.org>
2026-06-13 12:40:42 +02:00
Daniel Maslowski 3dd171484f Document how key update script runs the commands 2025-07-23 21:20:17 +02:00
3 changed files with 21 additions and 3 deletions
+12 -2
View File
@@ -43,8 +43,18 @@ Das IdentityFile ist der Deploy-SSH-Key, der im [Repo](https://git.chaospott.de/
### Schlüsselupdate ### Schlüsselupdate
`foodoor-update-keydb` Das Script [`foodoor-update-keydb`](debian/usr/sbin/foodoor-update-keydb)
Aktualisiert die Schlüssel auf der Tür und baut die *Authorized_Keys* für die User *open* und *close*. Keys die nicht dem OpenSSH-Format mit 4096 bit entsprechen, werden ignoriert. Wenn das Script von Hand aufgerufen wird, werden die betroffenen Keys angezeigt. Über einen Cronjob werden die Keys alle **5 Min aktualisiert**. aktualisiert regelmäßig die Schlüssel auf der Tür und baut die `authorized_keys`
für die Benutzer `open` und `close`. Keys, die nicht dem OpenSSH-Format mit 4096
Bit entsprechen, werden ignoriert.
Wenn das Script von Hand aufgerufen wird, werden die betroffenen Keys angezeigt.
Über einen Cronjob werden die Keys **alle 5 Minuten aktualisiert**.
Das Script beinhaltet auch den Aufruf von `/usr/sbin/foodoor`, das dem Keyfile
für den jeweiligen Schlüssel hinzugefügt wird. Bei Login mit dem Benutzer
`open`/`close`/`door` wird das entsprechende Argument dadurch mitgegeben, um die
Tür zu öffnen oder zu schließen bzw. den Status abzufragen.
### Schlüsselformate ### Schlüsselformate
+1 -1
View File
@@ -1,5 +1,5 @@
Package: foodoord Package: foodoord
Version: 3.3.3 Version: 3.4.0
Maintainer: Tobi <tobi@chaospott.de> Maintainer: Tobi <tobi@chaospott.de>
Architecture: all Architecture: all
Description: Control the doors of the club, ja! Description: Control the doors of the club, ja!
+8
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# vim: ts=2 sw=2 et # vim: ts=2 sw=2 et
import datetime
import grp import grp
import json import json
import os import os
@@ -12,6 +13,7 @@ import threading
import time import time
from configparser import ConfigParser from configparser import ConfigParser
from dataclasses import dataclass from dataclasses import dataclass
from zoneinfo import ZoneInfo
import paho.mqtt.client as mqtt import paho.mqtt.client as mqtt
import pifacedigitalio import pifacedigitalio
@@ -147,6 +149,12 @@ class Foodoord:
self.pifacedigital.leds[gpio].turn_off() self.pifacedigital.leds[gpio].turn_off()
def doorbell(self, event): def doorbell(self, event):
# ignore doorbell button on Wednesdays
now = datetime.datetime.now(ZoneInfo("Europe/Berlin"))
if ((now.isoweekday() == 3 and now.time() >= datetime.time(10))
or (now.isoweekday() == 4 and now.time() < datetime.time(2))):
return
if self.status_open: if self.status_open:
self.pifacedigital.relays[self.RELAYS_UNLOCK].toggle() self.pifacedigital.relays[self.RELAYS_UNLOCK].toggle()
time.sleep(2) time.sleep(2)