#!/usr/bin/env bash # Copyright © 2023 OpenIM. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Common utilities, variables and checks for all build scripts. set -o errexit set +o nounset set -o pipefail # Sourced flag COMMON_SOURCED=true # The root of the build/dist directory OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P) source "${OPENIM_ROOT}/scripts/lib/init.sh" # Make sure the environment is only called via common to avoid too much nesting source "${OPENIM_ROOT}/scripts/install/environment.sh" # Make sure the environment is only called via common to avoid too much nesting openim::common::rpc::service_port() { local targets=( $OPENIM_USER_PORT # User service $OPENIM_FRIEND_PORT # Friend service $OPENIM_MESSAGE_PORT # Message service $OPENIM_MESSAGE_GATEWAY_PORT # Message gateway $OPENIM_GROUP_PORT # Group service $OPENIM_AUTH_PORT # Authorization service $OPENIM_PUSH_PORT # Push service $OPENIM_CONVERSATION_PORT # Conversation service $OPENIM_THIRD_PORT # Third-party service ) echo "${targets[@]}" } IFS=" " read -ra OPENIM_RPC_PORT_TARGETS <<< "$(openim::common::rpc::service_port)" readonly OPENIM_RPC_PORT_TARGETS readonly OPENIM_RPC_PORT_LISTARIES=("${OPENIM_RPC_PORT_TARGETS[@]##*/}") # This function returns a list of Prometheus ports for various services # based on the provided configuration. Each service has its own dedicated # port for monitoring purposes. openim::common::rpc::prometheus_port() { # Declare an array to hold all the Prometheus ports for different services local targets=( ${USER_PROM_PORT} # Prometheus port for user service ${FRIEND_PROM_PORT} # Prometheus port for friend service ${MESSAGE_PROM_PORT} # Prometheus port for message service ${MSG_GATEWAY_PROM_PORT} # Prometheus port for message gateway service ${GROUP_PROM_PORT} # Prometheus port for group service ${AUTH_PROM_PORT} # Prometheus port for authentication service ${PUSH_PROM_PORT} # Prometheus port for push notification service ${CONVERSATION_PROM_PORT} # Prometheus port for conversation service ${RTC_PROM_PORT} # Prometheus port for real-time communication service ${THIRD_PROM_PORT} # Prometheus port for third-party integrations service ${MSG_TRANSFER_PROM_PORT} # Prometheus port for message transfer service ) # Print the list of ports echo "${targets[@]}" } IFS=" " read -ra OPENIM_PROM_PORT_TARGETS <<< "$(openim::common::rpc::prometheus_port)" readonly OPENIM_PROM_PORT_TARGETS readonly OPENIM_PROM_PORT_LISTARIES=("${OPENIM_PROM_PORT_TARGETS[@]##*/}") # Storing all the defined ports in an array for easy management and access. # This array consolidates the port numbers for all the services defined above. openim::common::service_port() { local targets=( $OPENIM_USER_PORT # User service $OPENIM_FRIEND_PORT # Friend service $OPENIM_MESSAGE_PORT # Message service $OPENIM_MESSAGE_GATEWAY_PORT # Message gateway $OPENIM_GROUP_PORT # Group service $OPENIM_AUTH_PORT # Authorization service $OPENIM_PUSH_PORT # Push service $OPENIM_CONVERSATION_PORT # Conversation service $OPENIM_THIRD_PORT # Third-party service # API PORT $API_OPENIM_PORT # API service $OPENIM_WS_PORT # WebSocket service ) echo "${targets[@]}" } IFS=" " read -ra OPENIM_SERVER_PORT_TARGETS <<< "$(openim::common::service_port)" readonly OPENIM_SERVER_PORT_TARGETS readonly OPENIM_SERVER_PORT_LISTARIES=("${OPENIM_SERVER_PORT_TARGETS[@]##*/}") # Execute commands that require root permission without entering a password function openim::common::sudo { echo ${LINUX_PASSWORD} | sudo -S $1 }