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