107 lines
4.7 KiB
Bash
107 lines
4.7 KiB
Bash
#!/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}"
|
|
}
|