715e4936032d4af72b367dd6df9923a2ce77a495
[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 cat > "${OUTFILE}.new" << EOF
33 # ###################
34 # This file was created using postgres-make-backup-sshauthkeys.
35 # Do not edit this manually but edit its sources and run the script (or let puppet run it for you).
36 #####################
37 EOF
38
39 if [ -e "$HEAD" ] ; then
40         echo "# $HEAD" >> "${OUTFILE}.new"
41         cat "$HEAD" >> "${OUTFILE}.new"
42         echo "# end of $HEAD" >> "${OUTFILE}.new"
43         echo "" >> "${OUTFILE}.new"
44 fi
45
46 egrep -v '^(#|$)' "$CONFFILE" |
47         while read host ipaddr key; do
48
49         if [[ "$host" =~ [^a-z0-9A-Z_-] ]]; then
50                 echo >&2 "Invalid hostname $host"
51                 continue
52         fi
53         if [[ "$ipaddr" =~ [^0-9a-fA-F:.,] ]]; then
54                 echo >&2 "Invalid ipaddr $ipaddr"
55                 continue
56         fi
57
58         echo "command=\"/usr/local/bin/debbackup-ssh-wrap $host\",from=\"$ipaddr\",restrict $key" >> "${OUTFILE}.new"
59 done
60
61 mv "${OUTFILE}.new" ${OUTFILE}
62 # vim:syn=sh: