This repository has been archived by the owner on Aug 1, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
sign.sh
executable file
·69 lines (50 loc) · 1.63 KB
/
sign.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh
#
# Usage:
# - sign.sh <SECRET> <FLAVOUR> <VERSION> <BRANCH> <COMMENT>
set -e
SECRET="$1"
FLAVOUR="$2"
VERSION="$3"
BRANCH="$4"
COMMENT="$5"
# Sicherstellen dass wir im Branch master arbeiten
git checkout master
# Arbeitsverzeichnis aktualisieren
git pull
# Verzeichnis erstellen falls es nicht existiert
if [ ! -d "$FLAVOUR" ]; then
mkdir $FLAVOUR
fi
# Verzeichnis erstellen falls es nicht existiert
if [ ! -d "$FLAVOUR/$VERSION" ]; then
mkdir $FLAVOUR/$VERSION
fi
# Manifest-datei herunterladen falls diese noch nicht existiert
if [ ! -f "$FLAVOUR/$VERSION/$BRANCH.manifest" ]; then
wget "https://firmware.freifunk-muensterland.de/$FLAVOUR/versions/$VERSION/sysupgrade/$BRANCH.manifest" --output-document="$FLAVOUR/$VERSION/$BRANCH.manifest"
fi
# Temp-Dateien erstellen
upper="$(mktemp)"
lower="$(mktemp)"
trap 'rm -f "$upper" "$lower"' EXIT
# Manifest-Datei aufteilen, nur der Teil oberhalb der Trennzeichen
# wird für die Signatur verwendet
# Die beiden Abschnitte der Datei werden in '$upper' und '$lower' gespeichert
awk 'BEGIN { sep=0 }
/^---$/ { sep=1; next }
{ if(sep==0) print > "'"$upper"'";
else print > "'"$lower"'"}' \
"$FLAVOUR/$VERSION/$BRANCH.manifest"
# Signatur erstellen und Manifest-Datei mit der neuen Signatur
# aktualisieren
ecdsautil sign "$upper" < "$SECRET" >> "$lower"
(
cat "$upper"
echo ---
cat "$lower"
) > "$FLAVOUR/$VERSION/$BRANCH.manifest"
# Änderung committen und an den Server zurücksenden
git add $FLAVOUR/$VERSION/$BRANCH.manifest
git commit -m "Signatur für $FLAVOUR / $VERSION / $BRANCH hinzugefügt $COMMENT"
git push