diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..77e1a2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +foodoord*.deb diff --git a/README.md b/README.md index 74b4a1b..3970166 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,11 @@ -#foodoord +# foodoord Das Schließsystem läuft auf einem RaspberryPi mit der Erweiterungsplatine "PiFaceDigitalIO". -##Software## - -###Installation### -apt-get install python-pifacedigitalio - -Um das Paket zu installieren muss die */etc/apt/sources.list* angepasst werden. - -deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi - -deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi - -Wer apt-get benutzt, kann den Raspbian Pubkey zum keyring hinzufügen. - -wget http://archive.raspbian.org/raspbian.public.key -O - | sudo apt-key add - +## Software - -###Dateiliste### +### Dateiliste Der Deamon besteht aus folgenden Dateien. * foodoor @@ -42,25 +28,25 @@ Host git.chaospott.de Das IdentityFile ist der Deploy-SSH-Key, der im [Repo](https://git.chaospott.de/Chaospott/foodoor-keys) hinterlegt ist. -##Schüssel +## Schüssel -###Schlüsselupdate -
foodoor-update-keydb
-
+### Schlüsselupdate + +`foodoor-update-keydb` Aktualisiert die 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**. -###Schlüsselformate### +### Schlüsselformate Der foodoord akzeptiert nur Pub-Keys im *OpenSSH2-Format*. Keys lassen sich unter anderem mit OpenSSH oder PuTTygen erzeugen. -###OpenSSH#### +### OpenSSH -####Keys generieren#### -* Mit ssh-keygen -b 4096 lassen sich Keys generieren. -* ssh-add $Pfad_zum_Key fügt den Key dem ssh-Agent hinzu. Die Option ssh-add -l zeigt geladene Keys an. -* ssh-kegen -l -f $Pfad_zum_Key gibt den Fingerprint und andere Informationen zurück. +#### Keys generieren +* Mit `ssh-keygen -b 4096` lassen sich Keys generieren. +* `ssh-add $Pfad_zum_Key` fügt den Key dem ssh-Agent hinzu. Die Option `ssh-add -l` zeigt geladene Keys an. +* `ssh-kegen -l -f $Pfad_zum_Key ` gibt den Fingerprint und andere Informationen zurück. ####Keys konvertieren(PuTTy>OpenSSH):#### -* ssh-keygen -i $Pfad_zum_Key > $Pfad_neuer_Pfad.pub liest ssh2-kompatible Keys(RFC 4716) ein und speichert diese im OpenSSH-Format. +* `ssh-keygen -i $Pfad_zum_Key > $Pfad_neuer_Pfad.pub<` liest ssh2-kompatible Keys(RFC 4716) ein und speichert diese im OpenSSH-Format. ###PuTTy### Da die Tür nur Keys im OpenSSH-Format verträgt, dürfen auch mit Putty nur OpenSSH-Keys genutzt werden. diff --git a/build-package b/build-package new file mode 100755 index 0000000..89a04b3 --- /dev/null +++ b/build-package @@ -0,0 +1,2 @@ +#!/bin/bash +dpkg-deb --root-owner-group -b debian foodoord_3.0.0_all.deb diff --git a/debian/DEBIAN/control b/debian/DEBIAN/control new file mode 100644 index 0000000..4e053d6 --- /dev/null +++ b/debian/DEBIAN/control @@ -0,0 +1,5 @@ +Package: foodoord +Version: 3.0 +Maintainer: Bandie +Architecture: all +Description: Control the doors of the club, ja! diff --git a/debian/DEBIAN/postinst b/debian/DEBIAN/postinst new file mode 100755 index 0000000..70a4945 --- /dev/null +++ b/debian/DEBIAN/postinst @@ -0,0 +1,17 @@ +#!/bin/bash +echo "Creating group and users.." +groupadd foodoor +useradd -M -d /var/lib/foodoor/close -G foodoor -s /bin/sh close +useradd -M -d /var/lib/foodoor/open -G foodoor -s /bin/sh open +useradd -M -d /var/lib/foodoor/door -G foodoor -s /bin/sh door + +echo "Chown homes" +for u in "close open door"; do + chown ${u}:${u} ${u} +done + +echo "Create /state" +touch /state +chgrp root:foodoor /state +chmod 664 /state + diff --git a/debian/etc/cron.d/foodoord b/debian/etc/cron.d/foodoord new file mode 100644 index 0000000..6d07f50 --- /dev/null +++ b/debian/etc/cron.d/foodoord @@ -0,0 +1 @@ +*/5 * * * * root [ -x /usr/sbin/foodoor-update-keydb ] && /usr/sbin/foodoor-update-keydb >/dev/null 2>&1 diff --git a/foodoord.conf b/debian/etc/foodoord.conf_example similarity index 53% rename from foodoord.conf rename to debian/etc/foodoord.conf_example index 2228d89..a6b1b59 100644 --- a/foodoord.conf +++ b/debian/etc/foodoord.conf_example @@ -2,3 +2,7 @@ status_url = key = secret = + +[foodoord] +# oben or unten +where= diff --git a/foodoord_initd b/debian/etc/init.d/foodoord similarity index 97% rename from foodoord_initd rename to debian/etc/init.d/foodoord index d24f468..922798b 100755 --- a/foodoord_initd +++ b/debian/etc/init.d/foodoord @@ -16,7 +16,8 @@ # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="foodoor daemon" -NAME=foodoord +WHERE=$(cat /etc/foodoord.conf | grep 'where' | awk -F '=' '{ print $2 }') +NAME=foodoord_${WHERE} DAEMON=/usr/sbin/$NAME #DAEMON_ARGS="--options args" PIDFILE=/var/run/$NAME.pid diff --git a/foodoor b/debian/usr/sbin/foodoor similarity index 100% rename from foodoor rename to debian/usr/sbin/foodoor diff --git a/foodoor-update-keydb b/debian/usr/sbin/foodoor-update-keydb similarity index 100% rename from foodoor-update-keydb rename to debian/usr/sbin/foodoor-update-keydb diff --git a/foodoord_oben b/debian/usr/sbin/foodoord_oben similarity index 100% rename from foodoord_oben rename to debian/usr/sbin/foodoord_oben diff --git a/foodoord_unten b/debian/usr/sbin/foodoord_unten similarity index 100% rename from foodoord_unten rename to debian/usr/sbin/foodoord_unten