summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2016-07-07 22:48:58 +0200
committerChristian Pointner <equinox@anytun.org>2016-07-07 22:48:58 +0200
commit2c3c2955a29135ecc2a7920c9816bc8ccd0f9086 (patch)
tree34c537ad3da97a302bd41362c4e8179879ea8fcb /src
parentadded some privilege limitations to sample systemd services (diff)
streamlined systemd integration/installation
Diffstat (limited to 'src')
-rw-r--r--src/Makefile34
-rwxr-xr-xsrc/configure53
2 files changed, 54 insertions, 33 deletions
diff --git a/src/Makefile b/src/Makefile
index 638c49a..3304041 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -186,7 +186,7 @@ ifneq ($(MAKECMDGOALS),distclean)
endif
strip: $(EXECUTABLES)
- $(STRIP) -s $(EXECUTABLES)
+ $(STRIP) -s $(EXECUTABLES)
anytun$(EXE): $(ANYTUNOBJS) $(SYNCOBJS) anytun.o
$(LD) $(ANYTUNOBJS) $(SYNCOBJS) anytun.o -o $@ $(LDFLAGS)
@@ -280,7 +280,7 @@ INSTALL_TARGETS += install-examples
REMOVE_TARGETS += remove-examples
endif
-ifdef SYSTEMD
+ifdef SYSTEMDDIR
INSTALL_TARGETS += install-systemd
REMOVE_TARGETS := remove-systemd
endif
@@ -294,27 +294,29 @@ install-bin: $(EXECUTABLES)
$(INSTALL) -m 755 anytun-config $(DESTDIR)$(BINDIR)
$(INSTALL) -m 755 anytun-controld $(DESTDIR)$(BINDIR)
$(INSTALL) -m 755 anytun-showtables $(DESTDIR)$(BINDIR)
- @ sed -e 's#DAEMON=/usr/sbin/anytun#DAEMON=$(SBINDIR)/anytun#' \
- -e 's#ANYTUNCONFIG=/usr/bin/anytun-config#ANYTUNCONFIG=$(BINDIR)/anytun-config#' \
- -e 's#CONTROLDAEMON=/usr/bin/anytun-controld#CONTROLDAEMON=$(BINDIR)/anytun-controld#' \
- -e 's#CONFIG_DIR=/etc/anytun#CONFIG_DIR=$(ETCDIR)/anytun#' ../usr/bin/anytun-launcher.sh > ../usr/bin/anytun-launcher.sh.bak
+ @ sed -e 's#/usr/local/sbin#$(SBINDIR)#' -e 's#/usr/local/bin#$(BINDIR)#' \
+ -e 's#/usr/local/etc#$(ETCDIR)#' ../usr/bin/anytun-launcher.sh > ../usr/bin/anytun-launcher.sh.bak
$(INSTALL) -m 755 ../usr/bin/anytun-launcher.sh.bak $(DESTDIR)$(BINDIR)/anytun-launcher.sh
+ rm -f ../usr/bin/anytun-launcher.sh.bak
install-etc:
$(INSTALL) -d $(DESTDIR)$(ETCDIR)/anytun
@ echo "example configurations can be found at $(EXAMPLESDIR)/anytun" > $(DESTDIR)$(ETCDIR)/anytun/README
$(INSTALL) -d $(DESTDIR)$(ETCDIR)/init.d
- @ sed -e 's#ANYTUNLAUNCHER=/usr/bin/anytun-launcher.sh#ANYTUNLAUNCHER=$(BINDIR)/anytun-launcher.sh#' \
- -e 's#CONFIG_DIR=/etc/anytun#CONFIG_DIR=$(ETCDIR)/anytun#' ../etc/init.d/anytun > ../etc/init.d/anytun.bak
+ @ sed -e 's#/usr/local/bin#$(BINDIR)#' -e 's#/usr/local/etc#$(ETCDIR)#' ../etc/init.d/anytun > ../etc/init.d/anytun.bak
$(INSTALL) -m 755 ../etc/init.d/anytun.bak $(DESTDIR)$(ETCDIR)/init.d/anytun
rm -f ../etc/init.d/anytun.bak
install-systemd:
- @ sed -e 's#/usr/bin/#$(DESTDIR)$(BINDIR)/#' ../usr/lib/systemd/system/anytun@.service > ../usr/lib/systemd/system/anytun@.service.bak
- @ sed -e 's#/usr/bin/#$(DESTDIR)$(BINDIR)/#' ../usr/lib/systemd/system/anytun-control@.service > ../usr/lib/systemd/system/anytun-control@.service.bak
- $(INSTALL) ../usr/lib/systemd/system/anytun@.service.bak $(DESTDIR)$(SYSTEMD_SYSTEMUNITDIR)/anytun@.service
- $(INSTALL) ../usr/lib/systemd/system/anytun-control@.service.bak $(DESTDIR)$(SYSTEMD_SYSTEMUNITDIR)/anytun-control@.service
- $(INSTALL) ../etc/tmpfiles.d/anytun.conf $(DESTDIR)$(SYSTEMD_TMPFILESDIR)/anytun.conf
+ $(INSTALL) -d $(DESTDIR)$(SYSTEMDDIR)
+ $(INSTALL) -d $(DESTDIR)$(TMPFILESDDIR)
+ @ sed -e 's#/usr/local/bin/#$(BINDIR)/#' ../usr/lib/systemd/system/anytun@.service > ../usr/lib/systemd/system/anytun@.service.bak
+ @ sed -e 's#/usr/local/bin/#$(BINDIR)/#' ../usr/lib/systemd/system/anytun-control@.service > ../usr/lib/systemd/system/anytun-control@.service.bak
+ $(INSTALL) -m 644 ../usr/lib/systemd/system/anytun@.service.bak $(DESTDIR)$(SYSTEMDDIR)/anytun@.service
+ $(INSTALL) -m 644 ../usr/lib/systemd/system/anytun-control@.service.bak $(DESTDIR)$(SYSTEMDDIR)/anytun-control@.service
+ $(INSTALL) -m 644 ../usr/lib/tmpfiles.d/anytun.conf $(DESTDIR)$(TMPFILESDDIR)/anytun.conf
+ rm -f ../usr/lib/systemd/system/anytun@.service.bak
+ rm -f ../usr/lib/systemd/system/anytun-control@.service.bak
install-examples:
$(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/anytun
@@ -366,9 +368,9 @@ remove-etc:
rm -f $(DESTDIR)$(ETCDIR)/init.d/anytun
remove-systemd:
- rm -f $(DESTDIR)$(SYSTEMD_SYSTEMUNITDIR)/anytun@.service
- rm -f $(DESTDIR)$(SYSTEMD_SYSTEMUNITDIR)/anytun-control@.service
- rm -f $(DESTDIR)$(SYSTEMD_TMPFILESDIR)/anytun.conf
+ rm -f $(DESTDIR)$(SYSTEMDDIR)/anytun@.service
+ rm -f $(DESTDIR)$(SYSTEMDDIR)/anytun-control@.service
+ rm -f $(DESTDIR)$(TMPFILESDDIR)/anytun.conf
remove-examples:
rm -rf $(DESTDIR)$(EXAMPLESDIR)/anytun/
diff --git a/src/configure b/src/configure
index 3b6e57d..0ba56b5 100755
--- a/src/configure
+++ b/src/configure
@@ -64,6 +64,9 @@ MANDIR=''
INSTALLMANPAGE=1
EXAMPLESDIR=''
INSTALLEXAMPLES=1
+SYSTEMDDIR=''
+TMPFILESDDIR=''
+INSTALLSYSTEMD=1
BOOST_PREFIX=''
GCRYPT_PREFIX=''
@@ -78,9 +81,12 @@ print_usage() {
echo " --sbindir=<DIR> the path to the sbin directory (default: $PREFIX/sbin)"
echo " --sysconfdir=<DIR> the path to the system configuration directory (default: $PREFIX/etc"
echo " --mandir=<DIR> the path to the system man pages (default: $PREFIX/share/man)"
- echo " --no-manpage dont't install manpages"
+ echo " --no-manpage don't install manpages"
echo " --examplesdir=<DIR> the path to the examples files (default: $PREFIX/share/examples)"
- echo " --no-examples dont't install example files"
+ echo " --no-examples don't install example files"
+ echo " --systemddir=<DIR> the path to the systemd service unit directory (default: from pkg-config)"
+ echo " --tmpfilesddir=<DIR> the path to the systemd tmpfiles.d configuration file (default: from pkg-config)"
+ echo " --no-systemd don't install systemd units"
echo " --use-gcrypt use libgcrypt (this is the default)"
echo " --use-nettle use libnettle instead of libgcrypt"
echo " --use-ssl-crypto use openssl crypto library instead of libgcrypt"
@@ -95,9 +101,6 @@ print_usage() {
echo " --with-nettle=<PREFIX> don't use systemwide nettle"
echo " --with-openssl=<PREFIX> don't use systemwide openssl"
echo " --use-clang use clang/llvm as compiler/linker"
- echo " --with-systemd install systemd unit descriptions"
- echo " --with-systemdsystemunitdir=<DIR> target for unit files"
- echo " --with-systemdtmpfilesdir=<DIR> target for tmpfile creation info"
}
for arg
@@ -133,6 +136,15 @@ do
--no-examples)
INSTALLEXAMPLES=0
;;
+ --systemddir=*)
+ SYSTEMDDIR=${arg#--systemddir=}
+ ;;
+ --tmpfilesddir=*)
+ TMPFILESDDIR=${arg#--tmpfilesddir=}
+ ;;
+ --no-systemd)
+ INSTALLSYSTEMD=0
+ ;;
--use-gcrypt)
CRYPTO_LIB='gcrypt'
;;
@@ -175,17 +187,6 @@ do
--with-openssl=*)
OPENSSL_PREFIX=${arg#--with-openssl=}
;;
- --with-systemd)
- SYSTEMD=1
- [[ -z $SYSTEMD_SYSTEMUNITDIR ]] && SYSTEMD_SYSTEMUNITDIR="$(pkg-config systemd --variable=systemdsystemconfdir)"
- [[ -z $SYSTEMD_TMPFILESDIR ]] && SYSTEMD_TMPFILESDIR="$(pkg-config systemd --variable=tmpfilesdir)"
- ;;
- --with-systemdsystemunitdir=*)
- SYSTEMD_SYSTEMUNITDIR=${arg#--with-systemdsystemunitdir=}
- ;;
- --with-tmpfilesdir=*)
- SYSTEMD_TMPFILESDIR=${arg#--with-tmpfilesdir=}
- ;;
--help)
print_usage
exit 0
@@ -246,6 +247,7 @@ case $TARGET in
CXXFLAGS=$CXXFLAGS' -I/usr/local/include'
LDFLAGS=$LDFLAGS' -L/usr/local/lib -lboost_thread -lboost_serialization -lboost_system -lboost_date_time -lpthread'
LOG_TARGETS='-DLOG_SYSLOG -DLOG_FILE -DLOG_STDOUT'
+ INSTALLSYSTEMD=0
;;
mingw)
rm -f tunDevice.cpp
@@ -256,6 +258,7 @@ case $TARGET in
CXXFLAGS=$CXXFLAGS' -DMINGW -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN -DBOOST_WINDOWS -fno-strict-aliasing -DBOOST_THREAD_USE_LIB'
LDFLAGS=$LDFLAGS' -lboost_thread_win32 -lboost_serialization -lboost_system -lboost_date_time -lwsock32 -lws2_32'
LOG_TARGETS='-DWIN_EVENTLOG -DLOG_FILE -DLOG_STDOUT'
+ INSTALLSYSTEMD=0
;;
*)
echo "platform not supported"
@@ -334,6 +337,15 @@ if [ -z "$EXAMPLESDIR" ]; then
EXAMPLESDIR=$PREFIX/share/examples
fi
+if [ $INSTALLSYSTEMD -eq 1 ]; then
+ if [ -z "$SYSTEMDDIR" ]; then
+ SYSTEMDDIR=`pkg-config systemd --variable=systemdsystemunitdir`
+ fi
+ if [ -z "$TMPFILESDDIR" ]; then
+ TMPFILESDDIR=`pkg-config systemd --variable=tmpfilesdir`
+ fi
+fi
+
cat > include.mk <<EOF
# this file was created automatically
# do not edit this file directly
@@ -371,6 +383,14 @@ else
echo "not installing example files"
fi
+if [ $INSTALLSYSTEMD -eq 1 ]; then
+ echo "SYSTEMDDIR := $SYSTEMDDIR" >> include.mk
+ echo "TMPFILESDDIR := $TMPFILESDDIR" >> include.mk
+ echo "installing systemd units"
+else
+ echo "not installing systemd units"
+fi
+
VERSION=`cat ../version`
if which git >/dev/null; then
GIT_HASH=`git rev-parse HEAD 2> /dev/null`
@@ -397,7 +417,6 @@ cat > version.h <<EOF
#define VERSION_STRING_1 "built on $HOSTNAME, $DATE"
#endif
-
EOF
exit 0