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
`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**.
Das Script [`foodoor-update-keydb`](debian/usr/sbin/foodoor-update-keydb)
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
+1 -1
View File
@@ -1,5 +1,5 @@
Package: foodoord
Version: 3.3.3
Version: 3.4.0
Maintainer: Tobi <tobi@chaospott.de>
Architecture: all
Description: Control the doors of the club, ja!
+8
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env python3
# vim: ts=2 sw=2 et
import datetime
import grp
import json
import os
@@ -12,6 +13,7 @@ import threading
import time
from configparser import ConfigParser
from dataclasses import dataclass
from zoneinfo import ZoneInfo
import paho.mqtt.client as mqtt
import pifacedigitalio
@@ -147,6 +149,12 @@ class Foodoord:
self.pifacedigital.leds[gpio].turn_off()
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:
self.pifacedigital.relays[self.RELAYS_UNLOCK].toggle()
time.sleep(2)