summaryrefslogtreecommitdiff
path: root/passwort-tresor.in
blob: 29762c444082817c7adc66554497f651edbbf0f6 (plain)
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
69
#!/bin/bash

. #ETCDIR#/passwort-tresor.konf

echo "Dienst: "
read dienst

beenden () {
  [ -n "${tmpDir}" ] && rm -rf "${tmpDir}"
  exit $1
}

beiFehlerBeenden () {
  err=$?
  if [ ${err} -ne 0 ]
  then
    if [ -e "${tmpDir}/humanStatus" ]
    then
      less "${tmpDir}/humanStatus"
    fi
    beenden ${err}
  fi
}

tmpDir="$(mktemp -d)"

output="$(
  ${passwortDateiBefehl} \
    | tee "${tmpDir}/original" \
    | gpg --status-fd 3 -d - \
    2> "${tmpDir}/humanStatus" \
    3> "${tmpDir}/status"
)"

beiFehlerBeenden

grep -q "VALIDSIG ${schluessel} \(.* \)\?${schluessel}\$" "${tmpDir}/status"

beiFehlerBeenden

rm -f "${tmpDir}/humanStatus"

${passwortSummenBefehl} \
  | awk "{print \$1\"  ${tmpDir}/original\"}" \
  | sha512sum -c \
  > "${tmpDir}/humanStatus"

beiFehlerBeenden

sDienst="${dienst}"
[ $(echo "${output}" | grep -c "${sDienst}") -gt 1 ] && sDienst="${dienst}.*:\$"
[ $(echo "${output}" | grep -c "${sDienst}") -gt 1 ] && sDienst="^${dienst}.*:\$"
[ $(echo "${output}" | grep -c "${sDienst}") -gt 1 ] && sDienst="^${dienst}:\$"
if [ $(echo "${output}" | grep -c "${sDienst}") -ne 1 ]
then
  echo "'${dienst}' ist nicht genau ein Mal vorhanden, sondern $(echo "${output}" | grep -c "${sDienst}") Mal!"
  beenden 1
fi

output="$(echo "${output}" | grep -2 "${dienst}" | tail -n2)"
echo "${output}" | head -n1 | xclip -i
echo -n "."
read dienst
echo "${output}" | tail -n1 | xclip -i
echo -n "."
read dienst
echo "" | xclip -i

beenden 0