diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..461fbd5 --- /dev/null +++ b/Makefile @@ -0,0 +1,47 @@ +# Copyright (C) 2018-2020 Ruilin Peng (Nick) . +# +# smartdns is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# smartdns is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +PKG_CONFIG := pkg-config +DESTDIR := +PREFIX := /usr +SBINDIR := $(PREFIX)/sbin +SYSCONFDIR := /etc +RUNSTATEDIR := /var/run +SYSTEMDSYSTEMUNITDIR := $(shell ${PKG_CONFIG} --variable=systemdsystemunitdir systemd) +SMARTDNS_SYSTEMD = systemd/smartdns.service + +.PHONY: all clean install SMARTDNS_BIN +all: SMARTDNS_BIN + +SMARTDNS_BIN: $(SMARTDNS_SYSTEMD) + $(MAKE) $(MFLAGS) -C src all + +$(SMARTDNS_SYSTEMD): systemd/smartdns.service.in + cp $< $@ + sed -i 's|@SBINDIR@|$(SBINDIR)|' $@ + sed -i 's|@SYSCONFDIR@|$(SYSCONFDIR)|' $@ + sed -i 's|@RUNSTATEDIR@|$(RUNSTATEDIR)|' $@ + +clean: + $(MAKE) $(MFLAGS) -C src clean + $(RM) $(SMARTDNS_SYSTEMD) + +install: SMARTDNS_BIN + install -v -m 0640 -D -t $(DESTDIR)$(SYSCONFDIR)/default etc/default/smartdns + install -v -m 0755 -D -t $(DESTDIR)$(SYSCONFDIR)/init.d etc/init.d/smartdns + install -v -m 0640 -D -t $(DESTDIR)$(SYSCONFDIR)/smartdns etc/smartdns/smartdns.conf + install -v -m 0755 -D -t $(DESTDIR)$(SBINDIR) src/smartdns + install -v -m 0644 -D -t $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR) systemd/smartdns.service + diff --git a/package/build-pkg.sh b/package/build-pkg.sh index 5db5ca2..f3e6b36 100644 --- a/package/build-pkg.sh +++ b/package/build-pkg.sh @@ -43,8 +43,8 @@ showhelp() build_smartdns() { if [ "$PLATFORM" != "luci" ]; then - make -C $CODE_DIR/src clean - make -C $CODE_DIR/src all -j8 VER=$VER $MAKE_ARGS + make -C $CODE_DIR clean $MAKE_ARGS + make -C $CODE_DIR all -j8 VER=$VER $MAKE_ARGS if [ $? -ne 0 ]; then echo "make smartdns failed" exit 1 diff --git a/install b/package/linux/install similarity index 93% rename from install rename to package/linux/install index acb2154..b8466b6 100644 --- a/install +++ b/package/linux/install @@ -77,14 +77,18 @@ install_files() return 1 fi - install -v -m 0755 -t $PREFIX/usr/sbin src/smartdns + install -v -m 0755 -t $PREFIX/usr/sbin usr/sbin/smartdns if [ $? -ne 0 ]; then return 1 fi - install -v -m 0640 -t $PREFIX$SMARTDNS_CONF_DIR etc/smartdns/smartdns.conf - if [ $? -ne 0 ]; then - return 1 + if [ -e "$PREFIX$SMARTDNS_CONF_DIR/smartdns.conf" ]; then + cp etc/smartdns/smartdns.conf $PREFIX$SMARTDNS_CONF_DIR/smartdns.conf.pkg + else + install -v -m 0640 -t $PREFIX$SMARTDNS_CONF_DIR etc/smartdns/smartdns.conf + if [ $? -ne 0 ]; then + return 1 + fi fi install -v -m 0640 -t $PREFIX/etc/default etc/default/smartdns @@ -118,7 +122,6 @@ uninstall_smartdns() if [ -z "$PREFIX" ]; then stop_service 2>/dev/null fi - rm -f $PREFIX$SMARTDNS_CONF_DIR/smartdns.conf rmdir $PREFIX$SMARTDNS_CONF_DIR 2>/dev/null rm -f $PREFIX/usr/sbin/smartdns rm -f $PREFIX/etc/default/smartdns diff --git a/package/linux/make.sh b/package/linux/make.sh index c200c34..32aeba9 100644 --- a/package/linux/make.sh +++ b/package/linux/make.sh @@ -23,12 +23,17 @@ build() cd $PKG_ROOT/ # Generic x86_64 - mkdir $PKG_ROOT/smartdns/src -p + mkdir $PKG_ROOT/smartdns/usr/sbin -p mkdir $PKG_ROOT/smartdns/package -p + mkdir $PKG_ROOT/smartdns/systemd -p + cd $SMARTDNS_DIR cp package/windows $PKG_ROOT/smartdns/package/ -a - cp etc systemd *.md LICENSE install $PKG_ROOT/smartdns/ -a - cp src/smartdns $PKG_ROOT/smartdns/src -a + cp etc *.md LICENSE package/linux/install $PKG_ROOT/smartdns/ -a + cp systemd/smartdns.service $PKG_ROOT/smartdns/systemd + cp src/smartdns $PKG_ROOT/smartdns/usr/sbin -a + chmod +x $PKG_ROOT/smartdns/install + if [ $? -ne 0 ]; then echo "copy smartdns file failed" rm -fr $PKG_ROOT diff --git a/package/luci/make.sh b/package/luci/make.sh index 77df4fa..f9ef629 100644 --- a/package/luci/make.sh +++ b/package/luci/make.sh @@ -58,10 +58,6 @@ build() mkdir $ROOT/root/usr/share/rpcd/acl.d/ -p cp $ROOT/files/luci/controller/* $ROOT/root/usr/lib/lua/luci/controller/ -avf cp $ROOT/files/luci/i18n $ROOT/root/usr/lib/lua/luci/ -avf - cp $ROOT/files/luci/view $ROOT/root/usr/lib/lua/luci/ -avf - - mkdir $ROOT/root/www/luci-static/resources/view -p - cp $ROOT/files/luci/htdocs/luci-static/resources/view/* $ROOT/root/www/luci-static/resources/view/ -avf #Generate Language $PO2LMO $ROOT/files/luci/i18n/smartdns.zh-cn.po $ROOT/root/usr/lib/lua/luci/i18n/smartdns.zh-cn.lmo diff --git a/src/Makefile b/src/Makefile index d510205..229c9c2 100644 --- a/src/Makefile +++ b/src/Makefile @@ -38,7 +38,7 @@ else override LDFLAGS += -lssl -lcrypto -lpthread endif -.PHONY: all +.PHONY: all clean all: $(BIN) diff --git a/systemd/smartdns.service b/systemd/smartdns.service.in similarity index 59% rename from systemd/smartdns.service rename to systemd/smartdns.service.in index ffa50c3..052d9ea 100644 --- a/systemd/smartdns.service +++ b/systemd/smartdns.service.in @@ -1,17 +1,17 @@ [Unit] Description=smart dns server After=network.target +StartLimitBurst=0 +StartLimitIntervalSec=60 [Service] Type=forking -PIDFile=/var/run/smartdns.pid -EnvironmentFile=/etc/default/smartdns -ExecStart=/usr/sbin/smartdns $SMART_DNS_OPTS +PIDFile=@RUNSTATEDIR@/smartdns.pid +EnvironmentFile=@SYSCONFDIR@/default/smartdns +ExecStart=@SBINDIR@/smartdns -p @RUNSTATEDIR@/smartdns.pid $SMART_DNS_OPTS KillMode=process Restart=always RestartSec=2 -StartLimitBurst=0 -StartLimitIntervalSec=60 [Install] WantedBy=multi-user.target