summaryrefslogtreecommitdiffstats
path: root/krebs/2configs/shack
diff options
context:
space:
mode:
Diffstat (limited to 'krebs/2configs/shack')
-rwxr-xr-xkrebs/2configs/shack/doorstatus.sh74
-rw-r--r--krebs/2configs/shack/reaktor.nix11
2 files changed, 85 insertions, 0 deletions
diff --git a/krebs/2configs/shack/doorstatus.sh b/krebs/2configs/shack/doorstatus.sh
new file mode 100755
index 000000000..11e710cfd
--- /dev/null
+++ b/krebs/2configs/shack/doorstatus.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+# needs in path:
+# curl jq
+# creates and manages $PWD/state
+set -euf
+
+send_reaktor(){
+ # usage: send_reaktor "text"
+ echo "send_reaktor: $1"
+ curl -fsS http://localhost:7777 \
+ -H content-type:application/json \
+ -d "$(jq -n \
+ --arg text "$1" '{
+ command:"PRIVMSG",
+ params:["#shackspace",$text]
+ }'
+ )"
+}
+
+open=$(shuf -n1 <<EOF
+happy hacking, shack ist offen
+Heureka, der shack ist offen
+Die Türe ist offen, der shack will bespielt werden
+Frohlocket, der shack ist offen
+shack is love, shack is life, shack is offen
+Bin da, wer noch? shack hat geöffnet!
+shack hat geöffnet: Arbeiten Sie sicher, arbeiten Sie klug!
+Bin ich schon drin? Ich bin schon drin.. das war ja einfach. Also im shack.
+Uuuuund es setzt sich in Bewegung, wir öffnen den shack, los, los! Ja da guckt ihr, jetzt gehts looos!
+EOF
+)
+
+close=$(shuf -n1 <<EOF
+Hacking vorbei, shack ist zu!
+Tja, shack ist zu
+Shackie-closie
+Der Sandmann kommt, alle shackies sind zu haus und die Tür ist zu
+shack hat Stromsparmodus aktiviert
+Tür ist zu, shackspace ist jetzt koronakonform
+Oh nein, eine Tür, sie ist verschlossen! Also, die vom shack
+Ihr kennt das ja: Abschalten. Der shack ist zu.
+EOF
+)
+error=$(shuf -n1 <<EOF
+Hase, api ist kaputt! Bitte reparieren
+API liefert kein sinnvolles Ergebnis, keine Ahnung ob shack offen oder zu ist
+shack api defekt :(
+Hubel Hubel, jemand könnte mal die shack api reparieren
+API sagt derp
+Siehste das? API? Da soll ich jetzt nen Request drauf machen? Jetzt werd ich aber langsam n bisschen wild hier langsam!
+Der API ist ein bisschen ein Otto geworden, ischwör der will mich flaxen
+ich möchte den geschäftsführer sprechen, das API geht nicht mehr!
+Herr makefu an Kasse 3 bitte, Kasse 3 bitte Herr makefu. Der API Computer ist mal wieder ausgefallen
+EOF
+)
+
+state=$(curl https://api.shackspace.de/v1/space | jq .doorState.open)
+prevstate=$(cat state ||:)
+
+if test "$state" == "$(cat state)";then
+ #echo "current and last state is the same ($state), doing nothing"
+ :
+else
+ echo "API state and last state differ ( '$state' != '$prevstate')"
+ if test "$state" == "true";then
+ send_reaktor "$open"
+ elif test "$state" == "false";then
+ send_reaktor "$close"
+ else
+ send_reaktor "$error"
+ fi
+ echo "updating state"
+ printf "%s" "$state" > state
+fi
diff --git a/krebs/2configs/shack/reaktor.nix b/krebs/2configs/shack/reaktor.nix
index 40c121299..a31c7a687 100644
--- a/krebs/2configs/shack/reaktor.nix
+++ b/krebs/2configs/shack/reaktor.nix
@@ -16,4 +16,15 @@
}
];
};
+ systemd.services.announce_doorstatus = {
+ startAt = "*:0/1";
+ path = with pkgs; [ curl jq ];
+ script = builtins.readFile ./doorstatus.sh;
+ serviceConfig = {
+ DynamicUser = true;
+ StateDirectory = "doorstatus";
+ WorkingDirectory = "/var/lib/doorstatus";
+ PrivateTmp = true;
+ };
+ };
}