#!/bin/bash

if ! [ -d /etc/amanda ]; then
  exit 0
fi
for configfile in $(find /etc/amanda -name amanda.conf); do
  config="$(dirname $configfile)"
  cd $config
  CONF="${config##*/}"
  AMANDA_TAPEDEV="$(amgetconf $CONF tapedev)"
  AMANDA_TAPEDEV="${AMANDA_TAPEDEV#file:}"
  if [ -d "$AMANDA_TAPEDEV" ]; then
    echo "@@define AMANDA_TAPEDEV $AMANDA_TAPEDEV"
    for slot in $(find $AMANDA_TAPEDEV -type d -regex '.*/slot[0-9]+' -printf "%P\n"); do
      while read host dev rest; do
        if echo $host | grep -q '^\(#.*\)\?$'; then continue; fi
	dev="$(echo $dev | sed 's|/|_|g')"
	echo "!@@{AMANDA_TAPEDEV}/$slot/[0-9]{5}[-\.]$host\.$dev\.[0123]$"
      done < disklist
      cat <<EOF
@@{AMANDA_TAPEDEV}/$slot/00000[-\.]$CONF-$(printf "%03d" ${slot#slot})$ VarFile
!@@{AMANDA_TAPEDEV}/$slot/[0-9]{5}[-\.]TAPEEND$
@@{AMANDA_TAPEDEV}/$slot$ VarDir
EOF
    done
    cat <<EOF
@@{AMANDA_TAPEDEV}/(data|info)$ VarFile
@@{AMANDA_TAPEDEV}$ VarDir
EOF
  fi
  AMANDA_LOGDIR="$(amgetconf $CONF logdir)"
  if [ -n "$AMANDA_LOGDIR" ]; then
    cat <<EOF
@@define AMANDA_LOGDIR $AMANDA_LOGDIR
@@{AMANDA_LOGDIR}/oldlog/log\.200[0-9]{5}\.0$ RotatedLogs
@@{AMANDA_LOGDIR}/log\.200[0-9]{5}\.0$ RotatedLogs+ANF
@@{AMANDA_LOGDIR}/amdump\.1$ Full+ANF
@@{AMANDA_LOGDIR}/amdump\.([2-9]|1[0-6])$ RotatedLogs
@@{AMANDA_LOGDIR}/amdump\.17$ RotatedLogs+ARF
@@{AMANDA_LOGDIR}(/oldlog)?$ VarDir
EOF
  fi
  AMANDA_INDEXDIR="$(amgetconf $CONF indexdir)"
  if [ -n "$AMANDA_INDEXDIR" ]; then
    echo "@@define AMANDA_INDEXDIR $AMANDA_INDEXDIR"
    while read host dev rest; do
      if echo $host | grep -q '^\(#.*\)\?$'; then continue; fi
      dev="$(echo $dev | sed 's|/|_|g')"
      echo "!@@{AMANDA_INDEXDIR}/$host/$dev/200[0-9]{5}_[0123]\.gz$"
      echo "@@{AMANDA_INDEXDIR}/$host/$dev$ VarDir"
    done < disklist
  fi
  AMANDA_CHANGERFILE="$(amgetconf $CONF changerfile)"
  AMANDA_CHANGERDIR="${AMANDA_CHANGERFILE%/changer}"
  if [ -n "$AMANDA_CHANGERDIR" ]; then
    echo "@@define AMANDA_CHANGERDIR $AMANDA_CHANGERDIR"
    echo "@@{AMANDA_CHANGERDIR}/(changer-(access|clean|slot)|tapelist(\.yesterday)?)$ VarFile"
    echo "@@{AMANDA_CHANGERDIR}$ VarDir"
  fi
  AMANDA_INFOFILE="$(amgetconf $CONF infofile)"
  if [ -n "$AMANDA_INFOFILE" ]; then
    echo "@@define AMANDA_INFOFILE $AMANDA_INFOFILE"
    while read host dev rest; do
      if echo $host | grep -q '^\(#.*\)\?$'; then continue; fi
      dev="$(echo $dev | sed 's|/|_|g')"
      echo "@@{AMANDA_INFOFILE}/$host/$dev/info$ VarFile"
      echo "@@{AMANDA_INFOFILE}/$host/$dev$ VarDir"
    done < disklist
  fi
  # this is hardcoded since amgetconf refuses to deliver diskdir
  AMANDA_HOLDING="/srv/amanda/holding"
  if [ -n "$AMANDA_HOLDING" ]; then
    echo "$AMANDA_HOLDING$ VarDir"
  fi
done

cat <<EOF
@@define AMANDATMP /tmp/amanda
!@@{AMANDATMP}/(amandad|amcheck|amtrm(idx|log)|killpgrp|selfcheck|sendbackup|sendsize)\.200[0-9]{11}\.debug$ 
@@{AMANDATMP}$ RamdiskData-Size
/var/lib/dumpdates$ VarFile
EOF
