OS4X Core init script
Jump to navigation
Jump to search
For runlevel scripts, this script can be used as a basis for further needs. It works good in an OS4XBox environment. Actual versions of init-scripts can be found here: https://www.os4x.com/downloads/
#!/bin/bash
### BEGIN INIT INFO
# Provides: os4x
# Required-Start: mysql
# Required-Stop: mysql
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: Start or stop OS4X
### END INIT INFO
#
# OS4X
#
# Check for existence of needed config file and read it
OS4X_CONFIG=/etc/os4x.conf
test -r $OS4X_CONFIG || { echo "$OS4X_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }
# first, source the config file for database parameters
. $OS4X_CONFIG
# calculate MySQL client parameters
MYSQLCLIENT_PARAMS="--silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME"
if [ ! -z "$DB_TLS_VERSION" ]
then
MYSQLCLIENT_PARAMS="$MYSQLCLIENT_PARAMS --tls-version=$DB_TLS_VERSION"
fi
if [ ! -z "$DB_TLS_CIPHER" ]
then
MYSQLCLIENT_PARAMS="$MYSQLCLIENT_PARAMS --ssl-cipher=$DB_TLS_CIPHER"
fi
if [ ! -z "$DB_TLS_KEY" ]
then
MYSQLCLIENT_PARAMS="$MYSQLCLIENT_PARAMS --ssl-key=$DB_TLS_KEY"
fi
if [ ! -z "$DB_TLS_CERT" ]
then
MYSQLCLIENT_PARAMS="$MYSQLCLIENT_PARAMS --ssl-cert=$DB_TLS_CERT"
fi
if [ ! -z "$DB_TLS_CA" ]
then
MYSQLCLIENT_PARAMS="$MYSQLCLIENT_PARAMS --ssl-ca=$DB_TLS_CA"
fi
if [ ! -z "$DB_TLS_CAPATH" ]
then
MYSQLCLIENT_PARAMS="$MYSQLCLIENT_PARAMS --ssl-capath=$DB_TLS_CAPATH"
fi
# retrieve directories and settings
OS4X_BINDIR=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='bin_directory'" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null`
OS4X_TMPDIR=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='tmp_directory'" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null`
OS4X_IS_PORTAL=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='enterprise_is_this_portal_server'" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null`
if [ -z "${OS4X_IS_PORTAL}" ]
then
OS4X_IS_PORTAL=0
fi
# check license
if [ -e ${OS4X_BINDIR}/license.key ]
then
LICFUNCTIONS=`${OS4X_BINDIR}/os4x_licinfo -A 2>/dev/null`
else
LICFUNCTIONS=0
fi
if [ $? -ne 0 ]
then
LICFUNCTIONS=0
fi
(((${LICFUNCTIONS}&1)==1)) && LIC_OS4XCORE=1 || LIC_OS4XCORE=0
(((${LICFUNCTIONS}&2)==2)) && LIC_OS4XENTERPRISE_LITE=1 || LIC_OS4XENTERPRISE_LITE=0
(((${LICFUNCTIONS}&4)==4)) && LIC_OS4XENTERPRISE_ALL=1 || LIC_OS4XENTERPRISE_ALL=0
(((${LICFUNCTIONS}&8)==8)) && LIC_OS4X_AS2=1 || LIC_OS4X_AS2=0
(((${LICFUNCTIONS}&16)==16)) && LIC_OS4X_PORTAL=1 || LIC_OS4X_PORTAL=0
if [ "${OS4X_IS_PORTAL}" -eq 1 -a ${LIC_OS4X_PORTAL} -eq 1 ]
then
LIC_OS4X_PORTAL=0
LIC_OS4XENTERPRISE_ALL=1
fi
OS4X_WEBINTERFACE=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='webinterface_path'" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null`
# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
OS4XRD_BIN=$OS4X_BINDIR/os4xrd
OS4XSQD_BIN=$OS4X_BINDIR/os4xsqd
OS4XCLIENTD_BIN=$OS4X_BINDIR/os4xclientd
OS4XAS2_BIN=$OS4X_BINDIR/os4x_as2
OS4XPOLL_BIN=$OS4X_BINDIR/os4xpoll
OS4XPORTAL_BIN=$OS4X_BINDIR/os4xportald
# sanity checks for daemon existance
if [ ! -e "$OS4XCLIENTD_BIN" ]
then
LIC_OS4XENTERPRISE_ALL=0
LIC_OS4XENTERPRISE_LITE=0
fi
if [ ! -e "$OS4XPORTAL_BIN" ]
then
LIC_OS4X_PORTAL=0
fi
if [ ! -e "$OS4XAS2_BIN" ]
then
LIC_OS4X_AS2=0
fi
function killDaemon
{
if [ -f ${OS4X_TMPDIR}/${1}.pid ]
then
kill `cat ${OS4X_TMPDIR}/${1}.pid`
else
killall ${1} >/dev/null 2>&1
fi
}
case "$1" in
stop)
echo -n "Shutting down OS4X "
pidof os4xrd >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo -n "os4xrd... "
killDaemon os4xrd
fi
pidof os4xsqd >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo -n "os4xsqd... "
killDaemon os4xsqd
fi
pidof os4xdebugd >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo -n "os4xdebugd... "
killDaemon os4xdebugd
fi
pidof os4xclientd >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo -n "os4xclientd... "
killDaemon os4xclientd
fi
pidof os4x_as2_master >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo -n "os4x_as2... "
killDaemon os4x_as2
fi
pidof os4xportald >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo -n "os4xportald... "
killDaemon os4xportald
fi
echo OK
;;
start)
# pre-check lockfile
if [ -d $OS4X_WEBINTERFACE ]
then
if [ -e ${OS4X_WEBINTERFACE}/blank_install ]
then
# try to recover installation
if [ -e /sd_card/os4x.*.sql.gz ]
then
# backupfile exists, restore complete system
/opt/os4x/scripts/systemrestore_from_sd.sh && rm -f ${OS4X_WEBINTERFACE}/blank_install
else
echo "not starting OS4X: blank installation, please configure OS4X"
exit
fi
fi
fi
echo -n "Starting OS4X "
if [ ${LIC_OS4XCORE} -eq 1 ]
then
echo -n "os4xrd... "
$OS4XRD_BIN
if [ $? -eq 0 ]; then
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '0', 'Receive daemon started normally.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
else
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '1', 'Start of Receive daemon failed.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
fi
echo -n "os4xsqd... "
$OS4XSQD_BIN
if [ $? -eq 0 ]; then
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '0', 'Send queue daemon started normally.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
else
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '1', 'Start of Send queue daemon failed.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
fi
fi
if [ ${LIC_OS4XENTERPRISE_LITE} -eq 1 -o ${LIC_OS4XENTERPRISE_ALL} -eq 1 ]
then
echo -n "os4xclientd... "
$OS4XCLIENTD_BIN
if [ $? -eq 0 ]; then
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '0', 'Client daemon started normally.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
else
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '1', 'Start of Client daemon failed.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
fi
fi
if [ ${LIC_OS4X_AS2} -eq 1 -a -e $OS4XAS2_BIN ]
then
echo -n "os4x_as2... "
$OS4XAS2_BIN
if [ $? -eq 0 ]; then
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '0', 'AS2 daemon started normally.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
else
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '1', 'Start of AS2 daemon failed.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
fi
fi
if [ ${LIC_OS4X_PORTAL} -eq 1 -a -e $OS4XPORTAL_BIN ]
then
echo -n "os4xportald... "
$OS4XPORTAL_BIN
if [ $? -eq 0 ]; then
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '0', 'Portal daemon started normally.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
else
echo "INSERT INTO ${TABLEPREFIX}system_log (datum, code, message, pid, program) VALUES (NOW(), '1', 'Start of Portal daemon failed.', '$$', '$0')" | $MYSQLCLIENT $MYSQLCLIENT_PARAMS 2>/dev/null
fi
fi
echo "OK"
;;
status)
echo -n "Checking for service OS4X "
if [ ${LIC_OS4XCORE} -eq 1 ]
then
pidof os4xrd >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo -n "... os4xrd is not running"
else
echo -n "... os4xrd OK "
fi
pidof os4xsqd >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo -n "... os4xsqd is not running"
else
echo -n "... os4xsqd OK "
fi
fi
if [ ${LIC_OS4XENTERPRISE_LITE} -eq 1 -o ${LIC_OS4XENTERPRISE_ALL} -eq 1 ]
then
pidof os4xclientd >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo -n "... os4xclientd is not running"
else
echo -n "... os4xclientd OK "
fi
fi
if [ ${LIC_OS4X_AS2} -eq 1 ]
then
pidof os4x_as2 >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo -n "... os4x_as2 is not running"
else
echo -n "... os4x_as2 OK "
fi
fi
if [ ${LIC_OS4X_PORTAL} -eq 1 ]
then
pidof os4xportald >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo -n "... os4xportald is not running"
else
echo -n "... os4xportald OK "
fi
fi
pidof os4xdebugd > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "... os4xdebugd is not running"
else
echo "... os4xdebugd OK"
fi
;;
update)
echo -n "Initiating OS4X update... "
$OS4XPOLL_BIN OS4X-Update
echo "OK"
;;
restart)
$0 stop ; sleep 2; $0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status|update}"
exit 1
;;
esac
# rc_exit