#!/bin/bash
# /etc/rc.d/init.d/cvmfs-user-pub
#chkconfig: - 88 12
#description: mounts and unmounts /cvmfs2 repositories
#   and cleans up after reboot

if [ -f /etc/init.d/functions ]; then
    . /etc/init.d/functions
fi

OP="$1"
if [ "$OP" = status ]; then
    if mount|grep -q " /cvmfs2/"; then
        echo "cvmfs-user-pub running"
        exit
    else
        echo "cvmfs-user-pub not running"
        exit 3
    fi
fi

if [ "$OP" = reload ]; then
    OP=restart
fi

for REPO in `sed -n 's/^hostrepo.*://p' /etc/cvmfs-user-pub.conf`; do
    if [ "$OP" = stop ] || [ "$OP" = restart ]; then
        if mount|grep -q " /cvmfs2/$REPO "; then
            umount /cvmfs2/$REPO
        fi
    fi

    if [ "$OP" = start ]; then
        # sometimes a crash corrupts these
        rm -f /srv/cvmfs/$REPO/.cvmfsreflog /var/spool/cvmfs/$REPO/reflog.chksum
    fi

    if [ "$OP" = start ] || [ "$OP" = restart ]; then
        if ! mount|grep -q "^/cvmfs2/$REPO " && [ -d /srv/cvmfs/$REPO ]; then
            mkdir -p /cvmfs2/$REPO
            PUB=/etc/cvmfs/keys/$REPO.pub
            if [ -f $PUB ]; then
                KEY="CVMFS_PUBLIC_KEY=$PUB"
            else
                DOMAIN="`echo $REPO|cut -d. -f2-`"
                PUB=/etc/cvmfs/keys/$DOMAIN.pub
                if [ -f $PUB ]; then
                    KEY="CVMFS_PUBLIC_KEY=$PUB"
                else
                    KEY="CVMFS_KEYS_DIR=/etc/cvmfs/keys/$DOMAIN"
                fi
            fi
            cat >/etc/cvmfs/config.d/$REPO.local <<xEOFx
# generated by $0, do not edit
CVMFS_SERVER_URL=http://localhost/cvmfs/@fqrn@
CVMFS_HTTP_PROXY=DIRECT
$KEY
xEOFx
            CVMFS_BASE_ENV=1 CVMFS_USER=cvmfs CVMFS_MOUNT_DIR=cvmfs2 CVMFS_RELOAD_SOCKETS=/var/run/cvmfs mount -t cvmfs $REPO /cvmfs2/$REPO
        fi
    fi

done

if [ "$OP" = start ]; then
    # this needs to be done at boot time
    cvmfs_server mount -a
fi
