#!/usr/bin/env bash ops_center_normalize_profile_key() { local raw_value="${1:-default}" printf '%s' "${raw_value}" | tr '[:lower:]-./' '[:upper:]____' | tr -cd 'A-Z0-9_' } ops_center_load_config() { local caller_dir="${1:-}" if [[ -z "${caller_dir}" ]]; then caller_dir="$(pwd)" fi local env_active_profile="${OPS_ACTIVE_PROFILE:-}" local env_profile_names="${OPS_PROFILE_NAMES:-}" local env_report_root="${OPS_REPORT_ROOT:-}" local env_mainland_api_base_url="${OPS_MAINLAND_API_BASE_URL:-}" local env_overseas_api_base_url="${OPS_OVERSEAS_API_BASE_URL:-}" local env_control_plane_base_url="${OPS_DEFAULT_CONTROL_PLANE_BASE_URL:-}" local env_requested_by="${OPS_DEFAULT_REQUESTED_BY:-}" local env_issued_by="${OPS_DEFAULT_ISSUED_BY:-}" local env_expires_in_hours="${OPS_DEFAULT_EXPIRES_IN_HOURS:-}" local env_root_dir="${OPS_DEFAULT_ROOT_DIR:-}" local env_node_agent_service_name="${OPS_NODE_AGENT_SERVICE_NAME:-}" local env_node_agent_env_file="${OPS_NODE_AGENT_ENV_FILE:-}" OPS_CENTER_SCRIPT_DIR="${caller_dir}" OPS_CENTER_API_DIR="$(cd "${OPS_CENTER_SCRIPT_DIR}/../.." && pwd)" OPS_CENTER_PROJECT_ROOT="$(cd "${OPS_CENTER_API_DIR}/.." && pwd)" OPS_CENTER_RUNTIME_DIR="${OPS_CENTER_API_DIR}/runtime" OPS_CENTER_REPORT_ROOT_DEFAULT="${OPS_CENTER_RUNTIME_DIR}/ops-center-reports" OPS_CENTER_CONFIG_FILE="${DOMAINCHECK_OPS_CENTER_ENV:-${OPS_CENTER_ENV_FILE:-/etc/default/domaincheck-ops-center}}" if [[ -f "${OPS_CENTER_CONFIG_FILE}" ]]; then # shellcheck disable=SC1090 source "${OPS_CENTER_CONFIG_FILE}" fi OPS_CENTER_ACTIVE_PROFILE="${OPS_CENTER_PROFILE:-${DOMAINCHECK_OPS_CENTER_PROFILE:-${env_active_profile:-${OPS_ACTIVE_PROFILE:-default}}}}" OPS_CENTER_ACTIVE_PROFILE_KEY="$(ops_center_normalize_profile_key "${OPS_CENTER_ACTIVE_PROFILE}")" OPS_CENTER_PROFILE_NAMES="${env_profile_names:-${OPS_PROFILE_NAMES:-${OPS_CENTER_ACTIVE_PROFILE}}}" OPS_CENTER_REPORT_ROOT="${env_report_root:-${OPS_REPORT_ROOT:-${OPS_CENTER_REPORT_ROOT_DEFAULT}}}" OPS_CENTER_ENV_MAINLAND_API_BASE_URL="${env_mainland_api_base_url}" OPS_CENTER_ENV_OVERSEAS_API_BASE_URL="${env_overseas_api_base_url}" OPS_CENTER_ENV_CONTROL_PLANE_BASE_URL="${env_control_plane_base_url}" OPS_CENTER_ENV_REQUESTED_BY="${env_requested_by}" OPS_CENTER_ENV_ISSUED_BY="${env_issued_by}" OPS_CENTER_ENV_EXPIRES_IN_HOURS="${env_expires_in_hours}" OPS_CENTER_ENV_ROOT_DIR="${env_root_dir}" OPS_CENTER_ENV_NODE_AGENT_SERVICE_NAME="${env_node_agent_service_name}" OPS_CENTER_ENV_NODE_AGENT_ENV_FILE="${env_node_agent_env_file}" } ops_center_resolve_profile_value() { local suffix="$1" local fallback_value="${2:-}" local profile_key="${OPS_CENTER_ACTIVE_PROFILE_KEY:-DEFAULT}" local variable_name="OPS_PROFILE_${profile_key}_${suffix}" local profile_value="${!variable_name:-}" if [[ -n "${profile_value}" ]]; then printf '%s' "${profile_value}" else printf '%s' "${fallback_value}" fi } ops_center_resolve_mainland_api_base_url() { ops_center_resolve_profile_value "MAINLAND_API_BASE_URL" "${OPS_CENTER_ENV_MAINLAND_API_BASE_URL:-${OPS_MAINLAND_API_BASE_URL:-http://127.0.0.1:8100}}" } ops_center_resolve_overseas_api_base_url() { ops_center_resolve_profile_value "OVERSEAS_API_BASE_URL" "${OPS_CENTER_ENV_OVERSEAS_API_BASE_URL:-${OPS_OVERSEAS_API_BASE_URL:-http://127.0.0.1:8100}}" } ops_center_resolve_control_plane_base_url() { ops_center_resolve_profile_value "DEFAULT_CONTROL_PLANE_BASE_URL" "${OPS_CENTER_ENV_CONTROL_PLANE_BASE_URL:-${OPS_DEFAULT_CONTROL_PLANE_BASE_URL:-}}" } ops_center_resolve_requested_by() { ops_center_resolve_profile_value "DEFAULT_REQUESTED_BY" "${OPS_CENTER_ENV_REQUESTED_BY:-${OPS_DEFAULT_REQUESTED_BY:-cli/ops-center}}" } ops_center_resolve_issued_by() { ops_center_resolve_profile_value "DEFAULT_ISSUED_BY" "${OPS_CENTER_ENV_ISSUED_BY:-${OPS_DEFAULT_ISSUED_BY:-ops-center}}" } ops_center_resolve_expires_in_hours() { ops_center_resolve_profile_value "DEFAULT_EXPIRES_IN_HOURS" "${OPS_CENTER_ENV_EXPIRES_IN_HOURS:-${OPS_DEFAULT_EXPIRES_IN_HOURS:-72}}" } ops_center_resolve_root_dir() { ops_center_resolve_profile_value "DEFAULT_ROOT_DIR" "${OPS_CENTER_ENV_ROOT_DIR:-${OPS_DEFAULT_ROOT_DIR:-/opt/domaincheck}}" } ops_center_resolve_node_agent_service_name() { ops_center_resolve_profile_value "NODE_AGENT_SERVICE_NAME" "${OPS_CENTER_ENV_NODE_AGENT_SERVICE_NAME:-${OPS_NODE_AGENT_SERVICE_NAME:-domaincheck-node-agent}}" } ops_center_resolve_node_agent_env_file() { ops_center_resolve_profile_value "NODE_AGENT_ENV_FILE" "${OPS_CENTER_ENV_NODE_AGENT_ENV_FILE:-${OPS_NODE_AGENT_ENV_FILE:-/etc/default/domaincheck-node-agent}}" } ops_center_ensure_report_dir() { local report_dir="${1:-${OPS_CENTER_REPORT_ROOT_DEFAULT}}" mkdir -p "${report_dir}" }