c2fc21659f63997127506a1a4dbd4e4e39517cdc
[mirror/dsa-puppet.git] / modules / postgres / templates / backup_server / postgres-make-backup-sshauthkeys.erb
1 #!/bin/bash
2
3 # Copyright 2017 Peter Palfrader
4 #
5 # Permission is hereby granted, free of charge, to any person obtaining
6 # a copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish,
9 # distribute, sublicense, and/or sell copies of the Software, and to
10 # permit persons to whom the Software is furnished to do so, subject to
11 # the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be
14 # included in all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
24
25 set -e
26 set -u
27
28 CONFFILE=/etc/dsa/postgresql-backup/sshkeys-sources
29 OUTFILE=/etc/ssh/userkeys/debbackup
30 HEAD=/etc/dsa/postgresql-backup/sshkeys-manual
31
32 : > "${OUTFILE}.new"
33
34 if [ -e "$HEAD" ] ; then
35         echo "# $HEAD" >> "${OUTFILE}.new"
36         cat "$HEAD" >> "${OUTFILE}.new"
37         echo "# end of $HEAD" >> "${OUTFILE}.new"
38         echo "" >> "${OUTFILE}.new"
39 fi
40
41 egrep -v '^(#|$)' "$CONFFILE" |
42         while read host ipaddr key; do
43
44         if [[ "$host" =~ [^a-z0-9A-Z_-] ]]; then
45                 echo >&2 "Invalid hostname $host"
46                 continue
47         fi
48         if [[ "$ipaddr" =~ [^0-9a-fA-F:.,] ]]; then
49                 echo >&2 "Invalid ipaddr $ipaddr"
50                 continue
51         fi
52
53         echo "command=\"/usr/local/bin/debbackup-ssh-wrap $host\",from=\"$ipaddr\",restrict $key" >> "${OUTFILE}.new"
54 done
55
56 mv "${OUTFILE}.new" ${OUTFILE}
57 # vim:syn=sh: