[Fedora-directory-commits] dsmlgw/misc dsmlgw.env.in, NONE, 1.1 setup-ds-dsmlgw.in, NONE, 1.1 start-ds-dsmlgw.in, NONE, 1.1

Richard Allen Megginson (rmeggins) fedora-directory-commits at redhat.com
Wed Apr 23 16:56:00 UTC 2008


Author: rmeggins

Update of /cvs/dirsec/dsmlgw/misc
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv3561/dsmlgw/misc

Added Files:
	dsmlgw.env.in setup-ds-dsmlgw.in start-ds-dsmlgw.in 
Log Message:
initial commit for packaging - allow fhs, fhsopt, and straight prefix packaging - added setup and start scripts


--- NEW FILE dsmlgw.env.in ---
# This file sets up the environment which the dsmlgw will use

if [ -z "$DSMLGW_CONFIG_DIR" ] ; then
    DSMLGW_CONFIG_DIR=@dsmlgwconfigdir@
    export DSMLGW_CONFIG_DIR
fi

if [ -z "$CATALINA_HOME" ] ; then
    CATALINA_HOME=@dsmlgwdatadir@
    export CATALINA_HOME
fi

if [ -z "$CATALINA_PID" ] ; then
    CATALINA_PID=@dsmlgwrundir@/@package_name at .pid
    export CATALINA_PID
fi

if [ -z "$TOMCAT_USER" ] ; then
    TOMCAT_USER=@dsmlgwuser@
    export TOMCAT_USER
fi

if [ -z "$CATALINA_TEMP" ] ; then
    CATALINA_TEMP=@dsmlgwrundir@/temp
    export CATALINA_TEMP
fi

if [ -z "$JAVA_HOME" ] ; then
    JAVA_HOME=@runtime_javahome@
    export JAVA_HOME
    PATH=$JAVA_HOME/bin:$PATH
    export PATH
fi


--- NEW FILE setup-ds-dsmlgw.in ---
#!/bin/sh
#
# BEGIN COPYRIGHT BLOCK
# This Program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; version 2 of the License.
# 
# This Program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License along with
# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA.
# 
# Copyright (C) 2006 Red Hat, Inc.
# All rights reserved.
# END COPYRIGHT BLOCK
#

###########################
#
# The general strategy is to create an "instance" of tomcat, so that we
# can use our own logs directory, pid directory, etc. and can run as a
# user of our choosing rather than the default tomcat user
#
##########################

echo '######################################################################'
echo This shell script will configure the DSML Gateway Axis service, as
echo a web application running under Tomcat.
echo

getValFromInf() {
	cattr=$1
	cfile=$2
	rval=`grep ^$cattr $cfile | head -1 | sed -e "s/^$cattr[ 	]*=[ 	]*//"`
	echo $rval
}

getValFromConf() {
	cattr=$1
	cfile=$2
	rval=`grep ^$cattr $cfile | head -1 | sed -e "s/^$cattr[ 	]*//"`
	echo $rval
}

getValFromLdif() {
	cattr=$1
	cfile=$2
	num=${3:-1}
	rval=`grep -i ^$cattr: $cfile | head -$num | sed -e "s/^..*:[ 	]*//"`
	echo $rval
}

# e.g. /etc/dirsrv/dsmlgw
dsmlgwconfigdir="@dsmlgwconfigdir@"
basecfgdir=`dirname $dsmlgwconfigdir`
# default security dir
securitydir="@securitydir@"
defaultsecdir=1

# see if there is a $dsmlgwconfigdir/../admin-serv
admservdir=$basecfgdir/admin-serv
if [ -f "$admservdir/local.conf" ] ; then
    echo Reading parameters from Administration Server config . . .
    host=`getValFromLdif serverHostName "$admservdir/local.conf"`
    port=`getValFromLdif configuration.nsServerPort "$admservdir/local.conf"`
    sec=`getValFromLdif configuration.nsServerSecurity "$admservdir/local.conf"`
    if [ "$sec" = "on" ] ; then
        httpurl="https://$host:$port"
        if [ -n "$defaultsecdir" ] ; then
            securitydir="$admservdir"
            defaultsecdir=
        fi
    else
        httpurl="http://$host:$port"
    fi
    dsmlgwuser=`ls -l $admservdir/local.conf | awk '{print $3}'`
    dsmlgwgroup=`ls -l $admservdir/local.conf | awk '{print $4}'`
    echo Using Administration Server URL $httpurl . . .
else
    echo
    echo '########################################################################'
    echo Error: It appears the Administration Server has not yet been configured.
    echo There are configuration files missing from $admservdir
    echo Please run setup-ds-admin.pl to create your Administration Server
    echo then run this script again.
    exit 1
fi

# see if there are any directory servers here
for dir in $basecfgdir/slapd-* ; do
    case "$dir" in
    *.deleted) continue ;;
    esac
    if [ -d "$dir" -a -f "$dir/dse.ldif" ] ; then
        echo Reading parameters from Directory Server $dir . . .
        dirmgr=`getValFromLdif nsslapd-rootdn "$dir/dse.ldif"`
        host=`getValFromLdif nsslapd-localhost "$dir/dse.ldif"`
        sec=`getValFromLdif nsslapd-security "$dir/dse.ldif"`
        if [ "$sec" = "on" ] ; then
            port=`getValFromLdif nsslapd-secureport "$dir/dse.ldif"`
            ldapurl="ldaps://$host:$port"
            if [ -n "$defaultsecdir" ] ; then
                securitydir="$dir"
                defaultsecdir=
            fi
        else
            port=`getValFromLdif nsslapd-port "$dir/dse.ldif"`
            ldapurl="ldap://$host:$port"
        fi
        # get suffix - first non-netscaperoot suffix
        savesuffix="$suffix"
        suffix=`grep ^nsslapd-suffix: $dir/dse.ldif | sed -e 's/^nsslapd-suffix:[ 	]*//' | grep -v -i o=netscaperoot | head -1`
        if [ -z "$suffix" ] ; then
            suffix="$savesuffix"
        fi
        if [ -z "$dsmlgwuser" ] ; then
            dsmlgwuser=`ls -l $dir/dse.ldif | awk '{print $3}'`
        fi
        if [ -z "$dsmlgwgroup" ] ; then
            dsmlgwgroup=`ls -l $dir/dse.ldif | awk '{print $4}'`
        fi
    fi
done

if [ -n "$ldapurl" ] ; then
    echo Using Directory Server URL $ldapurl/$suffix . . .
fi

# get command line arguments

inffile=
nextisinffile=
reconfig=
for arg in "$@" ; do
	if [ "$arg" = "-r" ]; then
		reconfig=1
	elif [ "$arg" = "-f" ]; then
		nextisinffile=1
	elif [ $nextisinffile ]; then
		inffile="$arg"
		nextisinffile=
	fi
done

tomcat_home=@tomcat_home@

if [ -z "$tomcat_home" -o ! -d "$tomcat_home" ] ; then
    echo ERROR: tomcat_home is not set to the tomcat directory
    exit 1
fi

# CATALINA_HOME points to @datadir@/dsmlgw
# these are the directories we need in order to run an instance of tomcat
# bin server common shared conf temp webapps logs work
# these directories will just be symlinks to the actual tomcat dir - they
# are mostly read-only: bin server common shared conf
# webapps will be a real directory and will contain axis + dsmlgw
# logs will point to the dirsrv/dsmlgw logs directory
# temp and work will point to the run/dsmlgw directory
dsmlgwdir=@dsmlgwdatadir@

for dir in bin server common shared conf ; do
    if [ -d $dsmlgwdir/$dir ] ; then
        echo $dsmlgwdir/$dir exists, skipping . . .
    else
        ln -s $tomcat_home/$dir $dsmlgwdir/$dir
    fi
done

if [ -d $dsmlgwdir/logs ] ; then
    echo $dsmlgwdir/logs exists, skipping . . .
else
    ln -s @dsmlgwlogdir@ $dsmlgwdir/logs
fi

for dir in temp work ; do
    if [ -d $dsmlgwdir/$dir ] ; then
        echo $dsmlgwdir/$dir exists, skipping . . .
    else
        ln -s @dsmlgwrundir@ $dsmlgwdir/$dir
    fi
done


if [ -f "$inffile" ] ; then
    hostname=`getValFromInf FullMachineName $inffile`
    port=`getValFromInf ServerPort $inffile`
    suffix=`getValFromInf Suffix $inffile`
    dirmgr=`getValFromInf RootDN $inffile`
    httpport=`getValFromInf Port $inffile`
    httpurl="http://$host:$httpport"
    ldapurl="ldap://$host:$port"
    infuser=`getValFromInf SysUser $inffile`
    infgroup=`getValFromInf SysGroup $inffile`
    if [ -z "$infuser" ] ; then
        infuser=`getValFromInf SuiteSpotUserID $inffile`
    fi
    if [ -z "$infgroup" ] ; then
        infgroup=`getValFromInf SuiteSpotGroup $inffile`
    fi
    if [ -n "$infuser" ] ; then
        dsmlgwuser="$infuser"
    fi
    if [ -n "$infgroup" ] ; then
        dsmlgwgroup="$infgroup"
    fi
    echo Using parameters from file $inffile . . .
    echo Using Administration Server URL $httpurl . . .
    echo Using Directory Server URL $ldapurl/$suffix . . .
fi

if [ -z "$reconfig" -a -f $dsmlgwconfigdir/dsmlgw.cfg ] ; then
    echo
    echo '######################################################################'
    echo The DSML Gateway has already been configured.  The
    echo file $dsmlgwconfigdir/dsmlgw.cfg
    echo exists already.  If you want to force a reconfiguration, removing
    echo your existing configuration and recreating it, run this script
    echo again with the "-r" argument.
    exit 1
fi

echo Generating config file $dsmlgwconfigdir/dsmlgw.cfg . . .
# generate dsmlgw.cfg in the $dsmlgwconfigdir directory
rm -f $dsmlgwconfigdir/dsmlgw.conf
sed -e "s#@host@#$hostname#g" \
    -e "s#@port@#$port#g" \
    -e "s#@httpport@#$httpport#g" \
    -e "s#@suffix@#$suffix#g" \
    -e "s#@dirmgr@#$dirmgr#g" \
    -e "s#^securitypath.*\$#securitypath $securitydir#g" \
    -e "s#@ldapurl@#$ldapurl#g" \
    -e "s#@httpurl@#$httpurl#g" \
    @configdir@/dsmlgw.tmpl > $dsmlgwconfigdir/dsmlgw.conf

chown $dsmlgwuser:$dsmlgwgroup $dsmlgwconfigdir/dsmlgw.conf
chmod 0400 $dsmlgwconfigdir/dsmlgw.conf

echo
echo The DSML Gateway has been successfully configured.
echo '######################################################################'

exit 0


--- NEW FILE start-ds-dsmlgw.in ---
#!/bin/sh
#
# BEGIN COPYRIGHT BLOCK
# This Program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; version 2 of the License.
# 
# This Program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License along with
# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA.
# 
# Copyright (C) 2006 Red Hat, Inc.
# All rights reserved.
# END COPYRIGHT BLOCK
#

# first, look for the shell script config file
# if not found, punt

# source env. for dsmlgw
[ -f @dsmlgwconfigdir@/dsmlgw.env ] && . @dsmlgwconfigdir@/dsmlgw.env

# if root, use su to execute the startup script - user is set in @initconfigdir@/@package_name@
if [ "$USER" = "root" ] ; then
    su - $CATALINA_USER -c "@tomcat_cmd@ $@"
else
    @tomcat_cmd@ $@
fi




More information about the Fedora-directory-commits mailing list