# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description     "Chrome OS CUPS Proxy Daemon"
author          "chromium-os-dev@chromium.org"

# This daemon is started by D-Bus service activation configured in
# cups_proxy/dbus/org.chromium.CupsProxyDaemon.service.
start on starting vm_concierge
stop on stopped vm_concierge
respawn
expect fork

pre-start script
  # Create the runtime directory.
  mkdir -p /run/cups_proxy
  chown cups-proxy:cups-proxy /run/cups_proxy
end script

exec minijail0 -e -i -n -p -r -v -l --uts -c 0 \
  -S /usr/share/policy/cups_proxy-seccomp.policy \
  -u cups-proxy -g cups-proxy -- /usr/bin/cups_proxy

# Wait for daemon to claim its D-Bus name before transitioning to started.
post-start exec minijail0 -u cups-proxy -g cups-proxy /usr/bin/gdbus \
    wait --system --timeout 15 org.chromium.CupsProxyDaemon
