#!/bin/bash

### BEGIN INIT INFO
# Provides:          eltex-sorm2-replicator
# Required-Start:    $network $syslog $remote_fs
# Required-Stop:     $network $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Eltex.SORM2.replicator
# Description:       Eltex.SORM2.replicator, part of Eltex.SoftWLC
### END INIT INFO

NAME=eltex-sorm2-replicator

# defaults
JAVA=/usr/bin/java
JAVA_INIT_HEAP=256m
JAVA_MAX_HEAP=512m
JAVA_OPTS=

if [ -f /etc/default/$NAME ]; then
    source /etc/default/$NAME || exit 1
fi

JAR="/usr/lib/$NAME/$NAME.jar"
JVM_OPTS="${JAVA_OPTS} -Xms$JAVA_INIT_HEAP -Xmx$JAVA_MAX_HEAP"
JAVA_ARGS="$JVM_OPTS -jar $JAR"
PIDFILE="/var/run/$NAME.pid"
USER=sorm2r
GROUP=sorm2r
VAR_DIR="/var/lib/$NAME"

# Add the JAVA 9 and newer specific start-up parameters required by Hazelcast
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-modules java.se"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-exports java.base/jdk.internal.ref=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/java.lang=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/java.nio=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/sun.nio.ch=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.management/sun.management=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/jdk.internal.misc=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS -Dio.netty.tryReflectionSetAccessible=true"

export JDK_JAVA_OPTIONS

source /lib/lsb/init-functions || exit 1

if [ ! -e "$JAVA" ]; then
    log_failure_msg "Java not found in $JAVA"
    exit 1
fi

if [ ! -e "$JAR" ]; then
    log_failure_msg "Service is not installed"
    exit 0
fi

start() {
    if ! /sbin/start-stop-daemon --status -p $PIDFILE > /dev/null ; then
        log_daemon_msg "Starting $NAME"
        /sbin/start-stop-daemon --start -d $VAR_DIR -b -c $USER:$GROUP -m -p $PIDFILE -x $JAVA -- $JAVA_ARGS
        log_end_msg $?
    else
        log_warning_msg "$NAME is already running"
    fi
}

stop() {
    if /sbin/start-stop-daemon --status -p $PIDFILE > /dev/null ; then
        log_daemon_msg "Stopping $NAME"
        /sbin/start-stop-daemon --stop -p $PIDFILE -u $USER --retry 5
        log_end_msg $?
    else
        log_warning_msg "$NAME is not running"
    fi
    rm -f $PIDFILE
}

case $1 in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart|force-reload)
        stop
        start
    ;;
esac
