#!/bin/bash set -e PROGNAME=$(basename $0) # $HeadURL: http://sos16-vip/svn/kickstart/trunk/bin/defaults-dumper $ $LastChangedRevision: 669 $ # Load libraries . $(dirname $0)/../include/mkdi.sh main() { local TARGET_HOSTNAME TARGET_RELEASE # Defaults for options VERBOSELEVEL=2 # Process options while [ "X$1" != X ]; do case $1 in # Application specific options --target-hostname=*) TARGET_HOSTNAME=${1#*=} ;; --target-release=*) TARGET_RELEASE=${1#*=} ;; # General options --help|-h) usage 0 ;; --verbose|-v) VERBOSELEVEL=3 ;; -d) VERBOSELEVEL=$2; shift ;; --debug=*) VERBOSELEVEL=${1#*=} ;; --) shift; break ;; -*) usage ;; *) break ;; esac shift done # Process arguments [ $# -ge 1 ] || usage MODE=$1; shift debug 10 "main: MODE=$MODE" # Guts case $MODE in create) create --target-hostname=$TARGET_HOSTNAME --target-release=$TARGET_RELEASE "$@" || return $? ;; delete) delete --target-hostname=$TARGET_HOSTNAME --target-release=$TARGET_RELEASE "$@" || return $? ;; list) list "$@" || return $? ;; purge) purge "$@" || return $? ;; *) usage ;; esac return 0 } create() { local TARGET_HOSTNAME TARGET_RELEASE # Process options while [ "X$1" != X ]; do case $1 in # Application specific options --target-hostname=*) TARGET_HOSTNAME=${1#*=} ;; --target-release=*) TARGET_RELEASE=${1#*=} ;; # General options --) shift; break ;; -*) internal "create: $1: invalid option" ;; *) break ;; esac shift done # Process arguments [ $# = 0 ] || internal "create: $#: wrong arg count" # Create entry info "enabling repository access ..." create_or_delete --target-hostname=$TARGET_HOSTNAME --target-release=$TARGET_RELEASE create || return $? return 0 } delete() { local TARGET_HOSTNAME TARGET_RELEASE # Process options while [ "X$1" != X ]; do case $1 in # Application specific options --target-hostname=*) TARGET_HOSTNAME=${1#*=} ;; --target-release=*) TARGET_RELEASE=${1#*=} ;; # General options --) shift; break ;; -*) internal "delete: $1: invalid option" ;; *) break ;; esac shift done # Process arguments [ $# = 0 ] || internal "delete: $#: wrong arg count" # Delete entry info "disabling repository access ..." create_or_delete --target-hostname=$TARGET_HOSTNAME --target-release=$TARGET_RELEASE delete || return $? return 0 } create_or_delete() { local TARGET_HOSTNAME TARGET_RELEASE local APACHE_OUTPUT MODE REPOS REPO TAG # Process options while [ "X$1" != X ]; do case $1 in # Application specific options --target-hostname=*) TARGET_HOSTNAME=${1#*=} ;; --target-release=*) TARGET_RELEASE=${1#*=} ;; # General options --) shift; break ;; -*) internal "create_or_delete: $1: invalid option" ;; *) break ;; esac shift done # Process arguments [ $# = 1 ] || internal "create_or_delete: $#: wrong arg count" MODE=$1 # Sanity checks and derivations eval "REPOS=\"\$${TARGET_RELEASE}_REPOS\"" debug 10 "create_or_delete: REPOS=\"$REPOS\"" validate_vars MODE TARGET_HOSTNAME TARGET_RELEASE || return $? for REPO in $REPOS; do eval "TAG=\"\$${TARGET_RELEASE}_${REPO}_TAG\"" validate_vars TAG || return $? done debug 10 "main: MODE=$MODE, TARGET_HOSTNAME=$TARGET_HOSTNAME, TARGET_RELEASE=$TARGET_RELEASE" # Guts if [ $MODE = create ]; then debug 10 "create_or_delete: availing repos ..." for REPO in $REPOS; do eval "TAG=\"\$${TARGET_RELEASE}_${REPO}_TAG\"" $PAA_CMD avail $REPO-$TARGET_RELEASE $TAG $TARGET_HOSTNAME || { error "paa avail: failed"; return 1; } $PAA_CMD apache $REPO-$TARGET_RELEASE $TARGET_HOSTNAME > /etc/apache2/mkdi.d/$REPO-$TARGET_RELEASE.$TARGET_HOSTNAME || { error "paa apache: failed"; return 1; } done elif [ $MODE = delete ]; then debug 10 "create_or_delete: unavailing repos ..." for REPO in $REPOS; do eval "TAG=\"\$${TARGET_RELEASE}_${REPO}_TAG\"" $PAA_CMD unavail $REPO-$TARGET_RELEASE $TARGET_HOSTNAME || { error "paa unavail: failed"; return 1; } rm -f /etc/apache2/mkdi.d/$REPO-$TARGET_RELEASE.$TARGET_HOSTNAME done fi APACHE_OUTPUT=$(/etc/init.d/apache2 reload 2>&1) || { error "apache restart failed ($APACHE_OUTPUT)"; return 1; } return 0 } purge() { # Guts rm /etc/apache2/mkdi.d/* 2>/dev/null || true return 0 } list() { # Process options while [ "X$1" != X ]; do case $1 in # Application specific options # General options --) shift; break ;; -*) internal "list: $1: invalid option" ;; *) break ;; esac shift done # Process arguments [ $# = 0 ] || internal "list: $#: wrong arg count" # Guts ls -lrt /etc/apache2/mkdi.d/* 2>/dev/null $PAA_CMD -l list return 0 } usage() { local RC RC=${1:-1} { echo "Usage: $PROGNAME [ ] { create | delete | list }" echo } | if [ $RC = 0 ]; then cat else cat >&2 fi exit $RC } main "$@"