#!/bin/sh


### Load some configs
. /etc/fliwi-vhost/base.conf

machines_dir=$MACHINES_CONFIG_DIR
fliwi_config_base_services='/etc/fliwi/services'


### Removed invalid vserver config-links
for config_link in $(find $machines_dir -mindepth 1 -maxdepth 1 -type l)
do
  if [ "$config_link" = "$(readlink -m $config_link)" ]; then
    echo "WARNING: Removing wrong linked configuration at '$config_link', that is pointing to itself" 1>&2
    rm -f $config_link
  fi
done

### Removed gone vserver config-links
for config_link in $(find $machines_dir -mindepth 1 -maxdepth 1 -type l -lname '/etc/fliwi/services/fliwi-vhost*/fliwi-vhost-config/machines.*/*.conf')
do
  if [ ! -f "$(readlink -m $config_link)" ]; then
    echo "INFO: Removing obsolete linked configuration at '$config_link'" 1>&2
    rm -f $config_link
  elif [ "$(basename $config_link)" != "$(basename $(readlink -m $config_link))" ]; then
    echo "WARNING: Removing wrong linked configuration at '$config_link', that is pointing to '$(readlink -m $config_link)'" 1>&2
    rm -f $config_link
  elif [ "$config_link" = "$(readlink -m $config_link)" ]; then
    echo "WARNING: Removing wrong linked configuration at '$config_link', that is pointing to itself" 1>&2
  fi
done

### Add missing vserver config-links
for config_file in $(find -L $fliwi_config_base_services -mindepth 4 -maxdepth 4 -type f -path '/etc/fliwi/services/fliwi-vhost*/fliwi-vhost-config/machines.*/*.conf')
do
  config_link="$machines_dir/$(basename $config_file)"
  if [ ! -L "$config_link" ]; then
    ln -s $config_file $config_link
    echo "INFO: Added new linked configuration at '$config_link'" 1>&2
  else
    if [ "$(readlink -m $config_file)" != "$(readlink -m  $config_link)" ]; then
      echo "WARNING: Linked configuration at '$config_link' does not point to '$config_file' - trying to fix that" 1>&2
      rm -f $config_link
      ln -s $config_file $config_link
    fi
  fi
done

echo "INFO: Linked configuration updated..." 1>&2

exit 0


