X-Git-Url: https://git.madduck.net/etc/ssh.git/blobdiff_plain/1b94e7ee3040fa3957a3555a2aa30a8af0392c00..0ff68c88a92563624bcc672049b082a1b669a445:/.ssh/Makefile

diff --git a/.ssh/Makefile b/.ssh/Makefile
index 25b571f..e57eeec 100644
--- a/.ssh/Makefile
+++ b/.ssh/Makefile
@@ -1,30 +1,79 @@
 all: known_hosts authorized_keys config
+	@chmod -R og= .
 .PHONY: all
 
 known_hosts: $(wildcard known_hosts.d/*)
 	touch $@
 	for f in $^; do \
-	  echo; \
 	  echo "### from $$f:"; \
 	  cat $$f; \
-	done >> $@
+	  echo; \
+	done > $@
 
 authorized_keys: $(wildcard authorized_keys.d/*)
 	touch $@
 	for f in $^; do \
-	  echo; \
 	  echo "### from $$f:"; \
 	  cat $$f; \
-	done >> $@
+	  echo; \
+	done > $@
+
+ifeq ($(strip $(wildcard config.local)),)
+LOCAL_CONFIG=/dev/null
+else
+LOCAL_CONFIG=config.local
+endif
 
 SSH_VERSION = $(shell ssh -V 2>&1)
-config: config.in
-	cp $< $@
+config: $(LOCAL_CONFIG) config.in
+	cat $^ > $@
 	case "$(SSH_VERSION)" in \
+	  (OpenSSH_6.[012345678]*) \
+	    sed -ri -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bIgnoreUnknown\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bUpdateHostKeys\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^Match host ,Host ,' \
+	            $@ \
+	    ;; \
+	  (OpenSSH_6.[0123]*) \
+	    sed -ri -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bIgnoreUnknown\b.+$$,##UNSUPPORTED##&,' \
+	            $@ \
+	    ;; \
+	  (OpenSSH_5.[012345]*) \
+	    sed -ri -e 's,^.+\bControlPersist\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \
+	            $@ \
+	    ;; \
+	  (OpenSSH_4.7*) \
+	    sed -ri -e 's,^.+\bVisualHostKey\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bControlPersist\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \
+	            $@ \
+	    ;; \
 	  (OpenSSH_4.3*) \
 	    sed -ri -e 's,^.+\bExitOnForwardFailure\b.+$$,##UNSUPPORTED##&,' \
 	            -e 's,^.+\bMACs\b.+$$,##UNSUPPORTED##&,' \
 	            -e 's,^(.+ControlPath ~/.var/ssh/ssh_control_)%l_(.+),\1\2,' \
+	            -e 's,^.+\bVisualHostKey\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bControlPersist\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \
+	            $@ \
+	    ;; \
+	  (3.9*) \
+	    sed -ri -e 's,^.+\bExitOnForwardFailure\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bMACs\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bHashKnownHosts\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bControl(Master|Path|Persist)\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \
+	            -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \
 	            $@ \
 	    ;; \
+	esac; \
+	case "$$HOSTNAME" in \
+	  (fishbowl) \
+	    sed -i -re '/^Host fishbowl/,/^[[:space:]]*ProxyCommand/s/ProxyCommand.*/Host localhost/' $@; \
 	esac