#!/bin/bash # # vhost configs # any script that includes this conf file will force user to be root if [ "$USER" != "root" ]; then exec sudo -u root $0 $@ fi # constants # functions function vhost::set-virtualhostArray () { cd /srv/www virtualhostArray=(`ls -1|grep -v ^html$`) } function vhost::set-phpVersion () { PHP_MAJOR_VERSION=`php -r "echo PHP_MAJOR_VERSION;"` PHP_MINOR_VERSION=`php -r "echo PHP_MINOR_VERSION;"` phpVersion=$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION } # crude but good enough domain name format validation function vhost::validate_domain () { local my_domain=$1 if [[ $my_domain =~ ^(([a-zA-Z0-9](-?[a-zA-Z0-9])*)\.)+[a-zA-Z]{2,}$ ]] ; then return 0 else return 1 fi } function vhost:getoptions () { local OPTIND while getopts "cd:i:m:o:p:u:jhnvw" opt ; do case "${opt}" in h ) # display help and exit help exit ;; c ) # cvs - output in cvs format cvs=true ;; d ) # domain name (virtualhost) to act on domain=${OPTARG,,} if ! vhost::validate_domain $domain; then echo "ERROR: $domain is not a valid domain name." exit fi ;; i ) # User ID (UID) for new user uid=${OPTARG} ;; m ) # macro - Apache mod_macro name macro=${OPTARG} ;; o ) # option - usually applied to previously specified variable # e.g. could be subdomain or alias depending on the macro defined option=${OPTARG} ;; p ) # password password=${OPTARG} ;; u ) # username username=${OPTARG,,} ;; j ) # jail - if enabled user will be jailed jail=true ;; n ) # dry-run dryrun=true ;; v ) # verbose verbose=true ;; w ) # write - store data in file write=true ;; \? ) echo "Invalid option: $OPTARG" exit 1 ;; : ) echo "Invalid option: $OPTARG requires an argument" exit 1 ;; esac done shift $((OPTIND-1)) } # check for local config, which can be used to override any of the above if [[ -f /usr/local/etc/vhost.conf ]]; then source /usr/local/etc/vhost.conf fi