GPG search (usage of keys.openpgp.org), deleting keys after getting FP, removing code duplication, corrected layout for jhp
This commit is contained in:
parent
dfd9cda104
commit
80e0d2ee9c
@ -10,7 +10,7 @@ HEADINGRIGHT=15
|
|||||||
|
|
||||||
# GPG Space
|
# GPG Space
|
||||||
NEXTPAGE=48
|
NEXTPAGE=48
|
||||||
NEXTFIELDBOTTOM=7
|
NEXTFIELDBOTTOM=6
|
||||||
NEXTFIELDRIGHT=25
|
NEXTFIELDRIGHT=25
|
||||||
MAXLENGTH=22
|
MAXLENGTH=22
|
||||||
|
|
||||||
|
2
jhp/iro
2
jhp/iro
@ -11,7 +11,7 @@ HEADINGRIGHT=8
|
|||||||
# GPG Space
|
# GPG Space
|
||||||
NEXTPAGE=30
|
NEXTPAGE=30
|
||||||
NEXTPAGESMALL=48
|
NEXTPAGESMALL=48
|
||||||
NEXTFIELDBOTTOM=7
|
NEXTFIELDBOTTOM=6
|
||||||
NEXTFIELDRIGHT=14
|
NEXTFIELDRIGHT=14
|
||||||
NEXTFIELDRIGHTSMALL=25
|
NEXTFIELDRIGHTSMALL=25
|
||||||
|
|
||||||
|
372
start
372
start
@ -2,7 +2,9 @@
|
|||||||
export EVENT=DiVOC
|
export EVENT=DiVOC
|
||||||
|
|
||||||
TMP=/tmp/$RANDOM
|
TMP=/tmp/$RANDOM
|
||||||
BT="Intergalactic Registration Office - v0.1"
|
BT="Intergalactic Registration Office - v0.3"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function diaBox() {
|
function diaBox() {
|
||||||
h=8
|
h=8
|
||||||
@ -68,8 +70,119 @@ function confirm() {
|
|||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
function jhpAskForField() {
|
function askStrThird() {
|
||||||
text="$1: Please choose a free field on the passport.\n
|
h=12
|
||||||
|
w=60
|
||||||
|
if [ -n "$6" ]; then
|
||||||
|
h=$5
|
||||||
|
fi
|
||||||
|
if [ -n "$7" ]; then
|
||||||
|
w=$6
|
||||||
|
fi
|
||||||
|
|
||||||
|
dialog --backtitle "$BT" \
|
||||||
|
--max-input $1 \
|
||||||
|
--title "$2" \
|
||||||
|
--extra-button --extra-label "$4" \
|
||||||
|
--inputbox "$3" $h $w "$5" 2> $TMP
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function gpgSearch() {
|
||||||
|
askStr 255 "GPG Search" "Type in the mail address you'd like to look up on keys.openpgp.org."
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
if [[ "$(cat $TMP)" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$ ]]; then
|
||||||
|
clear
|
||||||
|
echo "Searching for GPG key..."
|
||||||
|
gpg --keyserver "hkps://keys.openpgp.org" --search "$(cat $TMP)"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
export FFP=$(gpg -k "$(cat $TMP)" | head -n 2 | tail -n 1 | awk '{print $1}' | sed 's/.\{4\}/& /g;s/^\(.*\) $/\1/g')
|
||||||
|
gpg --batch --delete-key "$FFP"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
gpgSearch
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
gpgSearch
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function enterGPG() {
|
||||||
|
askStrThird 49 "GPG Fingerprint" "Enter GPG fingerprint WITH SPACES. E.g.:\n 1234 5678 9ABC DEF0 1234 5678 9ABC DEF0 1234 5678" "Search..." "$1"
|
||||||
|
|
||||||
|
ret=$?
|
||||||
|
case $ret in
|
||||||
|
0)
|
||||||
|
FP=$(cat $TMP)
|
||||||
|
rm $TMP
|
||||||
|
if ! [[ $FP =~ ^([[:xdigit:]]{4} ){9}[[:xdigit:]]{4}$ ]]; then
|
||||||
|
diaBox "GPG Fingerprint" "This does not match the RegEx of a GPG fingerprint.\nPlease type in the whole fingerprint."
|
||||||
|
enterGPG
|
||||||
|
fi
|
||||||
|
FP=$(echo "$FP" | tr [a-f] [A-F])
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
gpgSearch
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
enterGPG "$FFP" "no-confirm"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$2" == "no-confirm" ]; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
confirm "GPG Fingerprint" " GPG:\n $FP"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function printGPG() {
|
||||||
|
askForField "GPG fingerprint" "$1"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
diaBox "Insert Passport" "Please insert passport (Visas) into the printer."
|
||||||
|
cd "$1"
|
||||||
|
./gpgkey $FIELD $FP
|
||||||
|
cd ..
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function printReg() {
|
||||||
|
diaBox "Insert Passport" "Please insert passport (First page, name, place) into the printer."
|
||||||
|
cd "$1"
|
||||||
|
./reg "$FNAME" "$SNAME" "$PLANET"
|
||||||
|
cd ..
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function printIROStamp() {
|
||||||
|
askForField "IRO stamp" "$1"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
diaBox "Insert Passport" "Please insert passport (Visas) into the printer."
|
||||||
|
cd "$1"
|
||||||
|
./iro $FIELD
|
||||||
|
cd ..
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function askForField() {
|
||||||
|
declare -A layout
|
||||||
|
declare -A maxfield
|
||||||
|
text="$1: Please choose a free field on the passport.\n"
|
||||||
|
|
||||||
|
layout[jhp]="
|
||||||
------------------\n
|
------------------\n
|
||||||
| Archievements |\n
|
| Archievements |\n
|
||||||
==================\n
|
==================\n
|
||||||
@ -80,156 +193,8 @@ function jhpAskForField() {
|
|||||||
| 4 | 5 || 10| 11|\n
|
| 4 | 5 || 10| 11|\n
|
||||||
==================\n
|
==================\n
|
||||||
"
|
"
|
||||||
askStr 2 "Select a field" "$text" "" 18
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
FIELD=$(cat $TMP)
|
|
||||||
if ! [[ "$FIELD" =~ ^[0-9]+$ ]] || [ -z "$FIELD" ] || [ $FIELD -lt 0 ] || [ $FIELD -gt 11 ]; then
|
|
||||||
jhpAskForField
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function jhpPrintGPG() {
|
layout[adafruit]="
|
||||||
jhpAskForField "GPG fingerprint"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
diaBox "Insert Passport" "Please insert passport (Archivements) into the printer."
|
|
||||||
cd jhp
|
|
||||||
./gpgkey $FIELD $FP
|
|
||||||
cd ..
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function jhpPrintReg() {
|
|
||||||
diaBox "Insert Passport" "Please insert passport (First page, name, planet, date) into the printer."
|
|
||||||
cd jhp
|
|
||||||
./reg "$FNAME" "$SNAME" "$PLANET"
|
|
||||||
cd ..
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function jhpIROStamp() {
|
|
||||||
jhpAskForField "IRO stamp"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
diaBox "Insert Passport" "Please insert passport (Archivements) into the printer."
|
|
||||||
cd jhp
|
|
||||||
./iro $FIELD
|
|
||||||
cd ..
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function jhpGPG() {
|
|
||||||
askStr 49 "GPG Fingerprint" "Enter GPG fingerprint WITH SPACES. E.g.:\n 1234 5678 9ABC DEF0 1234 5678 9ABC DEF0 1234 5678"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
FP=$(cat $TMP)
|
|
||||||
rm $TMP
|
|
||||||
if ! [[ $FP =~ ^([[:xdigit:]]{4} ){9}[[:xdigit:]]{4}$ ]]; then
|
|
||||||
diaBox "GPG Fingerprint" "This does not match the RegEx of a GPG fingerprint.\nPlease type in the whole fingerprint."
|
|
||||||
jhpGPG
|
|
||||||
fi
|
|
||||||
FP=$(echo "$FP" | tr [a-f] [A-F])
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if [ "$1" == "no-confirm" ]; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
confirm "GPG Fingerprint" " GPG:\n $FP"
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function jhpReg() {
|
|
||||||
askStr 25 "Forename/Nickname" "Enter forename/nickname"
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
FNAME=$(cat $TMP)
|
|
||||||
|
|
||||||
askStr 25 "Surename" "Enter surename"
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
SNAME=$(cat $TMP)
|
|
||||||
|
|
||||||
askStr 25 "Planet" "Enter planet" "Earth, Chaospott"
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
PLANET=$(cat $TMP)
|
|
||||||
|
|
||||||
confirm=" Forename: $FNAME\n Surename: $SNAME\n Planet: $PLANET"
|
|
||||||
|
|
||||||
ynBox "IRO Stamp" "Does this being want to have a IRO stamp?"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
STAMP=true
|
|
||||||
else
|
|
||||||
STAMP=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
ynBox "GPG" "Does the being have a GPG key to register?"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
jhpGPG no-confirm
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
confirm="$confirm\n GPG:\n $FP"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
confirm "Everything" "$confirm"
|
|
||||||
return $?
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function jhpmenu() {
|
|
||||||
dialog --backtitle "$BT" \
|
|
||||||
--menu "Select ID type:" 14 40 3 \
|
|
||||||
1 "Registration" \
|
|
||||||
2 "IRO Stamp" \
|
|
||||||
3 "GPG" \
|
|
||||||
9 "Back" 2> $TMP
|
|
||||||
|
|
||||||
choice=$(cat $TMP)
|
|
||||||
|
|
||||||
case $choice in
|
|
||||||
1) jhpReg
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
jhpPrintReg
|
|
||||||
if [ "$STAMP" == "true" ]; then
|
|
||||||
jhpIROStamp
|
|
||||||
fi
|
|
||||||
if [ -n "$FP" ]; then
|
|
||||||
jhpPrintGPG
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
2) jhpIROStamp
|
|
||||||
;;
|
|
||||||
3) jhpGPG
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
jhpPrintGPG
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
esac
|
|
||||||
unset FNAME
|
|
||||||
unset SNAME
|
|
||||||
unset PLANET
|
|
||||||
unset FP
|
|
||||||
unset FIELD
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function adaAskForField() {
|
|
||||||
text="$1: Please choose a free field on the passport.\n
|
|
||||||
------------------\n
|
------------------\n
|
||||||
| VISAS || VISAS |\n
|
| VISAS || VISAS |\n
|
||||||
==================\n
|
==================\n
|
||||||
@ -238,88 +203,42 @@ function adaAskForField() {
|
|||||||
| 2 | 3 || 6 | 7 |\n
|
| 2 | 3 || 6 | 7 |\n
|
||||||
==================\n
|
==================\n
|
||||||
"
|
"
|
||||||
askStr 2 "Select a field" "$text" "" 18
|
|
||||||
|
maxfield[jhp]=11
|
||||||
|
maxfield[adafruit]=7
|
||||||
|
|
||||||
|
askStr 2 "Select a field" "$text ${layout[$2]}" "" 18
|
||||||
if [ $? -eq 1 ]; then
|
if [ $? -eq 1 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
FIELD=$(cat $TMP)
|
FIELD=$(cat $TMP)
|
||||||
if ! [[ "$FIELD" =~ ^[0-9]+$ ]] || [ -z "$FIELD" ] || [ $FIELD -lt 0 ] || [ $FIELD -gt 7 ]; then
|
if ! [[ "$FIELD" =~ ^[0-9]+$ ]] || [ -z "$FIELD" ] || [ $FIELD -lt 0 ] || [ $FIELD -gt ${maxfield[$2]} ]; then
|
||||||
adaAskForField
|
askForField "$1" "$2"
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function adaPrintGPG() {
|
|
||||||
adaAskForField "GPG fingerprint"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
diaBox "Insert Passport" "Please insert passport (Visas) into the printer."
|
|
||||||
cd adafruit
|
|
||||||
./gpgkey $FIELD $FP
|
|
||||||
cd ..
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function adaPrintReg() {
|
function askReg() {
|
||||||
diaBox "Insert Passport" "Please insert passport (First page, name, place) into the printer."
|
# Max length of passport fields
|
||||||
cd adafruit
|
declare -A MAXLENGTH
|
||||||
./reg "$FNAME" "$SNAME" "$PLANET"
|
MAXLENGTH[jhp]=25
|
||||||
cd ..
|
MAXLENGTH[adafruit]=17
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function adaIROStamp() {
|
askStr ${MAXLENGTH[$1]} "Forename/Nickname" "Enter forename/nickname"
|
||||||
adaAskForField "IRO stamp"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
diaBox "Insert Passport" "Please insert passport (Visas) into the printer."
|
|
||||||
cd adafruit
|
|
||||||
./iro $FIELD
|
|
||||||
cd ..
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function adaGPG() {
|
|
||||||
askStr 49 "GPG Fingerprint" "Enter GPG fingerprint WITH SPACES. E.g.:\n 1234 5678 9ABC DEF0 1234 5678 9ABC DEF0 1234 5678"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
FP=$(cat $TMP)
|
|
||||||
rm $TMP
|
|
||||||
if ! [[ $FP =~ ^([[:xdigit:]]{4} ){9}[[:xdigit:]]{4}$ ]]; then
|
|
||||||
diaBox "GPG Fingerprint" "This does not match the RegEx of a GPG fingerprint.\nPlease type in the whole fingerprint."
|
|
||||||
adaGPG
|
|
||||||
fi
|
|
||||||
FP=$(echo "$FP" | tr [a-f] [A-F])
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if [ "$1" == "no-confirm" ]; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
confirm "GPG Fingerprint" " GPG:\n $FP"
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function adaReg() {
|
|
||||||
askStr 25 "Forename/Nickname" "Enter forename/nickname"
|
|
||||||
if [ $? -eq 1 ]; then
|
if [ $? -eq 1 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
FNAME=$(cat $TMP)
|
FNAME=$(cat $TMP)
|
||||||
|
|
||||||
askStr 25 "Surename" "Enter surename"
|
askStr ${MAXLENGTH[$1]} "Surename" "Enter surename"
|
||||||
if [ $? -eq 1 ]; then
|
if [ $? -eq 1 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
SNAME=$(cat $TMP)
|
SNAME=$(cat $TMP)
|
||||||
|
|
||||||
askStr 25 "Place" "Enter place" "Earth, Chaospott"
|
askStr ${MAXLENGTH[$1]} "Place" "Enter place"
|
||||||
if [ $? -eq 1 ]; then
|
if [ $? -eq 1 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@ -336,7 +255,7 @@ function adaReg() {
|
|||||||
|
|
||||||
ynBox "GPG" "Does the being have a GPG key to register?"
|
ynBox "GPG" "Does the being have a GPG key to register?"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
adaGPG no-confirm
|
enterGPG "" no-confirm
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
confirm="$confirm\n GPG:\n $FP"
|
confirm="$confirm\n GPG:\n $FP"
|
||||||
fi
|
fi
|
||||||
@ -347,7 +266,7 @@ function adaReg() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function adamenu() {
|
function menuFor() {
|
||||||
dialog --backtitle "$BT" \
|
dialog --backtitle "$BT" \
|
||||||
--menu "Select ID type:" 14 40 3 \
|
--menu "Select ID type:" 14 40 3 \
|
||||||
1 "Registration" \
|
1 "Registration" \
|
||||||
@ -358,22 +277,22 @@ function adamenu() {
|
|||||||
choice=$(cat $TMP)
|
choice=$(cat $TMP)
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
1) adaReg
|
1) askReg "$1"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
adaPrintReg
|
printReg "$1"
|
||||||
if [ "$STAMP" == "true" ]; then
|
if [ "$STAMP" == "true" ]; then
|
||||||
adaIROStamp
|
printIROStamp "$1"
|
||||||
fi
|
fi
|
||||||
if [ -n "$FP" ]; then
|
if [ -n "$FP" ]; then
|
||||||
adaPrintGPG
|
printGPG "$1"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
2) adaIROStamp
|
2) printIROStamp "$1"
|
||||||
;;
|
;;
|
||||||
3) adaGPG
|
3) enterGPG
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
adaPrintGPG
|
printGPG "$1"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -383,17 +302,16 @@ function adamenu() {
|
|||||||
unset PLANET
|
unset PLANET
|
||||||
unset FP
|
unset FP
|
||||||
unset FIELD
|
unset FIELD
|
||||||
|
unset FFP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while [ true ]; do
|
while [ true ]; do
|
||||||
|
|
||||||
dialog --backtitle "$BT" \
|
dialog --backtitle "$BT" \
|
||||||
--menu "Select ID type:" 10 40 3 \
|
--menu "Select ID type:" 10 40 3 \
|
||||||
1 "Junghackerpass" \
|
1 "Junghackerpass" \
|
||||||
2 "New Adafruit passport" \
|
2 "New Adafruit passport" \
|
||||||
9 "Usual" 2> $TMP
|
9 "Exit" 2> $TMP
|
||||||
|
|
||||||
if [ $? -eq 9 ]; then
|
if [ $? -eq 9 ]; then
|
||||||
break
|
break
|
||||||
@ -403,9 +321,9 @@ while [ true ]; do
|
|||||||
|
|
||||||
|
|
||||||
case $TYPE in
|
case $TYPE in
|
||||||
1) jhpmenu
|
1) menuFor jhp
|
||||||
;;
|
;;
|
||||||
2) adamenu
|
2) menuFor adafruit
|
||||||
;;
|
;;
|
||||||
9) exit 0
|
9) exit 0
|
||||||
;;
|
;;
|
||||||
|
Loading…
Reference in New Issue
Block a user