Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • DM/dm-docs
  • hammonds/dm-docs
  • hparraga/dm-docs
3 results
Show changes
Showing
with 1871 additions and 0 deletions
#!/bin/bash
#
# dm-cat-web-service
#
# Starts the DM WebService daemon
#
# chkconfig: 345 98 98
# description: controls DM Web Service daemon
### BEGIN INIT INFO
# Provides: dm-cat-web-service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls DM CAT Web Service daemon
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Arguments
ACTION=$1
DM_DB_NAME=$2
DM_DB_NAME=${DM_DB_NAME:=dm}
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
mkdir -p ${DM_INSTALL_DIR}/var/run
mkdir -p ${DM_INSTALL_DIR}/var/log
DM_DAEMON_NAME="${DM_DB_NAME}.CatWebService"
DM_DAEMON_CMD=${DM_ROOT_DIR}/sbin/catWebService.py
DM_PID_FILE=${DM_INSTALL_DIR}/var/run/${DM_DB_NAME}.cat-web-service.pid
DM_CONFIG_FILE=${DM_INSTALL_DIR}/etc/${DM_DB_NAME}.cat-web-service.conf
DM_DAEMON_START_ARGS="-d -p $DM_PID_FILE --config-file $DM_CONFIG_FILE"
# Determine su command
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
RETVAL=0
start() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
PID=`cat $DM_PID_FILE`
echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)."
RETVAL=1
return $RETVAL
fi
echo -n $"Starting $DM_DAEMON_NAME daemon: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
$SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup"
echo
return $RETVAL
}
stop() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo $"$DM_DAEMON_NAME daemon is not running."
RETVAL=1
return $RETVAL
fi
echo -n $"Stopping $DM_DAEMON_NAME daemon: "
PID=`cat $DM_PID_FILE`
kill $PID
RETVAL=$?
sleep 1
# Make sure we kill the process always, regardless of
# what happened with first kill
kill -KILL $PID > /dev/null 2>&1
[ $RETVAL -eq 0 ] && rm -f $DM_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown"
echo
return $RETVAL
}
restart() {
stop
sleep 1
start
}
case "$ACTION" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status -p $DM_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
esac
exit $RETVAL
#!/bin/sh
# Helper script to start and stop DAQ node services
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
# The list below defines order of starting/stopping services
startList="mongodb mongo-express daq-web-service cat-web-service"
stopList="cat-web-service daq-web-service mongo-express mongodb"
restartList=$startList
statusList=$startList
# Check action
action=$1
case $action in
start|stop|restart|status)
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
# Perform action
serviceList="\$"${action}List
serviceList=`eval "echo $serviceList"`
for service in $serviceList; do
$MY_DIR/dm-$service $action
sleep 1
done
#!/bin/bash
#
# dm-daq-web-service
#
# Starts the DM WebService daemon
#
# chkconfig: 345 98 98
# description: controls DM Web Service daemon
### BEGIN INIT INFO
# Provides: dm-daq-web-service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls DM DAQ Web Service daemon
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Arguments
ACTION=$1
DM_DB_NAME=$2
DM_DB_NAME=${DM_DB_NAME:=dm}
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
mkdir -p ${DM_INSTALL_DIR}/var/run
mkdir -p ${DM_INSTALL_DIR}/var/log
DM_DAEMON_NAME="${DM_DB_NAME}.DaqWebService"
DM_DAEMON_CMD=${DM_ROOT_DIR}/sbin/daqWebService.py
DM_PID_FILE=${DM_INSTALL_DIR}/var/run/${DM_DB_NAME}.daq-web-service.pid
DM_CONFIG_FILE=${DM_INSTALL_DIR}/etc/${DM_DB_NAME}.daq-web-service.conf
DM_DAEMON_START_ARGS="-d -p $DM_PID_FILE --config-file $DM_CONFIG_FILE"
# Determine su command
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
RETVAL=0
start() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
PID=`cat $DM_PID_FILE`
echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)."
RETVAL=1
return $RETVAL
fi
echo -n $"Starting $DM_DAEMON_NAME daemon: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
$SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup"
echo
return $RETVAL
}
stop() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo $"$DM_DAEMON_NAME daemon is not running."
RETVAL=1
return $RETVAL
fi
echo -n $"Stopping $DM_DAEMON_NAME daemon: "
PID=`cat $DM_PID_FILE`
kill $PID
RETVAL=$?
sleep 1
# Make sure we kill the process always, regardless of
# what happened with first kill
kill -KILL $PID > /dev/null 2>&1
[ $RETVAL -eq 0 ] && rm -f $DM_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown"
echo
return $RETVAL
}
restart() {
stop
sleep 1
start
}
case "$ACTION" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status -p $DM_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
esac
exit $RETVAL
#!/bin/sh
# Helper script to start and stop DAQ node services
MY_DIR=`dirname $0` && cd $MYDIR && MYDIR=`pwd`
# The list below defines order of starting/stopping services
startList="postgresql glassfish ds-web-service"
stopList="ds-web-service glassfish postgresql"
restartList=$startList
statusList=$startList
# Check action
action=$1
case $action in
start|stop|restart|status)
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
# Perform action
serviceList="\$"${action}List
serviceList=`eval "echo $serviceList"`
for service in $serviceList; do
$MY_DIR/dm-$service $action
sleep 1
done
#!/bin/bash
#
# dm-ds-web-service
#
# Starts the DM WebService daemon
#
# chkconfig: 345 98 98
# description: controls DM Web Service daemon
### BEGIN INIT INFO
# Provides: dm-ds-web-service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls DM DS Web Service daemon
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Arguments
ACTION=$1
DM_DB_NAME=$2
DM_DB_NAME=${DM_DB_NAME:=dm}
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
mkdir -p ${DM_INSTALL_DIR}/var/run
mkdir -p ${DM_INSTALL_DIR}/var/log
DM_DAEMON_NAME="${DM_DB_NAME}.DsWebService"
DM_DAEMON_CMD=${DM_ROOT_DIR}/sbin/dsWebService.py
DM_PID_FILE=${DM_INSTALL_DIR}/var/run/${DM_DB_NAME}.ds-web-service.pid
DM_CONFIG_FILE=${DM_INSTALL_DIR}/etc/${DM_DB_NAME}.ds-web-service.conf
DM_DAEMON_START_ARGS="-d -p $DM_PID_FILE --config-file $DM_CONFIG_FILE"
# Determine su command
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
RETVAL=0
start() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
PID=`cat $DM_PID_FILE`
echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)."
RETVAL=1
return $RETVAL
fi
echo -n $"Starting $DM_DAEMON_NAME daemon: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
$SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup"
echo
return $RETVAL
}
stop() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo $"$DM_DAEMON_NAME daemon is not running."
RETVAL=1
return $RETVAL
fi
echo -n $"Stopping $DM_DAEMON_NAME daemon: "
PID=`cat $DM_PID_FILE`
kill $PID
RETVAL=$?
sleep 1
# Make sure we kill the process always, regardless of
# what happened with first kill
kill -KILL $PID > /dev/null 2>&1
[ $RETVAL -eq 0 ] && rm -f $DM_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown"
echo
return $RETVAL
}
restart() {
stop
sleep 1
start
}
case "$ACTION" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status -p $DM_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
esac
exit $RETVAL
#! /bin/sh
### BEGIN INIT INFO
# Provides: glassfish
# Required-Start: $remote_fs $network $syslog
# Required-Stop: $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts GlassFish
# Description: Starts GlassFish application server
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
export AS_JAVA=$DM_OPT_DIR/java/$DM_HOST_ARCH
DM_GLASSFISH_DIR=$DM_OPT_DIR/glassfish
DERBY_DIR=$DM_OPT_DIR/glassfish/javadb/bin
DM_DAEMON_NAME=glassfish
DM_DAEMON_CONTROL_CMD=$DM_GLASSFISH_DIR/bin/asadmin
DM_DAEMON_START_ARGS="start-domain domain1"
DM_DAEMON_STOP_ARGS="stop-domain domain1"
DM_DAEMON_STATUS_CMDS="uptime list-domains list-applications list-jdbc-resources"
start() {
echo -n $"Starting ${DM_DAEMON_NAME}: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
su -m -c "${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"${DM_DAEMON_NAME} startup" || failure $"${DM_DAEMON_NAME} startup"
echo
}
stop() {
echo -n $"Stopping ${DM_DAEMON_NAME}: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
su -m -c "${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_STOP_ARGS}" ${DM_USER}
else
${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_STOP_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"${DM_DAEMON_NAME} shutdown" || failure $"${DM_DAEMON_NAME} shutdown"
echo
}
status() {
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
for cmd in ${DM_DAEMON_STATUS_CMDS}; do
su -m -c "${DM_DAEMON_CONTROL_CMD} ${cmd}" ${DM_USER}
done
else
for cmd in ${DM_DAEMON_STATUS_CMDS}; do
${DM_DAEMON_CONTROL_CMD} ${cmd}
done
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
#!/bin/bash
#
# dm-mongo-express
#
# Starts the DM Mongo Express daemon
#
# chkconfig: 345 98 98
# description: controls DM Mongo Express daemon
### BEGIN INIT INFO
# Provides: dm-mongo-express
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls DM Mongo Express daemon
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Arguments
ACTION=$1
DM_DB_NAME=$2
DM_DB_NAME=${DM_DB_NAME:=dm}
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
mkdir -p ${DM_INSTALL_DIR}/var/run
mkdir -p ${DM_INSTALL_DIR}/var/log
DM_MONGODB_HOST=${DM_MONGODB_HOST:=127.0.0.1}
DM_MONGODB_PORT=${DM_MONGODB_PORT:=27017}
DM_NODE_DIR=${DM_OPT_DIR}/node
DM_FOREVER_DIR=${DM_NODE_DIR}/bin/node_modules/forever
DM_MONGO_EXPRESS_DIR=${DM_NODE_DIR}/bin/node_modules/mongo-express
DM_DAEMON_NAME="${DM_DB_NAME}.MongoExpress"
DM_DAEMON_CMD=${DM_FOREVER_DIR}/bin/forever
DM_DAEMON_WORK_DIR=${DM_INSTALL_DIR}/var/run/mongo-express
DM_DAEMON_PID_FILE=${DM_INSTALL_DIR}/var/run/mongo-express.pid
DM_DAEMON_LOG_FILE=${DM_INSTALL_DIR}/var/log/mongo-express.log
DM_DAEMON_OUT_FILE=${DM_INSTALL_DIR}/var/log/mongo-express.put
DM_DAEMON_ERR_FILE=${DM_INSTALL_DIR}/var/log/mongo-express.err
DM_DAEMON_START_ARGS="start \
--sourceDIR $DM_MONGO_EXPRESS_DIR \
--workingDir $DM_DAEMON_WORK_DIR \
-p $MONGO_EXPRESS_FOREVER_PATH \
--pidFile $DM_DAEMON_PID_FILE \
-l $DM_DAEMON_LOG_FILE \
-o $DM_DAEMON_OUT_FILE \
-e $DM_DAEMON_ERR_FILE \
--append \
--killSignal=SIGTERM \
$DM_MONGO_EXPRESS_DIR/app.js"
mkdir -p $DM_DAEMON_WORK_DIR
# Determine su command
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
RETVAL=0
start() {
# Check if service is already running
status -p $DM_DAEMON_PID_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
PID=`cat $DM_DAEMON_PID_FILE`
echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)."
RETVAL=1
return $RETVAL
fi
echo -n $"Starting $DM_DAEMON_NAME daemon: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
$SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup"
echo
return $RETVAL
}
stop() {
# Check if service is already running
status -p $DM_DAEMON_PID_FILE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo $"$DM_DAEMON_NAME daemon is not running."
RETVAL=1
return $RETVAL
fi
echo -n $"Stopping $DM_DAEMON_NAME daemon: "
PID=`cat $DM_DAEMON_PID_FILE`
# forever currently cannot seem to stop node apps
#$DM_DAEMON_CMD stop $PID
killall -KILL node
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $DM_DAEMON_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown"
echo
return $RETVAL
}
restart() {
stop
sleep 1
start
}
case "$ACTION" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status -p $DM_DAEMON_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
esac
exit $RETVAL
#!/bin/bash
#
# dm-mongodb
#
# Starts the DM Mongo DB daemon
#
# chkconfig: 345 98 98
# description: controls DM Mongo DB daemon
### BEGIN INIT INFO
# Provides: dm-mongodb
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls DM Mongo DB daemon
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Arguments
ACTION=$1
DM_DB_NAME=$2
DM_DB_NAME=${DM_DB_NAME:=dm}
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
mkdir -p ${DM_INSTALL_DIR}/var/run
mkdir -p ${DM_INSTALL_DIR}/var/log
DM_MONGODB_HOST=${DM_MONGODB_HOST:=127.0.0.1}
DM_MONGODB_PORT=${DM_MONGODB_PORT:=27017}
DM_MONGODB_DIR=${DM_OPT_DIR}/mongodb/${DM_HOST_ARCH}
DM_MONGODB_DATA_DIR=${DM_MONGODB_DIR}/data
mkdir -p ${DM_MONGODB_DATA_DIR}
DM_DAEMON_NAME="${DM_DB_NAME}.MongoDB"
DM_DAEMON_CMD=${DM_MONGODB_DIR}/bin/mongod
DM_DAEMON_PID_FILE=${DM_INSTALL_DIR}/var/run/mongodb.pid
DM_DAEMON_LOG_FILE=${DM_INSTALL_DIR}/var/log/mongodb.log
DM_DAEMON_START_ARGS="--fork --pidfilepath $DM_DAEMON_PID_FILE --logpath $DM_DAEMON_LOG_FILE --bind_ip $DM_MONGODB_HOST --port $DM_MONGODB_PORT --dbpath $DM_MONGODB_DATA_DIR"
# Determine su command
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
RETVAL=0
start() {
# Check if service is already running
status -p $DM_DAEMON_PID_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
PID=`cat $DM_DAEMON_PID_FILE`
echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)."
RETVAL=1
return $RETVAL
fi
echo -n $"Starting $DM_DAEMON_NAME daemon: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
$SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup"
echo
return $RETVAL
}
stop() {
# Check if service is already running
status -p $DM_DAEMON_PID_FILE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo $"$DM_DAEMON_NAME daemon is not running."
RETVAL=1
return $RETVAL
fi
echo -n $"Stopping $DM_DAEMON_NAME daemon: "
PID=`cat $DM_DAEMON_PID_FILE`
kill $PID
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $DM_DAEMON_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown"
echo
return $RETVAL
}
restart() {
stop
sleep 1
start
}
case "$ACTION" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status -p $DM_DAEMON_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
esac
exit $RETVAL
#!/bin/sh
#
# dm-postgresql
#
# Starts the PostgreSQL server used for DM software
#
# Modified from the original RHEL postgresql init.d script
#
# chkconfig: 345 97 97
# description: controls Dm database server
### BEGIN INIT INFO
# Provides: dm-postgresql
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: controls Dm database server
### END INIT INFO
# PGVERSION is the full package version, e.g., 8.4.0
#PGVERSION=9.3.4
PGVERSION=9.6.1
# PGMAJORVERSION is major version, e.g., 8.4 (this should match PG_VERSION)
PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`
# Source function library.
. /etc/rc.d/init.d/functions
# Get function listing for cross-distribution logic.
TYPESET=`typeset -f|grep "declare"`
# Get config.
. /etc/sysconfig/network
# Find the name of the script
# NAME=`basename $0`
NAME="DM Database"
# For SELinux we need to use 'runuser' not 'su'
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
# Check if we are root before running command
runCommand() {
_cmd="$@"
if [ `id -u` = 0 ]; then
$SU -l $PGUSER -c "_$cmd" >> $PGSTARTUPLOG 2>&1 < /dev/null
else
eval "$_cmd" >> $PGSTARTUPLOG 2>&1 < /dev/null
fi
}
# Set defaults for configuration variables
if [ -z $DM_ROOT_DIR ]; then
myDir=`dirname $0`
currentDir=`pwd` && cd $myDir/../..
export DM_ROOT_DIR=`pwd`
cd $currentDir
fi
DM_SETUP_FILE=$DM_ROOT_DIR/setup.sh
if [ ! -f $DM_SETUP_FILE ]; then
echo "Setup file $DM_SETUP_FILE does not exist."
exit 2
fi
. $DM_SETUP_FILE > /dev/null
PGROOT=$DM_OPT_DIR/postgresql/$DM_HOST_ARCH
PGENGINE=$PGROOT/bin
#PGUSER=dm
PGUSER=`whoami`
PGGROUP=`groups $PGUSER | cut -f3 -d ' '`
PGPORT=11136 # 111-DM
PGDATA=$PGROOT/data
PGRUNDIR=$DM_INSTALL_DIR/var/run
PGLOGDIR=$DM_INSTALL_DIR/var/log
PGSTARTUPLOG=$PGLOGDIR/postgresql
PGPIDFILE=$PGRUNDIR/postmaster.pid
PGLOCKFILE=$PGRUNDIR/postmaster.lock
mkdir -p $PGDATA && chown -R $PGUSER:$PGGROUP $PGDATA || exit 1
mkdir -p $PGRUNDIR && chown -R $PGUSER:$PGGROUP $PGRUNDIR || exit 1
mkdir -p $PGLOGDIR && chown -R $PGUSER:$PGGROUP $PGLOGDIR || exit 1
export PGDATA
export PGPORT
export LD_LIBRARY_PATH=$PGROOT/lib
# Check that networking is up.
# Pretty much need it for postmaster.
[ "${NETWORKING}" = "no" ] && exit 1
[ -f "$PGENGINE/postmaster" ] || exit 1
script_result=0
start() {
PSQL_START=$"Starting ${NAME} service: "
# Make sure startup-time log file is valid
if [ ! -e "$PGSTARTUPLOG" -a ! -h "$PGSTARTUPLOG" ]; then
touch "$PGSTARTUPLOG" || exit 1
chown $PGUSER:$PGGROUP "$PGSTARTUPLOG"
chmod go-rwx "$PGSTARTUPLOG"
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGSTARTUPLOG"
fi
# Check for the PGDATA structure
if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]; then
# Check version of existing PGDATA
if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]; then
SYSDOCDIR="(Your System's documentation directory)"
echo
echo $"An old version of the database format was found."
echo $"You need to upgrade the data format before using PostgreSQL."
echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
exit 1
fi
# No existing PGDATA! Warn the user to initdb it.
else
echo
echo "$PGDATA is missing. Use \"$0 initdb\" to initialize the cluster first."
echo_failure
echo
exit 1
fi
echo -n "$PSQL_START"
cmd="$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &"
runCommand $cmd
sleep 2
pid=`pidof -s "$PGENGINE/postmaster"`
if [ $pid ] && [ -f "$PGDATA/postmaster.pid" ]; then
success "$PSQL_START"
touch $PGLOCKFILE
head -n 1 "$PGDATA/postmaster.pid" > $PGPIDFILE
echo
else
failure "$PSQL_START"
echo
script_result=1
fi
}
stop() {
echo -n $"Stopping ${NAME} service: "
cmd="export LD_LIBRARY_PATH=$LD_LIBRARY_PATH; $PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast"
runCommand $cmd
ret=$?
if [ $ret -eq 0 ]; then
echo_success
else
echo_failure
script_result=1
fi
echo
rm -f $PGPIDFILE
rm -f $PGLOCKFILE
}
restart() {
stop
start
}
condrestart() {
[ -e $PGLOCKFILE ] && restart
}
condstop() {
[ -e $PGLOCKFILE ] && stop
}
reload() {
cmd="export LD_LIBRARY_PATH=$LD_LIBRARY_PATH; $PGENGINE/pg_ctl reload -D '$PGDATA' -s"
runCommand $cmd
}
initdb() {
if [ -f "$PGDATA/PG_VERSION" ]; then
echo -n "Data directory is not empty!"
echo_failure
echo
script_result=1
else
echo -n $"Initializing database: "
if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]; then
mkdir -p "$PGDATA" || exit 1
chown $PGUSER:$PGGROUP "$PGDATA"
chmod go-rwx "$PGDATA"
fi
# Clean up SELinux tagging for PGDATA
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
# Make sure the startup-time log file is OK, too
if [ ! -e "$PGSTARTUPLOG" -a ! -h "$PGSTARTUPLOG" ]; then
touch "$PGSTARTUPLOG" || exit 1
chown $PGUSER:$PGGROUP "$PGSTARTUPLOG"
chmod go-rwx "$PGSTARTUPLOG"
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGSTARTUPLOG"
fi
# Initialize the database
cmd="$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'"
runCommand $cmd
# Create directory for postmaster log
mkdir -p "$PGDATA/pg_log"
chown $PGUSER:$PGGROUP "$PGDATA/pg_log"
chmod go-rwx "$PGDATA/pg_log"
if [ -f "$PGDATA/PG_VERSION" ]; then
echo_success
else
echo_failure
script_result=1
fi
echo
fi
}
# This script is slightly unusual in that the name of the daemon (postmaster)
# is not the same as the name of the subsystem (postgresql)
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status postmaster
script_result=$?
;;
restart)
restart
;;
condrestart)
condrestart
;;
condstop)
condstop
;;
reload|force-reload)
reload
;;
initdb)
initdb
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|condstop|reload|force-reload|initdb}"
exit 1
esac
exit $script_result
#!/bin/bash
#
# dm-proc-web-service
#
# Starts the DM PROC WebService daemon
#
# chkconfig: 345 98 98
# description: controls DM PROC Web Service daemon
### BEGIN INIT INFO
# Provides: dm-proc-web-service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls DM PROC Web Service daemon
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Arguments
ACTION=$1
DM_DB_NAME=$2
DM_DB_NAME=${DM_DB_NAME:=dm}
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
mkdir -p ${DM_INSTALL_DIR}/var/run
mkdir -p ${DM_INSTALL_DIR}/var/log
DM_DAEMON_NAME="${DM_DB_NAME}.ProcWebService"
DM_DAEMON_CMD=${DM_ROOT_DIR}/sbin/procWebService.py
DM_PID_FILE=${DM_INSTALL_DIR}/var/run/${DM_DB_NAME}.proc-web-service.pid
DM_CONFIG_FILE=${DM_INSTALL_DIR}/etc/${DM_DB_NAME}.proc-web-service.conf
DM_DAEMON_START_ARGS="-d -p $DM_PID_FILE --config-file $DM_CONFIG_FILE"
# Determine su command
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
RETVAL=0
start() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
PID=`cat $DM_PID_FILE`
echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)."
RETVAL=1
return $RETVAL
fi
echo -n $"Starting $DM_DAEMON_NAME daemon: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
$SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup"
echo
return $RETVAL
}
stop() {
# Check if service is already running
status -p $DM_PID_FILE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo $"$DM_DAEMON_NAME daemon is not running."
RETVAL=1
return $RETVAL
fi
echo -n $"Stopping $DM_DAEMON_NAME daemon: "
PID=`cat $DM_PID_FILE`
kill $PID
RETVAL=$?
sleep 1
# Make sure we kill the process always, regardless of
# what happened with first kill
kill -KILL $PID > /dev/null 2>&1
[ $RETVAL -eq 0 ] && rm -f $DM_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown"
echo
return $RETVAL
}
restart() {
stop
sleep 1
start
}
case "$ACTION" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status -p $DM_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
esac
exit $RETVAL
#!/bin/sh
export DM_ROOT_DIR=
export DM_WEB_SERVICE_PROTOCOL=https
export DM_DS_WEB_SERVICE_HOST=
export DM_DS_WEB_SERVICE_PORT=
export DM_DAQ_WEB_SERVICE_HOST=
export DM_DAQ_WEB_SERVICE_PORT=
export DM_CAT_WEB_SERVICE_HOST=
export DM_CAT_WEB_SERVICE_PORT=
export DM_PROC_WEB_SERVICE_HOST=
export DM_PROC_WEB_SERVICE_PORT=
export DM_STATION_NAME=
export DM_ALLOWED_EXPERIMENT_TYPES=TEST
setupFile=$DM_ROOT_DIR/setup.sh
if [ ! -f $setupFile ]; then
echo "Cannot find setup file: $setupFile"
exit 1
fi
source $setupFile > /dev/null
../src/python
\ No newline at end of file
../src/python/dm/cat_web_service/service/catWebService.py
\ No newline at end of file
../src/python/dm/daq_web_service/service/daqWebService.py
\ No newline at end of file
#!/bin/sh
#
# Script used for backing up DM database + web app
# Deployment configuration can be set in etc/$DM_DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME [DM_BACKUP_DIR]]
#
DM_DB_NAME=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_PASSWORD=
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_SQL_DIR=$DM_ROOT_DIR/db/sql/dm
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
# Use first argument as db name, if provided
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Backing up $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
# Determine run directory
if [ -z "${DM_INSTALL_DIR}" ]; then
DM_INSTALL_DIR=$DM_ROOT_DIR/..
fi
# Second argument overrides directory with db population scripts
#timestamp=`date +%Y%m%d.%H%M%S`
timestamp=`date +%Y%m%d`
DM_BACKUP_DIR=$2
if [ -z $DM_BACKUP_DIR ]; then
DM_BACKUP_DIR=$DM_INSTALL_DIR/backup/$DM_DB_NAME/$timestamp
fi
backupFile=${DM_DB_NAME}.backup.$timestamp.sql
fullBackupFilePath=$DM_BACKUP_DIR/$backupFile
# Read password
sttyOrig=`stty -g`
stty -echo
read -p "Enter $DM_DB_NAME user password: " DM_DB_USER_PASSWORD
stty $sttyOrig
echo
DM_DB_USER_PASSWORD_FILE=/tmp/${DM_DB_NAME}.${DM_DB_USER}.passwd
echo $DM_DB_HOST:$DM_DB_PORT:$DM_DB_NAME:$DM_DB_USER:$DM_DB_USER_PASSWORD > $DM_DB_USER_PASSWORD_FILE && chmod 600 $DM_DB_USER_PASSWORD_FILE || exit 1
pgDumpCmd="PGPASSFILE=$DM_DB_USER_PASSWORD_FILE pg_dump -C -c -w --column-inserts -p $DM_DB_PORT -h $DM_DB_HOST -U $DM_DB_USER -d $DM_DB_NAME"
cleanup() {
rm -f $DM_DB_USER_PASSWORD
}
execute() {
eval "$@"
}
echo
echo "Using DB backup directory: $DM_BACKUP_DIR"
mkdir -p $DM_BACKUP_DIR
eval $pgDumpCmd > $fullBackupFilePath || ( cleanup && exit 1 )
nTables=`grep -n "Data for Name" $fullBackupFilePath | grep TABLE | wc -l`
echo "Processing $nTables tables"
tableCnt=0
processingFile=$DM_BACKUP_DIR/process.txt
while [ $tableCnt -lt $nTables ]; do
tableCnt=`expr $tableCnt + 1`
headLine=$tableCnt
tailLine=2
echo "Working on table #: $tableCnt"
grep -n "TABLE DATA" $fullBackupFilePath | head -$headLine | tail -$tailLine > $processingFile
dbTable=`cat $processingFile | head -1 | awk '{print $5}' | sed 's?;??g'`
echo "Creating sql script for $dbTable"
targetFile=$DM_BACKUP_DIR/populate_$dbTable.sql
pgDumpCmd="PGPASSFILE=$DM_DB_USER_PASSWORD_FILE pg_dump -C -a -t $dbTable -w --column-inserts -p $DM_DB_PORT -h $DM_DB_HOST -U $DM_DB_USER -d $DM_DB_NAME"
eval $pgDumpCmd > $targetFile || ( cleanup && exit 1 )
done
rm -f $processingFile
# Backup web app
echo "Backing up $DM_DB_NAME web app"
rsync -arlvP $DM_SUPPORT_DIR/glassfish/linux-x86_64/glassfish/domains/domain1/autodeploy/$DM_DB_NAME.war $DM_BACKUP_DIR
cleanup
echo "Backup of $DM_DB_NAME is done."
#!/bin/sh
#
# Script used for configuring DM webapp
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME]
#
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
# Use first argument as db name, if provided
DM_DB_NAME=${DM_DB_NAME:=dm}
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Using DB name: $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
DM_SYSTEM_PASSWORD_FILE=${DM_INSTALL_DIR}/etc/${DM_SYSTEM_USER}.system.passwd
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
JAVA_HOME=$DM_OPT_DIR/java/$DM_HOST_ARCH
GLASSFISH_DIR=$DM_OPT_DIR/glassfish
export AS_JAVA=$JAVA_HOME
ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin
DM_DB_HOST=${DM_DB_HOST:=localhost}
DM_DB_PORT=${DM_DB_PORT:=11136}
DM_DB_USER=${DM_DB_USER:=dm}
DM_DB_PASSWORD=${DM_DB_PASSWORD:=dm}
DM_DB_POOL=postgresql_${DM_DB_NAME}_DbPool
DM_DATA_SOURCE=${DM_DB_NAME}_DataSource
DM_DOMAIN=domain1
# copy db driver
echo "Copying db driver"
rsync -ar $DM_ROOT_DIR/src/java/DmWebPortal/lib/postgresql*.jdbc41.jar $GLASSFISH_DIR/glassfish/domains/${DM_DOMAIN}/lib/ext
# Check password from file
passwordFile=$DM_INSTALL_DIR/etc/$DM_DB_NAME.db.passwd
if [ -f $passwordFile ]; then
DM_DB_PASSWORD=`cat $passwordFile`
fi
# restart server
echo "Restarting glassfish"
$ASADMIN_CMD stop-domain ${DM_DOMAIN}
$ASADMIN_CMD start-domain ${DM_DOMAIN}
# create JDBC connection pool
echo "Creating JDBC connection pool $DM_DB_POOL"
$ASADMIN_CMD create-jdbc-connection-pool --datasourceclassname org.postgresql.ds.PGSimpleDataSource --restype javax.sql.DataSource --property user=${DM_DB_USER}:password=${DM_DB_PASSWORD}:driverClass="org.postgresql.Driver":portNumber=${DM_DB_PORT}:databaseName=${DM_DB_NAME}:serverName=${DM_DB_HOST}:url="jdbc\:postgresql\://${DM_DB_HOST}\:${DM_DB_PORT}/${DM_DB_NAME}" ${DM_DB_POOL}
# create JDBC resource associated with this connection pool
echo "Creating JDBC resource $DM_DATA_SOURCE"
$ASADMIN_CMD create-jdbc-resource --connectionpoolid ${DM_DB_POOL} ${DM_DATA_SOURCE}
# test the connection settings
echo "Testing connection"
$ASADMIN_CMD ping-connection-pool $DM_DB_POOL || exit 1
# Get system account password
if [ ! -f "$DM_SYSTEM_PASSWORD_FILE" ]; then
sttyOrig=`stty -g`
stty -echo
read -p "Enter system password for the $DM_SYSTEM_USER user: " DM_SYSTEM_PASSWORD
echo
stty $sttyOrig
echo $DM_SYSTEM_PASSWORD > $DM_SYSTEM_PASSWORD_FILE
chmod 600 $DM_SYSTEM_PASSWORD_FILE
# Add dm system user to the DB
echo "Adding $DM_SYSTEM_USER system user to the database"
dm-add-user --username=$DM_SYSTEM_USER --first-name=System --last-name=Account --password-file=$DM_SYSTEM_PASSWORD_FILE || exit 1
dm-add-user-system-role --username=$DM_SYSTEM_USER --role-name=Administrator || exit 1
fi
#!/bin/bash
sbindir=`dirname $0`
# Set root/run directories
if [ -z $DM_ROOT_DIR ]; then
cd $sbindir/..
export DM_ROOT_DIR=`pwd`
fi
if [ -z $DM_INSTALL_DIR ]; then
cd $DM_ROOT_DIR/..
export DM_INSTALL_DIR=`pwd`
fi
CA_ROOT=$DM_INSTALL_DIR/etc/CA
CA_CONFIG=$DM_ROOT_DIR/etc/dm.openssl.conf
CA_DESC="DM Certificate Authority"
LOG_FILE=/tmp/dm-ca.log.$$
LOCKFILE=$CA_ROOT/dm-ca.lock
echo "Creating $CA_DESC"
# Check for lock file
if [ -f $LOCKFILE ]; then
if [ "x$1" != "x--force" ]; then
echo "$0 has already been run and there is no need to re-run it."
exit -1
else
# Clean up CA...
rm -rf $CA_ROOT
fi
fi
# Prep directory
HOSTNAME=`hostname`
mkdir -p $CA_ROOT/newcerts
mkdir -p $CA_ROOT/certs
mkdir -p $CA_ROOT/certreqs
mkdir -p $CA_ROOT/private
mkdir -p $CA_ROOT/crl
touch $CA_ROOT/index.txt
echo "01" > $CA_ROOT/serial
openssl req -days 3650 -nodes -new -x509 -keyout $CA_ROOT/private/cakey.pem -out $CA_ROOT/cacert.pem -config $CA_CONFIG >> $LOG_FILE 2>&1 << EOF
$CA_DESC
EOF
#Set the lockfile
if [ $? -eq 0 ]; then
echo "Created $CA_DESC"
touch $LOCKFILE
exit 0
else
echo "Error creating CA: check '$LOG_FILE'."
exit -2
fi
#!/bin/sh
#
# Script used for creating DM database
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME [DM_DB_SCRIPTS_DIR]]
#
DM_DB_NAME=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_PASSWORD=
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
DM_SQL_DIR=$DM_ROOT_DIR/db
DM_ETC_DIR=$DM_INSTALL_DIR/etc
DM_RUN_DIR=$DM_INSTALL_DIR/var/run
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 1
fi
. ${DM_ENV_FILE} > /dev/null
# DM_SUPPORT_DIR should now be defined.
if [ -z "$DM_SUPPORT_DIR" ]; then
echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
exit 1
fi
# Use first argument as db name, if provided
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
DM_DB_USER=$DM_DB_NAME
echo "Using DB name: $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
# Second argument overrides directory with db population scripts
DM_DB_SCRIPTS_DIR=${DM_DB_SCRIPTS_DIR:=$DM_SQL_DIR}
if [ ! -z "$2" ]; then
DM_DB_SCRIPTS_DIR=$2
fi
if [ ! -d $DM_DB_SCRIPTS_DIR ]; then
echo "DB Scripts directory $DM_DB_SCRIPTS_DIR does not exist."
exit 1
fi
echo "Using DB scripts directory: $DM_DB_SCRIPTS_DIR"
PG_DIR=$DM_OPT_DIR/postgresql/$DM_HOST_ARCH
PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
PG_DATA_DIR=$PG_DIR/data
PG_HBA_CONF=$PG_DATA_DIR/pg_hba.conf
DB_LOCK_FILE=${DM_RUN_DIR}/${DM_DB_NAME}.db.lock
DB_CREATE_SCRIPT=${DM_ROOT_DIR}/db/create_dm_db.sql
execute() {
msg="$@"
if [ ! -z "$DM_DB_ADMIN_PASSWORD" ]; then
sedCmd="s?$DM_DB_ADMIN_PASSWORD?\\*\\*\\*\\*\\*\\*?g"
echo "Executing: $@" | sed -e $sedCmd
else
echo "Executing: $@"
fi
eval "$@"
}
createDb() {
if [ -f $DB_LOCK_FILE ]; then
echo "Database lock file $DB_LOCK_FILE already exists, will not proceed."
return 1
fi
echo "Creating database $DM_DB_NAME"
${PG_DIR}/bin/createdb -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT $DM_DB_NAME || return 1
echo "Creating database schema for $DM_DB_NAME"
dbCreateScript=/tmp/`basename $DB_CREATE_SCRIPT.$$`
cmd="cat $DB_CREATE_SCRIPT | sed 's?OWNER TO.*?OWNER TO $DM_DB_USER;?g' > $dbCreateScript"
eval $cmd
${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $dbCreateScript || return 1
rm -f $dbCreateScript
touch $DB_LOCK_FILE
}
createDbUser() {
_dbUser=$1
shift 1
_createFlags=$@
# create user
${PG_DIR}/bin/createuser -h $DM_DB_HOST -p $DM_DB_PORT $_createFlags $_dbUser || return 1
}
modifyDbUserPassword() {
_dbUser=$1
_dbPassword=$2
_tmpFile=/tmp/$$.sql
echo "alter user $_dbUser with password '$_dbPassword';" > $_tmpFile
$PG_DIR/bin/psql -h $DM_DB_HOST -p $DM_DB_PORT -d postgres -f $_tmpFile
rm -f $_tmpFile
}
# Check for failed earlier attempt
if [ -f $PG_HBA_CONF.orig ]; then
echo "File $PG_HBA_CONF.orig exists, refusing to proceed."
exit 1
fi
# Initialize db if needed
dbAction=restart
createDbRootUser=false
if [ ! -f $PG_HBA_CONF ]; then
$PG_CONTROL_SCRIPT initdb || exit 1
dbAction=start
createDbRootUser=true
fi
# Modify db permissions, restart db.
echo "Modifying db access permissions"
mv $PG_HBA_CONF $PG_HBA_CONF.orig
cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 trust?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 trust?g' > $PG_HBA_CONF || exit 1
echo "Restarting database server"
$PG_CONTROL_SCRIPT $dbAction
# Create db root user if needed
sttyOrig=`stty -g`
if [ $createDbRootUser = "true" ]; then
# Read db password if needed
if [ -z "$DM_DB_ADMIN_PASSWORD" ]; then
stty -echo
read -p "Enter DB password for the $DM_DB_ADMIN_USER (DB root) user: " DM_DB_ADMIN_PASSWORD
echo
stty $sttyOrig
fi
# Create postgres user
echo "Creating $DM_DB_ADMIN_USER"
createDbUser $DM_DB_ADMIN_USER -E -s || exit 1
modifyDbUserPassword $DM_DB_ADMIN_USER $DM_DB_ADMIN_PASSWORD || exit 1
fi
# Read user db password if needed
if [ -z "$DM_DB_USER_PASSWORD" ]; then
stty -echo
read -p "Enter DB password for the $DM_DB_USER user: " DM_DB_USER_PASSWORD
echo
stty $sttyOrig
fi
# Create db user unless we are running this script under the same
# account, when user will be created
echo "Creating $DM_DB_USER"
if [ $DM_DB_USER != `whoami` ]; then
createDbUser $DM_DB_USER -E -d || exit 1
fi
modifyDbUserPassword $DM_DB_USER $DM_DB_USER_PASSWORD || exit 1
# Create db password file
mkdir -p $DM_ETC_DIR
mkdir -p $DM_RUN_DIR
passwordFile=$DM_ETC_DIR/$DM_DB_NAME.db.passwd
echo $DM_DB_USER_PASSWORD > $passwordFile
chmod 600 $passwordFile
# Create db
echo "Creating database: $DM_DB_NAME"
createDb || exit 1
# populate db
cd $CURRENT_DIR && cd $DM_DB_SCRIPTS_DIR
DM_DB_TABLES="\
experiment_type \
experiment_station \
allowed_experiment_station_experiment_type \
experiment \
storage \
endpoint \
data_folder \
user_info \
system_role_type \
experiment_role_type \
user_system_role \
user_experiment_role
"
for dbTable in $DM_DB_TABLES; do
dbFile=populate_$dbTable.sql
if [ -f $dbFile ]; then
echo "Populating $dbTable using $dbFile script"
execute ${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $dbFile || exit 1
else
echo "$dbFile not found, skipping $dbTable update"
fi
done
# cleanup
echo "Restoring db access permissions"
if [ $createDbRootUser = "true" ]; then
# db was just created, enable password access
cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 md5?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 md5?g' > $PG_HBA_CONF || exit 1
rm -f $PG_HBA_CONF.orig
else
# no changes needed to original hba file
mv $PG_HBA_CONF.orig $PG_HBA_CONF
fi
echo "Restarting database server"
$PG_CONTROL_SCRIPT restart
echo "Database $DM_DB_NAME created successfully"
echo
#!/bin/bash
sbindir=`dirname $0`
# Set root/run directories
if [ -z $DM_ROOT_DIR ]; then
cd $sbindir/..
export DM_ROOT_DIR=`pwd`
fi
if [ -z $DM_INSTALL_DIR ]; then
cd $DM_ROOT_DIR/..
export DM_INSTALL_DIR=`pwd`
fi
CA_ROOT=$DM_INSTALL_DIR/etc/CA
CA_CONFIG=$DM_ROOT_DIR/etc/dm.openssl.conf
LOG_FILE=/tmp/dm-server-cert.log.$$
SERVER_NAME=$1
SERVER_CN=$2
ADMIN_EMAIL=$3
if [ $# -ne 3 ]; then
echo "Usage: $0 <server type> <server description> <admin email>"
exit 1
fi
CERT_DIR=$CA_ROOT/certs
CERT_REQ_DIR=$CA_ROOT/certreqs
REQUEST_CMD="openssl req -days 3650 -nodes -new -keyout $CERT_DIR/$SERVER_NAME.key -out $CERT_REQ_DIR/$SERVER_NAME.csr -extensions server -config $CA_CONFIG"
SIGN_CMD="openssl ca -days 3650 -out $CERT_DIR/$SERVER_NAME.crt -in $CERT_REQ_DIR/$SERVER_NAME.csr -extensions server -config $CA_CONFIG"
$REQUEST_CMD >> $LOG_FILE 2>&1 << EOF
$SERVER_CN
$ADMIN_EMAIL
EOF
if [ $? -ne 0 ]; then
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi
$SIGN_CMD >> $LOG_FILE 2>&1 << EOF
y
y
EOF
if [ $? -eq 0 ]; then
chmod 400 $CERT_DIR/*
exit 0
else
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi
#!/bin/bash
# Set root/run directories
if [ -z $DM_ROOT_DIR ]; then
cd $sbindir/..
export DM_ROOT_DIR=`pwd`
fi
if [ -z $DM_INSTALL_DIR ]; then
cd $DM_ROOT_DIR/..
export DM_INSTALL_DIR=`pwd`
fi
CA_ROOT=$DM_INSTALL_DIR/etc/CA
CA_CONFIG=$DM_ROOT_DIR/etc/dm.openssl.conf
LOG_FILE=/tmp/dm-user-cert.log.$$
USERNAME=$1
USER_CN=$2
USER_EMAIL=$3
if [ $# -ne 3 ]; then
echo "Usage: $0 <username> <user cn> <user email>"
exit 1
fi
CERT_DIR=$CA_ROOT/certs
CERT_REQ_DIR=$CA_ROOT/certreqs
REQUEST_CMD="openssl req -days 3650 -nodes -new -keyout $CERT_DIR/$USERNAME.key -out $CERT_REQ_DIR/$USERNAME.csr -config $CA_CONFIG"
SIGN_CMD="openssl ca -days 3650 -out $CERT_DIR/$USERNAME.crt -in $CERT_REQ_DIR/$USERNAME.csr -config $CA_CONFIG"
$REQUEST_CMD >> $LOG_FILE 2>&1 << EOF
$USER_CN
$USER_EMAIL
EOF
if [ $? -ne 0 ]; then
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi
$SIGN_CMD >> $LOG_FILE 2>&1 << EOF
y
y
EOF
if [ $? -eq 0 ]; then
chmod 400 $CERT_DIR/*
exit 0
else
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi