ENDOFORGE_BACKUPS = y ifneq (,$(ENDOFORGE_BACKUPS)) SUFFIX := ~$(shell date -Ins | tr -d :) INSTALL := install -b --suffix=$(SUFFIX) MV := mv -b --suffix=$(SUFFIX) else INSTALL = install MV = mv endif ifeq ($(shell id -u),0) SUDO = else SUDO = sudo endif HAVE_ROOT != $(SUDO) true && echo y || true USER != echo "$${SUDO_USER:-$$(id -un)}" BROWSER != 2>/dev/null which xdg-open || which w3m || which links || which elinks SRC = src SOURCE_NAMES = AnonymousAccessCommand sshd_config SOURCES = $(addprefix $(SRC), $(SOURCE_NAMES)) .PHONY: install install-user install-user-config install-root shared doc test doc: README.html $(BROWSER) $< shared: install git config core.self-forge true install: $(if $(HAVE_ROOT), install-root, install-user) install-user-config: install -d ~/.ssh install -t ~/.ssh $(SRC)/AnonymousAccessCommand install-user: install-user-config build/sshd_config ~/.ssh/id_ed25519 $(INSTALL) -m0644 -t ~/.ssh build/sshd_config $(INSTALL) -m0644 -t ~/.config/systemd/user $(SRC)/sshd.service systemctl --user daemon-reload systemctl --user enable sshd systemctl --user restart sshd install-root: install-user-config $(SUDO) make -C ../OpenSSH_Anonymous_Access install test: make -C test build/sshd_config: $(SRC)/sshd_config Makefile $(edit_sshd) < "$<" > "$@".tmp mv "$@".tmp "$@" KEYTYPE = ed25519 HOST_KEY_FILE = $(HOME)/.ssh/id_$(KEYTYPE) SSHD_PID_FILE = $(HOME)/.ssh/sshd.pid FORCE_COMMAND = $(HOME)/.ssh/AnonymousAccessCommand $(HOST_KEY_FILE): ssh-keygen -t "$(KEYTYPE)" -P '' -f "$@" define edit_sshd sed \ -e 's?ForceCommand=$$?&$(FORCE_COMMAND)?' \ -e 's?AuthorizedKeysCommandUser=$$?&$(USER)?' \ -e 's?HostKey=$$?&$(HOST_KEY_FILE)?' \ -e 's?PidFile=$$?&$(SSHD_PID_FILE)?' endef README.html: README.md pandoc -s --css "$(SRC)"/style.css -t html $< -o $@