# Copyright (c) 2015,  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 NFD (Named Data Networking Forwarding Daemon).
# See AUTHORS.md for complete list of NFD authors and contributors.
#
# NFD 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.
#
# NFD 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
# NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
#
# Author: Eric Newberry <enewberry@email.arizona.edu>

[Unit]
Description=NDN Autoconfig Server
Documentation=man:nfd-autoreg
Requires=nfd.service
After=nfd.service

[Service]
Environment=HOME=/var/lib/ndn/ndn-autoconfig-server
EnvironmentFile=-/etc/default/ndn-autoconfig-server
User=ndn
Group=ndn
ExecStart=/bin/sh -ec 'if [ "$FACE_URI" != "" ]; then exec /usr/bin/ndn-autoconfig-server $ROUTABLE_PREFIXES $FACE_URI; fi'
Restart=on-failure
ProtectSystem=full
PrivateTmp=yes
PrivateDevices=yes
ProtectHome=yes

[Install]
WantedBy=multi-user.target
