Check for ^Match lines in sshd_config befor modification
authorHeiko Schlittermann <hs@schlittermann.de>
Wed, 12 Aug 2015 20:20:23 +0200
changeset 51 08e910e23d9f
parent 50 7aeb74df004b
child 52 7beb1b78592e
Check for ^Match lines in sshd_config befor modification
debian/postinst
update-schlittermann-ssh-keys.pl
--- 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
--- 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