#!/sbin/sh
# @(#) configure.sd - SQL/R A.04.00
# SD configuration script, HP-UX 11.x
# (C) Copyright 2010-2024 Marxmeier Software AG. All rights reserved.
#
# Configure scripts are executed during the configuration phase
# of a swinstall session. They can also be executed by the swconfig
# command.
# Note: IPD_addfile on links fails on HP-UX 11.0 (sd defect)
#
# Changes:
# 19.07.2010 - link to libcrypto.so
# 27.05.2020 - /var/opt/sqlr2/run directory
# 05.07.2022 - /opt/sqlr/4.0 base directory
# 20.05.2022 - openssl v1.1
# 20.05.2024 - use openssl switchversion

#################################################
#             Startup                           #
#################################################

if [[ ${SW_ROOT_DIRECTORY} != "/" ]]
then
   exit 0
fi

# source standard SD control script utilities

UTILS="/usr/lbin/sw/control_utils"
if [[ ! -f $UTILS ]]
then
   echo "ERROR: Cannot find $UTILS"
   exit 1
fi
. $UTILS

# set retval and exitval

exitval=$SUCCESS
set_status()
{
   retval=${1:-$?}
   [[ $retval -eq  $FAILURE ]] && exitval=$retval
}


#################################################
#             configure product                 #
#################################################

SQLR_base=/opt/sqlr
SQLR=$SQLR_base/4.0

# kill sqlrodbcd process if active

if [ -f ${SQLR}/bin/sqlrodbcd ]
then
   pid=$(/usr/sbin/fuser ${SQLR}/bin/sqlrodbcd 2>/dev/null)
   if [ -n "$pid"  ]
   then
      kill $pid
      retval=$?
      if [ $retval -ne $SUCCESS ]
      then
         echo "WARNING: could not kill the \"sqlrodbcd\" process"
         exitval=$WARNING
      fi
   fi
fi


# fix directory permissions and owners

find ${SQLR} -type d|xargs chown bin:bin
find ${SQLR} -type d|xargs chmod 555


# add symlink ${SQLR}/lib/hpux../lib...sl

if [ -f ${SQLR}/lib/hpux32/libsqlrodbc.so ]; then
   ln -s -f libsqlrodbc.so ${SQLR}/lib/hpux32/libsqlrodbc.sl
fi

if [ -f ${SQLR}/lib/hpux32/libsqlr3odbc.so ]; then
   ln -s -f libsqlr3odbc.so ${SQLR}/lib/hpux32/libsqlr3odbc.sl
fi

if [ -f ${SQLR}/lib/hpux64/libsqlrodbc.so ]; then
   ln -s -f libsqlrodbc.so ${SQLR}/lib/hpux64/libsqlrodbc.sl
fi

if [ -f ${SQLR}/lib/hpux64/libsqlr3odbc.so ]; then
   ln -s -f libsqlr3odbc.so ${SQLR}/lib/hpux64/libsqlr3odbc.sl
fi

if [ -f ${SQLR}/lib/hpux64/libsqlrodbc64.so ]; then
   ln -s -f libsqlrodbc64.so ${SQLR}/lib/hpux64/libsqlrodbc64.sl
fi

if [ -f ${SQLR}/lib/hpux64/libsqlr3odbc64.so ]; then
   ln -s -f libsqlr3odbc64.so ${SQLR}/lib/hpux64/libsqlr3odbc64.sl
fi


# openssl symlinks, use switchversion

openssl=/opt/openssl
if [ -e ${openssl} ]; then
   #echo "NOTE:    OpenSSL $v installation found."

   if [ -f ${openssl}/lib/hpux32/libcrypto.so \
        -a ! -e ${SQLR}/lib/hpux32/libcrypto.so ]; then
      ln -s ${openssl}/lib/hpux32/libcrypto.so ${SQLR}/lib/hpux32/libcrypto.so
   fi

   if [ -f  ${openssl}/lib/hpux64/libcrypto.so \
        -a ! -e ${SQLR}/lib/hpux64/libcrypto.so ]; then
      ln -s ${openssl}/lib/hpux64/libcrypto.so ${SQLR}/lib/hpux64/libcrypto.so
   fi

   if [ -f ${openssl}/lib/libcrypto.sl \
        -a ! -e ${SQLR}/lib/pa11_32/libcrypto.sl ]; then
      ln -s ${openssl}/lib/libcrypto.sl ${SQLR}/lib/pa11_32/libcrypto.sl
   fi
fi


# copy files from ${SQLR}/newconfig/startup to /etc/rc.config.d and /sbin/init.d

cond_cpset 555 bin bin ${SQLR}/newconfig/startup/rc.sqlr40 /etc/rc.config.d/sqlr40
set_status
#IPD_addfile -N /etc/rc.config.d/sqlr40
#set_status

cp_set 555 bin bin ${SQLR}/newconfig/startup/init.sqlr40 /sbin/init.d/sqlr40
set_status
#IPD_addfile -N /sbin/init.d/sqlr40
#set_status


# Set-up start-up/shutdown scripts and links

ln -s -f /sbin/init.d/sqlr40 /sbin/rc2.d/S900sqlr40
set_status
#IPD_addfile /sbin/rc2.d/S900sqlr40
#set_status

ln -s -f /sbin/init.d/sqlr40 /sbin/rc1.d/K100sqlr40
set_status
#IPD_addfile /sbin/rc1.d/K100sqlr40
#set_status


# Create dirs: /var/opt/sqlr/4.0, /etc/opt/sqlr/4.0, /etc/opt/sqlr/4.0/certs
# or fix access rights if already existent

cond_mkdir 555 bin bin /var${SQLR} ; set_status
cond_mkdir 1777 bin bin /var${SQLR}/run ; set_status
cond_mkdir 555 bin bin /etc${SQLR} ; set_status
cond_mkdir 555 bin bin /etc${SQLR}/certs ; set_status

chown bin:bin /etc${SQLR} /etc${SQLR}/certs /var${SQLR} /var${SQLR}/run
chmod 555 /etc${SQLR} /etc${SQLR}/certs /var${SQLR}
chmod 1777 /var${SQLR}/run

# add SQL/R and EQ services to /etc/services

fgrep -q sqlrodbc /etc/services
if [ $? != 0 ]; then
  fgrep -q eloqdb /etc/services
  if [ $? != 0 ]; then
cat >>/etc/services <<+EOF
#
# Eloquence related services
#
sqlrodbc        8003/tcp    # SQL/R ODBC
runsrv          8010/tcp    # Eloquence RUNSRV (Windows integration)
eloqdlg         8011/tcp    # Eloquence dialog
eloqsd          8100/tcp    # Eloquence eloqsd server
eloqdb          8102/tcp    # Eloquence data base server
#eloqdb5         8104/tcp    # Eloquence ELOQDB5 server
+EOF
   echo "NOTE:    Eloquence services have been added to the /etc/services"
   echo "         configuration file using default port numbers."
else
cat >>/etc/services <<+EOF
#
# SQL/R service
#
sqlrodbc        8003/tcp    # SQL/R ODBC
+EOF
   echo "NOTE:    SQL/R service has been added to the /etc/services"
   echo "         configuration file using default port number."
fi
fi


# add /opt/sqlr/4.0/bin to /etc/PATH

mod_pathfile -a P ${SQLR}/bin
set_status

/usr/bin/grep -c ${SQLR}/bin /etc/PATH >/dev/null
if [ $? -ne 0 ]
then
   /usr/bin/grep -c "/opt/sqlr2/bin" /etc/PATH >/dev/null
   if [ $? -eq 0 ]
   then
echo "NOTE:    The global PATH (defined in /etc/PATH) contains a reference"
echo "         to a previous SQL/R version. SQL/R A.04.00 will not be"
echo "         executed by default unless you edit /etc/PATH and remove"
echo "         and remove the reference to /opt/sqlr2/bin"
   fi
fi


#
# Install server configuration file
# - install default config file if no file is present
#
# Server config file must be regular file, so we check using test -f
#

cfg_file=odbc.cfg
if [ -f /etc${SQLR}/$cfg_file ]; then
echo "NOTE:    The server configuration file \"$cfg_file\" is already"
echo "         present in \"/etc${SQLR}\"."
echo "         Please verify file content against the template file"
echo "         ${SQLR}/newconfig/config/$cfg_file"
else
   cp_set 644 root sys ${SQLR}/newconfig/config/$cfg_file /etc${SQLR}/$cfg_file
   set_status
echo "NOTE:    A default server configuration file \"$cfg_file\" has been"
echo "         installed in \"/etc${SQLR}\"."
fi


#
# Install other configuration files
# - install default config file if not exists
#
# Do NOT check using -f if file exists. This excludes symlinks.
# Since HP-UX does not provide a test -e we check if file is readable.
#

cfg_file_list="odbc.user odbc.dsn odbc.pswd"
for cfg_file in $cfg_file_list
do
   if [ ! -r /etc${SQLR}/$cfg_file ]; then
      cp_set 644 root sys ${SQLR}/newconfig/config/$cfg_file /etc${SQLR}/$cfg_file
      set_status
echo "NOTE:    A default configuration file \"$cfg_file\" has been"
echo "         installed in \"/etc${SQLR}\"."
   fi
done


#
# Create license file
# - check for previous SQLR 1.x installation and copy license file
# - otherwise install default license file
#
# License file must be regular file, so we check using test -f

licfile=/etc${SQLR}/license

if [ ! -f $licfile ]
then
   cp_set 644 root sys ${SQLR}/newconfig/config/license $licfile
   set_status
echo "NOTE:    A default license file has been installed in \"$licfile\"."
echo "         This license file provides no license key."
echo "         Please refer to https://www.marxmeier.com/sqlr/A0400/license.html"
echo "         or contact Marxmeier Software at info@marxmeier.com to obtain"
echo "         a license key."
fi

exit $exitval
