#!/bin/sh

set -eu

status=0

# XXX This ugliness must be, because these directories may reside
# XXX on /state partition, and its concept of uids/gids may not match the
# XXX current image (there should be some solution to this ugliness).
# XXX (We should look for ways to assign (at least some) uids statically...).

fix_recursively_if_exists() {
  test -e "$2" || return 0

  chown -R "$1" "$2" || status=1
}

fix_recursively_if_exists openldap:openldap         /state/etc/ldap/slapd.d
fix_recursively_if_exists bind:bind                 /state/var/lib/bind
fix_recursively_if_exists openldap:openldap         /state/var/lib/ldap
fix_recursively_if_exists munin:munin               /state/var/lib/munin
fix_recursively_if_exists munin:www-data            /state/var/lib/munin/cgi-tmp
fix_recursively_if_exists statd:nogroup             /state/var/lib/nfs
fix_recursively_if_exists puavodesktop:puavodesktop /state/var/lib/puavo-desktop/shared
fix_recursively_if_exists Debian-exim:adm           /state/var/log/exim4
fix_recursively_if_exists freerad:adm               /state/var/log/freeradius
fix_recursively_if_exists munin:adm                 /state/var/log/munin
fix_recursively_if_exists root:root                 /state/var/log/munin/munin-node.log
fix_recursively_if_exists www-data:adm              /state/var/log/nginx
fix_recursively_if_exists root:adm                  /state/var/log/puavo
fix_recursively_if_exists redis:redis               /state/var/log/redis
fix_recursively_if_exists ulog:adm                  /state/var/log/ulog

exit $status
