#!/bin/sh /etc/rc.common

#
# Copyright (C) 2023 Nethesis S.r.l.
# SPDX-License-Identifier: GPL-2.0-only
#

START=99
USE_PROCD=1
PROG=/usr/bin/nethsecurity-api

WORK_DIR=/var/run/ns-api-server
TOKENS_DIR=${WORK_DIR}/tokens
SECRETS_DIR=/etc/ns-api-server
UPLOAD_FILE_PATH=${WORK_DIR}/uploads
UPLOAD_FILE_MAX_SIZE=128 # 128MB

boot() {
    local boot_delay="$(uci_get ns-ui.config.api_server_delay)"
    if [ ! -z "$boot_delay" ]; then
        sleep $boot_delay
    fi
    start "$@"
}

start_service() {
    procd_open_instance

    local issuer_2fa="$(uci_get system.@system[0].hostname)"
    mkdir -m 0700 -p ${TOKENS_DIR}
    mkdir -m 0700 -p ${SECRETS_DIR}

    if [ -f "${WORK_DIR}/secret_jwt" ]; then
        SECRET_JWT=$(cat ${WORK_DIR}/secret_jwt)
    else
        SECRET_JWT=$(uuidgen | sha256sum | awk '{print $1}')
        echo "$SECRET_JWT" > ${WORK_DIR}/secret_jwt
    fi

    procd_set_param env GIN_MODE=release \
        LISTEN_ADDRESS=127.0.0.1:8090 \
        SECRET_JWT="${SECRET_JWT}" \
        ISSUER_2FA=${issuer_2fa} \
        SECRETS_DIR=${SECRETS_DIR} \
        TOKENS_DIR=${TOKENS_DIR} \
        UPLOAD_FILE_PATH=${UPLOAD_FILE_PATH} \
        UPLOAD_FILE_MAX_SIZE=${UPLOAD_FILE_MAX_SIZE}

    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_set_param respawn 3600 60 0
    procd_set_param command "$PROG"
    procd_close_instance
}

reload_service() {
   procd_send_signal ns-api-server '*' USR1
}
