Commit 174fc14d authored by lrnzo's avatar lrnzo

geändert: firmware-signieren.sh

parent 677f5b3f
#!/bin/sh
GLUONPATH=$HOME/no-backup/gluon # <- pass mich an
SITECONF=$GLUONPATH/site/site.conf # <- pass mich an
FREIFUNKPATH=$HOME/Dokumente/Freifunk # <- pass mich an
VERSION="20190628" # <- pass mich an
SECRETPATH=$FREIFUNKPATH/Firmware/release_keys/ #<- pass mich an
read -p "Wo liegt das gluon-repo? [$HOME/no-backup/gluon]: " GLUONPATH
GLUONPATH=${GLUONPATH:-$HOME/no-backup/gluon}
read -p "Wo liegt die site.conf? [$GLUONPATH/site/site.conf]: " SITECONF
SITECONF=${SITECONF:-$GLUONPATH/site/site.conf}
read -p "Wo liegt der ganze Freifunk-foo? [$HOME/Dokumente/Freifunk]: " FREIFUNKPATH
FREIFUNKPATH=${FREIFUNKPATH:-$HOME/Dokumente/Freifunk}
read -p "Wo liegt dein Signaturschlüssel? [$FREIFUNKPATH/Firmware/release_keys]: " SECRETPATH
SECRETPATH=${SECRETPATH:-$FREIFUNKPATH/Firmware/release_keys}
read -p "Welches Release willst du signieren? [20190808]: " RELEASE
RELEASE=${RELEASE:-20190808}
FILE=stable.manifest
MYPUBKEY=$(ecdsakeygen -p < "$SECRETPATH"/secret)
cd "$GLUONPATH" || exit
......@@ -11,20 +16,20 @@ git pull #falls schon vorhanden, ansonsten git clone https://github.com/freifunk
cd "$FREIFUNKPATH" || exit
for VPN in l2tp fastd; do
wget -qO $VPN.$VERSION.$FILE https://firmware.ffnw.de/$VPN/$VERSION/sysupgrade/$FILE
csplit -s -f $VPN.$VERSION.$FILE-part $VPN.$VERSION.$FILE '/---/'
sed -i '1d' $VPN.$VERSION.$FILE-part01
wget -qO $VPN.$RELEASE.$FILE https://firmware.ffnw.de/$VPN/$RELEASE/sysupgrade/$FILE
csplit -s -f $VPN.$RELEASE.$FILE-part $VPN.$RELEASE.$FILE '/---/'
sed -i '1d' $VPN.$RELEASE.$FILE-part01
while read sign; do
ecdsaverify -s "$sign" -p "$MYPUBKEY" "$VPN.$VERSION.$FILE-part00"
ecdsaverify -s "$sign" -p "$MYPUBKEY" "$VPN.$RELEASE.$FILE-part00"
result=$?
if [ $result -eq "0" ]; then
echo "Die Signatur $(expr substr "${sign}" 1 6)... passt zu deinem eigenen öffentlichen Schlüssel. Anscheinend hast du das Manifest zur ${VPN}-Firmware des ${VERSION}er Releases bereits signiert. Hier gibt es nichts mehr zu tun."
echo "Die Signatur $(expr substr "${sign}" 1 6)... passt zu deinem eigenen öffentlichen Schlüssel. Anscheinend hast du das Manifest zur ${VPN}-Firmware des ${RELEASE}er Releases bereits signiert. Hier gibt es nichts mehr zu tun."
validity=false
break
fi
for pubkey in $(grep ", --" "$SITECONF" | grep -oE '[a-f0-9]{64}' | sort -u); do
validity=false
ecdsaverify -s "$sign" -p "$pubkey" "$VPN.$VERSION.$FILE-part00"
ecdsaverify -s "$sign" -p "$pubkey" "$VPN.$RELEASE.$FILE-part00"
result=$?
if [ $result -eq "0" ]; then
echo "Die Signatur $(expr substr "${sign}" 1 6)... ist valide und stammt von $(grep -m1 $pubkey $SITECONF | sed 's/[^,]*, --\(.*\)/\1/g')"
......@@ -36,20 +41,20 @@ for VPN in l2tp fastd; do
echo "Signatur $(expr substr "${sign}" 1 6)... ist nicht valide. Breche hier ab"
break
fi
done < $VPN.$VERSION.$FILE-part01
done < $VPN.$RELEASE.$FILE-part01
if [ "$validity" = "true" ]; then
echo "Alle vorhandenen Signaturen sind valide. Erzeuge jetzt eigene Signatur"
"$GLUONPATH"/contrib/sign.sh "$SECRETPATH"/secret $VPN.$VERSION.stable.manifest
"$GLUONPATH"/contrib/sign.sh "$SECRETPATH"/secret $VPN.$RELEASE.stable.manifest
#folgenden Befehl am besten händisch ausführen, wenn alles andere gelappt hat
echo "Danke für die Signatur! Soll das nun auch von dir signierte manifest $VPN.$VERSION.$FILE zu firmware.ffnw.de hochgeladen und dort an den entsprechenden Ort kopiert werden? (j/N)"
echo "Danke für die Signatur! Soll das nun auch von dir signierte manifest $VPN.$RELEASE.$FILE zu firmware.ffnw.de hochgeladen und dort an den entsprechenden Ort kopiert werden? (j/N)"
read answer
if [ "$answer" = "j" ];then
scp $VPN.$VERSION.$FILE firmware.ffnw.de:~
ssh firmware.ffnw.de "sudo cp $VPN.$VERSION.$FILE /var/www/dev/firmware/$VPN/$VERSION/sysupgrade/$FILE"
scp $VPN.$RELEASE.$FILE firmware.ffnw.de:~
ssh firmware.ffnw.de "sudo cp $VPN.$RELEASE.$FILE /var/www/dev/firmware/$VPN/$RELEASE/sysupgrade/$FILE"
else
echo "ok, es wird erstmal nichts hochgeladen. Falls du das manuell tun möchtest, geht das zB mit folgenden Befehlen:"
echo "scp $VPN.$VERSION.$FILE firmware.ffnw.de:~"
echo "ssh firmware.ffnw.de \"sudo cp $VPN.$VERSION.$FILE /var/www/dev/firmware/$VPN/$VERSION/sysupgrade/$FILE\""
echo "scp $VPN.$RELEASE.$FILE firmware.ffnw.de:~"
echo "ssh firmware.ffnw.de \"sudo cp $VPN.$RELEASE.$FILE /var/www/dev/firmware/$VPN/$RELEASE/sysupgrade/$FILE\""
fi
fi
done
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment