# HG changeset patch # User Heiko Schlittermann # Date 1439403623 -7200 # Node ID 08e910e23d9f9ce2eddc140911eca7db8f98e089 # Parent 7aeb74df004b46e54836a72f3f7a18ff7e4e18f6 Check for ^Match lines in sshd_config befor modification diff -r 7aeb74df004b -r 08e910e23d9f debian/postinst --- a/debian/postinst Wed Aug 12 19:15:33 2015 +0200 +++ b/debian/postinst Wed Aug 12 20:20:23 2015 +0200 @@ -35,15 +35,39 @@ } update_sshd_config() { - add_sshd_env IUS_USER - add_sshd_env IUS_PROFILE - add_sshd_env HGUSER - add_sshd_env HGRCPATH - add_sshd_env EDITOR - add_sshd_env REMOTE_USER - add_sshd_env INPUTRC + tmp=$(mktemp) + out=$(mktemp) + trap 'rm $tmp $out' EXIT + + need_sshd_env $tmp IUS_USER + need_sshd_env $tmp IUS_PROFILE + need_sshd_env $tmp HGUSER + need_sshd_env $tmp EDITOR + need_sshd_env $tmp REMOTE_USER + need_sshd_env $tmp HGRCPATH + + test -s $tmp || return 0 + + file=$tmp perl >$out <<'_' + open($f, '/etc/ssh/sshd_config') or die "Can't open sshd_config: $!\n"; + my @conf; + while (<$f>) { + /^Match\s/ and last; + push @conf, $_; + } + push @conf, "# autoadded by schlittermann-ssh-keys\n", + do { local @ARGV = $ENV{file}; <> }, + $_, <$f>; + print @conf; +_ + test $(stat -c%s $out) -ge $(stat -c%s /etc/ssh/sshd_config) + cp --backup=numbered -p /etc/ssh/sshd_config /etc/ssh/sshd_config~ + cat $out > /etc/ssh/sshd_config + + invoke-rc.d ssh reload || service ssh reload } + case "$1" in configure) update-schlittermann-ssh-keys diff -r 7aeb74df004b -r 08e910e23d9f update-schlittermann-ssh-keys.pl --- a/update-schlittermann-ssh-keys.pl Wed Aug 12 19:15:33 2015 +0200 +++ b/update-schlittermann-ssh-keys.pl Wed Aug 12 20:20:23 2015 +0200 @@ -18,7 +18,7 @@ my $opt_help = 0; my $opt_man = 0; my $opt_keys_dir = "/usr/share/schlittermann-ssh-keys"; -my $opt_force = not -t 0; +my $opt_force = 0; my $SSHD_CONF = "/etc/ssh/sshd_config"; my $KEYS_DIR = undef; # set later