From cb903eac3834f3e821c6fb0f59e6880a4c42d44e Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Wed, 16 Jan 2019 16:31:00 -0500 Subject: [PATCH] Add systemd unit file for ndnpingserver Change-Id: I0b0b6358c2619a5251428d8e44df60cc06aec28a Refs: #4594 --- systemd/ndn-ping-server.service.in | 65 ++++++++++++++++++++++++++++++ wscript | 11 ++++- 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 systemd/ndn-ping-server.service.in diff --git a/systemd/ndn-ping-server.service.in b/systemd/ndn-ping-server.service.in new file mode 100644 index 0000000..05b78c2 --- /dev/null +++ b/systemd/ndn-ping-server.service.in @@ -0,0 +1,65 @@ +# Copyright (c) 2015-2019, Regents of the University of California, +# Arizona Board of Regents, +# Colorado State University, +# University Pierre & Marie Curie, Sorbonne University, +# Washington University in St. Louis, +# Beijing Institute of Technology, +# The University of Memphis. +# +# This file is part of ndn-tools (Named Data Networking Essential Tools). +# See AUTHORS.md for complete list of ndn-tools authors and contributors. +# +# ndn-tools 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. +# +# ndn-tools 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 +# ndn-tools, e.g., in COPYING.md file. If not, see . + +[Unit] +Description=NDN Ping Server +Documentation=man:ndnpingserver(1) +BindsTo=nfd.service +After=nfd.service + +[Service] +Environment=HOME=%S/ndn/ndnping +EnvironmentFile=-@SYSCONFDIR@/default/ndnping +ExecStart=@BINDIR@/ndnpingserver ${PREFIX} $FLAGS +Restart=on-failure +RestartPreventExitStatus=2 +User=ndn + +CapabilityBoundingSet= +LockPersonality=yes +MemoryDenyWriteExecute=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateNetwork=yes +PrivateTmp=yes +PrivateUsers=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +# systemd older than v232 doesn't support a value of "strict" for ProtectSystem, +# so it will ignore that line and use ProtectSystem=full; with newer systemd, +# the latter assignment is recognized and takes precedence, resulting in an +# effective setting of ProtectSystem=strict +ProtectSystem=full +ProtectSystem=strict +RestrictAddressFamilies=AF_UNIX +RestrictNamespaces=yes +RestrictRealtime=yes +StateDirectory=ndn/ndnping +SystemCallArchitectures=native +SystemCallErrorNumber=EPERM +SystemCallFilter=~@aio @chown @clock @cpu-emulation @debug @keyring @module @mount @obsolete @privileged @raw-io @reboot @resources @setuid @swap + +[Install] +WantedBy=multi-user.target +WantedBy=nfd.service diff --git a/wscript b/wscript index 2879df5..dbf25a1 100644 --- a/wscript +++ b/wscript @@ -14,7 +14,7 @@ def options(opt): tooldir=['.waf-tools']) opt.add_option('--with-tests', action='store_true', default=False, - dest='with_tests', help='''Build unit tests''') + help='Build unit tests') opt.recurse('tools') @@ -48,9 +48,9 @@ def build(bld): version(bld) bld(features='subst', + name='version.cpp', source='core/version.cpp.in', target='core/version.cpp', - name='version.cpp', VERSION_BUILD=VERSION) bld.objects(target='core-objects', @@ -59,6 +59,13 @@ def build(bld): includes='.', export_includes='.') + if Utils.unversioned_sys_platform() == 'linux': + systemd_units = bld.path.ant_glob('systemd/*.in') + bld(features='subst', + name='systemd-units', + source=systemd_units, + target=[u.change_ext('') for u in systemd_units]) + bld.recurse('tools') bld.recurse('tests') bld.recurse('manpages')