#!/bin/bash set -euo pipefail STANDARD_HOME_DIR="${STANDARD_HOME_DIR:-/home/cmep4i}" STANDARD_RUN_USER="${STANDARD_RUN_USER:-cmep4i}" STANDARD_JAVA_HOME="${STANDARD_JAVA_HOME:-${STANDARD_HOME_DIR}/jdk}" step="${1:-}" case "${step}" in setfraq) script="${STANDARD_HOME_DIR}/cpackage/toolsh/setfraq.sh" ;; setftq) script="${STANDARD_HOME_DIR}/cpackage/toolsh/setftq.sh" ;; settlq) script="${STANDARD_HOME_DIR}/cpackage/toolsh/settlq.sh" ;; setsptp) script="${STANDARD_HOME_DIR}/cpackage/toolsh/setsptp.sh" ;; *) echo "unsupported standard vendor step: ${step}" >&2 exit 64 ;; esac if [ "$(id -u)" != "0" ]; then echo "this wrapper must be executed as root through sudo" >&2 exit 77 fi if [ ! -f "${script}" ]; then echo "standard vendor script not found: ${script}" >&2 exit 66 fi read_cpconfig_value() { local key="$1" local file="${STANDARD_HOME_DIR}/cpconfig.cfg" if [ ! -f "${file}" ]; then return 0 fi awk -F= -v key="${key}" ' $1 == key { value = substr($0, index($0, "=") + 1) gsub(/^[[:space:]]+|[[:space:]]+$/, "", value) print value exit } ' "${file}" } local_ipv4s() { if command -v ip >/dev/null 2>&1; then ip -o -4 addr show | awk '{ split($4, parts, "/"); print parts[1] }' fi if command -v hostname >/dev/null 2>&1; then hostname -I 2>/dev/null | tr ' ' '\n' | awk '/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/' fi } has_local_ip() { local expected="$1" if [ -z "${expected}" ]; then return 1 fi local_ipv4s | awk -v expected="${expected}" '$0 == expected { found = 1 } END { exit found ? 0 : 1 }' } resolve_standard_node_dir() { local node01 local node02 node01="$(read_cpconfig_value "sptp_01app_ip")" node02="$(read_cpconfig_value "sptp_02app_ip")" if has_local_ip "${node02}" && ! has_local_ip "${node01}"; then echo "02" return 0 fi echo "01" } prepare_setsptp_templates() { local node_dir local cmsp_src local cmtp_src local cmsp_dst local cmtp_dst node_dir="$(resolve_standard_node_dir)" cmsp_src="${STANDARD_HOME_DIR}/cpackage/cmsp/${node_dir}" cmtp_src="${STANDARD_HOME_DIR}/cpackage/cmtp/${node_dir}" cmsp_dst="${STANDARD_HOME_DIR}/cmsp" cmtp_dst="${STANDARD_HOME_DIR}/cmtp" if [ ! -d "${cmsp_src}" ]; then echo "standard CMSP template directory not found: ${cmsp_src}" >&2 exit 67 fi if [ ! -d "${cmtp_src}" ]; then echo "standard CMTP template directory not found: ${cmtp_src}" >&2 exit 67 fi mkdir -p "${cmsp_dst}" "${cmtp_dst}" cp -a "${cmsp_src}/." "${cmsp_dst}/" cp -a "${cmtp_src}/." "${cmtp_dst}/" echo "prepared standard receiver templates from node ${node_dir}" } if [ "${step}" = "setsptp" ]; then prepare_setsptp_templates fi run_payload=' set -euo pipefail standard_home="$1" java_home="$2" script="$3" cd "${standard_home}" export JAVA_HOME="${java_home}" export PATH="${JAVA_HOME}/bin:/usr/local/bin:/usr/bin:/bin:${PATH:-}" exec /bin/bash "${script}" ' if command -v runuser >/dev/null 2>&1; then exec runuser -u "${STANDARD_RUN_USER}" -- /bin/bash -lc "${run_payload}" -- \ "${STANDARD_HOME_DIR}" "${STANDARD_JAVA_HOME}" "${script}" fi exec sudo -n -u "${STANDARD_RUN_USER}" /bin/bash -lc "${run_payload}" -- \ "${STANDARD_HOME_DIR}" "${STANDARD_JAVA_HOME}" "${script}"