head	1.7;
access;
symbols;
locks; strict;
comment	@# @;


1.7
date	2012.03.01.15.07.20;	author patrick;	state dead;
branches;
next	1.6;
commitid	48434f4f908b4567;

1.6
date	2004.09.18.15.58.05;	author batlogg;	state Exp;
branches;
next	1.5;

1.5
date	2004.09.11.20.38.48;	author lanius;	state Exp;
branches;
next	1.4;

1.4
date	2004.07.24.23.20.46;	author batlogg;	state Exp;
branches;
next	1.3;

1.3
date	2004.07.24.22.19.46;	author batlogg;	state Exp;
branches;
next	1.2;

1.2
date	2004.07.14.21.22.44;	author agriffis;	state Exp;
branches;
next	1.1;

1.1
date	2004.07.13.23.48.58;	author batlogg;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2005.11.30.10.00.08;	author chriswhite;	state Exp;
branches;
next	;


desc
@@


1.7
log
@Removing p.masked net-zope deps
@
text
@#!/bin/bash
# vim: set noexpandtab ts=4:
# Gentoo Zope Instance configure tool.
#
# Originally written by Jason Shoemaker <kutsuya@@gentoo.org>
# Portions by Jodok Batlogg <batlogg@@gentoo.org> (Logging and some cleanups)
# Portions by Robin Johnson <robbat2@@gentoo.org> (Documentation and further cleanup)
# Portions by Carter Smithhart <derheld42@@derheld.net> (2.7.0 stuff)
#
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.4/zope-config,v 1.6 2004/09/18 15:58:05 batlogg Exp $
#
#
# Notes:
#  $ZI_DIR/.default holds name of default zope instance
#  $NEWZOPE is set to 1 if the zope server is 2.7.0 or newer
#
VERSION="0.4"

CONFIGFILE=/etc/zope-config.conf
if [ -e ${CONFIGFILE} ]; then
	source ${CONFIGFILE} 
    EVENTLOGDIR=`dirname ${EVENTLOGDIR}`/`basename ${EVENTLOGDIR}`
else
	echo "Unable to find config file: ${CONFIGFILE}" 1>&2
	exit 1
fi



# Return codes used in this program:
E_SUCCESS=0
E_FAILURE=1

E_ZILIST=22
E_PARAM=26
E_ZSLIST=28
E_ZIDEFAULT=30
ZUID=''
#Parameters:
# $1 = instance directory
# $2 = group
# $3 = user
zinst_security_setup()
{
	if [ ${ZOPE27} ] ; then
		chown -R ${3}:${2} ${1}
		chmod -R o-rwx ${1}
        chmod -R g-w ${1}
		#chmod g+ws ${1}/{var,log}
		chmod g+rX -R ${1}
        #set owner and group on log dir
        chown -R  ${ZUID}:${ZGID_NAME} ${EVENTLOGDIR}/${ZIRC_NAME}
        # permissions on log dir
        chmod -R 750 ${EVENTLOGDIR}/${ZIRC_NAME}
	else
		chown -R ${3}:${2} ${1}
		chmod -R g+u ${1}
		chmod -R o-rwx ${1}
		chown root ${1}/var/   # needed if $ZOPE_OPTS='-u root'
		chmod +t ${1}/var/
	fi
}

# params: $ZSERV_DIR
# returns 1 if $ZSERV_DIR is a 2.7 or newer Zope. Also sets NEWZOPE to 1.
zserv_is_2.7_or_newer()
{
    TEXT=$(echo $1 | grep ${ZS_DIR2})
    if [ "$TEXT" = "" ] ; then
        NEWZOPE=0
        return 0;
    fi
    NEWZOPE=1
    return 1;
}

#Params:
#  $1 = zserv dir
#  $2 = zinst dir
zinst_fs_setup()
{
	local RESULT=${E_FAILURE}
        local USER=
        local PASS=
        local PASS2=

	if [ "${#}" -lt 2 ] ; then
		# need a param
		RESULT=${E_PARAM}
	elif [ ${ZOPE27} ] ; then
		if [ "x$3" == "xinituser" ] ; then
			${BIN}/mkzopeinstance.py --user admin:admin --dir $2
		else
			${BIN}/mkzopeinstance.py --dir $2
		fi
        # create the log directory
        mkdir ${EVENTLOGDIR}/${ZIRC_NAME}
        # remove log directory  in skeltarget
        rm -r $2/log
        # symlink log directory
        ln -s ${EVENTLOGDIR}/${ZIRC_NAME} $2/log
		RESULT=$?
	else
            if [ $NEWZOPE = 1 ] ; then
                while : ; do
                    USER=$(dialog --stdout \
                        --backtitle "Please choose a username and password for the initial user." \
                        --inputbox "Username:" 0 0 "admin")
                    RESULT=$?
                    if [ "$USER" != "" ] ; then
                        break
                    fi
                done
                while : ; do
                    PASS=$(dialog --stdout \
                        --backtitle "Please choose a username and password for the initial user." \
                        --passwordbox "Password:" 0 0 "")
                    RESULT=$?
                    if [ "$PASS" = "" ] ; then
                        continue
                    fi
                    PASS2=$(dialog --stdout \
                        --backtitle "Please choose a username and password for the initial user." \
                        --passwordbox "Reenter Password:" 0 0 "")
                    RESULT=$?
                    if [ "$PASS2" = "" ] ; then
                        continue
                    fi
                    if [ $PASS = $PASS2 ] ; then
                        break
                    else
                        dialog --msgbox "Passwords must be equal!" 0 0
                    fi
                done
                su zope -c "$1/bin/mkzopeinstance.py --dir $2 --user $USER:$PASS"
                RESULT=${E_SUCCESS}
            else
                # prior to 2.7
		mkdir -p $2 || exit 1
		if [ $(zinst_default_get >/dev/null)$? -ne 0 ] ; then
			echo $(basename ${ZINST_DIR}) >${ZI_DIR}/.default
			chown zope:root ${ZI_DIR}/.default
		fi

		if [ -f $2/var/Data.fs ]; then
			mv $2/var/Data.fs $2/var/Data.fs.org
		fi

		cp -R $1/.templates/Extensions $2
		cp -R $1/.templates/import $2
		cp -R $1/.templates/var $2
		mkdir $2/Products

		if [ -f $2/var/Data.fs.org ]; then
			mv $2/var/Data.fs $2/var/Data.fs.dist
			mv $2/var/Data.fs.org $2/var/Data.fs
		fi

		RESULT=$?
            fi
	fi

	return ${RESULT}
}

#Params:
#  $1 = zserv dir
#  $2 = zinst dir
#  $3 = zinst name
zinst_rc_setup()
{
	local RESULT=${E_FAILURE}  

	if [ "${#}" -lt 3 ] ; then
		# need a param
		RESULT=${E_PARAM}
	elif [ ${ZOPE27} ] ; then
		install $1/skel/zope.initd ${INITD}/${3}
		#echo "INSTANCE_HOME=${2}" >${CONFD}/$3
		#echo "EVENT_LOG_FILE=${EVENTLOGDIR}/${3}" >>${CONFD}/$3
		sed -i \
			-e "/^# *effective-user/ a\\effective-user ${ZUID}\\ " \
			${2}/etc/zope.conf
		sed -i \
			-e "s|INSTANCE_HOME|${2}|" \
			${INITD}/${3}
		RESULT=$?
	else
            if [ $NEWZOPE = 1 ] ; then
                install $1/.templates/zope.initd ${INITD}/${3}
                sed -i \
                    -e "s|ZINST_DIR=|ZINST_DIR=${2}|" \
                    -e "s|EVENT_LOG_FILE=|EVENT_LOG_FILE=${EVENTLOGDIR}\/${3}|" \
                    ${INITD}/${3}
                RESULT=${E_SUCCESS}
            else
		install $1/.templates/zope.confd ${CONFD}/${3}
		install $1/.templates/zope.initd ${INITD}/${3}
		sed -i \
			-e "/INSTANCE_HOME=/ c\\INSTANCE_HOME=${2}\\ " \
			-e "/CLIENT_HOME=/ c\\CLIENT_HOME=${2}/var\\ " \
			-e "/EVENT_LOG_FILE=/ c\\EVENT_LOG_FILE=${EVENTLOGDIR}\/${3}\\ " \
			${CONFD}/${3}
		RESULT=$?
            fi
	    # make sure the directory exists
            mkdir -p ${EVENTLOGDIR} >/dev/null 2>&1
	fi
	return ${RESULT}
}

# Sets the variable: ZSERV_DIR and returns 0
#  or returns a non-zero error code
zserv_dir_get()
{
	local RESULT=${E_FAILURE}
	local LIST=$(ls -d ${ZS_DIR}* ; ls -d ${ZS_DIR2}*)
	local LIST_CNT=$(echo ${LIST} | wc -w)
	local DLIST=
        
	# Assume that LIST_TMP contains valid zserver dirs.
	if [ ${LIST_CNT} -eq 1 ] ; then
		ZSERV_DIR=${LIST}
		RESULT=${E_SUCCESS}
	elif [ ${LIST_CNT} -ne 0 ] ; then 
		for N in ${LIST} ; do
			DLIST="${DLIST} $N -"
		done
		ZSERV_DIR=$(dialog --stdout \
			--title "Zope Server List" \
			--menu "Select desired zserver: " 0 40 ${LIST_CNT} ${DLIST})
		RESULT=$?
	else
		RESULT=${E_ZSLIST}    # There are no zservers
	fi
        
        # set NEWZOPE to 1 if we are dealing with a "newer" zope version
        zserv_is_2.7_or_newer ${ZERV_DIR}

	return ${RESULT}
}
  
# Sets the variable: ZINST_DIR and returns 0
#  or returns a non-zero error code
zinst_dir_set()
{
	local RESULT=

	if [ ! -d ${ZI_DIR} ] ; then
		mkdir -p ${ZI_DIR}
	fi

	while : ; do
		ZINST_DIR=$(dialog --stdout \
			--backtitle "We need a unique name for the zinstance directory. (This will be the name of the rcscript.)" \
			--inputbox  "Enter a new zinstance name:" 0 0 ${DEFAULT_ZINSTANCENAME} )
		RESULT=$?
                if [ ${RESULT} -ne 0 ] ; then
                        break
                elif [ -z ${ZINST_DIR} ] ; then
			dialog --msgbox "Error: need a name." 0 0
			continue
		elif echo ${ZINST_DIR} |grep "/" ; then
			dialog --msgbox "Error: ${ZINST_DIR} is a path, not a name." 0 0
			continue
		elif [[ -d "${ZI_DIR}${ZINST_DIR}" && \
			-f "${INITD}/${ZINST_DIR}" ]] ; then
			dialog --msgbox "Error: ${ZINST_DIR} zinstance already exists. Delete ${INITD}/${ZINST_DIR} to replace instance." 0 0
			continue
		fi
		ZINST_DIR=${ZI_DIR}${ZINST_DIR}
		break
	done
	return ${RESULT}
}

# sets the variable $ZINST_DIR and returns 0
#  or returns non-null error code
zinst_dir_get()
{
	local RESULT=1
	local LIST=$(ls ${ZI_DIR})
	local LIST_CNT=$(echo ${LIST} | wc -w)
	local DLIST=

	# Assume that LIST_TMP contains valid zinstance dirs.
	if [ ${LIST_CNT} -eq 1 ] ; then
		ZINST_DIR=${LIST}
		RESULT=${E_SUCCESS}
	elif [ ${LIST_CNT} -ne 0 ] ; then 
		for N in ${LIST} ; do
			DLIST="${DLIST} $N -"
		done
		ZINST_DIR=$(dialog --stdout \
			--title "Zope Instance List" \
			--menu "Select desired zinstance:" 0 0 ${LIST_CNT} ${DLIST})
		RESULT=$?
	else
		RESULT=${E_ZILIST}  # There are no zinstances
	fi
	ZINST_DIR="${ZI_DIR}${ZINST_DIR}"
	return ${RESULT}
}

# makes ZSERV_DIR the default zope version. if ZSERV_DIR
zinst_default_set()
{
	local RESULT=

        if [ -z ${ZINST_DIR} ] ; then
            zinst_dir_get || { echo 'Cancelled: zinst_dir_get' ; exit 1 ; }
        fi
	RESULT=$?
	if [ ${RESULT} -eq 0 ] ; then
		echo $(basename ${ZINST_DIR}) >${ZI_DIR}/.default
		chown zope ${ZI_DIR}/.default
	fi
	
	return ${RESULT}
}

# Echos the default directory that this instance was created in
zinst_default_get()
{
	local RESULT=${E_ZIDEFAULT}

	if [ -s ${ZI_DIR}/.default ] ; then
		cat ${ZI_DIR}/.default
		RESULT=$?   # use to be 0
	fi
	return ${RESULT}
}

# Gets a name for the group that owns the new zinstance and also creates the
# group if nessicary
zinst_zgid_set()
{
	local RESULT=
	while : ; do
		ZGID_NAME=$(dialog --stdout \
			--backtitle "We need to create and/or assign a zinstance group name." \
			--inputbox "Enter a group name:" \
			0 0 $(basename ${ZIRC_NAME}))			
		RESULT=$?
		if [ ${RESULT} -ne 0 ] ; then
			break
		elif [ -z ${ZGID_NAME} ] ; then
			dialog --msgbox "Error: empty string." 0 0
			continue
		elif groupmod ${ZGID_NAME} >/dev/null 2>&1 ; then
			dialog --yesno "The group ${ZGID_NAME} already exists. Do you want to use it?" 0 0
			RESULT=$?
			[ ${RESULT} -ne 0 ] && continue 
		fi
		break
	done
	return ${RESULT}
}

# Gets a name for the user that owns the new zinstance and also creates the
# group if nessicary, this is the user zope runs as
zinst_zuid_set()
{
	local RESULT=
	while : ; do
		ZUID=$(dialog --stdout \
			--backtitle "We need to create and/or assign a zinstance user name." \
			--inputbox "Enter a user name:" \
			0 0 $(basename ${ZIRC_NAME}))			
		RESULT=$?
		if [ ${RESULT} -ne 0 ] ; then
			break
		elif [ -z ${ZUID} ] ; then
			dialog --msgbox "Error: empty string." 0 0
			continue
		elif egrep "^${ZUID}:" /etc/passwd >/dev/null 2>&1  ;  then
			dialog --yesno "The user ${ZUID} already exists. Do you want to use it?" 0 0
			RESULT=$?
			[ ${RESULT} -ne 0 ] && continue 
		fi
		break
	done
	return ${RESULT}
}

# Sets the inituser password for a given zinstance
zinst_zpasswd_set()
{
	if [ -z ${ZSERV_DIR} ] ; then
		zserv_dir_get || { exit $? ; }
	fi
	if [ -z ${ZINST_DIR} ] ; then
		zinst_dir_get || exit $?
	fi

        zserv_is_2.7_or_newer ${ZSERV_DIR}
        if [ $NEWZOPE = 1 ] ; then
            echo ">>> Creating a Zope inituser for \"$(basename ${ZINST_DIR})\"..."
			/usr/bin/python ${BIN}/zpasswd.py ${ZINST_DIR}/inituser
            # If zpasswd is aborted it creates a blank inituser
            chown ${ZUID} ${ZINST_DIR}/inituser
        else
            echo ">>> Creating a Zope inituser for \"$(basename ${ZINST_DIR})\"..."
            /usr/bin/python ${ZSERV_DIR}/zpasswd.py ${ZINST_DIR}/inituser
            # If zpasswd is aborted it creates a blank inituser
            chown ${ZUID} ${ZINST_DIR}/inituser
        fi
}

# help!

usage()
{
	echo "$(basename $0) version ${VERSION}"
	echo "A Gentoo Zope instance configuration tool."
	echo
	echo "Interactive usage:"
	echo -e "\t$(basename $0)"
	echo "Partial interactive usage:"
	echo -e "\t$(basename $0) --[zserv=[dir] &| zinst=[dir] &| zgid=[name]]"
	echo "Non-interactive usage:"
	echo -e "\t$(basename $0) --[zidef-get | zidef-set | zpasswd | version | help]"
	echo -e "\t$(basename $0) --[zserv=[dir] & zinst=[di] & zgid=[name]]"
	exit ${E_SUCCESS}
}

zserv_version_detect()
{
	if [ -d "${ZSERV_DIR}/bin" ] ; then
		ZOPE27=1
		BIN=${ZSERV_DIR}/bin
	else
		ZOPE27=0
		BIN=${ZSERV_DIR}
	fi
}

##### Process the commandline

while [ "$#" -gt 0 ] ; do
	case "$1" in
	-*=*) OPTARG=$(echo "$1" | sed 's/[-_a-zA-Z0-9:]*=//') ;;
	*) OPTARG= ;;
	esac

	case "$1" in
	    --zserv=*) ZSERV_DIR=${OPTARG} ; zserv_version_detect ;;
	    --zinst=*) ZINST_DIR=${OPTARG} ;;
	    --zgid=*)  ZGID_NAME=${OPTARG} ;;
        --zuid=*)  ZUID=${OPTARG} ;;
	    --zinituser) ZINIT_USER=inituser ;;
	    --zidef-set) zinst_default_set ; exit $? ;;
	    --zidef-get) zinst_default_get ; exit $? ;;
	    --zpasswd) zinst_zpasswd_set ; exit $? ;;
	    --version) echo ${VERSION} ; exit 0 ;;		
	    -*) usage ; exit 0 ;;
	    *) usage ; exit 0 ;;
	esac
	shift
done

# if ZSERV_DIR isn't set by command line, call zserv_dir_get to set it
if [ -z ${ZSERV_DIR} ] ; then
	zserv_dir_get || { echo 'Cancelled: zserv_dir_get' ; exit 1 ; }
	zserv_version_detect
else
    ZSERV_DIR=`dirname ${ZSERV_DIR}`/`basename ${ZSERV_DIR}`
fi

# if ZINST_DIR passed by command line, call zinst_dir_set to set it
if [ -z ${ZINST_DIR} ] ; then
	zinst_dir_set || { echo 'Cancelled: zinst_dir_set' ; exit 1 ; }
else
    ZINST_DIR=`dirname ${ZINST_DIR}`/`basename ${ZINST_DIR}`
fi

# if ZIRC_NAME isn't set then use the base of the ZINST_DIR for ZIRC_NAME
[ -z ${ZIRC_NAME} ] && ZIRC_NAME=$(basename ${ZINST_DIR})

if [ -z ${ZUID} ] ; then
	zinst_zuid_set || { echo 'Cancelled: zinst_zuid_set' ; exit 1 ; }
fi

if [ -z ${ZGID_NAME} ] ; then
	zinst_zgid_set || { echo 'Cancelled: zinst_zgid_set' ; exit 1 ; }
fi



zserv_is_2.7_or_newer ${ZSERV_DIR}

! groupmod ${ZGID_NAME} >/dev/null 2>&1 && groupadd ${ZGID_NAME}
zinst_fs_setup ${ZSERV_DIR} ${ZINST_DIR} ${ZINIT_USER}
zinst_rc_setup ${ZSERV_DIR} ${ZINST_DIR} ${ZIRC_NAME}

# create user if needed
useradd -g ${ZGID_NAME} ${ZUID}


# add existing user  to the new group
gpasswd -a ${ZUID} ${ZGID_NAME}

zinst_security_setup ${ZINST_DIR} ${ZGID_NAME} ${ZUID}
# TODO: see about adding interactive configuration of ZOPE_OPTS
if [ ${ZOPE27} ] ; then
	echo "Note: Review settings in ${ZINST_DIR}/etc/zope.conf."
	echo "Then you can start your new instance with:"
	echo "	/etc/init.d/${ZIRC_NAME} start"
else
	echo "Note: Don\'t forget to edit ZOPE_OPTS in ${CONFD}${ZIRC_NAME}"
	echo "      (you might want to add -P 8{1,2,3,..}00 to set the zope ports offset)"
fi

@


1.6
log
@let users define the user additionaly to the group under which the instance should run. thanks to Bernd Dorn.
@
text
@d12 1
a12 1
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.4/zope-config,v 1.5 2004/09/11 20:38:48 lanius Exp $
@


1.5
log
@fix grammar bugs, bug #63078
@
text
@d12 1
a12 1
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.4/zope-config,v 1.4 2004/07/24 23:20:46 batlogg Exp $
d24 1
d30 2
d40 1
a40 1

d44 1
d48 1
a48 1
		chown -R root:${2} ${1}
d50 2
a51 1
		chmod g+ws ${1}/{var,log}
d53 4
d58 1
a58 1
		chown -R ${ZUID}:${2} ${1}
d98 6
d181 2
a182 2
		echo "INSTANCE_HOME=${2}" >${CONFD}/$3
		echo "EVENT_LOG_FILE=${EVENTLOGDIR}/${3}" >>${CONFD}/$3
d362 26
d449 11
a459 10
	--zserv=*) ZSERV_DIR=${OPTARG} ; zserv_version_detect ;;
	--zinst=*) ZINST_DIR=${OPTARG} ;;
	--zgid=*)  ZGID_NAME=${OPTARG} ;;
	--zinituser) ZINIT_USER=inituser ;;
	--zidef-set) zinst_default_set ; exit $? ;;
	--zidef-get) zinst_default_get ; exit $? ;;
	--zpasswd) zinst_zpasswd_set ; exit $? ;;
	--version) echo ${VERSION} ; exit 0 ;;		
	-*) usage ; exit 0 ;;
	*) usage ; exit 0 ;;
d468 2
d475 2
d482 4
d489 3
d494 1
d498 6
a503 3
! groupmod ${ZGID_NAME} >/dev/null 2>&1 && groupadd ${ZGID_NAME}
# add existing user zope to the new group
gpasswd -a zope ${ZGID_NAME}
d505 1
a505 1
zinst_security_setup ${ZINST_DIR} ${ZGID_NAME}
@


1.4
log
@sed expression didn't match new initscript
@
text
@d12 1
a12 1
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.4/zope-config,v 1.3 2004/07/24 22:19:46 batlogg Exp $
d242 2
a243 2
			--backtitle "Need a uniqe name for zinstance directory.(Also the name of the rcscript.)" \
			--inputbox "Enter a new zinstance name:" 0 0 ${DEFAULT_ZINSTANCENAME} )
d298 1
a298 1
            zinst_dir_get || { echo 'Canceled: zinst_dir_get' ; exit 1 ; }
d328 1
a328 1
			--backtitle "Need to create/assign a zinstance group name." \
d338 1
a338 1
			dialog --yesno "${ZGID_NAME} already exists, use it?" 0 0
d359 1
a359 1
            echo ">>> Create Zope inituser for \"$(basename ${ZINST_DIR})\"..."
d364 1
a364 1
            echo ">>> Create Zope inituser for \"$(basename ${ZINST_DIR})\"..."
d376 1
a376 1
	echo "A Gentoo Zope Instance configure tool."
d424 1
a424 1
	zserv_dir_get || { echo 'Canceled: zserv_dir_get' ; exit 1 ; }
d430 1
a430 1
	zinst_dir_set || { echo 'Canceled: zinst_dir_set' ; exit 1 ; }
d437 1
a437 1
	zinst_zgid_set || { echo 'Canceled: zinst_zgid_set' ; exit 1 ; }
a448 1

@


1.3
log
@zope-config-0.4-r1 uses same file dir as zope-config-0.4
@
text
@d12 1
a12 1
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.4-r1/zope-config,v 1.1 2004/07/24 20:52:20 batlogg Exp $
d171 3
@


1.2
log
@Gentoo Technologies -> Gentoo Foundation
@
text
@d12 1
a12 1
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.4/zope-config,v 1.1 2004/07/13 23:48:58 batlogg Exp $
d84 5
a88 1
		${BIN}/mkzopeinstance.py --dir $2
d400 1
a400 1
	-*=*) OPTARG=$(echo "$1" | sed 's/[-_a-zA-Z0-9]*=//') ;;
d408 1
d438 1
a438 1
zinst_fs_setup ${ZSERV_DIR} ${ZINST_DIR}
d456 1
@


1.1
log
@version bump, lots of changes from #41508
@
text
@d10 1
a10 1
# Copyright 1999-2003 Gentoo Technologies, Inc.
d12 1
a12 1
# $Header: /home/cvsroot/gentoo-x86/app-admin/zope-config/files/0.3/zope-config,v 1.2 2003/12/12 07:40:57 lanius Exp $
@


1.1.1.1
log
@*** empty log message ***
@
text
@d10 1
a10 1
# Copyright 1999-2004 Gentoo Foundation
d12 1
a12 1
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.4/zope-config,v 1.6 2004/09/18 15:58:05 batlogg Exp $
a23 1
    EVENTLOGDIR=`dirname ${EVENTLOGDIR}`/`basename ${EVENTLOGDIR}`
a28 2


d37 1
a37 1
ZUID=''
a40 1
# $3 = user
d44 1
a44 1
		chown -R ${3}:${2} ${1}
d46 1
a46 2
        chmod -R g-w ${1}
		#chmod g+ws ${1}/{var,log}
a47 4
        #set owner and group on log dir
        chown -R  ${ZUID}:${ZGID_NAME} ${EVENTLOGDIR}/${ZIRC_NAME}
        # permissions on log dir
        chmod -R 750 ${EVENTLOGDIR}/${ZIRC_NAME}
d49 1
a49 1
		chown -R ${3}:${2} ${1}
d84 1
a84 11
		if [ "x$3" == "xinituser" ] ; then
			${BIN}/mkzopeinstance.py --user admin:admin --dir $2
		else
			${BIN}/mkzopeinstance.py --dir $2
		fi
        # create the log directory
        mkdir ${EVENTLOGDIR}/${ZIRC_NAME}
        # remove log directory  in skeltarget
        rm -r $2/log
        # symlink log directory
        ln -s ${EVENTLOGDIR}/${ZIRC_NAME} $2/log
d162 2
a163 2
		#echo "INSTANCE_HOME=${2}" >${CONFD}/$3
		#echo "EVENT_LOG_FILE=${EVENTLOGDIR}/${3}" >>${CONFD}/$3
a166 3
		sed -i \
			-e "s|INSTANCE_HOME|${2}|" \
			${INITD}/${3}
d235 2
a236 2
			--backtitle "We need a unique name for the zinstance directory. (This will be the name of the rcscript.)" \
			--inputbox  "Enter a new zinstance name:" 0 0 ${DEFAULT_ZINSTANCENAME} )
d291 1
a291 1
            zinst_dir_get || { echo 'Cancelled: zinst_dir_get' ; exit 1 ; }
d321 1
a321 1
			--backtitle "We need to create and/or assign a zinstance group name." \
d331 1
a331 27
			dialog --yesno "The group ${ZGID_NAME} already exists. Do you want to use it?" 0 0
			RESULT=$?
			[ ${RESULT} -ne 0 ] && continue 
		fi
		break
	done
	return ${RESULT}
}

# Gets a name for the user that owns the new zinstance and also creates the
# group if nessicary, this is the user zope runs as
zinst_zuid_set()
{
	local RESULT=
	while : ; do
		ZUID=$(dialog --stdout \
			--backtitle "We need to create and/or assign a zinstance user name." \
			--inputbox "Enter a user name:" \
			0 0 $(basename ${ZIRC_NAME}))			
		RESULT=$?
		if [ ${RESULT} -ne 0 ] ; then
			break
		elif [ -z ${ZUID} ] ; then
			dialog --msgbox "Error: empty string." 0 0
			continue
		elif egrep "^${ZUID}:" /etc/passwd >/dev/null 2>&1  ;  then
			dialog --yesno "The user ${ZUID} already exists. Do you want to use it?" 0 0
d352 1
a352 1
            echo ">>> Creating a Zope inituser for \"$(basename ${ZINST_DIR})\"..."
d357 1
a357 1
            echo ">>> Creating a Zope inituser for \"$(basename ${ZINST_DIR})\"..."
d369 1
a369 1
	echo "A Gentoo Zope instance configuration tool."
d396 1
a396 1
	-*=*) OPTARG=$(echo "$1" | sed 's/[-_a-zA-Z0-9:]*=//') ;;
d401 9
a409 11
	    --zserv=*) ZSERV_DIR=${OPTARG} ; zserv_version_detect ;;
	    --zinst=*) ZINST_DIR=${OPTARG} ;;
	    --zgid=*)  ZGID_NAME=${OPTARG} ;;
        --zuid=*)  ZUID=${OPTARG} ;;
	    --zinituser) ZINIT_USER=inituser ;;
	    --zidef-set) zinst_default_set ; exit $? ;;
	    --zidef-get) zinst_default_get ; exit $? ;;
	    --zpasswd) zinst_zpasswd_set ; exit $? ;;
	    --version) echo ${VERSION} ; exit 0 ;;		
	    -*) usage ; exit 0 ;;
	    *) usage ; exit 0 ;;
d416 1
a416 1
	zserv_dir_get || { echo 'Cancelled: zserv_dir_get' ; exit 1 ; }
a417 2
else
    ZSERV_DIR=`dirname ${ZSERV_DIR}`/`basename ${ZSERV_DIR}`
d422 1
a422 3
	zinst_dir_set || { echo 'Cancelled: zinst_dir_set' ; exit 1 ; }
else
    ZINST_DIR=`dirname ${ZINST_DIR}`/`basename ${ZINST_DIR}`
a427 4
if [ -z ${ZUID} ] ; then
	zinst_zuid_set || { echo 'Cancelled: zinst_zuid_set' ; exit 1 ; }
fi

d429 1
a429 1
	zinst_zgid_set || { echo 'Cancelled: zinst_zgid_set' ; exit 1 ; }
a430 3



d433 1
a433 2
! groupmod ${ZGID_NAME} >/dev/null 2>&1 && groupadd ${ZGID_NAME}
zinst_fs_setup ${ZSERV_DIR} ${ZINST_DIR} ${ZINIT_USER}
d436 3
a438 2
# create user if needed
useradd -g ${ZGID_NAME} ${ZUID}
d440 1
a441 4
# add existing user  to the new group
gpasswd -a ${ZUID} ${ZGID_NAME}

zinst_security_setup ${ZINST_DIR} ${ZGID_NAME} ${ZUID}
a450 1

@


