head	1.6;
access;
symbols
	RELEASE-1_4:1.4.0.2;
locks; strict;
comment	@# @;


1.6
date	2008.11.16.15.11.23;	author tupone;	state dead;
branches;
next	1.5;
commitid	4196492038194567;

1.5
date	2004.07.18.02.26.33;	author dragonheart;	state Exp;
branches;
next	1.4;

1.4
date	2003.04.04.22.05.04;	author kutsuya;	state Exp;
branches;
next	1.3;

1.3
date	2003.02.26.08.06.43;	author kutsuya;	state Exp;
branches;
next	1.2;

1.2
date	2003.02.26.07.08.46;	author kutsuya;	state Exp;
branches;
next	1.1;

1.1
date	2003.02.17.03.01.19;	author kutsuya;	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.6
log
@Fix dialog not finding tty. Bug #120471
(Portage version: 2.1.4.5)
@
text
@#!/bin/bash
# Gentoo Zope Instance configure tool.
# Copyright 2003 Jason Shoemaker <kutsuya@@gentoo.org>
# Distributed under GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.1/zope-config,v 1.5 2004/07/18 02:26:33 dragonheart Exp $

VERSION="0.1"
ZUID=zope
ZS_DIR="/usr/share/zope/"
ZI_DIR="/var/lib/zope/"
INITD="/etc/init.d/"

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

#E_ZPLIST=20
E_ZILIST=22
#E_COMMAND=24
E_PARAM=26
E_ZSLIST=28
E_ZIDEFAULT=30

#Parameters:
# $1 = instance directory
# $2 = group

zinst_security_setup() 
{
    chown -R ${ZUID}:${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/    
}

#Params:
#  $1 = zserv dir
#  $2 = zinst dir

zinst_fs_setup()
{
    local RESULT=${E_FAILURE}

    if [ "${#}" -lt 2 ] ; then
	# need a param
	RESULT=${E_PARAM}
    else
	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
	cp -R $1/.templates/Extensions $2
	cp -R $1/.templates/import $2
	cp -R $1/.templates/var $2
	mkdir $2/Products
	RESULT=$?
    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}
    else
	install $1/.templates/zope.confd /etc/conf.d/${3}
	install $1/.templates/zope.initd /etc/init.d/${3}
	sed -i -e "/INSTANCE_HOME=/ c\\INSTANCE_HOME=${2}\\ " \
	    -e "/CLIENT_HOME=/ c\\CLIENT_HOME=${2}/var\\ " \
	    /etc/conf.d/${3}
	RESULT=$?
    fi
    return ${RESULT}
}

#

zserv_dir_get()
{
    local RESULT=${E_FAILURE}
    local LIST=$(ls ${ZS_DIR})
    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 0 ${LIST_CNT} ${DLIST})
	RESULT=$?
    else
	RESULT=${E_ZSLIST}    # There are no zservers
    fi
    ZSERV_DIR="${ZS_DIR}${ZSERV_DIR}"
    return ${RESULT}
}

#

zinst_dir_set()
{
    local RESULT=

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

    while : ; do
	ZINST_DIR=$(dialog --stdout \
	    --backtitle "Need a uniqe name for zinstance directory.(Also the name of the rcscript.)" \
	    --inputbox "Enter a new zinstance name:" 0 0 zope- )
	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." 0 0
	    continue
	fi
	ZINST_DIR=${ZI_DIR}${ZINST_DIR}
	break
    done
    return ${RESULT}
}

#

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}
}

#

zinst_default_set()
{
    local RESULT=

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

#

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}
}

#

zinst_zgid_set()
{
    local RESULT=
    while : ; do
	ZGID_NAME=$(dialog --stdout \
	    --backtitle "Need to create/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 "${ZGID_NAME} already exists, use it?" 0 0
	    RESULT=$?
	    [ ${RESULT} -ne 0 ] && continue 
	fi
	break
    done
    return ${RESULT}
}

zinst_zpasswd_set()
{
    if [ -z ${ZSERV_DIR} ] ; then
	zserv_dir_get || { exit $? ; }
    fi
    if [ -z ${ZINST_DIR} ] ; then
	zinst_dir_get || exit $?
    fi

    echo ">>> Create 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
}

usage()
{
    echo "$(basename $0) version ${VERSION}"
    echo "A Gentoo Zope Instance configure 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=[dir] & zgid=[name]]"
    exit ${E_SUCCESS}
}

##### 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} ;;
	--zinst=*) ZINST_DIR=${OPTARG} ;;
	--zgid=*)  ZGID_NAME=${OPTARG} ;;
	--zidef-set) zinst_default_set ; exit $? ;;
	--zidef-get) zinst_default_get ; exit $? ;;
	--zpasswd) zinst_zpasswd_set ; exit $? ;;
	--version) echo ${VERSION} ; exit 0 ;;		
	-*) usage ;;
	*) usage ;;
    esac
    shift
done

if [ -z ${ZSERV_DIR} ] ; then
    zserv_dir_get || { echo 'Canceled: zserv_dir_get' ; exit 1 ; }
fi

if [ -z ${ZINST_DIR} ] ; then
    zinst_dir_set || { echo 'Canceled: zinst_dir_set' ; exit 1 ; }
fi

[ -z ${ZIRC_NAME} ] && ZIRC_NAME=$(basename ${ZINST_DIR})

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

zinst_fs_setup ${ZSERV_DIR} ${ZINST_DIR}
zinst_rc_setup ${ZSERV_DIR} ${ZINST_DIR} ${ZIRC_NAME}
groupadd ${ZGID_NAME}
zinst_security_setup ${ZINST_DIR} ${ZGID_NAME}

# TODO: see about adding interactive configuration of ZOPE_OPTS
echo "Note: Don't forget to edit ZOPE_OPTS in /etc/conf.d/${ZIRC_NAME}"

@


1.5
log
@Manifest fix - files/0.1/zope-config size mismatch
@
text
@d5 1
a5 1
# $Header: /home/cvsroot/gentoo-x86/app-admin/zope-config/files/0.1/zope-config,v 1.4 2003/04/04 22:05:04 kutsuya Exp $
@


1.4
log
@Fixed typos
@
text
@d5 1
a5 1
# $Header: $
@


1.3
log
@Should execute zpasswd with python, to avoid a bug when converting a float to int.
@
text
@d5 1
a5 1
# $Header: /home/cvsroot/gentoo-x86/app-admin/zope-config/files/0.1/zope-config,v 1.2 2003/02/26 07:08:46 kutsuya Exp $
d304 1
a304 1
echo "Note: Don\'t forget to edit ZOPE_OPTS in /etc/init.d/${ZIRC_NAME}"
@


1.2
log
@Fixed dependencies and made very very minor changes to zope-config script.
@
text
@d5 1
a5 1
# $Header: $
d242 1
a242 1
    /usr/bin/python2.1 ${ZSERV_DIR}/zpasswd.py ${ZINST_DIR}/inituser
@


1.1
log
@inital import
@
text
@d5 1
d128 1
a128 1
	    --inputbox "Enter a new zinstance name:" 0 0 )
@


1.1.1.1
log
@*** empty log message ***
@
text
@a4 1
# $Header: /var/cvsroot/gentoo-x86/app-admin/zope-config/files/0.1/zope-config,v 1.5 2004/07/18 02:26:33 dragonheart Exp $
d127 1
a127 1
	    --inputbox "Enter a new zinstance name:" 0 0 zope- )
d241 1
a241 1
    /usr/bin/python ${ZSERV_DIR}/zpasswd.py ${ZINST_DIR}/inituser
d303 1
a303 1
echo "Note: Don't forget to edit ZOPE_OPTS in /etc/conf.d/${ZIRC_NAME}"
@


