diff --git a/Makefile b/Makefile index 5b3b1d9..a2fff19 100644 --- a/Makefile +++ b/Makefile @@ -3,24 +3,41 @@ GOBUILD=go build GOGET=go get -d -v PREFIX=/usr/local +ifeq ($(shell uname),Darwin) + CONFDIR=/usr/local/etc/dns-over-https +else + CONFDIR=/etc/dns-over-https +endif all: doh-client/doh-client doh-server/doh-server clean: rm -f doh-client/doh-client doh-server/doh-server -install: doh-client/doh-client doh-server/doh-server - install -Dm0755 doh-client/doh-client "$(DESTDIR)$(PREFIX)/bin/doh-client" - install -Dm0755 doh-server/doh-server "$(DESTDIR)$(PREFIX)/bin/doh-server" - [ -e "$(DESTDIR)/etc/dns-over-https/doh-client.conf" ] || install -Dm0644 doh-client/doh-client.conf "$(DESTDIR)/etc/dns-over-https/doh-client.conf" - [ -e "$(DESTDIR)/etc/dns-over-https/doh-server.conf" ] || install -Dm0644 doh-server/doh-server.conf "$(DESTDIR)/etc/dns-over-https/doh-server.conf" - $(MAKE) -C systemd install "DESTDIR=$(DESTDIR)" "PREFIX=$(PREFIX)" - $(MAKE) -C NetworkManager install "DESTDIR=$(DESTDIR)" "PREFIX=$(PREFIX)" +install: + [ -e doh-client/doh-client ] || $(MAKE) doh-client/doh-client + [ -e doh-server/doh-server ] || $(MAKE) doh-server/doh-server + mkdir -p "$(DESTDIR)$(PREFIX)/bin/" + install -m0755 doh-client/doh-client "$(DESTDIR)$(PREFIX)/bin/doh-client" + install -m0755 doh-server/doh-server "$(DESTDIR)$(PREFIX)/bin/doh-server" + mkdir -p "$(DESTDIR)$(CONFDIR)/" + [ -e "$(DESTDIR)$(CONFDIR)/doh-client.conf" ] || install -m0644 doh-client/doh-client.conf "$(DESTDIR)$(CONFDIR)/doh-client.conf" + [ -e "$(DESTDIR)$(CONFDIR)/doh-server.conf" ] || install -m0644 doh-server/doh-server.conf "$(DESTDIR)$(CONFDIR)/doh-server.conf" + if [ "`uname`" = "Linux" ]; then \ + $(MAKE) -C systemd install "DESTDIR=$(DESTDIR)"; \ + $(MAKE) -C NetworkManager install "DESTDIR=$(DESTDIR)"; \ + elif [ "`uname`" = "Darwin" ]; then \ + $(MAKE) -C launchd install "DESTDIR=$(DESTDIR)"; \ + fi uninstall: rm -f "$(DESTDIR)$(PREFIX)/bin/doh-client" "$(DESTDIR)$(PREFIX)/bin/doh-server" - $(MAKE) -C systemd uninstall "DESTDIR=$(DESTDIR)" "PREFIX=$(PREFIX)" - $(MAKE) -C NetworkManager uninstall "DESTDIR=$(DESTDIR)" "PREFIX=$(PREFIX)" + if [ "`uname`" = "Linux" ]; then \ + $(MAKE) -C systemd uninstall "DESTDIR=$(DESTDIR)"; \ + $(MAKE) -C NetworkManager uninstall "DESTDIR=$(DESTDIR)"; \ + elif [ "`uname`" = "Darwin" ]; then \ + $(MAKE) -C launchd uninstall "DESTDIR=$(DESTDIR)"; \ + fi deps: $(GOGET) ./doh-client ./doh-server diff --git a/launchd/Makefile b/launchd/Makefile new file mode 100644 index 0000000..218558a --- /dev/null +++ b/launchd/Makefile @@ -0,0 +1,16 @@ +.PHONY: install uninstall + +PREFIX = /usr/local +LAUNCHD_DIR = /Library/LaunchDaemons + +install: + mkdir -p "$(DESTDIR)$(LAUNCHD_DIR)" + install -m0644 doh-client.plist "$(DESTDIR)$(LAUNCHD_DIR)/doh-client.plist" + install -m0644 doh-server.plist "$(DESTDIR)$(LAUNCHD_DIR)/doh-server.plist" + @echo + @echo 'Note:' + @echo ' Use "sudo launchctl load $(DESTDIR)$(LAUNCHD_DIR)/doh-client.plist" to start doh-client,' + @echo ' use "sudo launchctl load -w $(DESTDIR)$(LAUNCHD_DIR)/doh-server.plist" to enable doh-server.' + +uninstall: + rm -f "$(DESTDIR)$(LAUNCHD_DIR)/doh-client.plist" "$(DESTDIR)$(LAUNCHD_DIR)/doh-server.plist" diff --git a/launchd/doh-client.plist b/launchd/doh-client.plist new file mode 100644 index 0000000..cab7148 --- /dev/null +++ b/launchd/doh-client.plist @@ -0,0 +1,27 @@ + + + + + Label + org.eu.starlab.doh.client + ProgramArguments + + /usr/local/bin/doh-client + -conf + /usr/local/etc/dns-over-https/doh-client.conf + + RunAtLoad + + UserName + root + GroupName + wheel + KeepAlive + + SuccessfulExit + + + ThrottleInterval + 5 + + diff --git a/launchd/doh-server.plist b/launchd/doh-server.plist new file mode 100644 index 0000000..181e685 --- /dev/null +++ b/launchd/doh-server.plist @@ -0,0 +1,29 @@ + + + + + Label + org.eu.starlab.doh.server + ProgramArguments + + /usr/local/bin/doh-server + -conf + /usr/local/etc/dns-over-https/doh-server.conf + + Disabled + + RunAtLoad + + UserName + root + GroupName + wheel + KeepAlive + + SuccessfulExit + + + ThrottleInterval + 5 + + diff --git a/systemd/Makefile b/systemd/Makefile index 2d45d37..cf437ab 100644 --- a/systemd/Makefile +++ b/systemd/Makefile @@ -1,6 +1,5 @@ .PHONY: install uninstall -PREFIX = /usr/local SYSTEMD_DIR = /usr/lib/systemd SYSTEMD_UNIT_DIR = $(SYSTEMD_DIR)/system